Skip to content

main red: roster the #7269 witness blob (declared 27 vs rostered 26) — #7269/#7272 merge race - #7288

Merged
briansrls merged 1 commit into
mainfrom
fix/roster-gap-7269-blob
Jul 26, 2026
Merged

briansrls merged 1 commit into
mainfrom
fix/roster-gap-7269-blob

Conversation

@briansrls

@briansrls briansrls commented Jul 26, 2026 •

Copy link
Copy Markdown
Contributor

Summary

main is red; this is the one-row fix. compiler_tests_rust_blobs_are_all_rostered
(dag/test/claim/language_source_scaffold_index_test.dag) returns Bool(false) on main,
failing gunbc_ci_floor_batches batch 3 and blocking every merge in the tree.

The witness compares declared blobs against rostered rows for the
v1.compiler.compiler_tests_rust carrier:

side source count
declared src/v1/compiler_tests_rust.dag, fn ct_ prefix 27
rostered language_source_scaffold_roster, carrier v1.compiler.compiler_tests_rust 26

The single unrostered blob is ct_render_rust_applied_type_qualified_base_test.

Root cause — a merge race, not a defect in either PR

Neither branch was wrong on its own. The collision exists only on main, and it surfaced on the
first post-merge run — the unconditional main-push cold control catching what affected-set
scoped per-PR runs structurally cannot. That is the documented one-merge acceptance window
working as designed, not a skipped gate.

