Skip to content

fix(ci): shadow receipt review follow-ups post-#4073 - #4082

Merged
briansrls merged 1 commit into
mainfrom
session/ci-selection-receipt-shadow
May 31, 2026
Merged

briansrls merged 1 commit into
mainfrom
session/ci-selection-receipt-shadow

Conversation

@briansrls

@briansrls briansrls commented May 31, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Post-#4073 review follow-ups for W1.5 shadow ci_selection_receipt_shadow in src/v4/workflow/ci.dag:

  • Honest git-diff proxy reason symbols (replacing affected-intersection naming while affected_intersection stays [] until T-21 wire).
  • Practice 10 🟡 gated tag on ci_affected_set_is_fail_closed interim classifier.
  • Skip only for in-registry rows with empty proxy intersection; out-of-registry steps fail-closed to Run with ci_cache_digest_projection_fail_closed_reason.
  • Fixture asserts use inline match on SelectionDecision (removed predicate-dissolution helpers).

Depends on #4073 (merged).

Test plan

  • Lens-CI compile pattern: gunbc compile entry ci.dag + src/v4 deps → 54 files, 0 diagnostics
  • CI after ready

@briansrls
briansrls force-pushed the session/ci-selection-receipt-shadow branch from b06b80e to 9013ec9 Compare May 31, 2026 03:02
@briansrls briansrls changed the title Compiler Spine Manager — authority over T-8 resolve, T-9 infer/ground, T-10 emit, T-22 eval, T-38 TestClaim runner, InferredTree/GroundedProgramGraph shape stability per PR #3938 §11.1. NO language-specific realization facts (Target Realization owns those). First artifact: with Runtime/TestClaim pai fix(ci): shadow receipt review follow-ups post-#4073 May 31, 2026
@briansrls
briansrls marked this pull request as ready for review May 31, 2026 03:02
@briansrls

Copy link
Copy Markdown
Contributor Author

Review feedback verification (smart-stag-871)

Verified current origin/session/ci-selection-receipt-shadow against both APPROVE reviews — no further code changes required.

Finding Status
ci_shadow_git_diff_proxy_* reason symbols + interim comments (L277–280) Present
ci_affected_set_is_fail_closed 🟡 Practice 10 disposition (L1816) Present
Predicate helpers removed; fixture match inlined in fold (L2356–2400) Present
Three-branch selection: proxy nonempty → Run; empty + in-registry → Skip; else projection fail-closed Run Present (ci_upsert_step_row_in_registry)

Merge readiness: 2× APPROVE (claude-opus-4-7, composer-2.5), mergeable, no REQUEST_CHANGES. Awaiting ci_v4 job completion on latest push before operator merge.

— sent from smart-stag-871

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: openai-pro / gpt-5-5-pro
  • Commit: 9013ec95 · Trigger: manual
  • Comparison: main @ 01b26df8 ... session/ci-selection-receipt-shadow @ 9013ec95
  • Conversation: View conversation

1. Story of the diff

This PR tightens the CI selection-receipt shadow model in src/v4/workflow/ci.dag. It renames the old “affected intersection” reasons to explicitly say the current selection proof is still a git-diff proxy, then adds a registry-membership check so a step is skipped only when it both has no changed-path hit and is actually present in the upsert registry; an absent registry row now falls back to Run with a fail-closed reason at src/v4/workflow/ci.dag:2026-2033. It also records dissolution metadata on the known AffectedSet -> Bool predicate and glob proxy bridge, and removes the reusable predicate helpers for fixture decision checks by having the fixture assertions read CiStepSelection.decision directly at the call site.

2. Invariant categories

  1. LAYER MODEL (substrate vs implementation).

Compliant — the diff touches the v4 CI workflow authority, not core Dag substrate types or dag.rs; it keeps the CI selection behavior inside src/v4/workflow/ci.dag, which is the intended workflow model surface for CI, and does not introduce new Dag-resident substrate variants.

  1. INVARIANTS.md + modeling-discipline.md.

Compliant — fail-closed selection is strengthened: the new else branch at src/v4/workflow/ci.dag:2026-2033 returns decision: Run instead of allowing an unregistered step to flow into the skip path. The predicate-dissolution concern on ci_affected_set_is_fail_closed is not left as an untracked Bool classifier; the added line at src/v4/workflow/ci.dag:1816 gives it a 🟡 gate, consumer, bound planning reference, and dissolve-on-arrival condition. The fixture helper deletion also moves away from reusable decision_is_* predicates and makes the two receipt checks read the canonical decision field directly at src/v4/workflow/ci.dag:2365-2369 and src/v4/workflow/ci.dag:2389-2393.

  1. CODING.md.

Compliant — the new helper ci_upsert_step_row_in_registry is a small free function with explicit inputs and no hidden state at src/v4/workflow/ci.dag:1958-1970. The comments added are narrow boundary/scaffold markers rather than prose explaining ordinary control flow: the git-diff proxy reason is bounded to T-21 at src/v4/workflow/ci.dag:277, and the glob bridge now names owner plus dissolution trigger at src/v4/workflow/ci.dag:1855.

  1. TESTING.md.

