Repository navigation
Conversation
…y rows that moved (Closes #8186) Step 3 of verdict reuse (epic #8095). verdict_key.t27 gains ledger_key, the verdict key without the host part. steward.t27 gains bless_source_ok (bless refuses a source without a key on every row the reference passes) and bless_writes (a row is rewritten only when its key, verdict or blocker moved). t27b gets a `keys` subcommand, corpus records and lab rows carry the key, and tri t27b ratchet --bless keeps unmoved rows byte for byte. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tion' into claude/t27b-bless-by-key-2
|
Parking this branch under the 2026-10-09 foreign-budget shrink rule (hand-written non-t27 line count may not grow; no exception and no label lifts it -- Why the base is unusable as-is: the two-dot diff vs master is ~1495 files of unrelated working-tree noise (inherited Clean rebuild attempt (branch
Unblock paths (either one):
Preserved state: the fully-resolved cherry-pick is staged in steward worktree |
Closes #8186. Step 3 of verdict reuse, epic #8095 (t27b epic #6063). Builds on #8208 (merged).
The three rules (decided on #8186), in .t27 first
specs/tri/t27b/verdict_key.t27addsledger_key(spec, generated, output, runner, zig). It is the t27b: key reference verdicts by the generated code, not the t27c binary (Closes #8176) #8208 verdict key without the host part. Its ownLEDGER_SCHEMA(3) means it can never equal a cache key, and a spec t27c cannot generate is keyed by a "not generated" marker, not by the t27c binary. The host stays only in the reference cache. 10 tests.specs/tri/t27b/steward.t27addsbless_writes. A row where nothing moved stays byte for byte.bless_source_okrefuses a run unless every row the reference passes carries a key, instead of guessing.bless_never_guesses_from_a_keyless_source. The test report gives steward 137/137 and verdict_key 10/10 (Railway lab).Glue (generated code plus thin I/O)
t27b keys <dir> --reference <t27c>prints the ledger key per file (21 s for 1707 specs on the lab, all distinct, stable across runs)."key". On the lab, the corpus keys equal thekeysoutput on 96 of 96 records.lab.py).tri t27b ratchet --blesskeeps unmoved rows and refuses a keyless source.Host-free, measured
The ledger key from an aarch64 t27c (cross-built, run under qemu) is compared with the key from an x86_64 t27c on the same tree: so far 400 of 400 compared rows are equal. That is the claim that lets x86_64 lab rows bless an aarch64 CI ledger. The final count follows in a comment.
Budget
Foreign lines: blockers.rs 14, main.rs 16, lab.py 13, t27b.py 13, t27b_rules.py 2, and the test 14 once #8216 lands: 72 of 80.
Order
Draft until #8216 (the test's own-language exception, #8214) merges. Then the test commit lands here and auto-merge goes on. After this merges, the lab needs a redeploy before bless works. The first keyed bless rewrites every row once, to add the key.
🤖 Generated with Claude Code