Skip to content

Fix the three nightly/main reds: nfr roster row, live-read doc relink, compile-clean non-exhaustive match — and locate the compile-clean refusal - #6604

Merged
briansrls merged 4 commits into
mainfrom
session/sleek-deer-172-mainred-nfr-orphan
Jul 14, 2026
Merged

briansrls merged 4 commits into
mainfrom
session/sleek-deer-172-mainred-nfr-orphan

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Jul 14, 2026 •

Copy link
Copy Markdown
Contributor

What — main-red repair, three reds + one observability fix (scope grew as the reds were pulled; each documented below)

  1. non_fold_residue_clean_holds (nightly red 1) — the shell→dag slices landed orch_emit_let_step with a top-level _ => on Expr (one special-cased variant, uniform spelling path for the rest). Dated roster row per the established backfill pattern; burns down with the orchestration-emit fold migration. Masking receipt Remove LLM response caching module #9 (corpus-read witness predict-skipped on the landing PR).
  2. doc_graph_has_no_orphan_docs (nightly red 2) — live-read-witness-classification-design.md has only non-bind: inline .dag mentions → zero doc-graph roots. The original fix lost a merge race (Post-sweep cleanups: re-home spice pair under test/claim/ (first EX-row relocation dissolution); fix runner roster paths; link orphaned design docs #6564 squash-merged 5h before the fix commit reached its branch). Re-landed: linked from affected-set-precompute-pruning.md.
  3. dag_compile_clean_gate_passes (found when this PR's own CI ran) — main is compile-red: Shell→dag: wire the gunbc converge CLI receiver — stage0 Subcommand gains converge --host <h>, dispatching to the landed converge_apply/ConvergePlan in-process interpreter (#6572) with typed receipts on the byte-locked receipt grammar; green by EXECUTION on a fixture host + discriminating RED (unkno #6598 enumerated HostEffect's then-3 variants in converge_cli_applied_knob_count; Shell→dag P5a: the 7 MECHANICAL srv3 tail files → typed observe/effect rows on host_effect_apply (their dissolution triggers already name this destination; receipt echoes → typed receipts); do NOT delete gunbc.shell_bash_runner.shell_exec_via_bash yet (P5b owns that deletion once no caller remains); #6586 grew the type to 15 on an independent base — green alone, red together (the stale-base interaction class the HELD merge-freshness gate exists for). Fix: the fn asks one question (ConvergePlan knob count, else fallback) → one-special-variant dispatch, not 14 cloned arms. The nfr lens scans param-scrutinee matches only, so this field-scrutinee site is lens-invisible — recorded as a lens-precision note in the roster comment, deliberately no row (a row would be stale; verified by execution).
  4. Locate the compile-clean refusal (the reviewed 'WIP' — now scoped and justified): floor_compile_clean_emit_ok returned a bare bool; CI printed receipt ok=false with zero located errors. It now calls the existing eprint_compile_clean_hard_diagnostics helper (§5: a refusal is typed AND located). Receipt: this patch is what found red 3 — before it, the non-exhaustive-match diagnosis was log archaeology. The earlier checkpointer-pushed WIP commits (temp roster instrumentation, since removed) are squashed away; the surviving diff is the two-line diagnostics call + the empty-emit disclosure.

Verification (by execution, this tree)

  • non_fold_residue_clean_holds → PASS (zero unrostered, zero stale — the temp instrumentation that proved it is not in the diff)
  • doc_graph_has_no_orphan_docs → PASS both trees
  • claim_executor floor batch 1 → compile-clean receipt ok=true, PASS dag_compile_clean_gate_passes
  • regen_stage0 --verify → regen_divergence_count=0

With this, main returns to zero known corpus reds; the next nightly is the clean M1-confirmation candidate.

🤖 Generated with Claude Code

briansrls and others added 2 commits July 14, 2026 14:57
…eipt #9) + re-land the live-read design doc link lost to the #6564 merge race

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…rge_cli_applied_knob_count one-special-variant dispatch (#6598 x #6586 stale-base interaction made main compile-red); floor compile-clean refusal now prints located hard diagnostics (it previously printed ok=false with zero located errors — this patch is what found the non-exhaustive match); nfr lens-precision note (field-scrutinee matches are lens-invisible, no roster row)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@briansrls
briansrls force-pushed the session/sleek-deer-172-mainred-nfr-orphan branch from c64be18 to 4e0a1b4 Compare July 14, 2026 15:41
@gunbai-bot gunbai-bot Bot changed the title Fix the two nightly reds: roster orch_emit_let_step (nfr) + re-land the live-read design doc link (merge race) Fix the three nightly/main reds: nfr roster row, live-read doc relink, compile-clean non-exhaustive match — and locate the compile-clean refusal Jul 14, 2026
@gunbai-bot

gunbai-bot Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor Author

Both REQUEST_CHANGES addressed by the force-pushed head 4e0a1b4: the flagged WIP commits were checkpointer auto-pushes of in-progress diagnostic scaffolding (the temp roster instrumentation, including the live: binding one review flagged) — that scaffolding is gone; the surviving hand-Rust is the two-line located-refusal fix, now scoped and receipted in the PR body (it is what found the compile-clean red this PR also fixes: main was compile-red from the #6598×#6586 stale-base interaction). Note on the borrow-check finding: nfr_build_report() returns &'static from a OnceLock, so the flagged binding compiled — but it's moot, the block is removed. — sent from sleek-deer-172

@gunbai-bot gunbai-bot Bot mentioned this pull request Jul 14, 2026
6 tasks
briansrls and others added 2 commits July 14, 2026 15:49
…pattern_eq — coordination: silent-eagle-662's resolved audit, supersedes #6614) + dedupe the replace-all's second roster insertion

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@briansrls
briansrls force-pushed the session/sleek-deer-172-mainred-nfr-orphan branch from 90d9ba1 to f5b54f8 Compare July 14, 2026 15:51
@briansrls
briansrls merged commit 8693f60 into main Jul 14, 2026
3 checks passed
@briansrls
briansrls deleted the session/sleek-deer-172-mainred-nfr-orphan branch July 14, 2026 17:37
briansrls added a commit that referenced this pull request Jul 14, 2026
The prior merge commit (19bc6f8) was auto-committed with raw
<<<<<<</=======/>>>>>>> conflict markers still in cli_run.rs instead
of a resolved file. Resolve to main's #6604 wording (functionally
identical fix, now the single copy since #6604 already landed the
diagnostic-printing + non-exhaustive-match fix upstream).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
gunbai-bot Bot pushed a commit that referenced this pull request Jul 14, 2026
gunbai-bot Bot pushed a commit that referenced this pull request Jul 14, 2026
…ous kind-path check

Two independent floor reds, both blocking the queue, fixed together per operator request (single PR):

1. Batch-1 compile-clean (non-exhaustive match): #6587 added the Srv3InstallDiagnosticObserve
   and OsInstallActuatorToolchainEnsure HostEffect variants but did not update
   converge_cli_applied_knob_count (dag/gunbc/fleet_converge_cli.dag). Its explicit-arm match
   (no wildcard — #6604's fail-closed design) correctly rejected them at compile-clean. Add both
   arms => fallback, consistent with all non-ConvergePlan siblings; the match now covers all 18
   HostEffect variants. (SetHostnameCas already landed on main via #6625.)

2. Batch-2 roster witness (ci_floor_optin_roster_witnesses): witness_entry_kind_path_agree
   demanded ExecutionWitnessKind entries live under src/v2/test/claim/execution/, colliding with
   the operator's 5s-rule (>5s witnesses live under long/), where the Gate-1 keystones correctly
   live. The check is vacuous (DESIGN §5 second-representation): scheduling partitions by w.kind
   (entry_kind_is_execution), discovery is dir-gated, and witness_kind_wins_over_path already pins
   kind as authoritative. Delete the cluster (execution_corpus_scope_prefix + the two agreement
   fns) and its two live consumers (witness_live_roster_kind_path_agree,
   witness_projected_ci_entries_kind_stamped).

Verified by execution: whole-tree compile-clean 0 diagnostics; ci_floor_optin_roster_witnesses,
commit_workflow_span_kind_witnesses, commit_workflow_witnesses all green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jul 14, 2026
…ous kind-path check (#6633)

Two independent floor reds, both blocking the queue, fixed together per operator request (single PR):

1. Batch-1 compile-clean (non-exhaustive match): #6587 added the Srv3InstallDiagnosticObserve
   and OsInstallActuatorToolchainEnsure HostEffect variants but did not update
   converge_cli_applied_knob_count (dag/gunbc/fleet_converge_cli.dag). Its explicit-arm match
   (no wildcard — #6604's fail-closed design) correctly rejected them at compile-clean. Add both
   arms => fallback, consistent with all non-ConvergePlan siblings; the match now covers all 18
   HostEffect variants. (SetHostnameCas already landed on main via #6625.)

2. Batch-2 roster witness (ci_floor_optin_roster_witnesses): witness_entry_kind_path_agree
   demanded ExecutionWitnessKind entries live under src/v2/test/claim/execution/, colliding with
   the operator's 5s-rule (>5s witnesses live under long/), where the Gate-1 keystones correctly
   live. The check is vacuous (DESIGN §5 second-representation): scheduling partitions by w.kind
   (entry_kind_is_execution), discovery is dir-gated, and witness_kind_wins_over_path already pins
   kind as authoritative. Delete the cluster (execution_corpus_scope_prefix + the two agreement
   fns) and its two live consumers (witness_live_roster_kind_path_agree,
   witness_projected_ci_entries_kind_stamped).

Verified by execution: whole-tree compile-clean 0 diagnostics; ci_floor_optin_roster_witnesses,
commit_workflow_span_kind_witnesses, commit_workflow_witnesses all green.

Co-authored-by: Brian Searls <briansearls1@gmail.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jul 14, 2026
…: ubuntu_install_media_fetch.dag (21 RawLines) + ubuntu_seeded_install_media_remaster.dag (39 RawLines) stop emitting shell ENTIRELY — replace ShellProgram/serialize_bash with in-process typed reconcile: observe(path) → Observation (#6596)

* WIP: Shell→dag B1 (operator-signed 2026-07-14: in-process typed reconcile): u

* WIP: Shell→dag B1 (operator-signed 2026-07-14: in-process typed reconcile): u

* WIP: Shell→dag B1 (operator-signed 2026-07-14: in-process typed reconcile): u

* Sha256Verify interface shape + §3 hash-split note + FLAG B1 SIGNED

Splits sha256 verification into a DESIGN §3 shape (Sha256Verify(path,
expected_digest) -> Sha256VerifyVerdict, cited to the SHA-256 algorithm
authority) realized by sha256sum_verify_via_shell, ONE shell-CLI
transport handler — a future native/library digest realization slots
in as another handler, not a rewrite. install_media_hash_matches now
calls the shape instead of assembling the sha256sum checksum-file
transport detail itself.

Adds a one-line §3 convergence note distinguishing this cryptographic
SHA-256 digest check from std.content_hash's internal fnv1a64
structural fingerprint, so the two are not later wrongly unified.

Marks census FLAG B1 (docs/plans/shell-to-dag-residual-census-and-arc-completion.md)
SIGNED: the ISO fetch/remaster sites are a typed target, not a
permanent ShellPayloadRequired bootstrap roster entry, and records
both files as landed/dissolved.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* WIP: Shell→dag B1 (operator-signed 2026-07-14: in-process typed reconcile): u

* Fix CI: split real-shell-effect witnesses out of hermetic discovery

srv3_install_media_fetch_witness_test.dag / srv3_seeded_install_media_witness_test.dag
gained real shell.Mktemp.Dir/Filesystem.Write/shell.Remove.RecursiveForce witnesses
in the shell->dag B1 rewrite. CI's default Hermetic discovery corpus swept them in
(the affected-set flip) and refused with "no mock_response for operation Dir" since
shell.dag's non-Exec operations have no mock_response block.

Move the four real-execution test fns into dedicated
srv3_install_media_fetch_real_execution_witness_test.dag /
srv3_seeded_install_media_real_execution_witness_test.dag files, excluded from
hermetic discovery and re-enrolled as declared Wet entries in
gunbc.ci_layer_roots.bin_witness_wet_entries (the precedented lane for real-effect
witnesses the hermetic envelope refuses by construction). The parent files' pure
classification witnesses keep full hermetic per-PR discovery.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* WIP: Shell→dag B1 (operator-signed 2026-07-14: in-process typed reconcile): u

* Fix review findings: typed refusals for move/verify-infra failures, drop predicate dissolution

Addresses cursor/composer-2.5 REQUEST_CHANGES on PR #6596 (DESIGN §5/§6):
- install_media_fetch_try_mirror no longer silently returns none on a
  post-verify shell.Move.File failure (previously mislabeled downstream as
  "all mirrors unreachable"); it now short-circuits the mirror fold with a
  typed MoveFailureRefusal/VerifyInfraFailureRefusal reason.
- observe_install_media_fetch and install_media_fetch_reconcile now match
  Sha256VerifyVerdict's InfraFailure variant directly instead of going
  through the install_media_hash_matches Bool predicate, so a genuine
  digest mismatch stays distinguishable from mktemp/checksum-write
  infrastructure failure.
- install_media_hash_matches is retained only as a test-fixture
  convenience (no longer used in the production reconcile path).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* WIP: Shell→dag B1 (operator-signed 2026-07-14: in-process typed reconcile): u

* WIP: Shell→dag B1 (operator-signed 2026-07-14: in-process typed reconcile): u

* WIP: Shell→dag B1 (operator-signed 2026-07-14: in-process typed reconcile): u

* Fix stale script-resolution assertions + address cursor review finding on install_media_hash_matches

- srv3_host_effect_apply_witness_test.dag: Srv3InstallMediaFetch/Srv3SeededInstallMediaRemaster
  now route through TypedReconcileOnHost (host_effect_realize.dag) and srv3_host_effect_script_for
  correctly returns Absent for them; update the mechanical-variants and sibling-resolve witnesses
  accordingly, add witness_typed_reconcile_effects_script_for_absent as the routing-fact witness.
- ubuntu_install_media_fetch.dag: delete install_media_hash_matches (Bool-collapsing predicate
  dissolution flagged by cursor review on PR #6596); its two wet witnesses now assert on
  observe_install_media_fetch's Sha256VerifyVerdict-derived outcome directly.
- srv3_seeded_install_media_real_execution_witness_test.dag: import srv3_seeded_install_media_artifact
  directly from its defining module instead of transitively through gunbc.srv3_seeded_install_media
  (fixes an undefined-variable diagnostic surfaced by a full --target dag compile).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* WIP: Shell→dag B1 (operator-signed 2026-07-14: in-process typed reconcile): u

* Fix roster-size baseline arithmetic (cursor review, PR #6596)

medium_structure_exception_roster_size_baseline was set to 56 after
removing 3 entries from a 62-entry roster (62-3=59, not 56) - an
arithmetic slip that would have gone red on the ratchet witness.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Fix conflict markers left by auto-committed merge of origin/main

The prior merge commit (19bc6f8) was auto-committed with raw
<<<<<<</=======/>>>>>>> conflict markers still in cli_run.rs instead
of a resolved file. Resolve to main's #6604 wording (functionally
identical fix, now the single copy since #6604 already landed the
diagnostic-printing + non-exhaustive-match fix upstream).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* WIP: Shell→dag B1 (operator-signed 2026-07-14: in-process typed reconcile): u

* Fail-closed TypedReconcileOnHost on non-LocalShell transport (cursor review, PR #6596)

realize_srv3_typed_reconcile ran the in-process fetch/remaster reconcile
regardless of transport, so a caller passing SshShell/EmitArtifactThenThinRun
silently executed locally (an IsFile observation against the executor's own
host) instead of refusing - a fail-open, unlike the sibling ConvergeOnHost
path which already refuses SshShell. Threaded transport through and refuse
fail-closed on anything but LocalShell, matching the operator-signed B1
LocalShell intent.

Added witness_srv3_typed_reconcile_ssh_transport_refuses_typed as a
discriminating red control: confirmed it fails (silent IsFile mock-miss)
against the pre-fix code and passes against the fix.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* WIP: Shell→dag B1 (operator-signed 2026-07-14: in-process typed reconcile): u

* Fix compile break: escape literal braces in remaster refusal-shape doc

The doc string embedded literal InfraFailure{reason} syntax, which the
.dag string interpolator reads as an interpolation of an undefined
variable reason, breaking compile-clean. Escape the braces, and wire
the new doc-content witness into the aggregate scaffolds_dissolved
test so it actually runs.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Fix conflict markers left by auto-committed merge of origin/main

The merge of origin/main (b3b05f0) was auto-committed with 3 of 5
conflict-marker blocks in host_effect_realize.dag still unresolved
(TypedReconcileOnHost vs HostnameOnHost cell arms). Both sides add
independent, non-conflicting match arms/cells; keep both.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Discard unused mirror-fold terminal value (nit, cursor review PR #6596)

Present { value: v } bound v but never used it (acc is returned as-is
once a terminal outcome is reached); use _ per convention.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* WIP: Shell→dag B1 (operator-signed 2026-07-14: in-process typed reconcile): u

* Fix duplicate/mis-nested match arms left by merge conflict resolution in resolve_host_effect_cell

The prior merge-conflict resolution left a duplicated tail of match arms
(Srv3InstallReconcileObserve..SetHostnameCas) sitting outside the closing
brace of the exhaustive `match effect {...}` inside the HostOs/Absent arm,
so they were parsed as extra arms of the outer `match srv3_host_effect_script_for(...)`
(a String? match) instead — producing "variant X not found in type String"
across 13 HostEffect variants and breaking dag_compile_clean_gate_passes in CI.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

---------

Co-authored-by: Brian Searls <briansrls@gunb.ai>
Co-authored-by: Claude Sonnet 5 <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