Skip to content

chore(ratchet): CB-200 601→599 and the complexity shrink under pmat 3.41.1 — the pin itself landed in #3484 - #3491

Merged
noahgift merged 9 commits into
mainfrom
fix/tools-pmat-3.41.1
Sep 21, 2026
Merged

noahgift merged 9 commits into
mainfrom
fix/tools-pmat-3.41.1

Conversation

@noahgift

@noahgift noahgift commented Sep 18, 2026 •

Copy link
Copy Markdown
Member

RETITLED 2026-09-20 — this is no longer a pin bump. The [pmat] version = "3.41.1" pin landed
on main in f4c0daa37 (09-18 17:07), inside the 0.68.2 PR #3484, not here. Verified:
origin/main:tools.toml:56 already reads 3.41.1, and this branch's only tools.toml change is
the stale comment on line 7, which still described infra's forjar pin as 3.40.1.

What this PR actually lands, and it is worth landing: the CB-200 ratchet 601 → 599, the
complexity-baseline shrink (8 functions removed), and that comment fix. The rebase against main
surfaced 601-vs-599 as a genuine conflict — both files already carried
tool_version=pmat 3.41.1, so it was never a version disagreement — and 599 is kept because the
file is shrink-only against origin/main and taking 601 would surrender the ratchet.

Verified on the MERGED tree rather than carried, since 10 commits of new code could have made 599
unreachable:

ok   CB-200 baseline 599 ([tdg] baseline == scripts/cb200_baseline.txt)
ok   ratchet scripts/cb200_baseline.txt did not grow (2 removed)
ok   ratchet scripts/complexity_baseline.txt did not grow (8 removed)
PASS (D2): 3409b29d2 vs 674da069e measured by pmat 3.41.1 — none new, none grown.

