Skip to content

HAC-335: bind the judge package to HAC-343, which is no longer unbound - #32

Merged
qmarcelle merged 2 commits into
mainfrom
hac/335-bind-hac343-judge-export
Aug 23, 2026
Merged

HAC-335: bind the judge package to HAC-343, which is no longer unbound#32
qmarcelle merged 2 commits into
mainfrom
hac/335-bind-hac343-judge-export

Conversation

@qmarcelle

Copy link
Copy Markdown
Contributor

The package was stating something false

On the root README, the Devpost narrative, the limitations page, the claim
ledger and the asset registry, this package said:

Evaluation (HAC-319) is not yet bound: no SPR, precision, recall,
false-block or useful-concurrency number exists in this package, and none is
shown.

HAC-343 froze a canonical result at 7ede0f9 on 08-19 and is marked Done. Every
one of those sentences has been false since.

Worse, the gate enforced the falsehood. Rule 13/14 of verify-package.mjs
failed the build if an SPR value appeared next to a number — so the gate would
have rejected the correction.

The gate is re-pointed, not relaxed

The replacement is stricter than what it replaces. "No number" is trivially
checkable; "every number is the frozen one, and none of them travels alone"
needs the export in hand:

  • every count in a file that renders the comparison must be a frozen display
    value from judge-export.json — a figure cannot be mistyped, rounded, or
    recomputed from the raw records;
  • Panel 1 never appears without Panel 2 in the same file. Panel 1 alone
    reads as "Interlock is the safe one", and the export forbids exactly that: the
    0/2 is bounded to COUPLED scenarios and is a property of the evidence being
    present, not of the engine;
  • the A3 credibility strip (2/2, 4/4, 2/2) travels with the comparison, so
    the per-target lock cannot be reduced to a straw man;
  • every entry in the export's own mustNotClaim list is checked against prose;
  • the superseded "no SPR exists" sentences fail the build if reverted.

Ten negative proofs, one per rule, each asserting its mutation landed first.

Two contradictions found while binding

  • The cockpit's A3 strip carried only 2/2 serialized. That shows the lock ran,
    not what it cost or what it still missed — the half that makes A3 credible. It
    now binds all three frozen figures.
  • The reserved HAC-319 shell withheld SPR while the panel beside it rendered
    SPR from HAC-343. A surface that calls a metric withheld next to a panel
    showing that metric is not being careful, it is wrong. The shell now withholds
    precision, recall and fleet-scale behaviour — what is actually still unbound —
    and names where SPR is bound.

Boundaries held

HAC-319 proper stays unbound; IL-DIAG-013 stays out of the judge registry with
its seam recorded. HAC-343 is its bounded child, not a substitute. No frozen
HAC-343 artifact was modified — the export is read, never written.

Captures re-taken from the changed cockpit; the freshness gate caught them as
stale first.

Verification

  • pnpm run check exit 0
  • 644 tests (was 637; 3 obsolete cases replaced by 10 new negative proofs)
  • typecheck, build clean
  • cockpit visual/contrast gate: 5606 text nodes, 46 scenarios, 0 failures, min 5.15:1

The package stated, on the root README, the Devpost narrative, the
limitations page, the claim ledger and the asset registry, that no
evaluation exists: "no SPR, precision, recall, false-block or
useful-concurrency number exists in this package, and none is shown."

HAC-343 froze a canonical result at 7ede0f9 on 08-19. Every one of those
sentences has been false since. Worse, `verify-package.mjs` *enforced*
the falsehood — rule 13/14 failed the build if any SPR value appeared
next to a number, so the gate would have rejected the correction.

The gate is re-pointed rather than relaxed, and the new rule is stricter
than the one it replaces. "No number" is trivially checkable. What
replaces it needs the frozen export in hand:

- every count in a file that renders the comparison must be a frozen
  `display` value from judge-export.json, so a figure cannot be
  mistyped, rounded, or recomputed from the raw records;
- Panel 1 never appears without Panel 2 in the same file. Panel 1 alone
  reads as "Interlock is the safe one", and the export forbids exactly
  that reading — the 0/2 is bounded to COUPLED scenarios and is a
  property of the evidence being present, not of the engine;
- the A3 credibility strip (2/2, 4/4, 2/2) travels with the comparison,
  so the per-target lock cannot be reduced to a straw man;
- every entry in the export's own `mustNotClaim` list is checked against
  the prose;
- the superseded "no SPR exists" sentences fail the build if reverted.

Ten negative proofs, one per rule, each asserting its mutation landed.

Two contradictions found while binding, both fixed:

- the cockpit's A3 strip carried only `2/2 serialized`. That shows the
  lock ran, not what it cost or what it still missed, which is the half
  that makes A3 credible. It now binds all three frozen figures.
- the reserved HAC-319 shell withheld `SPR` while the panel beside it
  rendered SPR from HAC-343. A surface that calls a metric withheld next
  to a panel showing it is not being careful, it is wrong. The shell now
  withholds precision, recall and fleet-scale behaviour — what is
  actually still unbound — and names where SPR is bound.

HAC-319 proper stays unbound and IL-DIAG-013 stays out of the judge
registry with its seam recorded. HAC-343 is its bounded child, not a
substitute, and the package now says so instead of letting the bound
child imply the unbound parent.

Captures re-taken from the changed cockpit; the freshness gate caught
them as stale first.

pnpm run check exit 0, 644 tests, typecheck and build clean.
Copilot AI lite review requested due to automatic review settings August 23, 2026 15:06

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@vercel

vercel Bot commented Aug 23, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
interlock Ready Ready Preview Aug 23, 2026 3:11pm

@codecov

codecov Bot commented Aug 23, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

…claration

The reserved-shell narrowing changed a source the HAC-334 visual model and
IL-DIAG-013 master are generated from, so their committed copies went stale.
CI rebuilds and diffs those; the local verifier only checks the committed
model against itself, which is why this passed here and failed there.

Regenerated, not hand-edited. The master now reads THREE-REGIME EVALUATION
NOT YET BOUND and withholds precision, recall and fleet-scale behaviour —
no longer SPR, which HAC-343 binds.
@sonarqubecloud

Copy link
Copy Markdown

@qmarcelle
qmarcelle merged commit 07e1a93 into main Aug 23, 2026
24 checks passed
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.

2 participants