Skip to content

Floor refuses on main: callable_candidate_ambiguity marginal-vs-total cost attribution - #9582

Closed
gunbai-bot[bot] wants to merge 2 commits into
mainfrom
session/sleek-cat-45
Closed

gunbai-bot[bot] wants to merge 2 commits into
mainfrom
session/sleek-cat-45

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

Auto-opened by session-dashboard for session sleek-cat-45.
Pushing to session/sleek-cat-45 advances this PR.

Worker attestation

Before flipping this PR to ready for review, confirm each item:

  • Title describes the change (not the session id or branch).
  • PR body summarises what and why (replace the TODO below).
  • Tests run: name the command (e.g. npm test, cargo test) and the result.
  • If this closes a work item, the body contains a Closes #N directive.
  • No commits on this branch are surprises (no fork/cherry-pick I did not make).
  • No secrets / credentials / large binaries staged.

Summary

TODO: replace this paragraph with one or two sentences naming the change and its motivation. Reviewers read this first.

Test plan

  • TODO: list the commands that ran (or "no tests changed; relied on CI") and the outcome.

gunbc-ci-auto-heal and others added 2 commits August 28, 2026 02:26
… 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>
@briansrls
briansrls marked this pull request as ready for review August 28, 2026 05:57

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment on lines +2013 to +2017
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),
);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 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 👍 / 👎.

@gunbai-bot

gunbai-bot Bot commented Aug 28, 2026

Copy link
Copy Markdown
Contributor Author

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 measurement

git merge-tree --write-tree origin/main pr9582  ->  2ade8738f29ec8a27bf1aba85a591c80a3fbab3f
git rev-parse origin/main^{tree}                ->  2ade8738f29ec8a27bf1aba85a591c80a3fbab3f

Merging this branch into main yields a tree byte-identical to main. Every file it touches is already shipped:

file status vs main
dag/gunbc/census_memo_seed_growth.dag already in main
dag/gunbc/shared_fill_attribution_seed_growth.dag already in main
src/v1/stage0/src/cli_run.rs all 20 added lines present in main (0 missing)

Both commits landed on main by squash: bbb81dac82 as #9560 (ba27746779, 03:56Z), and the gunbc-ci-auto-heal follow-up 7241aad30d, whose sole file is identical to main. The branch is not ahead — it is 112-commits-class stale behind main (two-dot diff: 81 files, 5564 deletions the branch lacks).

Why the PR looks like it has content

Squash-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 5f782fb6ef, which predates #9560) renders 3 files of real-looking change. The two-dot/three-dot disagreement is the tell — three-dot shows content, two-dot shows the branch is simply stale. Under squash-merge that is the normal post-merge state, not evidence of unshipped work.

Why "fix CI" is the wrong remedy

Making 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 (sleek-cat-45) completed its subject and is archived.

Separately, and not this PR's fault: main itself is currently red on 47 unexpected floor failures across 23 modules, inherited from #9106's live-tree un-decline (adjudication escalated). So the checks here would not have gone green regardless of anything done on this branch.

Nothing is lost by closing — the branch remains in git and both commits' content is on main.

@gunbai-bot gunbai-bot Bot closed this Aug 28, 2026
@gunbai-bot

gunbai-bot Bot commented Aug 28, 2026

Copy link
Copy Markdown
Contributor Author

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 record_shared_artifact_fill_cpu bracket mirrored onto the census memo, receipts declaring the claim-forced-unbracketed hole as mitigatable with a named trigger). That work is good — and it is already on main, landed as #9560 (ba27746779, 03:56Z) plus the auto-heal follow-up. Re-verified against current main (3a8344b5c) just now:

git merge-tree --write-tree origin/main pr9582  ==  git rev-parse origin/main^{tree}

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 5f782fb6ef. That base predates the squash of #9560, so already-shipped work re-renders as if new. The approval is therefore evidence about content already on main, not about anything this branch would contribute. Two-dot shows the branch is 81 files and 5564 deletions behind.

No action taken and none needed. Leaving closed.

— sent from snappy-dove-250

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