Skip to content

compiler_tests_rust_blobs_are_all_rostered is RED on main (43 ct_ declarations vs 40 rostered): establish whether it is unenrolled or held known-red, disposition the unrostered blobs, and make the completeness claim honest - #9990

Closed
gunbai-bot[bot] wants to merge 2 commits into
mainfrom
session/clever-crane-462

Conversation

@gunbai-bot

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

Copy link
Copy Markdown
Contributor

Auto-opened by session-dashboard for session clever-crane-462.
Pushing to session/clever-crane-462 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 September 1, 2026 23:39
…le row standing in for an unrostered blob

`test.claim.language_source_scaffold_index_test.compiler_tests_rust_blobs_are_all_rostered`
was RED on main and ENROLLED, not unenrolled: it sits in
`floor_expected_red_chunk_live_tree_admission` in `v2.workflow.floor_expected_red`,
and its entry declares `ReadsLiveTree`, which in
`entry_eligible_for_discovery_skip_before_resolve` means it never predict-skips.
So it genuinely executed and genuinely failed every required run.

THE GAP WAS NOT THE FOUR THE COUNTS SUGGESTED. The witness asserted
`declared_fn_count(ct_) == rostered_count_for(...)`, 44 against 40. Joined by
IDENTITY the residues are of two kinds: FIVE live blobs unrostered
(ct_fixture_closure_rustc_discrimination_test,
ct_import_lines_follow_resolved_binding_identity_test,
ct_witness_carrier_declines_non_witness_expected_type_test,
ct_generic_param_declines_fail_closed_unwrap_test,
ct_shell_service_output_projection_known_hole_probe_test) and ONE row that
outlived its blob -- ct_caret_parse_smoke_native_witness_tests, which #8532
deleted from the carrier while leaving the roster row standing.

Rostering four of the five would have balanced the counts at 44 and GREENED the
witness with one blob still unmarked and one row still naming a declaration that
does not exist. The count was never the claim; it was a necessary condition of
the claim being read as the claim. DESIGN section 5 already says this outright:
completeness is an identity join, not a count equality.

DISPOSITION. The five blobs are hand-authored Rust assertion blobs, the same
class as their rostered neighbours, and carry
`compiler_tests_rust_hand_assertion_scaffold_trigger`. The stale row is removed.

THE CLAIM MADE HONEST. The witness now names the two residues separately --
declared-not-rostered (a blob landed unmarked) and rostered-not-declared (a row
outlived its blob) -- and asserts each is empty, so the two directions red with
distinct meanings and neither can pay for the other. Cardinality survives as a
third conjunct answering the one question containment cannot, a DUPLICATE within
one side. The `rt_` arm gets the same treatment. `head_before`'s unreachable
Absent arm yields a spelling no roster row can carry rather than fabricating a
plausible name: the failure arm refuses, it does not widen.

THE EVIDENCE DOES NOT STOP AT THE REPAIRED TREE. A repaired population makes both
live arms permanently green and the join indistinguishable from the count it
replaced, so five discriminating controls run over authored fixtures, including
the equal-counts-different-identities case that is exactly what the old form
accepted.

Delisted from the expected-red roster, since that roster self-empties on pass.

Executed evidence, `gunbc run` against the live tree (BuildBuddy runners expose
no cgroup memory limit, so `gunbc run` refuses there under
`gunbc.host_budget_source`; this ran in the session container):
all ten witnesses in the file return `true`, including
compiler_tests_rust_blobs_are_all_rostered, and each of the four
`the_join_refuses_*` controls returns `true`, i.e. actively refuses.

DESIGN.md and docs/design-ledgers.md are regenerated through
`dag/gunbc/instruments/generated_artifact_gate.dag main_wet`, carrying the new
`compensating_errors_cancel_in_the_aggregate` recurring-failure-mode row.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P7mphvNU1JoCbrowqDM5Zg
Main moved to 99ace7a (#9946, selection_view_read_as_population), which
touched DESIGN.md and docs/design-ledgers.md — the same two generated
projections this branch touches. GitHub reported mergeable=CLEAN, which is not
evidence: it does not run this repository's generated-artifact merge driver, so
it reports a clean TEXT merge on projections whose bytes would then project
neither side's authorities. `git merge-tree --write-tree` is the authority, and
it refused with GeneratedArtifactConcurrentDivergence on both paths (gunbc#9969).

Neither projection is hand-resolved. The driver left both UNMERGED with the ours
side verbatim and no conflict markers, and both were REGENERATED from the merged
authorities via `dag/gunbc/instruments/generated_artifact_gate.dag main_wet`.
Both ledger rows survive the merge: this branch's
`compensating_errors_cancel_in_the_aggregate` and main's
`selection_view_read_as_population`.

Also adds the boundary sentence the class needed: the row now states explicitly
that NO SWEEP FOR SIBLINGS WAS PERFORMED, so the absence of a census reads as a
declared boundary rather than as coverage. The receipt establishes the class at
one subject and says nothing about the population — reading the row as a census
of aggregate-cardinality checks would be the same substitution it names.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P7mphvNU1JoCbrowqDM5Zg
@briansrls
briansrls marked this pull request as ready for review September 2, 2026 02:24
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 2, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-02T02:31:33.282083Z fbb4ca2 Draft marked ready
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@gunbai-bot

gunbai-bot Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor Author

Closing as a duplicate no-op, and refuting review 58399 on its merits, because that finding would otherwise stand against content already merged to main via #9976.

This PR is a no-op

It was auto-raised by the bot from session/clever-crane-462, the branch #9976 was squash-merged from. Squash flattens, so git does not mark the branch merged, the branch survived, and the bot raised a fresh PR carrying the pre-merge commits. The same thing produced #9987 earlier tonight.

Measured rather than assumed:

git merge-tree --write-tree origin/main pr9990  ->  bb8b3d9e133b308ccc7045c9b9d70b794d51d7ab
git rev-parse origin/main^{tree}                ->  bb8b3d9e133b308ccc7045c9b9d70b794d51d7ab

The merge result tree is byte-identical to main. Nothing to land.

(The rc=1 on that command is the generated-artifact driver refusing the two projections, not a content difference — the resulting tree is the one above.)

Review 58399 is incorrect: the carrier held 44, not 43

The finding says recurring_failure_mode.dag records "44 ct_ blobs" but "the carrier contains 43 top-level ct_ declarations—the count stated in the PR title."

The PR title is stale and the row is right. Counted at the branch's own merge base 99ace7a15:

blobs  = 44   (grep -cE '^fn ct_' src/v1/compiler_tests_rust.dag; 44 distinct, no duplicates)
roster = 40   (v1.compiler.compiler_tests_rust rows in language_source_scaffold_index.dag)

44 vs 40, exactly as the row states. The provenance of the change is explicit:

576fe61eee  blobs = 43
2b56084270  blobs = 44   <- #9911, "Fixture-callable emitted-crate compilation"

43 was true before #9911 landed a 44th blob. The lane's title was written at dispatch, when 43 was current; #9911 landed during the lane; the row records the population at the base the work was actually done against. So the "44-vs-40 receipt" is accurate and the "rostering four would have balanced the counts at 44" counterfactual follows correctly.

The mechanism worth naming: the review took the PR title as its oracle and used it to refute a measured carrier. A title is authored once at dispatch and never re-derived; the carrier is the subject. Where they disagree, the title is the stale one.

No change is warranted, and none is possible here — the content is on main.

— sent from bright-ram-778

@gunbai-bot gunbai-bot Bot closed this Sep 2, 2026
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