Repository navigation
Bound the 500ms ceiling against a between-run envelope, and re-derive the attention constant its own condition demanded - #10259
Conversation
… the attention constant its own condition demanded `rust_produced_decl_name_discriminates` passes at 406ms and refuses at 516ms on an unchanged tree, so the required floor's verdict for it is decided by which runner dequeued the job. This measures the spread that decides it, over runs rather than over one pair, and follows the one consequence the authority had already pre-committed to. WHAT WAS WRONG WITH THE NUMBER IN HAND. The margin in docs/plans/floor-cost-distribution-near-the-ceiling.md section 3 reads "run-to-run variation across the sample", but its producer, `identity_inflation_permille`, takes a `base` and an `other` and is driven with exactly two named runs. Its percentiles are computed across ROWS inside one pair. Two runs are one sample of a between-run quantity and one sample has no spread, so 1.16x is a point estimate and the p10-p90 band beside it is row-to-row heterogeneity indexed over the wrong thing. Used as a budget input it moves the cliff instead of closing it. THE DERIVATION THAT INDEXES OVER RUNS. `gunbc.floor_cost_distribution` gains `identity_envelopes` -- one row's max over N runs against its min over the same N -- with `complete_envelopes` checking presence in EVERY run at identity grain, `work_invariant_envelopes` restricting to rows whose `eval_steps` did not move, and `worst_envelope_permille` feeding the existing `implied_clean_run_budget`. Censored rows are dropped from the scan, which lowers `runs_observed` and removes the identity through the completeness predicate rather than through a silent filter; a zero baseline has no ratio and returns `Absent` rather than sitting at the bottom of every percentile. `run_extreme_census` counts which run held each row's maximum and minimum. That is the discriminator a median run factor cannot supply, because a median is robust exactly where the envelope is driven. MEASURED, twelve green `main` runs of `witnesses.yml` on twelve distinct runner registrations across three hosts, rostered with their runners in `floor_cost_envelope_sampled_runs` (the runner is not in the artifact; it comes from each run's `required-witnesses-floor` job). Envelope over the 398 work-invariant complete rows: p50 1367, p90 1653, p95 1819, p99 2046 permille, worst 2280 -- so a row must sit under 302ms on its cheapest run to be safe at p90 and under 219ms at the worst observed. The subject measures 313-444ms with `eval_steps` 169,297 in every run, so its CHEAPEST observation already exceeds the p90 budget. AND THE EXTREMES ARE CONCENTRATED: one run holds the minimum for 367 of 398 rows, and srv1 holds the maximum for 279 of 398 from three of twelve runs. Per-run MEDIAN factors span only 0.878-1.118 and per-host medians are within 8% of each other, which reads as "the host does not matter" and is the wrong statistic -- a ceiling is crossed by the extreme. An earlier revision of the memo section said the opposite on that reading and is corrected in place rather than deleted. THE ONE CONSEQUENCE, AND IT IS NOT A NEW POLICY. `gunbc.rung_drop` `floor_cost_claim_qualification_unavailable` sizes its attention constant as the ceiling over the largest inflation floor observed to date and states the constant MUST be re-derived the moment a larger floor is measured. The floor it was sized against was 1.777 from a single pair; this sample measures 2.280, so the constant falls 280ms -> 219ms. Restricting the derivation to rows at or above 200ms gives 1.874 and 266ms, still below 280, so the direction does not rest on the small-baseline tail. The superseded 53-identity enumeration and cost-curve histogram are marked as measured at the old constant rather than left reading as today's subset. THE 500ms CEILING IS NOT MOVED and raising it is not proposed; `v2.workflow.required_floor` gains a paragraph naming the producer and what the line actually adjudicates. EVIDENCE. Nine witnesses in `test.claim.floor_cost_distribution_witness` over a THREE-run fixture, because two runs cannot exhibit the defect this family exists to remove -- every derivation would agree by construction. The mutation control found a real defect in its own first draft: relaxing `runs_observed == runs_expected` to `>= 1` reddened two witnesses and NOT the one named for completeness, because that row's exclusion was being supplied by the neighbouring `min_ms` floor. Its fixture baseline is now above the floor so only the predicate under test can exclude it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EwQ3GGBSz6NLNrMAWRrLpC
Reconciled against gunbc#10228, which measured missing item (b) properly and REFUTES it: on one identical tree, `eval_steps` disagrees on 18 of 3519 joined rows. This branch's twelve-run step equality is a FILTER that removes tree movement from the inflation sample, not evidence of invariance, and the paragraph that read it the other way is withdrawn in both the memo and the rung-drop row. Also reconciled with main's new memo section 6, which concludes from a local->CI join that no fixed above-ceiling identity set exists and refuses both of section 5's remedies for this family on evidence. This branch's sections are renumbered 7-9 behind it and reframed as its quantitative form from the other direction -- the CI artifact alone, no local->CI conversion -- carrying it one grain further to the machine. Section 9's remedy paragraph said both arms were open; main had already closed them, so it now states the size of the gap the remaining lever must close instead. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EwQ3GGBSz6NLNrMAWRrLpC
|
Contention notice, found by a new instrument rather than by anyone noticing: this PR and #10210 are both editing Surfaced by No action is being asked of you and no hold is being placed. You may already know, the edits may not overlap, and whoever lands second may have a clean merge. But two lanes editing one authority with no mutual visibility is the shape that cost this fleet several re-derivations today, and the cheapest moment to know is before either of you lands — so it seemed worth one comment rather than letting it be discovered by a conflict, or worse, by a clean merge that composes two edits neither author reviewed together. If it matters: a clean |
…it re-applied fresh #10259 and #10260 rewrote the SAME 45KB physical line of dag/gunbc/rung_drop.dag from the same merge-base 12f0215. The edits are textually disjoint and that bought nothing: git merges at line grain, so the second lane gets a conflict where both sides are a 45KB blob, and a whole-side resolution compiles, projects, heals, and silently drops the other lane's entire edit — the gunbc#10106 class. RESOLVED BY SPLICE, NOT BY READING. Both edit sets were expressed as character spans against the shared base, checked for overlap (mine 183 spans, main's 28, ZERO overlapping base spans), and spliced by base offset. Length arithmetic is exact and admits no double-count: 45341 + 3782 + 3082 = 52205. VERIFIED BY IDENTITY JOIN IN BOTH DIRECTIONS, never by a count. Discriminating regions were extracted per lane and each asserted individually — mine 35/35 additions present and 5/5 deletions still gone, main's 4/4 additions present. A count equality would have passed with two of mine landing twice and two of theirs vanishing. THE ORACLE ITSELF NEEDED THREE ROUNDS OF REPAIR, recorded because each failure would have corrupted a correct result: - it went RED on its own positive control: "is available " is genuinely absent from my head but occurs elsewhere in the line, so "must not reappear" was not discriminating for it; - gentle-crane-57's set passed that same filter and still falsely refused a CORRECT merge, on the deleted token "changed." that my side reintroduces — the same defect from the opposite direction; - so the filter is now >=25 chars AND exactly one occurrence on the source side, and there are FOUR controls: refuse whole-theirs, refuse whole-base, pass own head, and DO NOT falsely refuse a correct combined line. The fourth is the only one that exercises the state the oracle actually gets asked to judge, and neither lane had it. THE PROJECTION IS DERIVED, NOT PATCHED. docs/design-rung-drops.md was stale by exactly the seventh correction (" BY CONSTRUCTION", 16 chars), so its line is taken from the authority's authored payload rather than edited alongside it; the two now compare equal. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RDCRC6CKcQGBSx3JcaGe3V
… named RE-DERIVED, NOT RESOLVED. #10259 landed on the exact row this split moves -- floor_cost_claim_qualification_unavailable, re-deriving the floor attention constant 280ms -> 219ms off a measured worst inflation of 1.777 -> 2.280. Keeping my side of that conflict would have silently REVERTED it: the reverted value is internally consistent, so it compiles, projects, heals and passes the floor with nothing going red. So the split was re-cut from post-#10259 main. Verified against that specific falsifier: the per-row file and the pin's monolith agree exactly on all four values, and the string-grain oracle is 30/30 with zero divergences. docs/design-rung-drops.md regenerates 0/0 against the pin -- still a pure relocation, now carrying #10259's landed content. docs/design-failure-modes.md is +3/-1, exactly the two authored edits. Seed emitter first_generation_equal=true. NAMESPACE-WAVE-ADMISSION, which is the red on this PR and is the gate working rather than a defect. A per-row file split IS a namespace relocation of every consumer binding, and 16 of them retarget from {gunbc.rung_drop} to {gunbc.rung_drop.<row>}. They are admitted here as 16 rows enumerated BY IDENTITY, read off required run 33789531276's own per-delta lines rather than re-derived by hand -- a pattern over "anything that moved into gunbc.rung_drop.*" would go on admitting every future row relocation, since a new drop adding a new module is this carrier's growth surface. The floor was CLEAN in that same run, so the phase failure was these rows and nothing else. And the 17 consumed #10156 admissions are DELETED, by their own trigger: #10156 merged, so no run's base and head can differ on it, and this change is the roster's next touch. That is the cost the eighteenth entry predicted about a future branch -- a change touching this roster for its own reason inherits the deletion of someone else's consumed rows -- observed here from the other side. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VpnmpcnG82KZBgAaRB7cWD
…e same admission #10259 landed a second entry-point family over this model while this branch was open. The textual conflict was two appended blocks; the part git could not see is that the new family was authored against the two things this branch removed. THE FOLD READ `row.cpu_ms`, the field replaced by `ClaimCostReading`. An envelope is a POINT question -- a min and a max over runs -- so a right-censored lower bound has no answer to give it, and the fold had no way to ask. `RunTaggedRow` now carries the exact cost, projected at tagging time, so a row without one has no representation in the fold's input. THE `verdict_reached` FILTER IS NOT THAT EXCLUSION and is not treated as one. It very nearly covers the censored population today, because a claim a deadline preempted also reaches no verdict -- but those axes are independent by construction, and the existing censoring witness cannot discriminate between them because its row is excluded by its verdict before the cost axis is consulted. `a_bound_is_excluded_on_its_own_axis_and_not_by_its_verdict` supplies that red: mutating the projection to `cpu_at_least_ms` reddens it and leaves the verdict-keyed witness green. `floor_cost_envelope_lines` CALLED `loaded_runs` AND RENDERED ITS REFUSALS BESIDE ITS FIGURES -- the pre-gate shape whose removal from the distribution report is what `RunSampleAdmission` exists for. It and `floor_cost_envelope_check` now consume the same admission, and the figures are split into their own function taking `List<RunCost>`, so a refused load has no representation in their input. `loaded_runs` and `refused_load_lines` are now reachable only from inside the admission. `a_refused_run_produces_no_envelope_figures` is the red, confirmed by restoring the pre-gate arm. 52 witnesses green; the five type-wall arms green. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FU5gCEQhoMLxxABm2GcvYf
v2.test.emit.rust_produced_decl_emit.rust_produced_decl_name_discriminatespasses at 406ms and refuses atcpu_at_least=516mson an unchanged tree, so the required floor's verdict for it is decided by which runner dequeued the job. This bounds that: it measures the spread over runs rather than over one pair, and follows the one consequence the authority had already pre-committed to. The 500ms ceiling is not moved and raising it is not proposed.What was wrong with the number in hand
The margin in the memo's §3 reads "run-to-run variation across the sample", but its producer —
identity_inflation_permille— takes abaseand anotherand is driven with exactly two named runs. Its percentiles are computed across rows inside one pair. Two runs are one sample of a between-run quantity and one sample has no spread, so 1.16x is a point estimate and the band beside it is row-to-row heterogeneity indexed over the wrong thing. Used as a budget input it moves the cliff instead of closing it. The instrument was right and the sentence over it was not.The derivation that indexes over runs
gunbc.floor_cost_distributiongainsidentity_envelopes— one row's max over N runs against its min over the same N, from a single sorted scan — withcomplete_envelopeschecking presence in every run at identity grain,work_invariant_envelopesrestricting to rows whoseeval_stepsdid not move, andworst_envelope_permillefeeding the existingimplied_clean_run_budget.Fail-closed detail, both witnessed: a censored row is dropped from the scan, which lowers
runs_observedand removes the identity through the completeness predicate rather than through a silent filter; a zero baseline has no ratio and returnsAbsentrather than sitting at the bottom of every percentile. The scan state is a coproduct rather than astarted: Bool, because the flag form would need"" as NonEmptyStr— a value that typechecks and refuses at runtime.run_extreme_censuscounts which run held each row's maximum and minimum. That is the discriminator a median run factor cannot supply, because a median is robust exactly where the envelope is driven.Measured
Twelve green
mainruns ofwitnesses.ymlon twelve distinct runner registrations across three hosts, rostered with their runners infloor_cost_envelope_sampled_runs— the runner is not in the artifact and comes from each run'srequired-witnesses-floorjob.The subject measures 313–444ms, so its cheapest of twelve observations already exceeds the p90 budget.
And the extremes are concentrated on particular machines. One run holds the minimum for 367 of 398 rows; srv1 holds the maximum for 279 of 398 from three of twelve runs. Per-run median factors span only 0.878–1.118 and per-host medians are within 8% — which reads as "the host does not matter" and is the wrong statistic, since a ceiling is crossed by the extreme. An earlier revision of the memo section said the opposite on that reading and is corrected in place rather than deleted.
The one consequence, and it is not a new policy
gunbc.rung_dropfloor_cost_claim_qualification_unavailablesizes its attention constant as the ceiling over the largest inflation floor observed to date and states the constant must be re-derived the moment a larger floor is measured. The floor it was sized against was 1.777 from a single pair; this sample measures 2.280, so the constant falls 280ms → 219ms. Restricting the derivation to rows at or above 200ms gives 1.874 and 266ms — still below 280, so the direction does not rest on the small-baseline tail. The superseded 53-identity enumeration and cost-curve histogram are marked as measured at the old constant rather than left reading as today's subset, and the roughly-doubled subset size is stated rather than left for a reader to discover.Evidence
Nine witnesses in
test.claim.floor_cost_distribution_witnessover a three-run fixture, because two runs cannot exhibit the defect this family exists to remove — every derivation would agree by construction.The mutation control found a real defect in this PR's own first draft. Relaxing
runs_observed == runs_expectedto>= 1reddened two witnesses and not the one named for completeness: that row's exclusion was being supplied by the neighbouringmin_msfloor. Its fixture baseline is now above the floor so only the predicate under test can exclude it, and the re-run reddens all three.Reconciliation with main
eval_stepsdisagrees on 18 of 3519 joined rows. This branch's twelve-run step equality is a filter that removes tree movement from the inflation sample, not evidence of invariance. The paragraph that read it the other way is withdrawn in both the memo and the rung-drop row.🤖 Generated with Claude Code
https://claude.ai/code/session_01EwQ3GGBSz6NLNrMAWRrLpC