The pin's own claim is re-confirmed on the RUNNER denominator (not the host set): intel host,
gx10-pool1, yoga-build3, gx10/mini/lambda-labs hosts all report 3.41.1, and infra declares
3.41.1 on all five machines. pforge-clean-room has no pmat at all (paiml/infra#813).

The original body follows unchanged.


tools.toml's own header: "Bump this file in the SAME commit as the infra
forjar.yaml version bump." infra#692 (9c411f4) moved stack-tool-pmat to
3.41.1 on all five boxes and converged them — including /opt/ci-tools/pmat,
the file every container runner on gx10 and yoga mounts as
/usr/local/bin/pmat, which nothing had declared and which was still 3.40.1
after the login user's pmat moved. Measured in a fresh clone at 3409b29
with the converged pmat on PATH, before this change:

FAIL  pmat     pinned 3.40.1     found 3.41.1

which is the verdict every aprender PR gets on every converged runner until
this lands — #3301's split (pinned 3.40.0 found 3.40.1) again. After:

ok    pmat     pinned 3.41.1     found 3.41.1
ok    bashrs   pinned 7.4.1      found 7.4.1
4/4 checks, 0 failed

CHANGING THE INSTRUMENT RE-RECORDS THE BASELINES (#3301), and this time the
instrument and the tree are separated by measurement, not assumed:

complexity_baseline.txt 676 rows -> 670 (check_complexity_ratchet.sh
--update, "10345 file(s), 179788 function(s), 670 over"). The six
dropped rows (inference_result.rs::validate_gpu_first_token,
llm.rs::execute_llm_{experiment,load,score,sweep},
ggplot.rs::compute_data_ranges) all still exist. Their files were each
changed on 2026-09-16, the day AFTER #3301's re-measurement. pmat 3.41.1
run on llm.rs AS OF 4bad830 reads 36/61, 40/91, 20/40, 16/36 — the
exact numbers 3.40.1 recorded. Same binary, old tree, same reading:
the instrument did not move on complexity; the 09-16 commits did.

cb200_baseline.txt / .pmat-gates.toml [tdg] 601 -> 599, lowered.
pmat comply check --checks CB-200 from a cold index at 3409b29:
"599 definition(s) below minimum grade B across 478 file(s) ... The
tree is 2 under the recorded baseline: lower to 599". The same binary
on 5d95ed5, the tree that banked 601 under 3.40.2, reads 602 — so
3.41.1 grades ONE more definition below B on that tree than 3.40.2
did (not identified to the definition here), and the current tree is
three definitions better than 09-17 under the one instrument.
Written as 599 because that is what the pin reads on this tree, and
the ratchet refuses anything above it from here.

Not changed: scripts/pmat_bin.sh PMAT_PIN="3.37.0" and the fleet's
pmat-337-pin — a different contract with its own reason (run 34639757080).

Also measured while here, for the follow-up that replaces
make roadmap-aggregate with pmat: pmat roadmap aggregate (3.41.1) on the
same 919 base + 32 fragments writes docs/roadmaps/roadmap.yaml
BYTE-IDENTICAL to scripts/lib/roadmap_fragments.py aggregate — 642,905 bytes,
sha256 fb345c44cb18ef0a… both ways, --check ok and idempotent from either
side. Not acted on in this PR.

Closes #3490.

ont-delta: none — a fleet pin bump and two re-measured baselines; no entity type, shape, resolves rule or reason id.

🤖 Generated with Claude Code

…92); CB-200 599, complexity 670 rows, both re-measured not relabelled

tools.toml's own header: "Bump this file in the SAME commit as the infra
forjar.yaml version bump." infra#692 (9c411f4) moved stack-tool-pmat to
3.41.1 on all five boxes and converged them — including /opt/ci-tools/pmat,
the file every container runner on gx10 and yoga mounts as
/usr/local/bin/pmat, which nothing had declared and which was still 3.40.1
after the login user's pmat moved. Measured in a fresh clone at 3409b29
with the converged pmat on PATH, before this change:

    FAIL  pmat     pinned 3.40.1     found 3.41.1

which is the verdict every aprender PR gets on every converged runner until
this lands — #3301's split (`pinned 3.40.0 found 3.40.1`) again. After:

    ok    pmat     pinned 3.41.1     found 3.41.1
    ok    bashrs   pinned 7.4.1      found 7.4.1
    4/4 checks, 0 failed

CHANGING THE INSTRUMENT RE-RECORDS THE BASELINES (#3301), and this time the
instrument and the tree are separated by measurement, not assumed:

  complexity_baseline.txt   676 rows -> 670 (check_complexity_ratchet.sh
      --update, "10345 file(s), 179788 function(s), 670 over"). The six
      dropped rows (inference_result.rs::validate_gpu_first_token,
      llm.rs::execute_llm_{experiment,load,score,sweep},
      ggplot.rs::compute_data_ranges) all still exist. Their files were each
      changed on 2026-09-16, the day AFTER #3301's re-measurement. pmat 3.41.1
      run on llm.rs AS OF 4bad830 reads 36/61, 40/91, 20/40, 16/36 — the
      exact numbers 3.40.1 recorded. Same binary, old tree, same reading:
      the instrument did not move on complexity; the 09-16 commits did.

  cb200_baseline.txt / .pmat-gates.toml [tdg]   601 -> 599, lowered.
      `pmat comply check --checks CB-200` from a cold index at 3409b29:
      "599 definition(s) below minimum grade B across 478 file(s) ... The
      tree is 2 under the recorded baseline: lower to 599". The same binary
      on 5d95ed5, the tree that banked 601 under 3.40.2, reads 602 — so
      3.41.1 grades ONE more definition below B on that tree than 3.40.2
      did (not identified to the definition here), and the current tree is
      three definitions better than 09-17 under the one instrument.
      Written as 599 because that is what the pin reads on this tree, and
      the ratchet refuses anything above it from here.

Not changed: scripts/pmat_bin.sh PMAT_PIN="3.37.0" and the fleet's
pmat-337-pin — a different contract with its own reason (run 34639757080).

Also measured while here, for the follow-up that replaces
`make roadmap-aggregate` with pmat: `pmat roadmap aggregate` (3.41.1) on the
same 919 base + 32 fragments writes docs/roadmaps/roadmap.yaml
BYTE-IDENTICAL to scripts/lib/roadmap_fragments.py aggregate — 642,905 bytes,
sha256 fb345c44cb18ef0a… both ways, `--check` ok and idempotent from either
side. Not acted on in this PR.

Closes #3490.

ont-delta: none — a fleet pin bump and two re-measured baselines; no entity type, shape, resolves rule or reason id.

Pmat-Ticket: PMAT-3490
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@noahgift

Copy link
Copy Markdown
Member Author

quorum-review (AD-04): three PASS — agreed (auto_merge: checked=true was_armed=false disarmed=false)

{
 "ticket": "PMAT-3490",
 "head": "41c97659607d52c038be6b91cfe9ee5b6227c8db",
 "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": 3
  },
  {
   "lane": 2,
   "verdict": "PASS",
   "findings": 0
  },
  {
   "lane": 3,
   "verdict": "PASS",
   "findings": 0
  }
 ]
}