Failure is reproducible and not flake: gh run list --branch main shows failure at
0236b5048a (#7272) and failure at 862bb773df (#7268), with every preceding run success.

The change

One roster row plus its roster-list entry, in dag/gunbc/language_source_scaffold_index.dag:

data ct_row_ct_render_rust_applied_type_qualified_base_test: LanguageSourceScaffoldRow = LanguageSourceScaffoldRow {
  carrier_module: "v1.compiler.compiler_tests_rust", blob_decl: "ct_render_rust_applied_type_qualified_base_test",
  disposition: compiler_tests_rust_hand_assertion_scaffold_trigger
}

Disposition is precedent, not invention. compiler_tests_rust_hand_assertion_scaffold_trigger
is the existing disposition for hand-authored ct_*_test assertion blobs — 15 rows already carry
it, the most-used disposition in the file. The new blob is exactly that shape: a hand-authored
Rust #[test] asserting emitter behaviour. No new authority is minted and no existing binding is
changed.

Test plan — green by execution

./target/release/claim_batch --entry dag/test/claim/language_source_scaffold_index_test.dag --source-root dag --source-root src/v2 with all six witnesses in the file:

PASS compiler_tests_rust_blobs_are_all_rostered
PASS runtime_rust_blobs_are_all_rostered
PASS language_source_scaffold_roster_is_fully_dispositioned
PASS scaffold_binding_nothing_is_refused
PASS reasoned_terminal_is_accepted
PASS pair_completion_spelling_binds_the_derivation_authority
  • Target witness GREEN (27 == 27)
  • Sibling roster witness (runtime_rust) unaffected
  • Roster-wide disposition witness green — the new row is dispositioned, not merely counted
  • All three control witnesses still green — the fix did not slacken the checks

Binary receipt (the stale-binary trap is real here — the checked-out claim_batch predated
this work by six days, and a stale binary evaluating a roster count is exactly how a non-fix
"verifies"):

path target/release/claim_batch
built 2026-07-26 13:58 UTC (was Jul 20 20:01)
size 20620416 (was 19510928)
sha256 a5b9eb4a064362138dcaf7a93d003996…

The RED half was executed by CI, not re-staged by hand

This PR adds no new discriminating RED, deliberately: the witness it repairs is the RED
control, and it has already fired twice on main by execution — failure at 0236b5048a and at
862bb773df, both compiler_tests_rust_blobs_are_all_rostered returning Bool(false). So the
red-before / green-after pair is complete and both halves were executed; only the red half was
executed by CI rather than locally. Deleting the row re-reds it (26 != 27).

Per the file's own coverage_scan_dissolve_on note, the counting mechanism is a declared interim
(source-text split rather than a Node-tree count, so it detects arrival of an unrostered blob
rather than classifying it). This change neither touches nor extends that debt.

@gunbai-bot gunbai-bot Bot changed the title Weak Self Host -> Strong Self Host (Gates 1-3, i guess) main red: roster the #7269 witness blob (declared 27 vs rostered 26) — #7269/#7272 merge race Jul 26, 2026
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review July 26, 2026 14:01
@briansrls
briansrls merged commit a18b22d into main Jul 26, 2026
8 of 10 checks passed
@briansrls
briansrls deleted the fix/roster-gap-7269-blob branch July 26, 2026 14:42
briansrls added a commit that referenced this pull request Jul 26, 2026
…oster.

Remove duplicate ct_render_rust_applied_type_qualified_base_test row (main
already carries it after #7272/#7288); revert language_source_scaffold_index
to main placement. Regenerate ci.yml/falsifier.yml via main_wet — block if
then/else body lines use emit indentation (10-space), not hand-indented
12-space; matches heal job 89806546636 output the bot could not push.

Co-authored-by: Cursor <cursoragent@cursor.com>
@briansrls
briansrls restored the fix/roster-gap-7269-blob branch July 26, 2026 15:14
briansrls added a commit that referenced this pull request Jul 26, 2026
…e-on to Ring.

Name-match carrier selection is interim — terminal trigger binds std.algebra.Ring as the inhabitance authority that will replace it. Merge-main left a duplicate ct_render row; keep main's single copy.

Co-authored-by: Cursor <cursoragent@cursor.com>
gunbai-bot Bot pushed a commit that referenced this pull request Jul 26, 2026
GitHub merge-ref CI counted ct_render twice (main #7288 + this branch),
making rostered > declared and failing compiler_tests_rust_blobs_are_all_rostered.

Co-authored-by: Cursor <cursoragent@cursor.com>
gunbai-bot Bot pushed a commit that referenced this pull request Jul 26, 2026
Remove duplicate ct_row_ct_render_rust_applied_type_qualified_base_test
data + roster list entry — same semantic collision as #7288/#7279 merge race.

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request Jul 26, 2026
Main already owns this entry via #7288; the branch copy made rostered exceed declared (27/28).

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request Jul 26, 2026
…ker (#7265)

* WIP: shell→dag bucket D — foreign-executor emit cluster (gate #7216 now MERGE

* WIP: shell→dag bucket D — foreign-executor emit cluster (gate #7216 now MERGE

* Fix sccache emit if-branch semantics and commit regenerated ci.yml.

Multi-statement if/then bodies must be semicolon-joined in a single Run
(the if-else grammar inserts then_body verbatim without braces). The heal
job failed because ci.yml drifted and the bot lacks workflows permission to
push workflow files — commit the regenerated ci.yml and falsifier.yml here.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fold bucket-D census into arc census; delete orphan doc.

The standalone bucket-d-foreign-executor-emit-census.md had zero inbound
refs and would red the falsifier after merge. True-up §4.E/4.I and add
§4.J punch-list to the existing shell-to-dag-residual census (reachable
via design_document.dag) — single authority, no bind row needed.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Repoint ci_sccache_opportunistic_detect scaffold to emit module.

ci_sccache_provider_shell_injection moved to v2.workflow.ci_materialization_emit
in this PR; host_build_cache_provision's scaffold bind still pointed at the
deleted gunbc.ci_materialization declaration (review 43048).

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix merge-admission emit golden: hand-authored bytes, no trailing NL.

ci_floor_disposition_marker_init_emit_matches_concat_golden_holds failed
on CI because the concat-reconstructed golden carried a trailing newline
after the echo redirect that orch_emit_pipeline does not emit. Switch to
the #6467 hand-authored golden pattern (matches committed ci.yml).

Co-authored-by: Cursor <cursoragent@cursor.com>

* Mark ci_sccache_bound_branch semijoin as declared Scaffold.

Three bound-branch Runs are semicolon-folded because multi-Do then_
inside realize_if_else inline binding is unguarded by the if-band
corpus and byte-diverged on first ci.yml regen — not a carriage bug.
Dissolution: emit-lane construction refusal for multi-step then_ at
inline if_else bind, or block-bodied if_else row (emit lane, not D).

Co-authored-by: Cursor <cursoragent@cursor.com>

* Add missing Present import to ci_materialization_emit.

Present is used for redirect and else_ arms but was not in the import
list; golden tests executed green via compilation (review 43241).

Co-authored-by: Cursor <cursoragent@cursor.com>

* Roster ct_render_rust_applied_type_qualified_base_test for scaffold index.

#7269 added the hand assertion blob after #7272 landed the inventory witness;
merge main exposed compiler_tests_rust_blobs_are_all_rostered red (27 declared, 26 rostered).

Co-authored-by: Cursor <cursoragent@cursor.com>

* WIP: shell→dag bucket D — foreign-executor emit cluster (gate #7216 now MERGE

* Rework bucket D PR1: dissolve semijoin, extract shared emit plumbing.

Replace semicolon-folded sccache bound branch with three Do steps so
block-bodied if_else (#7277) emits multi-line workflow text; re-golden
and regen ci.yml/falsifier.yml. Route both new emit modules through
orchestration_bash_emit_support (run/do/emit_pipeline); pre-existing
ci_*_emit forks migrate in PR2.

Co-authored-by: Cursor <cursoragent@cursor.com>

* WIP: shell→dag bucket D — foreign-executor emit cluster (gate #7216 now MERGE

* Fix CI drift gate: regen ci.yml from emit authority; drop duplicate roster.

Remove duplicate ct_render_rust_applied_type_qualified_base_test row (main
already carries it after #7272/#7288); revert language_source_scaffold_index
to main placement. Regenerate ci.yml/falsifier.yml via main_wet — block if
then/else body lines use emit indentation (10-space), not hand-indented
12-space; matches heal job 89806546636 output the bot could not push.

Co-authored-by: Cursor <cursoragent@cursor.com>

* WIP: shell→dag bucket D — foreign-executor emit cluster (gate #7216 now MERGE

* Remove duplicate ct_render_rust roster row from #7265 merge.

Main already owns this entry via #7288; the branch copy made rostered exceed declared (27/28).

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Brian Searls <briansrls@gunb.ai>
Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request Jul 26, 2026
…ckendCapability (#7286)

* WIP: 7272 followons

* WIP: 7272 followons

* Qualify GroupCompletion emit provenance: Sub/Div not row-derived.

The pair-completion comment overstated "arithmetic is row data"; Add/Mul/Neg are, Sub/Div remain keyed literals. Completes the #7272 regen fixed point.

Co-authored-by: Cursor <cursoragent@cursor.com>

* WIP: 7272 followons

* WIP: 7272 followons

* Cite dag language authority via Https DESIGN.md, not File scheme.

File-scheme anchors fail the extdeps external-authority wall (Http/Https only). Keep the D2 repoint at DESIGN.md §4, but cite it as an Https github URL so corpus_live_clean_tree_wall_holds stays green.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Drop #7288 ct_ roster duplicate; bind GroupCompletion carrier dissolve-on to Ring.

Name-match carrier selection is interim — terminal trigger binds std.algebra.Ring as the inhabitance authority that will replace it. Merge-main left a duplicate ct_render row; keep main's single copy.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Bound react_jsx KEEP scaffold to one site-subsumption dissolution event.

The prior bind named already-landed gunbc.site.markup.el, so the typed trigger was nominal; sole-owner the site lane and point the Scaffold at the named page-emission dissolve-on.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Brian Searls <briansrls@gunb.ai>
Co-authored-by: Cursor <cursoragent@cursor.com>
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.

1 participant