A proxy countersign is permitted, and must be legible as one in the tick
Date: 2026-08-15
Status: open
Supersedes: none — extends docs/decisions/2026-08-10-countersign-gates-closed-status.md
Superseded-by: docs/decisions/2026-09-05-proxy-countersign-retired.md
Terminal state of this record: one ruling, one enforcing check with tests,
and ten historical records retro-marked. It re-signs nothing and reverses no
decision.
Context
Section titled “Context”2026-08-10-countersign-gates-closed-status.md established that an unchecked
countersign keeps a decision Status: open, and the doc template’s own footer
says “an agent must never tick it for them.”
That footer has been read, in practice, as prohibiting an unauthorised tick rather than prohibiting a tick made on a human’s explicit spoken instruction. Agents ticking under directive have annotated the act carefully — scribe not signatory, the directive is the human act, the line is its record — and the reasoning is sound. The defect is not in any individual signature.
The defect is that the corpus cannot distinguish them. A later reader
scanning a ## Sign-off block for ☑ sees a ticked box. So does a later agent
looking for precedent. The distinction lives entirely in prose that a scanner
does not read, which makes it a convention — and this repo’s own P0 credential
audit established that a rule enforced in one place and not the other is a
convention rather than a boundary (the PRIVILEGED_PATH_RE cross-finding).
Applying that lesson to the governance corpus is the whole of this record.
The precedent is wider than it appeared
Section titled “The precedent is wider than it appeared”The check written for this ruling was run against the corpus before the ruling was drafted, which is the only reason the scale is known:
$ petrova validate petrova-codes11 error(s) — 10 unmarked proxy ticks, 1 attribution-format false positiveTen records, not the two from the session that raised the question. Proxy
countersign has been the effective norm since 2026-08-13, and the ten
include 2026-08-13-ptv-scf-0001-p2-close.md and
2026-08-13-waiver-ptv-scf-0001-p2.md — the phase close and the waiver that
PTV-SCF-0001 P3 currently inherits and is bound by.
That is stated plainly because it changes what the question is. This is not a new habit forming that can be nipped; it is an established practice being regularised after the fact, and two of the instruments now in force were signed under it.
Decision
Section titled “Decision”A proxy countersign is permitted. It must name a human, date the act, and announce itself in the tick.
A tick in a ## Sign-off block is conforming when both hold:
- Attributed — the block carries
Countersigned byhuman:on`. (An older spelling, an email plus an ISO date, is accepted for records that predate the convention; see below.) - Marked, when proxied — if the attribution says the signature was taken
by directive, the tick itself reads☑ (proxy)or[x] (proxy).
A proxy signature is one an agent records from a human’s instruction in session. A hand signature is one the human enters themselves. Both are real signatures; the ruling does not rank them. It requires only that which one occurred be visible at a glance.
This is enforced, not conventional
Section titled “This is enforced, not conventional”cli/src/verbs/validate.ts gains countersignDefects(), reported under MR-7
at severity: error, with two defect classes:
unattributed— a ticked box nobody is named for. A tick with no signer is not a signature.unmarked-proxy— the prose says by directive, the tick does not.
Seventeen tests in cli/tests/verbs/validate-countersign.test.ts. The check
runs at every Status, because the defect is in the signature rather than in
what the doc claims about itself.
A rule that only a careful agent follows is the thing this record exists to stop. Shipping the ruling without the check would reproduce the defect it diagnoses, one layer up.
Alternatives considered
Section titled “Alternatives considered”- Prohibit proxy countersign; the agent emits a ready-to-tick block and stops. Defensible, and the stricter reading of the template footer. Rejected on two grounds. First, it is retroactively unenforceable — ten merged records including the live waiver were signed by proxy, so prohibition either invalidates them or grandfathers them, and grandfathering re-creates exactly the two-classes-of-tick problem this record is closing. Second, it converts every ratification into a second session, which is friction the operator has repeatedly and explicitly declined; a rule routinely worked around is worse than a rule that describes what actually happens.
- Permit, annotation only, no marker (status quo ante). Rejected: this is the current state, and it is the state that produced ten indistinguishable ticks. The annotation is not the failure; the annotation’s invisibility to a scan is.
- A separate front-matter field (
countersign: proxy). Rejected as weaker where it matters. The tick is what a reader looks at; front-matter is what a parser looks at. The marker has to be where the human eye lands, and the parser can read the tick perfectly well. - Retro-sign the ten by hand instead of marking them. Rejected: it would rewrite history to say something that did not happen. The ten were proxy signatures. Marking them says so; re-signing them would conceal it.
Consequences
Section titled “Consequences”For the corpus:
- Ten records retro-marked
☑ (proxy). No other text in any of them is changed — this makes an existing annotation legible in the tick, and adds no claim that was not already in the prose beneath it. Consistent withL3, on the same footing as the tick itself being a sanctioned sign-off-block edit. - The ten:
…p2-c2-skills,…p2-c3-g4-checker,…p2-c4-dr-allocation,…p2-close,…p2-verification-round,…waiver-ptv-scf-0001-p2,acceptance-gate-waiver-shape(all 2026-08-13),purpose-built-canary-supersedes-pwplz(signed 2026-08-15),…p3-open(2026-08-14),canary-public-for-branch-protection(2026-08-15).
For PTV-SCF-0001:
- P2’s close and P2’s waiver were both proxy-signed. They remain in force —
this record ratifies the practice rather than voiding its products. But P3’s
verification round should note it when it re-evaluates
G-P2-2andG-P2-3underG-P3-10, because “the human accepted this” and “the human was told this and said go” are different evidentiary weights, andG-P3-10exists to weigh exactly that kind of claim. - Raised as friction F-42 against P3’s round.
For agents:
- An agent may tick under explicit directive, and must then write both the
attribution line and the
(proxy)marker.validatefails the doc otherwise, so the requirement does not depend on the agent remembering it. - An agent may never tick without a directive. That prohibition is unchanged and this record does not soften it.
- A directive is scoped to what it names. The C0 gate PASS in
2026-08-15-ptv-scf-0001-p3-c0-close.mdwas left unticked because the session’s two directives covered the canary ruling and the visibility route, not a gate result. That instinct is now the rule: a directive countersigns the record it was given about, and no other.
For invariants:
- No MR added, modified, or repealed.
MR-7gains an enforcement clause, not a new obligation.
References
Section titled “References”docs/decisions/2026-08-10-countersign-gates-closed-status.md— the rule this extends.cli/src/verbs/validate.ts—countersignDefects(),signOffSection().cli/tests/verbs/validate-countersign.test.ts— 17 tests.docs/decisions/2026-08-15-ptv-scf-0001-p3-c0-close.md— the unticked gate PASS, now the worked example of directive scope.docs/findings/20260811-2027-ptv-scf-0001-credential-scope.md— the convention-versus-boundary lesson being applied here.
Sign-off
Section titled “Sign-off”- Subagent: PTV-SCF-0001 P3 (session 2026-08-15)
- Human: FLIGHT<alex@devarno.com:2026-09-22> — that proxy countersign is permitted, that the tick
must carry
(proxy)and an attribution, that the ten historical records are correctly retro-marked rather than re-signed, and that a directive countersigns only the record it names