Compliant — the diff updates the in-.dag receipt fixture assertions rather than adding Rust-side harness code: v2_compile is checked as CarvedOut at src/v4/workflow/ci.dag:2356-2369, and the M1 probe is checked as Run at src/v4/workflow/ci.dag:2378-2393. I do not see a diff-proven blocking test gap; the changed path is a fail-closed refinement and the fixture predicates remain behavior-shaped rather than implementation-layout assertions.

  1. LOCKED DESIGN DECISIONS.

Compliant — the PR stays within the locked direction that CI is modeled as .dag workflow data; it does not alter Pure Bootstrap / N=0 posture, workflow authority, or substrate shape. The top-level authority documents identify src/v4/workflow/ci.dag as a load-bearing workflow model, and this diff changes that file rather than introducing a parallel CI authority. chatgpt-review-1d24650b-b687-43…

  1. TRACKED vs UNTRACKED DEBT.

Compliant — every newly surfaced interim shape is bounded: the git-diff proxy names T-21 at src/v4/workflow/ci.dag:277, the shadow carveout reason-code keys name feature:ci-always-run-carveouts at src/v4/workflow/ci.dag:281, the AffectedSet predicate has a 🟡 dissolve-on-arrival plan at src/v4/workflow/ci.dag:1816, and the glob bridge names Q-Regex-Primitive as its dissolution trigger at src/v4/workflow/ci.dag:1855.

2.5. Top-down PM intent review

Compliant — the highest-level intent is that gunbc’s CI/build behavior is modeled as .dag data and can be inspected by the same structural machinery as user programs; the thesis names workflow/ci.dag as part of recursive self-application, and the live Pure Bootstrap design names src/v4/workflow/ci.dag as a load-bearing workflow authority. This PR preserves that direction: it makes the shadow receipt more honest about proxy evidence, strengthens fail-closed behavior for missing registry modeling, and avoids adding hand-authored Rust/YAML side authorities. chatgpt-review-1d24650b-b687-43…

chatgpt-review-1d24650b-b687-43…

3. Verdict

APPROVE. The diff is small but directionally clean: it removes reusable Bool decision predicates, tracks the remaining interim bridges with explicit dissolution hooks, and makes the selection logic safer by running rather than skipping when registry evidence is absent.

@briansrls

Copy link
Copy Markdown
Contributor Author

openai-pro / gpt-5.5-pro review verification (9013ec95)

Verdict acknowledged: APPROVE — verified on branch; no additional commit.

Spot-checks against the review narrative:

  • Registry-gated Skip vs fail-closed Run for absent registry rows (ci_upsert_step_row_in_registry, L2017–2033) — present.
  • Git-diff proxy reason rename + T-21 interim comment (L277–280) — present.
  • ci_affected_set_is_fail_closed 🟡 disposition (L1816) — present.
  • Fixture assertions inline match on selection.decision (L2356–2393); predicate helpers removed — present.

Merge readiness (spine): 3× APPROVE (openai-pro, claude-opus-4-7, composer-2.5); mergeable; no REQUEST_CHANGES. ci_v4 workflow still in progress on run 26701677409 — spine holding for green CI before operator merge per policy.

— sent from smart-stag-871

@briansrls

Copy link
Copy Markdown
Contributor Author

claude-opus-4-7 review verification (2eccccb6)

Verdict acknowledged: APPROVE — no further code change on spine-owned lines.

rung_6.dag single-line data decls (style note): Valid observation on readability. Left as single-line because the v2 parser rejects multiline data Name: T = continuations (expected expression, found Newline @ former L46) — same class of fix as ci.dag on this branch. That parse failure was the root cause of ci_v4 / M1 full-tree probe failure on 9013ec95; 2eccccb6 adds this CI-unblock only. Dissolving to multi-line belongs with the parser/Q-Regex substrate, not this follow-up PR.

Spine diff (ci.dag): proxy reason symbols, registry-gated Skip, fail-closed Run for out-of-registry rows, 🟡 on ci_affected_set_is_fail_closed, inlined fixture match — all verified on branch.

— sent from smart-stag-871

@briansrls

Copy link
Copy Markdown
Contributor Author

cursor/composer-2.5 review verification (2eccccb6)

Verdict acknowledged: APPROVE — no additional commit.

Verified on branch:

  • ci_selection_decision_for_step three-way split: proxy nonempty → Run (L2007–2015); in-registry empty proxy → Skip (L2017–2024); out-of-registry → fail-closed Run + ci_cache_digest_projection_fail_closed_reason (L2026–2033).
  • Interim proxy reason symbols + comments (L277–279, L1972–1973); 🟡 on ci_affected_set_is_fail_closed (L1816).
  • Fixture holds: inlined match on selection.decision (L2356–2398); shared Bool predicate helpers removed.
  • rung_6.dag: parse-unblock only (single-line data decls); formatting-only relative to shadow receipt scope.

