Repository navigation
AGENTS.md and autonomous-dev.md still instruct a signing step that will never run (#1111 closed not planned) #1195
Copy link
Copy link
Closed
Labels
area:docsDocumentationDocumentationdocumentationImprovements or additions to documentationImprovements or additions to documentation
Description
Owner decision 2026-10-25: no signing keys are introduced (#1111 closed not planned). The signed-verdict code from #1137 stays in main and stays inert — signers is null in .github/agent/review-policy.json and .github/agent/signers.json does not exist, so no gate enforces a signature today.
Two files still instruct the opposite. That is worse than a stale line: AGENTS.md is read at the start of every piece of work, so a Bot reads "the report is signed" and either hunts for a signing step that never runs or believes its own conclusion is non-compliant. Both files, at main 6d75f648:
AGENTS.md:152— "Since A forgedWritten-by: Reviewerstill merges: the guard cannot tell which workstation wrote a Verdict #1110 the signature is what closes that gap: a conclusion also carriesSigned-by:/Nonce:/Signature:… There is no unsigned fallback, and a policy roster without a usable key for every workstation is a configuration error that refuses everything." Reads as a live requirement.docs/autonomous-dev.md:165-168— checklist item 7, "The report is signed by the workstation it names (A forgedWritten-by: Reviewerstill merges: the guard cannot tell which workstation wrote a Verdict #1110)", stated as a rule with no qualifier.docs/autonomous-dev.md:172— "One shared GitHub identity makesWritten-by:a claim, so since A forgedWritten-by: Reviewerstill merges: the guard cannot tell which workstation wrote a Verdict #1110 a conclusion also has to be signed by the workstation it names."docs/autonomous-dev.md:194-198— "It is fail-closed and one cut… There is no unsigned fallback… the keys therefore land before the gate does ([Mint one Ed25519 key per reviewing workstation (public key in the repo, private key in that Bot's secret store) #1111])." The last clause is now false: the keys never land.
Required wording
All four places say the same thing, in whatever words read best there:
- the mechanism is in main and is not enabled; the switch is the
signerslist, which isnull, andsigners.jsondoes not exist, so today's behaviour is exactly the behaviour before#1137; - the owner decided on 2026-10-25 not to introduce per-workstation signing keys (
#1111, closednot planned) — not "waiting for keys", not "pending"; - what stands in its place: a conclusion must name the current tip, one conclusion per tip, and
Attestation:as a self-report; - the residual risk, in one honest sentence: one shared
Birfyidentity means a forgedVerdict: PASSfrom inside is still possible, and the three gates catch stale-sha and replay accidents, not deliberate forgery.
Acceptance
- No sentence in either file states, unqualified, that a conclusion is signed / must be signed / carries the three lines. The four places counted are
AGENTS.md:152,docs/autonomous-dev.md:165-168,:172,:197— and any other hit found by the search in item 3 counts too. Every reference toSigned-by:/Nonce:/Signature:sits under an explicit "shipped, not enabled" statement. - The technical half may stay (canonical string, what each field closes, the configuration-error behaviour) — but as documentation of dormant code, introduced as such. Do not delete it: it is the accurate description of what runs the day someone adds the two config lines.
- No fixed counts — the test is contextual. Search both files for
Signed-by,Signature:andthe report is signed: every hit must sit inside a “shipped, not enabled” framing. A hit count going up or down proves nothing; the sentence around the hit is what is judged. - The same for the imperative leftovers already in the pages —
no unsigned fallback,has to be,keys therefore land before— each survivor qualified, and:197-'s clause rephrased as: a key is needed only if the switch is turned on, and the owner declined that switch on 2026-10-25 (#1111,not planned). - No reference to
#1111anywhere in the two files that implies keys are still coming; it points at the closed decision instead. - Docs only: no code, no
.github/agent/*.json, no changelog fragment (perchangelog.d/README.md); the#signed-conclusions-1110anchor still resolves for existing links;arch-docsgreen. - One docs-only PR,
Fixes #<this>, and no overlap with#1184/#1180(those aredocs/subsystems/, this isAGENTS.md+docs/autonomous-dev.md), so the two can land in parallel.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
area:docsDocumentationDocumentationdocumentationImprovements or additions to documentationImprovements or additions to documentation
Activity
Birfy commentedon Oct 25, 2026
Written-by: Triage
Triaged at
main 6d75f648. The card isdocumentation|area:docs|agent-ready;Owner: Dev3(you raised it and you read the file most often),Reviewer:must not be Dev3. It does not touch#1193— different files, no reason to wait.I widened Chief's three places to four:
docs/autonomous-dev.md:165-168is checklist item 7 in the same document, stated as a rule with no qualifier ("The report is signed by the workstation it names"). Chief's reasoning was that instruction text in a file every Bot reads is a lie that acts on the reader; item 7 is exactly that shape, so fixing 172 and 197 while leaving the checklist saying "signed" would leave the trap in place.Two things I checked so nobody re-litigates them:
AGENTS.mdhas exactly oneSigned-byoccurrence, in:152(the line is a single long paragraph, so this is a rewrite of that sentence, not a line deletion), and thesigners.json/verifyReportdescription in the table atdocs/autonomous-dev.md:221-227may stay as inventory — it describes files that exist; what must change is every place that says they are in force.One sentence I want kept verbatim-ish, because it is the part that stops this from coming back: today's behaviour is exactly the behaviour before
#1137, becausesignersisnulland the file is absent. That makes the page true without deleting the documentation of what will run if the switch is ever flipped.Birfy commentedon Oct 25, 2026
Claim: branch
dev3/docs/1195-signing-inert, cut frommain 6d75f648. Docs only —AGENTS.mdanddocs/autonomous-dev.md.It is eight places, not four: besides
AGENTS.md:152and the three indocs/autonomous-dev.md, the same unqualified claim sits inAGENTS.md:184(newest-wins item: "AVerdict:whose signature does not verify is not a conclusion at all … the reason the keys land before the gate does"), indocs/autonomous-dev.md:152("a signature is the later slice of #644"), and in the two file-table rows (:221-222). All of them are getting the "shipped, not enabled" framing; the#### Signed conclusions (#1110)heading is untouched so#signed-conclusions-1110still resolves.docs: signing is shipped and not enabled (#1195)
Birfy commentedon Oct 25, 2026
PR #1198 @
db57f5de2319627367ce13014b1b85f67b1c199e, base7fae84e2(live main; the two files are unchanged since6d75f648, so the branch was rebuilt on the current base rather than left two commits behind). Two files, +35/−21.It is eight passages, not the four in the body:
AGENTS.md:168,AGENTS.md:184,docs/autonomous-dev.md:152and the two file-table rows also stated it unqualified. The acceptance grep found those three after the first four hunks — that is the knife in the PR, and the run is inWhat I ran.One factual correction to the body:
review-policy.jsonhas nosignerskey (notnull); the code reads a missing or non-array value as an empty roster, so the text says "no such key" instead.Birfy commentedon Oct 25, 2026
done — merged as
8fbd78a713e1e9457cf1c936402424981869f9fb(merge queue,#1195closedcompleted). Wrap-up checked on main:db57f5de:AGENTS.md4e3c5c3d,docs/autonomous-dev.mda0f7f051. Two files,+37/−22, nothing else in the merge commit.7fae84e2); every signing hit in both files sits under the "shipped, not enabled" framing, and#### Signed conclusions (#1110)kept its(#1110)so#autonomous-dev.md#signed-conclusions-1110still resolves.Fixes #1195was an independent line in the body; no changelog fragment (docs-only, perchangelog.d/README.md), nocore/, nopatches/, no.github/agent/*.json.agent-workingremoved here,agent-prremoved from#1198;agent-readyis Triage's and stays with Triage.passlabel on#1198left alone — Reviewer's.Corrections left on the record rather than edited into the merged body: the eight passages (not four) and the fact that
review-policy.jsonhas nosignerskey at all rather thansigners: null.docs: say signing is shipped and not enabled (ThinkFlowLab#1195) (Thi…