Repository navigation
CLOUD-1163 unit 11: withdraw the replay harness, which never had a consumer - #835
Conversation
CLOUD-1163 Retire the eight small multi-program units — 59.7s, and SIX of eight land today: BOTH remaining blockers (CLOUD-1108, CLOUD-1115) disclaim blocking in their own bodies, by name
COLUMN CORRECTED 2026-09-02 — In Progress → Todo; unit 8 landed, the other seven are unclaimedMeasured against
A claim nobody is working is not a claim. Back to Todo; the Ready block below still holds and CORRECTION (2026-08-31, second pass) — the two BLOCKERS were read from this row's own table instead of from the rows they cite, and both cited rows say the opposite IN BOLDThis row's 2026-08-31 correction fixed three wrong reasons by reading the programs. It did not re-read the two BLOCKER ROWS, and that is where the remaining error was. Read each of them at head and both disclaim blocking this row, by name:
Both blockers were carried on this row's TITLE-adjacent verdict rather than on the cited row's body. That is CLOUD-1166's class one level up from the three this row already corrected: not classifying a program instead of reading it, but classifying a BLOCKER instead of reading it. The reading took minutes, as it did the first three times. The seconds are stale, and every rank movedThe 52.2s in the old title and the per-unit column below predate CLOUD-1198's corpus regeneration. Re-derived from
Unit 11 went from fourth-largest to largest, and units 11 and 9 together — 32.9s, 55% of this row — were the two carried as blocked. The row is now: six units and 52.4s land today, 6.8s is genuinely blocked on CLOUD-1251, and 0.5s is not migrating. Arm-4 evidence for the one surviving block, quoted rather than categorised: Why Units 3, 4, 6, 7, 8, 9, 10 and 11 of the 83-unit partition. Eight independent deltas, 19 programs, 52.2s combined. They are one row because each is small and none glues to another; each still lands as its own PR with its own ledger arms.
Glue, per unit (each is a
The home each unit's decision lands inA disposition is chosen before a successor is designed (CLOUD-1176). "Port it into
Which of the eight are actually reachable
So three of eight land today — units 8, 10, and (comparator-first) 7. That is the honest count and it is why CLOUD-1151 cannot size a wave from unit count. CORRECTION (2026-08-31) — the blocked verdicts above predate the fact surface they were judged againstEvery blocked verdict in this row was written on 2026-08-29/30. Seven fact families have landed since, and the row was never re-read against them. Enumerated from the generated
~~THE COUNT CHANGES: it is now FOUR of eight, not three. ~~(Superseded 2026-08-31 by the second-pass correction at the top: it is SIX of eight. Units 9 and 11 were blocked on rows that each disclaim blocking.) Unit 6 was carried as blocked on a comparator input it does not need, and reading Every wrong reason in this row came from classifying a program instead of reading it. Three corrections, three instances: "out-of-root" for unit 4, "missing fact" for unit 3, "comparator inputs" for units 6 and 7. The reading in each case took minutes. Read the program before recording why it cannot move. Two need a runnable successor at a real path, not just a ledger arm
Refinement — Ready (eight deltas, one row; units 8, 10 and 7 land today) Refinement gate: Definition of Ready & Done. This body carries only specializations.
Weakens: rule-removed rule[harness-wiring-merged] Weakens: rule-predicate-changed rule[harness-wiring].documents Weakens: rule-predicate-changed rule[harness-wiring].external Weakens: rule-predicate-changed rule[harness-wiring].minted Unit 9's landing carries four config smells against Acceptance
Units 3, 4, 6, 7, 8, 9, 10, 11 of 83. CLOUD-1115 `replay`'s tree arm has never run against a real gate and cannot pass: it captures the working directory instead of the case's inputs, so every carried case is judged over the wrong tree
Why CLOUD-909 built Its first use against a real gate was The migration itself is green on both tiers it can be judged by: the module's 12 Three independent defects, measured with a preserved work directoryAn out-of-tree copy of 1. The captured fixture is the WORKING DIRECTORY, not the case's inputsThe shim records and the case's actual inputs are elsewhere entirely — from the same capture's stdout: This is not a quirk of one suite. Every structured-config gate in wave 1 takes its inputs as argv paths precisely so its bats suite can point it at It is also why the run does not fit on disk. 62 carried cases across four suites each copy a whole worktree; the run died with 2. The head side cannot run at all over such a fixture
3. The pointer comparison is between incommensurable things
— the first word of a prose sentence, standing in for a pointer set. On a failing case the same file is empty, because the whole refusal went to stderr. So even with (1) and (2) fixed, a faithful port reports Why this was not caught earlier
A fourth, smaller instance of the same class was repaired in passing on CLOUD-910's branch rather than filed: Refinement — Ready Refinement gate: Definition of Ready & Done. This body carries only specializations.
Acceptance
CLOUD-909 A migrated gate's fidelity is a doc comment: the shell tasks spell `1 = violation` and batten's contract is the inverse, so a carried-over `assert_equal $status 1` asserts the wrong thing and passes
Why
Today fidelity is a claim in a doc comment. That is not a criticism of the one port that exists — it is careful, and its header is the best evidence available. It is an argument that the evidence has to be produced by a command, because the next twenty will be authored in one PR. The hazard, measured, and it is not the obvious oneThe obvious harness — run both, assert the same exit code — is wrong here, and
So an equality assertion would demand the migration preserve the contract it exists to fix, and the naive carry-over passes it. A human stepped around this by hand, once. Twenty gates in one PR will not get twenty careful humans. The mechanismPer carried case (CLOUD-908's first arm) in a dying suite:
Only carried cases are replayed. Subsumed cases are discharged by CLOUD-908's named successor. Changed cases are expected to diverge — and a replay red on a case not marked changed is the failure this instrument exists to report. Generalize Refinement — Ready Refinement gate: Definition of Ready & Done. This body carries only specializations.
Acceptance
|
ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Free Run ID: 📒 Files selected for processing (5)
💤 Files with no reviewable changes (3)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughThe replay harness, replay pointer utility, and replay Bats suite were deleted. The ratchet ledger now documents the withdrawn harness, its former behaviors, and the remaining Merge Risk: ⚪ Minimal · up to This change removes an unused replay harness and updates benchmark records; no actionable merge-blocking risk remains beyond normal checks and review. Note 🎁 Summarized by CodeRabbit FreeYour organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Essentials by visiting https://app.coderabbit.ai/settings/billing. Comment |
…onsumer CLOUD-1163 unit 11. `mise-tasks/replay.sh`, `mise-tasks/replay-pointers.py` and `tests/replay.bats` are deleted whole, with no successor at either end. That is a withdrawal rather than a port, and the ledger says so in seventeen arms. CLOUD-1115 is the argument FOR this deletion, not against it, and the row records the inversion: its title is that `replay`'s tree arm "has never run against a real gate and cannot pass it", and its own section 8 opens "Blockers. None, in either direction." Confirmed at `9e7a9a91` rather than inherited — a scan of `mise.toml`, `hk.pkl`, `.claude/settings.json` and `.github/workflows/` finds the word only in prose, and the sole caller of `replay-pointers.py` was `replay.sh:80` itself. A gate off the landing path, invoked by nothing, whose one live arm cannot pass, is a gate deciding nothing. What is lost is not the fidelity property. `replay` was to be the evidence that a migrated gate answers the way the bash it replaced did; that property is unestablished either way, because the harness never ran against a real migration. The fifteen case arms pinned the instrument's own discrimination — that it refuses a vacuous pass, refuses an identity translation, and reports a divergence instead of admitting one. Those are real properties of a thing nobody built a consumer for, and they die with it. The ledger states that plainly rather than implying the cases moved somewhere. One finding is carried forward in prose because it cost a measurement and would otherwise be re-derived: `batten check` renders `path:line rule` for a tree-scoped row and no remedy at all, because non-negotiable rule 4 IS its output contract. A fidelity harness that greps refusal output for remedy prose therefore reports every faithful migration of a tree gate as having lost one. The remedy has to be read from the declaration, never from the refusal. `mise-tasks/replay-pointers.py` takes no arm and gets none: `governed_when_deleted` excludes `.py`. It is still named as the suite's co-subject and dies in this same delta, so `SubjectFacts::died` holds across both declared subjects. Corpus regenerated from a full run: 2080/2080 cases over 115 suites. Refs: CLOUD-1163, CLOUD-1115, CLOUD-909
52b1dd0 to
67183e8
Compare
|
❌ The last analysis has failed. |
|
/fast-forward |
Closes CLOUD-1163's unit 11.
mise-tasks/replay.sh,mise-tasks/replay-pointers.pyandtests/replay.batsare deleted whole, with no successor at either end — a withdrawal rather than a port, and the ledger says so in seventeen arms.Why this is a deletion rather than a blocked row
CLOUD-1115 is the argument for the deletion, not against it, and the row records the inversion. That issue's title is that
replay's tree arm "has never run against a real gate and cannot pass it", and its own §8 opens "Blockers. None, in either direction."Confirmed at
9e7a9a91rather than inherited: a scan ofmise.toml,hk.pkl,.claude/settings.jsonand.github/workflows/finds the word only in prose, and the sole caller ofreplay-pointers.pywasreplay.sh:80itself. A gate off the landing path, invoked by nothing, whose one live arm cannot pass, is a gate deciding nothing.What the withdrawal costs, stated rather than implied
Not the fidelity property.
replay(CLOUD-909) was to be the evidence that a migrated gate answers the way the bash it replaced did. That property is unestablished either way, because the harness never ran against a real migration — so this removes an unexercised instrument, not a result.The fifteen case arms pinned the instrument's own discrimination: that it refuses a vacuous pass, refuses an identity translation (
1=1, the naiveassert_equal $status 1written down), and reports a divergence instead of admitting one. Those are real properties of a thing nobody built a consumer for, and they die with it. The ledger says that plainly rather than implying the cases moved somewhere.One finding is carried forward in prose because it cost a measurement and would otherwise be re-derived:
batten checkrenderspath:line rulefor a tree-scoped row and no remedy at all, because non-negotiable rule 4 is its output contract. A fidelity harness that greps refusal output for remedy prose therefore reports every faithful migration of a tree gate as having lost one. The remedy has to be read from the declaration, never from the refusal.Ledger shape
Two
// withdrawn:file arms naming each other, aswithdrawn_subjectsdemands, plus fifteen case arms.mise-tasks/replay-pointers.pytakes no arm and gets none —governed_when_deletedexcludes.py— and it is still named as the suite's co-subject and dies in this same delta, soSubjectFacts::diedholds across both declared subjects.Verification
mise run verifygreen on this head. Corpus regenerated from a full run: 2080/2080 cases over 115 suites,tests/replay.batsgone frombench/suites/RESULTS.md.One scope correction, recorded here because it changes the bundle
CLOUD-1163's unit 7 (
suite-bench-check+suite-bench) is out, on the row's own 2026-09-01 comment rather than on my judgement:tests/suite-bench-check.bats:2declares both programs as its# subject:andSubjectFacts::diedis.all(), so the suite cannot be split;suite-bench.shis a producer that writesbench/suites/RESULTS.md, and nohas_policy_surfaceadmits a writer. Naming it raisesV-RETIREMENT-SUBJECT-ALIVE, not naming it raisesSUBJECT_ALIVE. It needs a disposition for producers, which is a row rather than a bundle member.Refs: CLOUD-1163, CLOUD-1115, CLOUD-909
🤖 Generated with Claude Code
https://claude.ai/code/session_01X6dcTC79zN5KBiMrZs6hac
Generated by Claude Code