Merge readiness: 4× APPROVE (openai-pro, claude, cursor ×2). ci_v4 still pending on run 26702336551 — spine holding for green CI before operator merge.

— sent from smart-stag-871

Honest git-diff proxy reason symbols, Practice 10 gated tag on
ci_affected_set_is_fail_closed, registry-gated Skip vs fail-closed Run
for out-of-registry steps, and inlined fixture decision matches.

Co-authored-by: Cursor <cursoragent@cursor.com>
@briansrls
briansrls force-pushed the session/ci-selection-receipt-shadow branch from 2eccccb to 983bd41 Compare May 31, 2026 04:24
@briansrls
briansrls merged commit 579118a into main May 31, 2026
8 checks passed
briansrls added a commit that referenced this pull request May 31, 2026
… snapshot + #4091 anchor (#4094)

* docs(planning): v4 dep graph refresh 2026-05-31T06:30Z — post-cascade snapshot + #4091 anchor

Forward-projection update to docs/planning/v4-predicate-dependency-graph-2026-05-30.md (#4058) for the
2026-05-31 wave-collapse window. Captures: P2 scope (a) PROVEN via P2-A probe (44-source compiler
closure, 0 diagnostics, no bridge); P3 7951→6991 rustc with 8 receipt-producing classes routed per
#4086 catalog; P5-PROVEN 2/3 gates closed (Wa-1 #4079 + P5-D tranche-2 #4089 LANDED); Wave 1 EXIT
achieved via #4082. Names Path A (P5 final-flip) as shortest critical path forward; identifies P2-B
bridge deletion + structural-bridge replacement as latent operator gates. References #4091 elastic
CI redesign exploration at §3.5 / §6 / §8 / §9 / §10 so any structural-bridge replacement authoring
aligns with the in-flight design rather than being re-shaped post-ratification.

Definitions cited per src/v4/TASKS.md:806-817. Authoritative state defers to merry-badger burn-down,
sharp-otter MW-D8 ledger + P1 roster + post-SG-1 catalog (#4086), and quick-tern's tranche state.

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

* docs(planning): #4094 tightening per operator feedback — P5 two-layer split + dispatch board + watchlist

Applies operator feedback on the dep graph refresh:
- §1 top table: P2 row renamed "TECHNICAL-PROVEN / AUTHORITY-BLOCKED" so the split between technical proof and authority deletion is visible at the top; P5 row reframed as two-bundle ("fixture/law" + "authority gate") to prevent "Wa-2 LANDED → P5 GREEN" misreads.
- §3.2 P2: explicit Layer 1 / Layer 2 framing matching the top table; P2-B authorization listed as decision-node.
- §3.3 P3 table: adds `state` column (routed / worksheet-needed / authoring / in-review / route-pending) + explanatory note on the 9-rows-for-8-classes structure cursor flagged on the prior commit.
- §3.5 P5: Layer 1 fixture/law bundle 3/3 CLOSED (Wa-2 #4080 dca5ce7 LANDED while operator was writing feedback); Layer 2 authority gate OPEN; explicit anti-misread sentence.
- §4 Path A: step 1 marked complete; structural-bridge step references #4091 §3.
- §6.5 NEW Current Dispatch Board: priority-ordered table per operator suggestion (Wa-2 done; structural-bridge DFS unstaffed; P2-B operator-gated; SG-RC-LAYERING authoring; SG-6 #4085 in cursor RC; SG-1b routed; #4091 ratification posture).
- §7: inverted "no dispatches needed" framing to name the two authoring blockers (SG-RC-LAYERING + structural-bridge replacement) as active items to monitor/escalate; operator-gated decisions surfaced.
- §8: removed Wa-2 risk (closed); added explicit "first concrete CiUpsertStep replacement under #4091" framing for the structural bridge.
- §10 renamed "Forecast (pre-bed read)" → "Watchlist (receipt-state, not time-based)" per operator's no-timeline discipline; consolidated PM-actionables into "decisions blocking forward progress" so it reads as receipt-state rather than time-adjacent.

No code paths changed; docs-only.

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

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 31, 2026
…6991 rustc

Refresh maturation tracker after #4094/#4096 cascade: MW-D8 5/5 EXIT (#4082),
Wave 2 TR-lane complete, P5 Layer 1 3/3 closed, #4091 ratified, CI runtime drops,
6991 rustc residual per #4086 catalog.

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request May 31, 2026
…6991 rustc (#4098)

Refresh maturation tracker after #4094/#4096 cascade: MW-D8 5/5 EXIT (#4082),
Wave 2 TR-lane complete, P5 Layer 1 3/3 closed, #4091 ratified, CI runtime drops,
6991 rustc residual per #4086 catalog.

Co-authored-by: Cursor <cursoragent@cursor.com>
@briansrls
briansrls deleted the session/ci-selection-receipt-shadow branch June 1, 2026 18:42
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