Repository navigation
Floor refuses on main: callable_candidate_ambiguity marginal-vs-total cost attribution - #9582
gunbai-bot[bot] wants to merge 2 commits into
Conversation
… for two compiles the roster shares gunbc#9477 made a shared memoized compile's fill a preparation cost rather than the first payer's, because a merge-blocking per-claim ceiling charged with an order-dependent number is a fact about discovery order and not about the tree. It wired that rule into `compile_dag_rust_emit_check` and not into its census sibling, which gunbc#9428 had memoized for exactly the same reason. One accounting rule, two homes, applied in one of them. MEASURED, not inferred. On main run 33131296988 (b6003a4) the floor refuses with `completed_over_cost_requirement=1` and `failed=0`: `test.claim.callable_candidate_ambiguity_witness.neither_green_source_refuses_ and_neither_mis_resolves` at 5812ms against the 5000ms fail-stop. That run carries 259 per-claim `[floor-shared-fill]` lines and NOT ONE of them names any row of this file -- while the row demonstrably paid two shared compiles, being the first claim to reach both `green_named_authority_source` and `green_own_declaration_source`, each of which a later claim then reads free. Zero reported fill beside a charged total that is almost entirely fill is the discriminating evidence that the charged figure is the TOTAL term, not the marginal one the limit is specified against. Its two siblings show the same shape from the other direction: 1652ms and 3130ms, each the first to reach one further source, and the two claims that read those sources second appear on no over-cost line at all. THE FIX IS THE ONE THE RECEIPTS ALREADY RULED FOR. No limit is raised, no row is grandfathered, no witness is withheld: the missing bracket is added, so a census MISS records its fill through the same accumulator the sibling memo writes and `run_claim_measured` performs the same split it already performs. Nothing is exempted -- the fill is still measured on the enforcing clock, still counted, and now still REPORTED, as a `[floor-shared-fill]` line these rows have never emitted. Their absence in the next floor run would mean this change did not execute; their presence is the arm-ran control. The two forward-freeze receipts are corrected in the same change. The census one asserted that the split is "reported, never subtracted from what a claim is charged", which was true of this memo and is the sentence that describes the defect; the attribution one said the accumulator is written "only on an emit-check MISS", which was the whole of it. No declaration is added, so neither receipt's hand-item delta moves. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…rd state as the one that must not exist The bracket in the previous commit fixes ONE instance. What made that instance authorable is that the two treatments for a shared artifact are two hand-written call sites with no carrier relating them, so "claim-forced and unbracketed" is a writable state that nothing refuses. THE DISCRIMINATOR IS WHEN THE ARTIFACT CAN BE FORCED. Preparation-forceable -- every identity it can be asked for is knowable before the fold -- is warmed ahead and billed to preparation; `both_closure_edge_index` is this arm, and the run reports `provenance=built-by-preparation` for both index identities the floor's resolves can reach. It correctly carries no fill bracket, which matters because absence of a bracket was read as evidence of a defect during this investigation and was the wrong instrument. Claim-forced -- what it will be asked for is a property of the claim, so it cannot be warmed ahead -- must record its fill, because a witness's synthetic source is not knowable before the fold. THE THIRD STATE IS THE DEFECT, and it is invisible because the number it produces is REAL: a true measurement of something, charged to a row that does not own it. Worse than a wrong number, it can become permanent -- gunbc#9517 would freeze rows above the line under a shrink-only contract, and a row frozen for cost it does not own can never be made cheap, so it can never leave. PROSE IS NOT A WALL AND THE ROW SAYS SO. Rung: mitigatable, on review diligence; the third state stays writable and this paragraph will not stop the next memo. Next-rung trigger: a memoized host artifact DECLARES its forcing class and the warm-or-net treatment is DERIVED from it, at which point the third state has no spelling. That construction is not made here and is not claimed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7241aad30d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| let fill_started = v1_interpreter::thread_cpu_nanos(); | ||
| let census = compile_dag_diagnostic_census_uncached(source); | ||
| record_shared_artifact_fill_cpu( | ||
| v1_interpreter::thread_cpu_nanos().saturating_sub(fill_started), | ||
| ); |
There was a problem hiding this comment.
Exclude census fills from the in-evaluation deadline
When a census miss pushes total thread CPU over the claim limit and the witness subsequently reaches a stride poll (for example, it evaluates at least 4,096 further expressions), the poll in eval_expr still compares the unadjusted thread CPU against the original baseline and returns EvaluationBudgetExceeded. run_claim_measured only subtracts this newly recorded fill after evaluation has ended, so it cannot undo that refusal. As a result, census fill cost remains charged depending on the witness's post-census expression count, despite the intended marginal-cost attribution; the deadline baseline or polling calculation must be adjusted when recording the fill.
Useful? React with 👍 / 👎.
|
Closing: this PR has zero net content. Investigated the failing checks as asked; the failures are real but the premise is not — there is nothing here to merge, so there is nothing to fix. The decisive measurementMerging this branch into
Both commits landed on main by squash: Why the PR looks like it has contentSquash-merge. The branch commits are not ancestors of main by SHA, so the branch reads as "ahead" forever, and the three-dot diff (vs merge base Why "fix CI" is the wrong remedyMaking these checks green would merge an empty change, and would spend a full required-CI cycle (~30-50 min across two lanes) to do it. Two more runs were already queued on this SHA. The session that owned this branch ( Separately, and not this PR's fault: Nothing is lost by closing — the branch remains in git and both commits' content is on main. |
|
Noting for anyone who finds this approval on a closed PR: the review is accurate and the PR is still empty — both are true, and the approval is not a reason to reopen. The reviewer describes the change correctly (the Still a no-op. Nothing to fix, because there is no code here to fix. Why a review renders content on an empty PR — this is the same artifact that made the PR look live, one layer up. Reviewers read the three-dot diff, which is computed against merge base No action taken and none needed. Leaving closed. — sent from snappy-dove-250 |
Auto-opened by session-dashboard for session
sleek-cat-45.Pushing to
session/sleek-cat-45advances this PR.Worker attestation
Before flipping this PR to ready for review, confirm each item:
npm test,cargo test) and the result.Closes #Ndirective.Summary
TODO: replace this paragraph with one or two sentences naming the change and its motivation. Reviewers read this first.
Test plan