@github-actions

github-actions Bot commented Sep 18, 2026 •

Copy link
Copy Markdown

§13.11 rung 1 — quorum shadow verdict

S13-SHADOW pr=3491 head=40ec664b8352c9033f4bdc4bf17fa28cd665fe4a verdict=REFUSE class=Q1 arm_rc=1

Shadow mode: this records a verdict and merges nothing. A refusal
to arm is not a block (§13 adds zero rows to §7) — the pull request is
exactly as green as it was.

Pmat-Ticket: PMAT-3490
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@noahgift

Copy link
Copy Markdown
Member Author

Correction to one paragraph of this PR's body — the "byte-identical" aside, not the pin

The body says pmat roadmap aggregate (3.41.1) wrote roadmap.yaml byte-identical to the python aggregator (642,905 B, fb345c44cb18ef0a…, 919 + 32). That measurement was vacuous. pmat roadmap aggregate with no flag prints the aggregate to stdout and writes nothing; only --write writes. So the "comparison" was the python-written file against itself. It was caught when the follow-up PR's roadmap-aggregate-check stayed RED after a "write" that had not happened.

Re-measured properly, each writer from a clean checkout of the base, on 920 base + 33 fragments (the follow-up branch, which adds one fragment):

writer bytes sha256
python3 scripts/lib/roadmap_fragments.py aggregate --write 643,348 8403d71d857df724…
pmat roadmap aggregate (stdout) 643,348 8403d71d857df724…
pmat roadmap aggregate --write 643,348 8403d71d857df724…

cmp python vs pmat: identical. So the conclusion stands and the evidence now exists; the numbers in the body do not. Nothing in this PR's diff depends on that paragraph — it was explicitly "not acted on in this PR" — and the pin, the two re-measured baselines and the quorum artifact are unaffected. The follow-up (#3493) carries the real ladder.

Reviewer: a separate session in ~/src/aprender-review, per
.claude/skills/pr-review/SKILL.md v2.1.0. Verdict FINDINGS (none blocking,
none DEGRADED): four measured, advisory findings — a competing open PR
(#3492) for the same ticket from the same merge base, a tools.toml
provenance SHA (infra 9c411f4) that does not exist in paiml/infra after a
rebase, pmat 3.41.1's MCP pmat_index_stats deleting a CLI-built index
(reproduced 2/2, an upstream defect in the instrument this PR pins), and
workspace-test red on this head because yoga-build2 killed the container
(exit 143), not because a test failed.

The PR's own claims were re-measured under pmat 3.41.1 and all hold:
check_tool_versions 4/4; CB-200 599 across 478 files at HEAD and 602 on
5d95ed5; 670 complexity rows on both sides of the merge base; the six
dropped functions still exist and read under threshold; llm.rs as of
4bad830 reads the 3.40.1 numbers; forjar.yaml line 779 pins 3.41.1.

Receipt ACCEPTED by scripts/check_pr_review_receipt.sh under a throwaway
key (all four positive controls fired first); the throwaway signature was
removed and the repository signer (ci.yml pr-review-sign) signs it.

Pmat-Ticket: PMAT-3490
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@noahgift

Copy link
Copy Markdown
Member Author

pr-review v2.1.0 | verdict=FINDINGS | consultations: pmat=consulted cuda=not-triggered crux=not-triggered mutation=not-triggered agy=consulted | findings=4 (cited=0 measured=4 asserted=0) | index=0fd8deb ancestor=true | agy=gemini-3.1-pro-high advisory | divergence: agreed=0 agy-only=0 primary-only=4 contradicted=0 | receipt=evidence/pr-review/3491/0fd8deb79bbb1b21a0b15089233979f0c8c73cf7/receipt.intoto.jsonl (L1-self, signed)

The signature proves this receipt was produced in the CI environment. It does not prove the review was honest or complete — attestation_level is L1-self. The receipt was pushed unsigned in 7f909b6; ci.yml pr-review-sign signs it and pushes the .minisig back, so "signed" on the line above is the state after that job, not before.
Verify it yourself: bash scripts/check_pr_review_receipt.sh evidence/pr-review/3491/0fd8deb79bbb1b21a0b15089233979f0c8c73cf7

Re-measured and holding (all under pmat 3.41.1, this box): check_tool_versions.sh 4/4 · CB-200 599 across 478 files at 0fd8deb (cold index) and 602 on 5d95ed5 (throwaway worktree) · complexity 670 over on both sides of the merge base · the six dropped rows still exist and read 14/21, 6/11, 11/21, 8/15, 10/23, 2/1 at HEAD, and llm.rs as of 4bad830 reads 36/61, 40/91, 20/40, 16/36 under 3.41.1 · infra forjar.yaml line 779 version: "3.41.1" on origin/main · roadmap aggregate --check idempotent · pmat_bin.sh PMAT_PIN 3.37.0 untouched.

Findings (4, all measured, all advisory — nothing blocks):

  1. measured — A second open PR implements this ticket: PMAT-3490: tools.toml pmat 3.40.1 → 3.41.1 — the fleet converged (infra#692), and the two tool_version baselines are re-recorded under it in the same commit #3492 (branch PMAT-3490-pmat-pin-3.41.1, created 113 s after this one, same merge base 3409b29, 6 of the same 7 files, also "Closes tools.toml pmat pin 3.40.1 -> 3.41.1 — the fleet converged 2026-09-18 (infra#692) and every converged runner now fails check_tool_versions.sh #3490"). It keeps cb200 at 601; this PR lowers it to 599. Whichever lands second conflicts on tools.toml, both baselines and roadmap.yaml, and a naive resolution of PMAT-3490: tools.toml pmat 3.40.1 → 3.41.1 — the fleet converged (infra#692), and the two tool_version baselines are re-recorded under it in the same commit #3492 after this one would carry cb200 back up to 601 — a shrink-only violation the ratchet refuses. Neither PR names the other. This one is the one with auto-merge armed; someone should close the other.
  2. measured — tools.toml:7 cites infra 9c411f4, which does not exist in paiml/infra. After fetching all heads and refs/pull/692/*, git cat-file -t 9c411f44f exits 128 — it is the pre-rebase tip named by infra's quorum commit 7346a292. The commit that pins 3.41.1 is 2734069e, merged via f92ed2d0 (REGRESSION: export, merge, prune still hang indefinitely (re: #606) #692). Line 779 and the version are correct; only the SHA is dead. (PMAT-3490: tools.toml pmat 3.40.1 → 3.41.1 — the fleet converged (infra#692), and the two tool_version baselines are re-recorded under it in the same commit #3492 writes infra#692 with no SHA and is not exposed.)
  3. measured — pmat 3.41.1's MCP pmat_index_stats deletes a CLI-built index. pmat query --rebuild-index writes context.db 2 s after context.idx/manifest.json; the MCP call then answers "the index is stale: context.db was written after manifest.json" and .pmat/context.db + context.idx/ are gone. Reproduced 2/2; 7/7 CLI paths (query, analyze satd/tdg/complexity, the three guards) leave it intact. CB-200 stays measured through comply's feat(falsify-ship-016): PARTIAL discharge — apr qa 8-of-8 aggregate-AND verdict fn #1008 private-cache fallback, but dogfood.sh:1004 reads a missing .pmat/context.db as UNMEASURED → FAIL. Upstream pmat defect, not this PR's to fix; recorded because this PR is what pins 3.41.1 on every runner. Not tested on 3.40.1, so not claimed as a regression.
  4. measured — workspace-test is red on 0fd8deb because yoga-build2 killed the container (job 105673963954, Killed docker run ..., exit 143, 4 m 24 s in, mid-compile of aprender-profile tests; zero .rs in the diff). present is red only because this receipt did not yet exist. The receipt push re-triggers CI on 7f909b6.

agy (requested gemini-3.1-pro-high, advisory) read the diff and returned findings: [], as did the 3/3 Gemini quorum in docs/audits/quorum-PMAT-3490.json; every primary finding needed something agy's disposable tree did not hold (the sibling-branch scan, the infra checkout, the MCP server, gh).

…sts nowhere — the pin commit is 2734069 via f92ed2d (#692)

Found by this PR's own Arm 4 review (finding 2, measured): infra#692 was
rebased over infra#691 before it merged, so the commit I wrote into
tools.toml:7 was rewritten to 2734069e and merged as f92ed2d0. A reader
following the citation would have found nothing. One comment line; the pin,
the baselines and the quorum-judged diff are unchanged in substance.

Pmat-Ticket: PMAT-3490
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@noahgift
noahgift disabled auto-merge September 18, 2026 16:57
@noahgift

Copy link
Copy Markdown
Member Author

quorum-review (AD-04): NOT agreed (auto_merge: checked=true was_armed=true disarmed=true)

{
 "ticket": "PMAT-3490",
 "head": "7798ae0b9db5acccac6cfad2a6f777ec42260cde",
 "width": 3,
 "executor": "agy",
 "agreed": false,
 "auto_merge": {
  "checked": true,
  "was_armed": true,
  "disarmed": true,
  "note": "auto-merge was armed from an earlier round; disarmed before lanes launched"
 },
 "lanes": [
  {
   "lane": 1,
   "verdict": "FAIL",
   "findings": 3
  },
  {
   "lane": 2,
   "verdict": "PASS",
   "findings": 0
  },
  {
   "lane": 3,
   "verdict": "PASS",
   "findings": 0
  }
 ]
}

@noahgift

Copy link
Copy Markdown
Member Author

The CI run for 674da06 was sitting at action_required with zero jobs — the push came from github-actions[bot], so GitHub held the workflow for approval. Approved it via the API (POST …/actions/runs/35373847026/approve); it is queued with 16 jobs now. Not touching the branch or arming: the last quorum comment here is NOT agreed on 7798ae0, so this head needs its own round before pmat-merge will accept it. aprender#3489 (ONT-4) waits on this.

@noahgift

Copy link
Copy Markdown
Member Author

quorum-review (AD-04): NOT agreed (auto_merge: checked=true was_armed=false disarmed=false)

{
 "ticket": "PMAT-3490",
 "head": "674da069e65fb11d589d895899ba626ecd241b24",
 "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": "FAIL",
   "findings": 1
  },
  {
   "lane": 3,
   "verdict": "PASS",
   "findings": 0
  }
 ]
}

@noahgift

Copy link
Copy Markdown
Member Author

CI is green on 674da069 (9 pass, 2 skipping). I ran a fresh quorum on that head (three lanes, gemini-3.1-pro-high / -low / 3.7-flash-low): NOT agreed — FAIL / FAIL / PASS, and the two FAILs say the same thing, correctly:

  • the committed docs/audits/quorum-PMAT-3490.json is the artifact for head 41c97659 and its lane text says tools.toml cites "infra 9c411f4", while the diff's tools.toml:7 now says "infra 2734069 via f92ed2d" (the fix in 7798ae0);
  • the pr-review v2 findings.sarif (for 0fd8deb, signed in 674da06) also cites 9c411f4.

So the diff carries two receipts that contradict the file they describe. The lanes are given the whole diff, receipts included, and refuse a claim the diff does not back. Nothing was pushed here: the artifact I got is not agreed, and the stale SARIF is the pr-review skill's to regenerate. Once the receipts are re-cut for 674da06 (or the stale ones dropped), a quorum on that head should agree — the pin change itself drew no finding from any lane.

aprender#3489 (ONT-4) is waiting on this.

@noahgift
noahgift enabled auto-merge September 20, 2026 14:30
@noahgift
noahgift disabled auto-merge September 20, 2026 14:53
… baselines carried rather than re-measured

DIRTY from squash-merge churn, not a content disagreement: 10 commits on
docs/roadmaps/roadmap.yaml since 09-18, plus one move each on the two
baselines. Roadmap resolved by regenerating from its fragments.

THE PIN WAS RE-VERIFIED BEFORE THE REBASE, because a pin measured two
days ago asserts nothing if the fleet moved under it. Measured on the
RUNNER denominator, not the host set:

  intel HOST          3.41.1   /usr/local/bin/pmat
  gx10-pool1          3.41.1   /usr/local/bin/pmat
  yoga-build3         3.41.1   /usr/local/bin/pmat
  gx10 / mini / lambda-labs HOST   3.41.1
  pforge-clean-room   ABSENT   (rust:1.95-slim carries no pmat — paiml/infra#813)

Declared in infra equals live on all five machines: 3.41.1. So this is a
converged pin, the row stays a rebase, and the baselines are carried
rather than re-measured — they are tool-version-specific and the tool
version did not move.

THE CB-200 CONFLICT IS A REAL ONE AND 599 IS THE RIGHT SIDE. main says
601, this branch says 599, and BOTH headers already read
`tool_version=pmat 3.41.1`. The file is shrink-only against origin/main,
so 599 is a legal ratchet-down while 601 would surrender it. Verified on
the MERGED tree rather than assumed, which is the half that could have
gone wrong — 10 commits of new code could have made 599 unreachable:

  ok  CB-200 baseline 599 ([tdg] baseline == scripts/cb200_baseline.txt)
  ok  ratchet scripts/cb200_baseline.txt did not grow (2 removed)
  ok  ratchet scripts/complexity_baseline.txt did not grow (8 removed)
  PASS (D2): 3409b29 vs 674da06 measured by pmat 3.41.1

Pmat-Ticket: PMAT-3490
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@noahgift noahgift changed the title fix(tools): pin pmat 3.41.1 — the fleet converged 2026-09-18 (infra#692); CB-200 599, complexity 670 rows, both re-measured not relabelled chore(ratchet): CB-200 601→599 and the complexity shrink under pmat 3.41.1 — the pin itself landed in #3484 Sep 20, 2026
@noahgift

Copy link
Copy Markdown
Member Author

quorum-review (AD-04): NOT agreed (auto_merge: checked=true was_armed=false disarmed=false)

{
 "ticket": "PMAT-3490",
 "head": "62634ffde2e0c29432767cd181d47effd2edfa7b",
 "width": 3,
 "executor": "agy",
 "agreed": false,
 "auto_merge": {
  "checked": true,
  "was_armed": false,
  "disarmed": false,
  "note": "auto-merge not armed"
 },
 "lanes": [
  {
   "lane": 1,
   "verdict": "NO-VERDICT",
   "findings": 0
  },
  {
   "lane": 2,
   "verdict": "NO-VERDICT",
   "findings": 0
  },
  {
   "lane": 3,
   "verdict": "NO-VERDICT",
   "findings": 0
  }
 ]
}

@noahgift

Copy link
Copy Markdown
Member Author

quorum-review (AD-04): NOT agreed (auto_merge: checked=true was_armed=false disarmed=false)

{
 "ticket": "PMAT-3490",
 "head": "62634ffde2e0c29432767cd181d47effd2edfa7b",
 "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": "FAIL",
   "findings": 2
  },
  {
   "lane": 3,
   "verdict": "PASS",
   "findings": 0
  }
 ]
}

…s ago

Quorum lane 1 refused, correctly: the fragment still said "update the
pmat pin to 3.41.1 in tools.toml" while `[pmat] version = "3.41.1"` has
been on main since `f4c0daa37` (09-18 17:07), inside #3484. The ticket
authorizes and the issue defines done, so a lane refusing a diff that
does not do what its ticket says is the gate working. I had retitled the
PR and prepended a correction to its body; the fragment was the last
place the old story lived.

Rewritten to what the row actually lands: CB-200 601 -> 599, the
complexity shrink, and the stale comment on tools.toml:7. With the
verification that matters -- 599 re-checked on the MERGED tree, not
carried -- and the note that 3.41.1 was re-confirmed converged on the
runner denominator before the rebase.

The same lane also wrote "the diff only updates a comment in tools.toml
while leaving the actual version unchanged at 3.40.1" -- reading line 7,
a COMMENT, as the pin. Two humans and now a review lane, three readers of
three different kinds, same wrong line. That is paiml/infra#816 and the
lane's sentence is the best evidence in it.

The pr-review receipt under evidence/pr-review/3491/0fd8deb79.../ is
deliberately NOT regenerated: it is scoped to the sha it names and
correct for it, and pr_review_quorum_arm.sh:612 already refuses this case
with the true reason. Regenerating a signed receipt for a head it never
reviewed would be the actual defect.

Pmat-Ticket: PMAT-3490
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@noahgift

Copy link
Copy Markdown
Member Author

quorum-review (AD-04): NOT agreed (auto_merge: checked=true was_armed=false disarmed=false)

{
 "ticket": "PMAT-3490",
 "head": "d5d2f518a3d37617776ab27212dd0241b3e8289a",
 "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": "NO-VERDICT",
   "findings": 0
  },
  {
   "lane": 3,
   "verdict": "FAIL",
   "findings": 1
  }
 ]
}

…0 601→599 and one comment

Quorum r3 refused on two true findings.

Lane 1: scripts/complexity_baseline.txt is absent from the diff against
origin/main. The "8 functions removed" that r2's ratchet printed was
measured against the MERGE-BASE, and the merge then auto-resolved the
file to main's version because main already carried the same shrink,
via #3484 -- the same PR that carried the pin. So the criterion's
"complexity-baseline shrink" claim was a claim about the merge-base, not
about this PR. Dropped. What this PR lands is now stated exactly:
cb200 601 -> 599, and the stale comment on tools.toml:7. Nothing else.

Lane 2: the committed docs/audits/quorum-PMAT-3490.json was the artifact
from the ORIGINAL round on 0fd8deb, and it asserts that tools.toml:56
and complexity_baseline.txt were modified. Both were true of that tree
and are false of this one. A lane reading it as a receipt claim about
the current diff is right to refuse. Removed; the artifact from the
round that passes on this head is what gets committed.

Third time on this PR that a claim went stale because the tree moved
under it: the pin (landed in #3484), the complexity shrink (landed in
#3484), and the receipt (described 0fd8deb). Same lesson each time --
every number in a criterion has to be re-derived from the diff against
main at the moment the criterion is written, and a diff against the
merge-base is a different diff.

Pmat-Ticket: PMAT-3490
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@noahgift

Copy link
Copy Markdown
Member Author

quorum-review (AD-04): three PASS — agreed (auto_merge: checked=true was_armed=false disarmed=false)

{
 "ticket": "PMAT-3490",
 "head": "b940bf4c2f1d7394616fcdd0ef197a7d35d4edff",
 "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": 0
  },
  {
   "lane": 3,
   "verdict": "PASS",
   "findings": 0
  }
 ]
}

Rounds 1-3: quota-voided; two lanes refusing the fragment that still
described a pin bump; two lanes refusing the merge-base-measured
"complexity shrink" claim and the stale receipt from 0fd8deb. Round 4
judges what the PR actually is: cb200 601 -> 599 and one comment.

Pmat-Ticket: PMAT-3490
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@noahgift
noahgift added this pull request to the merge queue Sep 20, 2026
Merged via the queue into main with commit 237fbc3 Sep 21, 2026
26 checks passed
@noahgift
noahgift deleted the fix/tools-pmat-3.41.1 branch September 21, 2026 00:41
noahgift added a commit that referenced this pull request Sep 26, 2026
…nder main's 620

CB-200 (pmat 3.41.1 comply, cold XDG_CACHE_HOME, git-archive trees) read 624 on
the car bfd46bb against 620 on main c68deb4: the car added 7 below-B
definitions and fixed 3 (shapes.parse_property, shapes.well_formed,
model_ladder_cells.judge). All 7 are fixed here; the same measurement reads 617,
and the car's own net against main is now -3 (was +4). No other definition
changed grade (index diff car -> this tree: 7 gone, 0 new).

  extract_rdf.rs run                     cx 16 -> refusals in refuse_release_only_args
  lint.rs decide_shapes_gate             cx 16 -> decline arms in shapes_decline_reason
  shapes_gate.rs run_shapes_gate_with    cx 16 -> body is run_or_answer, early answers via ?
  shapes.rs turtle_property              cx 18 -> turtle_string_and_pair_lines
  openai_handlers.rs true_streaming_sse  cx 16 -> tail_deltas (utf8 tail, then stop-filter tail)
  scripts/coverage_serve_shards.py       PORTED OFF PYTHON -> coverage_serve_shards.sh
                                         (POSIX awk + LC_ALL=C sort). Byte-identical shard
                                         files and summary line vs the .py on 12 random
                                         fixtures (3- and 4-arg), same refusals (empty list,
                                         unknown solo); Makefile:694 calls the .sh.
  scripts/test_apr_dogfood_lane_4252.py  main -> a CASES table of per-case functions. NOT
                                         ported: it tests apr_dogfood_lane_4252.py IN-PROCESS
                                         (monkeypatches lane.*), which only Python can do.
                                         Same 9 PASS rows as before (wall times aside).

Baseline NOT raised here. The ruling was [tdg] baseline := 617, but
scripts/cb200_baseline.txt is shrink-only against origin/main through
lib_baseline_ratchet.sh, and check_complexity_ratchet.sh (ci.yml:1948)
refuses it: "the recorded count rose 599 -> 617". 617 - 598 = 19 over, all
main's: docs/findings/cb200-main-below-b-0701.jsonl lists the 32 definitions
below B on main and on this tree that were not below B on 237fbc3 (#3491,
the tree that recorded 599) — for 0.70.1.

Tests: aprender-contracts --lib 1782 ok; aprender-serve --lib stream|sse 275 ok;
clippy -D warnings clean on the three crates. ont4b_shapes_gate::
the_tracked_repo_graph_is_fresh FAILS on the car independently of this diff:
contracts/contracts.nt is 3696 triples behind `pv extract contracts` (binding
symbols such as aprender::autograd::ops::activation::gelu_exact).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

tools.toml pmat pin 3.40.1 -> 3.41.1 — the fleet converged 2026-09-18 (infra#692) and every converged runner now fails check_tool_versions.sh

2 participants