Repository navigation
Seed the witness row-cost basis so the drift comparator can fire - #7475
Merged
Merged
Conversation
`dag/gunbc/witness_row_cost_basis.tsv` has carried a header and two comments and
zero data rows since it was created. Every floor run therefore printed
[receipt] floor witness row-cost drift: basis_absent=5344 drift_exceeded=0
which reads as "no drift" but is the comparator being structurally incapable of
reporting any. `drift_exceeded` was 0 by construction, not by measurement. The
fail-quiet is the sharp part: the loud "basis file missing" diagnostic only fires
when the read FAILS, and the file existed — so an empty-of-data basis produced no
diagnostic at all.
This is the mechanism that would have warned as
`resolution_divergence_silent_pick_gate_keystone_holds` climbed 717s -> 815s ->
900s into its ceiling. It went dark instead.
SEEDED from falsifier run 30550328673 (`runner_spec_is_self_hosted_arm64`, the
host class `witness_row_cost_basis_host_class_note` requires — never local x86).
The rows are read from that run's own `[witness-row-cost]` receipt lines. Its
sole failure was the silent-pick row's wall-budget refusal; every seeded row
completed normally. 1192 rows land; 4148 zero-eval rows are correctly unseedable
(the parser refuses `eval_ms_basis == 0`); 3 keys observed in two batches keep
the max of the pair (all differ by <2%).
DELIBERATELY NOT SEEDED — the corpus's most expensive row.
`resolution_divergence_silent_pick_gate_keystone_holds` was KILLED at its
deadline (`wall budget exceeded: 900001ms elapsed > 900000ms`), yet its row-cost
entry records a flat 900794ms, indistinguishable from a witness that genuinely
finished in that time. That is a censored measurement rendered as a completed one
— DESIGN §5's ⊤-as-answer conflated with ⊤-as-ignorance.
Seeding it would be worse than useless. Under the 2x comparator a basis of
900794 means drift cannot fire below ~1.8M ms, so the row most in need of a cost
signal would be pinned WithinBasis forever and a deadline ceiling would become
its official normal cost — the re-basis trap, arriving through the basis file
instead of through the budget constant. It stays BasisAbsent, which is the
honest third state, until `ClaimOutcome::TimedOut` can distinguish a killed row
from a completed one. That makes the TimedOut plumbing a prerequisite for a
correct basis on exactly the expensive rows, not independent cleanup.
Drift is observational, not merge-refusing: the drift receipt writer returns true
regardless of `drift_count` and fails only on a write error, so seeding cannot
red CI.
VERIFIED BY EXECUTION: `committed_witness_row_cost_basis_loads_and_excludes_the_censored_row`
parses the real committed artifact through the loader's own
`parse_witness_row_cost_basis_line`, asserts >= 1000 rows load, and PANICS on any
row the loader would refuse — the loader silently skips refused rows, so a
malformed commit would otherwise degrade back to BasisAbsent unnoticed. It also
asserts the censored key is absent, so re-seeding it from a deadline-killed run
fails the test with the reason.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
briansrls
added a commit
that referenced
this pull request
Jul 31, 2026
…coverage, first slice) (#7497) * Budget-gate the compile-clean leg on the witness cost model (prelude coverage, first slice) Discharges the compile-clean portion of gunbc_ci_floor_batch_clamp_note FOLLOW-UP ROW (a): the eager compile-clean install ran outside every batch budget and could only red at the step cap — which is how a 15m32s green gate grew past 49 minutes across #7398/#7438 with nothing naming the growth. Operator dispatch this session: "can we add the budget gating ... i suggest we share that model" — this shares the witness row-cost model wholesale rather than minting a parallel mechanism. Receipt keys: the leg writes [compile-clean-cost] rows (pass wall + units + every computed module's typecheck wall) to target/floor-compile-clean-cost-receipt.tsv — the "phase_mark walls get their own receipt keys" prerequisite the note names. Enforced clamp (merge-refusing): gunbc.ci_spec gunbc_ci_compile_clean_clamp (FloorBatchClamp reused), clamp_ms = 60s + units*320ms with units = the leg's compiled closure module count (1,648 whole-tree today — the entry closure, not the 2,725-file index). Over-clamp is a typed FLOOR-COMPILE-CLEAN-OVER-BUDGET walk refusal at admission grain: the compile receipt's ok and the gate verdict are untouched (the signed admission/verdict split). Constants worker-sized from run 30602520347 (srv1-01, 258s/1648 units = 157ms/unit; 320ms funds a 2x fleet-spread host per the family margin ruling) and AWAIT the operator's counter-signed line per the raise discipline. RED-control hook GUNBC_FLOOR_COMPILE_CLEAN_BUDGET_TIGHTEN_MS lowers the computed clamp (min), never raises. Counted drift (growth detector): compile-clean rows compare against dag/gunbc/compile_clean_cost_basis.tsv through the SAME witness_row_cost_exceeds_basis 2x authority, parser, host-class and zero-basis refusals; BasisAbsent is counted loudly every run (the #7475 lesson — an unseeded basis must never read as no-drift). The basis ships unseeded on purpose: rows may only cite a fleet run's own [compile-clean-cost] receipt lines, and the first run to emit them is this change's own CI. Receipts by execution (local x86 — logic, not cost): - witness suite 7/7 at final constants incl. over-by-one RED and at-clamp boundary (dag/test/claim/compile_clean_cost_clamp_witness_test.dag) - green e2e (gunbc_ci_plan_artifact_plan): pass whole_tree 310127ms/1648 units -> WithinBudget, 1204 module rows, drift basis_absent=1205 counted, gate PASS, exit 0 - RED control (tighten=1): compile ok=true, gate PASS, typed FLOOR-COMPILE-CLEAN-OVER-BUDGET line, walk EXIT=1 — the admission/verdict split by execution Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UaAWvG3LgBAM9tGF1D2bG1 * Record the operator signature on the compile-clean clamp constants gunbc_ci_compile_clean_clamp_note: the worker-proposed constants (overhead_seconds 60, per_unit_ms 320) are operator-affirmed (briansrls, 2026-07-31), so the refusal arm is signed-live per the batch-budget family raise discipline. Witness suite re-run green (7/7) after the note edit. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UaAWvG3LgBAM9tGF1D2bG1 --------- Co-authored-by: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
dag/gunbc/witness_row_cost_basis.tsvhas carried a header, two comments, and zero data rows since it was created. So every floor run printed:That reads as "no drift". It is the comparator being structurally incapable of reporting any —
drift_exceededwas 0 by construction, not by measurement.The fail-quiet is the sharp part.
claim_executorhas a loudwitness-row-cost basis file missing at {}diagnostic, but it only fires when the read fails. The file existed and was merely empty of data, so the loud arm was skipped and nothing counted 5,344BasisAbsentrows as a deficit. This is the mechanism that would have warned asresolution_divergence_silent_pick_gate_keystone_holdsclimbed 717s → 815s → 900s into its ceiling. It went dark instead, and the row crossed with no advance signal.Where the rows come from
Falsifier run 30550328673 —
runner_spec_is_self_hosted_arm64, the host classwitness_row_cost_basis_host_class_noterequires ("never local x86"). The rows are read from that run's own[witness-row-cost]receipt lines, whichclaim_executoreprintlns per row. Its sole failure was the silent-pick row's wall-budget refusal; every seeded row completed normally.eval_ms_basis == 0)The row deliberately left out
resolution_divergence_silent_pick_gate_keystone_holds— the corpus's most expensive witness — is not seeded, and that is the load-bearing decision in this PR.It was killed at its deadline. The log carries
wall budget exceeded: 900001ms elapsed > 900000ms whole-receipt budget, yet its row-cost entry records a flat900794 ms, indistinguishable from a witness that genuinely finished in that time. That is a censored measurement rendered as a completed one — DESIGN §5's ⊤-as-answer conflated with ⊤-as-ignorance.Seeding it would be worse than useless. Under the 2× comparator (
witness_row_cost_exceeds_basis), a basis of 900794 means drift cannot fire below ~1.8M ms — so the row most in need of a cost signal would be pinnedWithinBasisforever, and a deadline ceiling would become its official normal cost. That is the re-basis trap, arriving through the basis file instead of through the budget constant.It stays
BasisAbsent, which is the honest third state, untilClaimOutcome::TimedOutcan distinguish a killed row from a completed one. This makes the TimedOut plumbing a prerequisite for a correct basis on exactly the expensive rows, not independent cleanup.Cannot red CI
The drift receipt writer returns
trueregardless ofdrift_countand fails only on a write error, so drift stays observational — matchingwitness_row_cost_spine_note's "falsifier-cadence counted, not merge-refusing".Verified by execution
committed_witness_row_cost_basis_loads_and_excludes_the_censored_rowruns the real committed artifact through the loader's ownparse_witness_row_cost_basis_line. It asserts ≥1000 rows load and panics on any row the loader would refuse — the loader silently skips refused rows, so a malformed commit would otherwise degrade back toBasisAbsentunnoticed, which is the exact failure mode this PR exists to end.Discriminating RED controls, both directions:
committed basis loaded only 0 row(s)Full
claim_executorsuite: 36 passed, 0 failed.Related
Discharges the reproduction blocker named in
placement_workstream_task_20_open_unknown_note(statusOpenUnknown), whose instructions require per-witness cost receipts from the arm64 fleet host class.