Skip to content

Consolidate the 8-line CI floor into one composed .dag run (collapse redundant resolves) - #5101

Merged
briansrls merged 4 commits into
mainfrom
session/fierce-raven-859
Jun 17, 2026
Merged

briansrls merged 4 commits into
mainfrom
session/fierce-raven-859

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Jun 17, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Extend claim_batch --roster-from-discovery to append explicit --entry/--function Bool witnesses (deduped), so the four hand-enrolled CI witnesses share one module index with the discovered corpus instead of four cold gunbc run --claim-run resolves.
  • Add dsl/tools/ci_floor_gates.dag composing the three effectful ProcessExit gates (rust fmt/clippy selector, emit-host MVP smokes, layering-imports host scan + perturb receipts) behind one gunbc run.
  • Collapse .github/workflows/ci.yml CI floor from eight cargo run lines to two composed passes.
  • Mark the four explicit --entry witness rows in ci.yml as SCAFFOLD with a named dissolution trigger (enroll as discoverable test fn under a scanned dsl root).

RED proof receipt (discriminating perturbation)

Perturbations use absolute-path entry overlays (no committed breakage):

Bool witness path (claim_batch) — keystone forced false:

FAIL rust_stage0_gates_witnesses
claim_batch exit=1

Command: claim_batch --source-root dsl --entry /tmp/.../rust_stage0_gates_witness.dag --function rust_stage0_gates_witnesses (perturbed copy with false && prefix on keystone).

ProcessExit gate path (ci_floor_gates) — success branch replaced with exit_failure:

ExitFailure { reason: perturb red proof, code: 1 }
gunbc exit=1

Command: gunbc run ... --entry /tmp/.../ci_floor_gates.dag --function main (perturbed copy).

Test plan

  • cargo build -p v1-compiler --release --bin claim_batch --bin gunbc
  • cargo clippy -p v1-compiler --bin claim_batch -- -D warnings
  • Consolidated claim_batch floor: 202 witnesses green (v2 claim corpus: 202 discriminating witness(es) passed)
  • gunbc run --source-root dsl --source-root src/v2 --entry dsl/tools/ci_floor_gates.dag --function main → ExitSuccess
  • Fail-closed: claim_batch --roster-from-discovery with no scan-dir and no explicit rows exits 2
  • RED perturbation receipts above (both passes exit 1 on intentional breakage)

@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review June 17, 2026 15:39
briansrls and others added 4 commits June 17, 2026 15:53
…tes.

Fold the four hand-enrolled Bool witnesses into claim_batch discovery
(shared module index) and sequence the three effectful ProcessExit gates
behind one ci_floor_gates.dag resolve, cutting the workflow from eight
cargo-run lines to two while preserving the 202-witness corpus.

Co-authored-by: Cursor <cursoragent@cursor.com>
Add a one-line SCAFFOLD comment in ci.yml pointing at enrolling the four
hand-enrolled Bool witnesses as discoverable test fn rows under a scanned
dsl root (DESIGN §6).

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

Resolve ci.yml conflict by keeping the two-pass consolidated floor and
enrolling main's new power_watt_witness as an explicit claim_batch row.
Move SCAFFOLD dissolution comment out of the shell script (inline # broke
line continuations and dropped --entry flags).

Co-authored-by: Cursor <cursoragent@cursor.com>
@briansrls
briansrls force-pushed the session/fierce-raven-859 branch from 4bbe501 to fba77f3 Compare June 17, 2026 15:53
@gunbai-bot

gunbai-bot Bot commented Jun 17, 2026

Copy link
Copy Markdown
Contributor Author

Verified the claude-opus-4-7 APPROVE findings against fba77f361 — all accurate, no code changes required:

  • ci_floor_gates.dag: main evaluates all three gates (run_rust_monolith_gate, run_emit_host_ci_gate, run_layering_imports_ci_gate) before the exit_ok conjunction — no short-circuit on the transport calls themselves.
  • SCAFFOLD: ci_floor_gates.dag header carries the §7 dissolution trigger; ci.yml carries the enrollment SCAFFOLD (YAML comments, not inline shell # that would break \ continuations).
  • claim_batch: discovery + explicit --entry append with (entry, function) dedup via seen BTreeSet (claim_batch.rs ~718–731); previously exclusive flag relaxed without changing discovery-only or explicit-only paths.

Merge readiness (this HEAD): CI green, mergeable=CLEAN, no REQUEST_CHANGES, 1/2 distinct approving providers (claude; cursor review still running). Implementation remains paused per operator/DESIGN hold on enrollment principle — no further pushes until that ruling lands.

— sent from fierce-raven-859

@gunbai-bot

gunbai-bot Bot commented Jun 17, 2026

Copy link
Copy Markdown
Contributor Author

Verified the cursor/composer-2.5 APPROVE findings against fba77f361 — accurate, no code changes required:

  • 9→2 census shrink: ci.yml now has two cargo run lines — one claim_batch (discovery + five explicit Bool witnesses) and one gunbc ci_floor_gates.dag (three ProcessExit gates). Matches the comment block at lines 61–71.
  • Surface area preserved: all five former --claim-run witnesses are explicit claim_batch --entry rows; all three effectful gates (rust_gates_ci, emit_host_gate, layering_imports_gate) are composed in ci_floor_gates.dag via run_rust_monolith_gate / run_emit_host_ci_gate / run_layering_imports_ci_gate.
  • Scaffold/dissolution: enrollment SCAFFOLD documented in YAML comments (lines 67–68); ci_floor_gates.dag carries the §7 dissolution header.
  • claim_batch Rust expansion: discovery + explicit append with (entry, function) dedup is the mechanism enabling witness consolidation without dropping discovery-only mode.

Merge readiness: ≥2 distinct approvals (claude + cursor), no REQUEST_CHANGES, mergeable=CLEAN, CI green. Stopping here per policy — operator merges manually. Implementation remains paused pending DESIGN ruling on zero hand-roster enrollment.

— sent from fierce-raven-859

@briansrls
briansrls merged commit 53a12f6 into main Jun 17, 2026
1 check passed
@briansrls
briansrls deleted the session/fierce-raven-859 branch June 17, 2026 16:15
briansrls added a commit that referenced this pull request Jun 17, 2026
…batch.rs

#5101 superseded this PR's ci.yml scan-dir removal and claim_batch.rs
optional-scan-dir change (main now has the consolidated floor + the
discovery-OR-explicit-entries guard). Took main's version of both files;
this PR's remaining unique contribution is the extdeps witness test fn
migration (+ the de-fused gcp witness resolution from the prior merge).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jun 17, 2026
#5101 reinstated --scan-dir src/v2/test and the extdeps scan-dir on the
consolidated claim_batch line. Both are now vestigial: this PR migrated the
extdeps witnesses to test fn (discovered via the src/v2 source-root walk), and
src/v2/test has no unified_claim_* rows. claim_batch (main's version) allows
discovery with no scan-dir when explicit --entry rows are present. Honors the
operator request to remove --scan-dir src/v2/test.

Verified by execution: claim_batch over src/v2+dsl, no scan-dir, +5 explicit
entries -> 207 witnesses pass, 0 fail; all 5 extdeps witnesses discovered.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jun 17, 2026
* WIP: ci transpor tpolicy

* WIP: ci transpor tpolicy

* Carry the #5092 main-fix into this branch (main-sync dragged in broken file)

The dashboard synced main into this branch at 24f2571, before #5092 merged,
so the #5077x#5082 breakage (emit_ingest_type_decl_round_trip_test.dag
importing the deleted grammar_relation_field_tokens) is now in this tree and
fails the CI floor claim_batch resolve. Apply the same approved fix as #5092
(drop the stale import, use ^grammar_relation_field_tokens caret form). When
#5092 merges first, this becomes a no-op under squash-merge.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* WIP: ci transpor tpolicy

* Resolve merge conflicts: union of test fn migration + main's de-fused gcp witness

The auto-committed merge (e2c55aa) left conflict markers in 3 extdeps files.
Resolution: keep this branch's representation migration (*_test.dag rename,
test fn, no unified_claim row) AND main's post-#5059 semantics — the gcp OAuth2
fork was de-fused, so the corpus witness now asserts ABSENCE
(corpus_gcp_oauth_defused_holds = !shows_fork) rather than presence. Receipt
and gate rows updated to the new function name + _test.dag path.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Drop the two vestigial --scan-dir flags from the consolidated CI floor

#5101 reinstated --scan-dir src/v2/test and the extdeps scan-dir on the
consolidated claim_batch line. Both are now vestigial: this PR migrated the
extdeps witnesses to test fn (discovered via the src/v2 source-root walk), and
src/v2/test has no unified_claim_* rows. claim_batch (main's version) allows
discovery with no scan-dir when explicit --entry rows are present. Honors the
operator request to remove --scan-dir src/v2/test.

Verified by execution: claim_batch over src/v2+dsl, no scan-dir, +5 explicit
entries -> 207 witnesses pass, 0 fail; all 5 extdeps witnesses discovered.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Brian Searls <briansrls@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jun 17, 2026
… landed claim (review #5129)

cursor/composer-2.5 REQUEST_CHANGES: CiFloorSpec does not exist on main and
dsl/extdeps/github/ci.dag still records ci.yml as hand-edited, so the 'Recently
landed' line overstated. Now claims only the verifiable #5101 consolidation;
ci.yml generation stays honestly under Next.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jun 17, 2026
* docs: add a simple high-level gunbc ROADMAP task tracker

A scannable in-flight task index for gunbc (the compiler/language). Explicitly
NOT a second authority — DESIGN.md remains the source of truth for the why and
each task's real state is its branch/PR + the marks on the substrate (§3). Product
/ ctrl features are tracked elsewhere.

Records the confirmed root-cause of the cost-lens blind spot: the lens rates
subject-program complexity, not the compiler's own pass cost — a self-hosting gap
(§7), which is why the ~500x resolve blowup is invisible to it.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* docs(roadmap): correct the resolve-blowup framing — un-enrolled complexity violation, not a new lens

The cost-lens 'blind spot' is not a new issue: complexity_lens is general and the
budget roster is designed to enroll compiler-stage bodies (waves 2+). Fix is the
planned enrollment, not a scaffold. Drops the interim step-count ratchet idea.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* docs(roadmap): correct overstated 'ci.yml generated from CiFloorSpec' landed claim (review #5129)

cursor/composer-2.5 REQUEST_CHANGES: CiFloorSpec does not exist on main and
dsl/extdeps/github/ci.dag still records ci.yml as hand-edited, so the 'Recently
landed' line overstated. Now claims only the verifiable #5101 consolidation;
ci.yml generation stays honestly under Next.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* WIP: 6/17 continuity (help me keep track of all the work thats happening/what

* docs(roadmap): slim to one line per task with indented breakdown

Per operator: each task one line for quick scanning; details go to indented
sub-bullets. Promotes the lens-universalization + host-language-ban lane to Now
(being dispatched).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Brian Searls <briansrls@gunb.ai>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jun 18, 2026
…se (KeySource-keyed) (#5168)

* docs: add a simple high-level gunbc ROADMAP task tracker

A scannable in-flight task index for gunbc (the compiler/language). Explicitly
NOT a second authority — DESIGN.md remains the source of truth for the why and
each task's real state is its branch/PR + the marks on the substrate (§3). Product
/ ctrl features are tracked elsewhere.

Records the confirmed root-cause of the cost-lens blind spot: the lens rates
subject-program complexity, not the compiler's own pass cost — a self-hosting gap
(§7), which is why the ~500x resolve blowup is invisible to it.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* docs(roadmap): correct the resolve-blowup framing — un-enrolled complexity violation, not a new lens

The cost-lens 'blind spot' is not a new issue: complexity_lens is general and the
budget roster is designed to enroll compiler-stage bodies (waves 2+). Fix is the
planned enrollment, not a scaffold. Drops the interim step-count ratchet idea.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* docs(roadmap): correct overstated 'ci.yml generated from CiFloorSpec' landed claim (review #5129)

cursor/composer-2.5 REQUEST_CHANGES: CiFloorSpec does not exist on main and
dsl/extdeps/github/ci.dag still records ci.yml as hand-edited, so the 'Recently
landed' line overstated. Now claims only the verifiable #5101 consolidation;
ci.yml generation stays honestly under Next.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* WIP: 6/17 continuity (help me keep track of all the work thats happening/what

* docs(roadmap): slim to one line per task with indented breakdown

Per operator: each task one line for quick scanning; details go to indented
sub-bullets. Promotes the lens-universalization + host-language-ban lane to Now
(being dispatched).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* WIP: 6/17 continuity (help me keep track of all the work thats happening/what

* WIP: 6/17 continuity (help me keep track of all the work thats happening/what

* Remove resolution-coalescing design doc (review artifact; rationale moved to scope-a PR body)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* WIP: 6/17 continuity (help me keep track of all the work thats happening/what

* increment 3: realization materialization arm — reconcile→Share collapse (KeySource-keyed)

Re-introduce the trimmed Placement / Materialization (Recompute|Memoize|Share) / RealizedStep
vocab in std.realization and add reconcile(steps), which collapses same-KeySource CreateIfAbsent
steps into one Share via std.effects.create_double_init_collapsible (the single KeySource-keyed
authority — reconcile consumes it, never re-derives KeySource equality). Not Route-C/content-hash
gated; the step carries its source EffectShape so the collapse keys on KeySource identity (the
ContentHash intent + licensed_by return in increment 4 with cross-tree content-hashing).

Discriminating witness (reconcile_share_collapse_witnesses, green by execution): same-KeySource ->
one Share; different-KeySource -> two un-Shared; PostAlways never collapses (fail-closed).

Fix latent effects.dag arg-name mismatch: create_double_init_collapsible called key_source_eq(a:,b:)
but the dsl def is (left:,right:). Latent until now (no dsl consumer); realization.dag is the first.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(realization): dissolve undispositioned is_share predicate; refresh DESIGN.md CI section

Two follow-ups on the increment-3 branch:

(1) review #5168 (cursor/composer-2.5 REQUEST_CHANGES): std.realization's `is_share`
was an undispositioned `is_*` predicate over the Materialization coproduct. reconcile
sets `materialization: Share` directly and nothing in std/ reads it back, so its only
consumer is the reconcile witness. Per the predicate-dissolution rule + §6 model-just-
in-time, a predicate with zero std/ consumers does not belong in std/. Disposition =
the reviewer's first option: delete from std/, move the Share match into the witness as
a test-local fn. std.realization keeps only the fold-bearing reconcile arm.

(2) DESIGN.md CI section refresh: the "two composed passes / claim_batch / ci_gates.dag"
paragraph was stale. Replaced with the actual floor — one claim_executor plan pass
(ci_floor_plan.gunbc_ci_floor_batches) with marker-driven tree-wide witness discovery
(every *_test.dag test fn under both src/v2 and dsl, fail-closed filename hygiene) and a
whole-tree dsl compile-clean gate.

Verified by execution: dsl compile-clean (281 modules, 0 diagnostics) +
reconcile_share_collapse_witnesses => true.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Brian Searls <briansrls@gunb.ai>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.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