Skip to content

Dissolve CiSpec hand-listed inputs (anti-rot follow-up to #5104) - #5127

Merged
briansrls merged 4 commits into
mainfrom
session/clever-wren-723-ci-spec-dissolve
Jun 18, 2026
Merged

briansrls merged 4 commits into
mainfrom
session/clever-wren-723-ci-spec-dissolve

Conversation

@gunbai-bot

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

Copy link
Copy Markdown
Contributor

Summary

Follow-up to merged #5104: eliminate the three hand-maintained rosters in gunbc_ci_spec that were guaranteed to rot (DESIGN §3 reference-by-path / §5 coverage-by-illusion).

Discovery-by-predicate (§2 decompress→map→reduce): the 8 formerly hand-enrolled Bool witnesses are now discoverable test fn rows in *_test.dag files (Route B). Route A (unified_claim_* + v2.std.verification in dsl/) was attempted first but fails closed: merged discovery resolve hits Empty/Cons errors in the v2 std closure and breaks dsl-only gunbc compile. witness_entries removed from CiSpec; claim_batch runs --roster-from-discovery only.

Single root authority (§3): gunbc.ci_layer_roots owns witness_layer_roots + witness_discovery_scan_dirs; ci_spec, generated ci.yml (gunbc ci), and layering_imports_transport all read it — triple-fork gone.

Gates from Gate coproduct (§3): gunbc_ci_gates is the roster authority; ci_gate_coproduct_witness_test.dag witness-checks roster length against coproduct_nullary_inhabitants/coproduct_arm_keys(^Gate). Arm→run-fn dispatch in ci_gates.dag remains the exhaustive match scaffold pending #4872 (marked on carrier in ci_spec.dag).

PARKED Stage 4: full .dag-side discovery still blocked on filesystem_list, whole-program reflection, and #4872 — bottoms out at one layer→root-dir extdeps handler (not started here).

Proof (DESIGN §5)

  • claim_batch --roster-from-discovery: 226 discriminating witness(es) passed (baseline 225; +1 gate coproduct witness).
  • Red receipt: removing test fn / *_test.dag suffix drops the witness from discovery (verified on rust_stage0_gates_witness during development).
  • gunbc run … ci_gates.dag --function main: ExitSuccess (drift + YAML parse gates green, no hash pin).

Test plan

  • claim_batch --source-root src/v2 --source-root dsl --scan-dir dsl/test/claim --roster-from-discovery → 226 passed
  • gunbc run --source-root dsl --source-root src/v2 --entry dsl/tools/ci_gates.dag --function main → ExitSuccess
  • gunbc compile --source-root dsl --target rust → clean tree (dsl compile-clean witness path unblocked)
  • ci_yaml_gate drift check green (no ci.yml byte change required)

@gunbai-bot gunbai-bot Bot changed the title Dissolve CiSpec hand-listed inputs (anti-rot follow-up to merged #5104): witness_entries→[] via discoverable markers, single root-authority (kill triple-fork), gates from Gate coproduct. Stage-4 reflection PARKED. Full brief incoming by message. Dissolve CiSpec hand-listed inputs (anti-rot follow-up to #5104) Jun 17, 2026
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review June 17, 2026 21:54
@gunbai-bot gunbai-bot Bot mentioned this pull request Jun 17, 2026
6 tasks
@gunbai-bot

gunbai-bot Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor Author

Review 30078 (claude APPROVE) — witness_layer_source_shell_flags alias

Verified on ea105655fc: witness_layer_source_shell_flags at dsl/gunbc/ci_layer_roots.dag:22-24 is indeed a straight delegate to witness_layer_source_flags; the only consumer is dsl/tools/layering_imports_transport.dag:15.

Valid §3 nickname observation. Agree with the fix: drop the alias and have the transport import witness_layer_source_flags directly. Scoped as post-merge follow-up — not pushing now to avoid resetting the in-flight CI run on the merge commit.

— sent from clever-wren-723

@gunbai-bot

gunbai-bot Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor Author

Review 30115 (claude APPROVE) — two non-blocking tidy-ups

Both findings verified on fc7a872dfd:

  1. witness_layer_source_shell_flags (ci_layer_roots.dag:22-24) — confirmed hollow delegate to witness_layer_source_flags; sole consumer is layering_imports_transport.dag. Agree: inline onto witness_layer_source_flags at call sites (or differentiate only if shell-quoting is actually needed). Post-merge follow-up — not pushing now (HEAD frozen, CI in flight).

  2. corpus_scan_dirs (ci_floor_plan.dag:109-110) — confirmed identity; intentional witness seam so ci_floor_plan_witness_test can pass alternate_scan_dirs without a parallel CiSpec fork. Will add a one-line seam comment in the follow-up above.

Dissolution + witness shape acknowledged. Awaiting CI green on frozen HEAD.

— sent from clever-wren-723

@briansrls
briansrls force-pushed the session/clever-wren-723-ci-spec-dissolve branch from 2aaf664 to 4d957d6 Compare June 18, 2026 12:18
@briansrls
briansrls force-pushed the session/clever-wren-723-ci-spec-dissolve branch from 4d957d6 to 00a5ed7 Compare June 18, 2026 12:39
…ore sequential ci_gates.

- Revert src/v2 realization_schedule_witness to plain fn (not *_test.dag) per
  dissolution trigger — dsl synthetic witness remains marker-discovered.
- Restore run_ci_gates_sequential (#5138 fold terminate class) in ci_gates.dag.

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

gunbai-bot Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor Author

Addressed both findings in 1bc5bf9140:

1. realization_schedule_witness premature discovery (valid)
The v2 live-floor witness is back to src/v2/test/claim/realization_schedule_witness.dag with plain fn realization_schedule_witnesses() — excluded from marker-driven discovery until the named dissolution trigger (v2 self-compile-clean). The dsl synthetic witness stays at dsl/test/claim/realization_schedule_witness_test.dag with test fn, which is the intended coverage path called out in the file header.

2. ci_gates effectful fold (valid)
Restored run_ci_gates_sequential + #5138 dissolve-on comment from main; main() no longer uses fold(spec.gates, …) over effectful ProcessExit. Production scheduler path was already per-gate via floor_effect_gate_witness; this fixes the direct-invocation module.

— sent from clever-wren-723

- Restore fleet sccache isolate-step guard in ci_workflow.dag (#5138 parity)
  and witness_sccache_wired_when_fleet_daemon_up; regen ci.yml.
- Inline witness_discovery_scan_dirs in corpus_runnable; drop identity
  corpus_scan_dirs wrapper; update floor-plan witnesses accordingly.

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

gunbai-bot Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor Author

Addressed both findings in 2bd7090ad:

1. sccache guard removal (valid — accidental regression)
Restored the fleet sccache isolate-step guard in ci_workflow.dag (parity with main/#5138), re-added witness_sccache_wired_when_fleet_daemon_up, and regenerated ci.yml. This was not intentional dissolution scope — it dropped during the ci_workflow simplify pass.

2. corpus_scan_dirs identity wrapper (valid)
Inlined witness_discovery_scan_dirs directly in corpus_runnable() and removed the identity corpus_scan_dirs fn. Floor-plan witnesses now match on corpus_runnable() scan_dirs against layer authority.

— sent from clever-wren-723

@briansrls
briansrls merged commit e312d7f into main Jun 18, 2026
1 check passed
@briansrls
briansrls deleted the session/clever-wren-723-ci-spec-dissolve branch June 18, 2026 13:37
briansrls added a commit that referenced this pull request Jun 18, 2026
Integrate #5127 CiSpec dissolution: drop hand-listed witness_entries,
keep P4b http_pilot hermetic floor step; migrate hermetic fidelity
witness to *_test.dag discovery roster.

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request Jun 18, 2026
* WIP: P4b-SPIKE (investigation-first): re-map the v1/v2 REST/HTTP hermetic sta

* P4b M0+M1: REST hermetic pilot + PublishedMockCase unification.

- Unified PublishedMockCase across filesystem/REST corpora
- Per-op HermeticRealization fidelity semantics (4 witnesses CI-enrolled)
- http_pilot: dissolved mock_response, committed fixture seed, hermetic replay
- CI gates integrated into gunbc ci_spec/ci_workflow (post-#5104 authority)

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

* fix(hermetic): exempt committed fixture seeds from wall-clock expiry.

Committed content-addressed seeds are authoritative by content (§4), not
wall-clock; the 30-day FIXTURE_FRESHNESS_SECS drift guard remains the
wet-capture default.

- claim_batch: --fixture-no-expiry / --fixture-max-age threaded into replay lookup
- ci_spec http_pilot floor passes --fixture-no-expiry for committed-seed replay
- discriminating test: old recorded_at GREEN under exemption, RED under default

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

* WIP: P4b-SPIKE (investigation-first): re-map the v1/v2 REST/HTTP hermetic sta

* fix(ci): rebase on #5122 scheduler — http_pilot hermetic in ci_workflow step

Resolve PR #5105 merge conflict with main's dependency-ordered scheduler
(#5122): keep gunbc_ci_run_script scheduler-only; move P4b hermetic pilot
to a ci_workflow RunStep and regenerate ci.yml via main_wet.

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

* Add dissolve-on for PublishedMockCase.operation_key String nick

Name the §3 string-literal operation_key as scaffold debt with a
ServiceOperationRef dissolution trigger at std/hermetic_replay authority.

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

* Merge origin/main into session/valiant-hawk-501 (conflict unblock #5105)

Integrate #5127 CiSpec dissolution: drop hand-listed witness_entries,
keep P4b http_pilot hermetic floor step; migrate hermetic fidelity
witness to *_test.dag discovery roster.

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

* WIP: P4b-SPIKE (investigation-first): re-map the v1/v2 REST/HTTP hermetic sta

* Remove standalone http_pilot hermetic CI workflow step

Hermetic replay/fail-closed proof runs via normal CI: rust monolith gate
(interp_recorded_fixture_test) plus discovery-roster fidelity witnesses.
Drop http_pilot_hermetic_floor_script from ci_workflow/ci_spec.

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

* WIP: P4b-SPIKE (investigation-first): re-map the v1/v2 REST/HTTP hermetic sta

* Fix CI compile break from fixture max-age dissolution.

Complete the Option-B cleanup left partial at 5ab8065: drop
fixture_max_age_secs/--fixture-no-expiry from interpreter and claim_batch,
regenerate ci.yml without http_pilot_wet_record, and make hermetic http_pilot
tests hermetic (inline fixture seed, ignore wet record/replay).

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

* Fix rust_monolith gate: apply cargo fmt to touched Rust files.

CI failed rust_monolith_gate_passes at d969a36 because claim_batch.rs and
interp_recorded_fixture_test.rs were not rustfmt-clean.

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