ledger: book v1.30.0 — the row from the tag, the cookbook commit that locks it, and gate T green again (PMAT-557, closes #557) - #571
Merged
Conversation
Pmat-Ticket: PMAT-557 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
#557) Row measured from the tag: cut 2026-09-13T20:52:01Z, ten PRs, eleven tickets, the dogfood and crux documents. The cookbook field still names 0be3e1ec, which locks forjar 1.29.0; it is replaced by the paiml/forjar-cookbook#21 merge commit that locks 1.30.0 before this PR is opened. next.tag v1.31.0 due 2026-09-15T20:52:01Z. Tickets labelled release:v1.30.0 that v1.30.0 did not ship (PMAT-526, 528, 529) move to release:v1.31.0. Pmat-Ticket: PMAT-557 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ree shipped rows say completed (Refs #557) docs/audits/dogfood-1.30.0-receipt.md ends on a complete sentence and carries its one verdict: line (GO), so it was not truncated — it was committed without DOGFOOD-1.30.0-RECEIPT-END, which gate T requires. PMAT-555 (the 1.30.0 cut), PMAT-547 (#548) and PMAT-562 (#563) have merged and their issues are closed; their rows said planned/inprogress, which CB-2112 counts as ISSUE-CLOSED and CB-2115 as orphaned. CB-2112 37 -> 34, CB-2115 53 -> 50. Pmat-Ticket: PMAT-557 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…estone (Refs #557) #558, #559, #561, #566 and #567 were open GitHub issues with no roadmap row (CB-2115 ORPHAN-GITHUB). Each is minted from its issue so the id is the issue number, put on the new 1.32.0 milestone, and carries release: 1.32.0 so CB-2114 does not grow. CB-2115 53 -> 45 on this branch; the rows for #560, #564 and #565 arrive with PRs #568, #569 and #570. Pmat-Ticket: PMAT-557 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…aiml/forjar-cookbook#21 (Refs #557) 60acf9c9 is the squash of forjar-cookbook#21: forjar = "1.30", Cargo.lock pins 1.30.0, cargo check --workspace --locked clean. 0be3e1ec, which the cut script copied from the previous row, locks 1.29.0 and gate T refused it. Pmat-Ticket: PMAT-557 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
… carry release:v1.31.0 (Refs #557) Pmat-Ticket: PMAT-557 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Pmat-Ticket: PMAT-557 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Pmat-Ticket: PMAT-557 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Pmat-Ticket: PMAT-557 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ed, 3 refuted (Refs #557) Pmat-Ticket: PMAT-557 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
… ran (Refs #557) Pmat-Ticket: PMAT-557 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Contributor
Author
|
quorum-review (AD-04): NOT agreed (auto_merge: checked=true was_armed=false disarmed=false) {
"ticket": "PMAT-557",
"head": "05a58ba90d820563b1f7b344f33005931ecfd467",
"width": 3,
"executor": "agy",
"agreed": false,
"auto_merge": {
"checked": true,
"was_armed": false,
"disarmed": false,
"note": "auto-merge not armed"
},
"lanes": [
{
"lane": 1,
"verdict": "FAIL",
"findings": 2
},
{
"lane": 2,
"verdict": "PASS",
"findings": 6
},
{
"lane": 3,
"verdict": "FAIL",
"findings": 3
}
]
} |
…rds the merge rail's two findings (Refs #557) The merge rail's lane 1 was right twice: the digest said the three shipped rows changed only status (the cut and sync steps also bump updated: and add labels on two of them), and the ticket asked only for the booking while the branch also repairs the records gates T and B refuse. The acceptance criteria now name that repair. Lane 3's claim that PMAT-545 and PMAT-527 were edited instead of PMAT-555 and PMAT-526 was checked by attributing every changed line to its row, and refuted. Pmat-Ticket: PMAT-557 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
… (Refs #557) Pmat-Ticket: PMAT-557 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Contributor
Author
|
quorum-review (AD-04): NOT agreed (auto_merge: checked=true was_armed=false disarmed=false) {
"ticket": "PMAT-557",
"head": "ce25c2f501d9cd594084d39df65624e2ccc3fbef",
"width": 3,
"executor": "agy",
"agreed": false,
"auto_merge": {
"checked": true,
"was_armed": false,
"disarmed": false,
"note": "auto-merge not armed"
},
"lanes": [
{
"lane": 1,
"verdict": "FAIL",
"findings": 3
},
{
"lane": 2,
"verdict": "PASS",
"findings": 6
},
{
"lane": 3,
"verdict": "PASS",
"findings": 0
}
]
} |
… (Refs #557) A merge-rail lane twice read hunk context as the edited row and claimed PMAT-545 and PMAT-527 were changed. Parsing roadmap.yaml at origin/main and at HEAD and comparing rows by id: six rows added, none removed, six changed (PMAT-526/528/529/547/555/562), PMAT-545 and PMAT-527 identical. Recorded as the instrument in the evidence. Pmat-Ticket: PMAT-557 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Pmat-Ticket: PMAT-557 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Contributor
Author
|
quorum-review (AD-04): three PASS — agreed (auto_merge: checked=true was_armed=false disarmed=false) {
"ticket": "PMAT-557",
"head": "1c8d7a18a706a5d99be2f11be625612e31394167",
"width": 3,
"executor": "agy",
"agreed": true,
"auto_merge": {
"checked": true,
"was_armed": false,
"disarmed": false,
"note": "auto-merge not armed"
},
"lanes": [
{
"lane": 1,
"verdict": "PASS",
"findings": 0
},
{
"lane": 2,
"verdict": "PASS",
"findings": 6
},
{
"lane": 3,
"verdict": "PASS",
"findings": 0
}
]
} |
noahgift
enabled auto-merge (squash)
September 15, 2026 19:08
noahgift
added a commit
that referenced
this pull request
Sep 16, 2026
…n convention (Refs PMAT-574) Round 4: lane 1 FAIL, lane 2 PASS, lane 3 FAIL. Two new claims, both refuted by measurement, both now in the digest: gate R reports 6 PR(s) since v1.30.0 while gates A, E and T report 5. Both are right about different windows: gh lists five merged after the tag's timestamp (#571 #569 #568 #563 #548), and gate R's six are those plus #556 — the release PR whose squash commit IS the tag (`git rev-list -n1 v1.30.0` and #556's merge commit are both ddd0c44). The receipt says so where it quotes gate R. the CHANGELOG should cite #569 (the PR) rather than #564 for PMAT-564. The file's convention is the ISSUE, unbroken through the 1.30.0 section: (PMAT-549, #549), (PMAT-534, #534), (PMAT-540, #540), (PMAT-542, #542), (PMAT-535, #535). Two lanes now share the same line-number error — the first bullet at CHANGELOG.md:13 and the version line at README.md:97. Re-measured at HEAD by numbering each blob out of git: CHANGELOG.md:10 heading, :11 blank, :12 bullet; README.md:95 comment, :96 version. Two lanes agreeing does not move a measurement. 6 confirmed, 8 refuted, 4 rounds, none agreed — recorded as it happened. Pmat-Ticket: PMAT-574 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
noahgift
added a commit
that referenced
this pull request
Sep 16, 2026
* release: forjar 1.31.0 — the cut (PMAT-574, refs #574) Version, lock, the CHANGELOG heading over the three-PR window, and the crux comparison each behaviour owes. The window is paiml/infra#605 answered end to end: drift's verdict reaches the exit code (PMAT-562, #563), a run that inspected none of the resources it was asked about declines instead of reporting zero drift (PMAT-564, #569), and a service is converged only while the loaded unit executes the declared program (PMAT-560, #568). GATE H PASS 3 of 3 behaviour bullet(s) under [1.31.0] reconciled in docs/audits/crux-1.31.0.md, each naming >= 3 of the 28 surveyed systems. The rows carry no backticks inside the key span, because the gate greps the bullet's first six words LITERALLY and `forjar drift` does not contain "forjar drift". The bookkeeping gate B measures is part of the cut, not around it. Arm 7 was RED on this branch: CB-2112 37 against 35, CB-2114 36 against 34, CB-2115 49 against 43. Repaired rather than raised, by the baseline's own convention (a row whose id tail is the issue number, a milestone, and a bare `release:`): PMAT-557 #557, PMAT-560 #560, PMAT-564 #564 -> status completed; their issues are closed, so the open rows read as ORPHAN-ROADMAP and ISSUE-CLOSED both PMAT-560, PMAT-574 -> release: 1.31.0 #565 #572 #573 -> rows minted under their issue numbers, release: 1.32.0, milestone 1.32.0 PMAT-559 -> its row's title was truncated when it was minted, which is what the DRIFT finding was Measured after, on this tree: CB-2112 34 (ceiling 35), CB-2114 34 (34), CB-2115 43 (43). Nothing is lowered here — a ceiling may only be lowered from a measurement of the COMMITTED tree. PMAT-574 stays inprogress: a ticket is open in its own PR and the booking PR marks it completed, which is the rule the commit-msg hook enforced when this commit first said completed. PMAT-565 is NOT in this release: #570 was still open when the cut was made, so its behaviour owes no crux row and its ticket carries release: 1.32.0. Pmat-Ticket: PMAT-574 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * release(1.31.0): the dogfood receipt, the cut log, and the README's version lines (Refs PMAT-574) `make dogfood-release` exited 0 on the committed tree at 9e3a474 with all nine gates green: GATE A PASS 5 of 5 merged PR(s) since v1.30.0 carry a harness receipt GATE B PASS ... CB-2112=34/35 CB-2114=34/34 CB-2115=42/43 held GATE C PASS 211 CLI name(s), 12 MCP tool(s), 12 HTTP verb(s) GATE D PASS 18 documented invocation(s); version claims reconcile with Cargo.toml GATE E PASS 5 of 5 merged PR(s) since v1.30.0 carry a quorum receipt GATE F PASS line coverage 96.43% >= 95%; nothing to mutate (no .rs differs) GATE G PASS 43 contract(s) validate GATE H PASS 3 of 3 behaviour bullet(s) reconciled in docs/audits/crux-1.31.0.md GATE T PASS ... cut in flight: Cargo.toml is at 1.31.0 The three reds cleared BEFORE that run are in docs/audits/logs/PMAT-574-cut.log with the measurement either side, because a gate that was never red proves nothing about itself. The README's two version lines move 1.30 -> 1.31. Gate D passed either way — Cargo reads `forjar = "1.30"` as `>=1.30.0, <2.0.0`, which admits what this cut ships — so this is the cut keeping the documented version equal to the shipped one, not a gate forcing it. The first draft of the receipt claimed the lines were already correct; they were not, and the claim is replaced by what the file says. Pmat-Ticket: PMAT-574 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * docs(PMAT-574): the receipt's diff list names itself; the round's evidence (Refs PMAT-574) Lane 1 (gemini-3.1-pro-high, cited at impl-PMAT-574-receipt.md:1) read the receipt's `## The diff` section and found it did not name the receipt doing the listing, nor the quorum artifacts. True, and corrected. The lane's other half — that the receipt is an unrequested file — is refuted by scripts/dogfood/harness.sh: gate A fails any merged PR whose ticket has no docs/audits/impl-<ticket>-receipt.md at HEAD ending in IMPL-<ticket>-RECEIPT-END. Both halves are recorded in .quorum/evidence/release-1.31.0-lanes.md rather than the convenient one. The other two lanes returned NO-VERDICT (one wrote no verdict object, one hit `UNAVAILABLE (code 503): No capacity available for model gpt-oss-120b-medium`), and the evidence says so. A NO-VERDICT is not a PASS. Pmat-Ticket: PMAT-574 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * quorum(PMAT-574): committed receipt — 1 round of 3 lanes, 6 confirmed, 4 refuted (Refs PMAT-574) The round did not agree and the receipt says so: lane 1 FAIL with one cited finding, lanes 2 and 3 NO-VERDICT (no verdict object; 503 with no capacity for gpt-oss-120b-medium). lane_errors=2. Three of the four refutations came from instruments that ruled before any lane saw the branch — gate H on the crux keys, the commit-msg hook on a completed ticket, and README.md itself on the receipt's claim that its version lines were already right. judges_note says so rather than letting judges=3 read as three independent tiers. Pmat-Ticket: PMAT-574 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * docs(PMAT-574): the after-line sums, and the 42-vs-43 gap gets its real cause (Refs PMAT-574) Round 3's lane 1 (gemini-3.1-pro-high) refuted two claims this branch had written: 1. the cut log's after-composition read `CB-2115 43 (ORPHAN-ROADMAP 24, ORPHAN-GITHUB 8, DRIFT 10)`, and 24 + 8 + 10 = 42. A total that contradicts its own breakdown is the black box this format exists to refuse. 2. both the cut log and the dogfood receipt explained the 42-vs-43 difference as "the receipts this commit had not yet added". A markdown file cannot move ORPHAN-ROADMAP, ORPHAN-GITHUB or DRIFT. Re-measured at 06:40Z: CB-2115 42, composition 24 + 8 + 10, which sums. `pmat comply` reads GitHub LIVE and stamps every run with `snapshot: gh paiml/forjar taken <ts>`, so 43 at 05:00Z and 42 since are two measurements of a moving source. Both documents say that now. The same lane's four other findings are off-by-one citation claims and are refuted in .quorum/evidence/release-1.31.0-judges.md by re-reading each cited file — CHANGELOG.md:12 IS the first bullet, crux-1.31.0.md:31 IS the first row, README.md:96 IS `forjar = "1.31"`, and CB-2114's repair is two rows rather than four because three were minted already carrying `release: 1.32.0`. Receipt now records three rounds, 6 confirmed and 6 refuted, and names gemini-3.8-flash-* as the lane that returned a SUCCESS envelope with no verdict object in all three. Pmat-Ticket: PMAT-574 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * quorum(PMAT-574): round 4 — gate R's six PRs, the CHANGELOG's citation convention (Refs PMAT-574) Round 4: lane 1 FAIL, lane 2 PASS, lane 3 FAIL. Two new claims, both refuted by measurement, both now in the digest: gate R reports 6 PR(s) since v1.30.0 while gates A, E and T report 5. Both are right about different windows: gh lists five merged after the tag's timestamp (#571 #569 #568 #563 #548), and gate R's six are those plus #556 — the release PR whose squash commit IS the tag (`git rev-list -n1 v1.30.0` and #556's merge commit are both ddd0c44). The receipt says so where it quotes gate R. the CHANGELOG should cite #569 (the PR) rather than #564 for PMAT-564. The file's convention is the ISSUE, unbroken through the 1.30.0 section: (PMAT-549, #549), (PMAT-534, #534), (PMAT-540, #540), (PMAT-542, #542), (PMAT-535, #535). Two lanes now share the same line-number error — the first bullet at CHANGELOG.md:13 and the version line at README.md:97. Re-measured at HEAD by numbering each blob out of git: CHANGELOG.md:10 heading, :11 blank, :12 bullet; README.md:95 comment, :96 version. Two lanes agreeing does not move a measurement. 6 confirmed, 8 refuted, 4 rounds, none agreed — recorded as it happened. Pmat-Ticket: PMAT-574 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * quorum(PMAT-574): round 5 — the evidence prose now matches its own tables (Refs PMAT-574) Round 5's lane 1 was right, three times in one finding: lanes.md still opened "Three rounds were run" and called 203d8a6 the final head, agy.md still said "One round", and claims.md still said "The round reviewed head 203d8a6" — while the table underneath and the receipt said four. Prose contradicting its own table is exactly the shape this format exists to refuse. All three now describe every round on the head it ran against (203d8a6, e65a1fa twice, 1da75f2, b0ccb46) and say why the count moves: a round that raises a real finding produces a fix, the fix moves the head, and the next round reviews a head no earlier round saw. The rail's final round reviews the final head and cannot, by construction, be described in a file it is reviewing. 6 confirmed, 9 refuted, 5 rounds, none agreed. Pmat-Ticket: PMAT-574 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * quorum(PMAT-574): rounds 6-8, and the receipt's own counts (Refs PMAT-574) Rounds 6 and 7 raised NO finding: every lane that returned a verdict passed, and each round collapsed only because one lane hit `UNAVAILABLE (code 503): No capacity available` for its model. That is the state of the agy backend this morning, not a property of this branch, and the evidence says so. Round 8's lane 1 raised four findings and all four were this receipt's own stale counts: `recorded_at` said three author claims where four had been refuted by lanes, `judges_note` said three rounds and four refutations where the digest said five and nine, and two "three rounds" phrases had survived incremental editing. Every one is corrected. That is the second time a lane has caught the bookkeeping OF the bookkeeping, which is the argument for running it. 8 rounds, 6 confirmed, 10 refuted, none agreed. Pmat-Ticket: PMAT-574 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * quorum(PMAT-574): the round count lives in ONE place now (Refs PMAT-574) Rounds 8 and 9 refuted the same thing, and round 9 did it from two lanes at once: the round count and the refutation count were restated in four files, and had gone stale in three of them. agy.md still said five rounds, claims.md still listed heads up to b0ccb46, and judges.md's opening said nine refutations over ten items. Fixed structurally rather than by another pass of hand-editing four numbers: - the per-round table in .quorum/evidence/release-1.31.0-lanes.md is the ONLY place rounds are counted and heads are named - agy.md and claims.md refer to that table and restate no number - judges.md states the adjudication count once, where the gate reads it - the receipt keeps rounds / claims_confirmed / claims_refuted, which the gate validates against the digest's own items The lanes table also says out loud what it cannot cover: the merge rail runs its round on the FINAL head, and that round cannot be described in a file it is reviewing. 6 confirmed, 11 refuted. Pmat-Ticket: PMAT-574 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * quorum(PMAT-574): the stale strings a silent no-op edit left behind (Refs PMAT-574) Round 11 refuted, from all three lanes, the claim that the structural fix had landed: - .quorum/evidence/release-1.31.0-lanes.md still opened "Eight rounds were run" and named b0ccb46 as the last head. The edit meant to replace that paragraph matched nothing and reported success, which is the failure mode worth naming: a replacement that silently applies to zero bytes. - agy_teamwork.mode still read "one round of three sandboxed agy quorum lanes" beside "rounds": 9. - docs/audits/impl-PMAT-574-receipt.md still said "the round that produced it". All three fixed, and this time the tree was SWEPT — every count beside the word "round" in the evidence, the receipt and both audit documents — rather than assumed. The sweep also separated the live claims from the QUOTATIONS: the digest quotes stale strings so its findings can be checked, and the lanes table now says so in its own words. Round 10's three findings are recorded as false: it claimed the evidence sha256s and byte counts were stale, every one matches byte for byte at HEAD, and the total it proposed does not equal the sum it listed. 6 confirmed, 12 refuted. Pmat-Ticket: PMAT-574 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #557. This is the booking for v1.30.0, a release that was tagged and never declared. It changes no code.
What
scripts/release-goal.sh cut v1.30.0 --next v1.31.0: cut2026-09-13T20:52:01Z, 10 PRs, 11 tickets, the dogfood and crux receipts. The cookbook field names 60acf9c9, which is deps: build against forjar 1.30.0 (was locked at 1.29.0) forjar-cookbook#21, the first cookbook commit that locks forjar 1.30.0. The script had copied0be3e1ecfrom the previous row, and that commit locks 1.29.0.next: v1.31.0, due2026-09-15T20:52:01Z.dogfood-1.30.0-receipt.mdgets theDOGFOOD-1.30.0-RECEIPT-ENDmarker it was committed without. The receipt ends on a complete sentence and has oneverdict:line, so nothing was truncated.release:v1.31.0.release-goal.sh synclabels PMAT-562.completed. Five open issues without a roadmap row (CLAUDE.md does not say which model orchestrates a ticket here, so it is chosen by habit (ORCH-001) #558,forjar validatesays OK to a manifestapplyrefuses: template resolution is not part of validation, so{{.Names}}(a docker --format) passes validate and dies at apply #559, lock keyed by (machine, stack), host-resident; apply refuses a manifest-sha mismatch without --adopt; generator field records the real writer #561, mutation.yml: cargo install cargo-mutants pulls deps that need rustc 1.91 on the fleet's 1.89 toolchain — red on main since 2026-09-14 #566, lint.yml on the fleet: a clean-room runner has no cargo-clippy for the 1.89 toolchain — first fleet run of lint after PMAT-547 #567) get rows minted from their issues, withrelease: 1.32.0on a new milestone.Measured
Receipt:
docs/audits/impl-PMAT-557-receipt.md. Quorum receipt:.quorum/PMAT-557-book-v1.30.0.json(kind triage).🤖 Generated with Claude Code
Which rows changed, by id
Hunk context can make the line above a hunk look like the row being edited. This compares rows by
idinstead:Output: 6 rows added (PMAT-557/558/559/561/566/567), 0 removed, and 6 changed (PMAT-526, 528, 529, 547, 555, 562). PMAT-545 and PMAT-527 are identical.