Skip to content

Bound the 500ms ceiling against a between-run envelope, and re-derive the attention constant its own condition demanded - #10259

Merged
gunbai-bot[bot] merged 2 commits into
mainfrom
session/gentle-crane-57
Sep 3, 2026
Merged

gunbai-bot[bot] merged 2 commits into
mainfrom
session/gentle-crane-57

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

v2.test.emit.rust_produced_decl_emit.rust_produced_decl_name_discriminates passes at 406ms and refuses at cpu_at_least=516ms on 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 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 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_distribution gains identity_envelopes — one row's max over N runs against its min over the same N, from a single sorted scan — 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.

Fail-closed detail, both witnessed: a censored row is 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. The scan state is a coproduct rather than a started: Bool, because the flag form would need "" as NonEmptyStr — a value that typechecks and refuses at runtime.

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 and comes from each run's required-witnesses-floor job.

permille clean-run budget
p50 1367 365ms
p90 1653 302ms
p95 1819 274ms
p99 2046 244ms
worst 2280 219ms

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_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, 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_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 this PR's own first draft. Relaxing runs_observed == runs_expected to >= 1 reddened two witnesses and not the one named for completeness: 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, and the re-run reddens all three.

Reconciliation with main

  • gunbc#10228 measured missing item (b) properly and it REFUTES — 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. The paragraph that read it the other way is withdrawn in both the memo and the rung-drop row.
  • Main's new memo §6 concludes from a local→CI join that no fixed above-ceiling identity set exists and refuses both of §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. §9's remedy paragraph said both arms were open; main had closed them, so it now states the size of the gap the remaining lever must close.

🤖 Generated with Claude Code

https://claude.ai/code/session_01EwQ3GGBSz6NLNrMAWRrLpC

gunbc-ci-auto-heal and others added 2 commits September 3, 2026 17:43
… 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
@gunbai-bot

gunbai-bot Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor Author

Contention notice, found by a new instrument rather than by anyone noticing: this PR and #10210 are both editing dag/gunbc/instruments/floor_cost_distribution_instrument.dag, and neither is visible from the other's diff.

Surfaced by path_writer_set (#10263), which given a path prints every open PR whose diff touches it — number, author, branch, head oid and matched path — with an explicit unobserved count so a partial read cannot be mistaken for a complete answer. The directory was picked as a demonstration subject; this collision was incidental output.

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 mergeable state on either PR says the text regions don't overlap. It does not say the composition is what either of you intended.

@gunbai-bot
gunbai-bot Bot merged commit 84e34c3 into main Sep 3, 2026
7 checks passed
@gunbai-bot
gunbai-bot Bot deleted the session/gentle-crane-57 branch September 3, 2026 18:54
@briansrls
briansrls restored the session/gentle-crane-57 branch September 3, 2026 18:59
gunbai-bot Bot pushed a commit that referenced this pull request Sep 3, 2026
…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
gunbai-bot Bot pushed a commit that referenced this pull request Sep 3, 2026
… 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
gunbai-bot Bot pushed a commit that referenced this pull request Sep 3, 2026
…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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants