Skip to content

check:engine-double-contract's CONSUMER SEAM population is unratcheted the same way the pinned population was — deleting a seam takes 6 to 5 with the gate green #9708

Description

@os-steve

Filed unassigned by the dev seat implementing #9680, session session_01XqDQYVU5smx29ts9pAErja. Measured on origin/main @ ed4ca5999. Not a claim that any seam is currently missing — this is a property of the checker, measured by ablation, exactly as #9680 and #8639 were.

No domain:* set — triage's field.

The gap

#9680 fixed the pinned engine-double population: it is now enumerated in scripts/engine-double-contract.pinned.json and a pin that disappears names itself. The same script holds a second discovered population — the consumer seams (#8194) — and that one still has only the zero-check:

if(seamCount===0){errors.push('SEAMS_DISCOVERED: the consumer-seam scan found no by-id write seam anywhere ...');}

SEAMS_DISCOVERED fires at zero, never at one fewer than yesterday, and there is no ledger of any kind on the seam side. REFUSES iterates the discovered set, so a seam that leaves the set is not judged by anything — the identical structure #9680 measured on the pinned side.

Measured — ablation on a real seam

Baseline:

consumer seams: 6 in 3 source file(s) — 6 refusing through recordNotFoundError, 0 through a locally minted error, 0 not refusing at all.
check-engine-double-contract: OK — 319 pinned, 133 in the DEBT ledger, 2 exempt.
exit 0

Delete the whole remove() seam from packages/mcp/src/stdio-data-bridge.ts (lines 410-420 at that rev):

consumer seams: 5 in 3 source file(s) — 5 refusing through recordNotFoundError, 0 through a locally minted error, 0 not refusing at all.
exit 0

Zero errors. The seam census dropped and the only trace is a printed integer nobody compares.

Reproduce:

node scripts/check-engine-double-contract.mjs # 6 seams
# delete the `async remove(object, id) { ... }` member of the bridge
node scripts/check-engine-double-contract.mjs; echo $? # 5 seams, exit 0
git checkout -- packages/mcp/src/stdio-data-bridge.ts

Why it is filed rather than fixed inside #9680

#9680's declared file surface was the pinned population, and its ratchet is a generated 308-row ledger. The seam side is not mechanically the same problem and should not inherit that answer by reflex:

Not claimed

Related

#9680 (the pinned-population half, and the PR that fixed it) · #8194 (the card that added the seam slice) · #8553 · #8639 · #4868 (the check-runs-green-and-cannot-reach-its-subject family)

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions