ADR-0047: Four-Eyes — Submitter-Only Exclusion¶
- Status: accepted
- Date: 2026-07-03
- Deciders: Nicolas Burri
- Supersedes: ADR-0046 (author + submitter); refines ADR-0030 (approve gate)
Context¶
ADR-0046 excluded both the version's author and the current round's submitter from approving under a four-eyes policy. In practice the "author" is merely whoever created the version row — in multi-contributor drafts an arbitrary distinction — and in small teams the double exclusion can leave no eligible approver. Nicolas (same day): "If a couple of authors contribute to a document, then we may run out of eligible reviewers. Change it so only the person submitting it to review is banned from review, not all contributors."
The process model this rests on (Nicolas, earlier the same day): "we need to prove that 2 people were working on the process" — the submit act freezes and thereby ATTESTS the content; the approval must come from a different person. Author/submitter/approver identities are all in the audit trail, so the two-person involvement is provable per document and round.
Decision¶
Under a four-eyes policy, the approver must differ from the current round's submitter only
(recovered from the round's SUBMITTED audit event, as in ADR-0046). The version-creator
("author") exclusion is removed — from the gate, the reflection surface
(approveBlockedReason value FOUR_EYES retired; FOUR_EYES_SUBMITTER remains), and any
threshold/counting logic that treated the author specially.
Consequences¶
- Small-team friendly: exactly one person is ever excluded per round; any other role-holder may approve.
- Accepted residual risk (recorded deliberately): a version's creator may approve content they wrote, provided a second person performed the submit. The control's meaning shifts from "author ≠ approver" to "attester ≠ approver". If a customer or auditor requires author-level or contributor-level independence, the tightening path remains a per-policy strictness level (ADR-0046's O1 discussion) via a future ADR.
- The reproduced bypass of 2026-07-03 (one person submits AND approves) stays closed — that is the invariant this family of ADRs protects.
- Per-round semantics unchanged: resubmission moves the exclusion to the new submitter.