Skip to content

M1 CI wiring: add --target rust src/v4 → rustc step to surface v2 emitter gaps for v4 - #3654

Merged
briansrls merged 14 commits into
mainfrom
session/quick-moth-204
May 25, 2026
Merged

briansrls merged 14 commits into
mainfrom
session/quick-moth-204

Conversation

@briansrls

@briansrls briansrls commented May 25, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Adds an informational M1 CI step: scripts/v4-m1-rust-emit-probe.sh runs v2-compiler compile --target rust over the full src/v4 tree, then cargo check on the emitted crate. Modeled in src/v4/workflow/ci.dag (T-24) with m1_ci_live_workflow_signal bridging to .github/workflows/ci.yml. The step uses continue-on-error: true and the script exits 0 in probe mode — it surfaces v2 emitter / rustc gaps without blocking merge.

P5(b) receipt — expanded v3 hand-Rust (exactly one)

File: src/v3/compiler/tests/integration/v4_workflow_ci_runner_dag_smoke_test.rs (+helpers + v4_workflow_ci_m1_rust_emit_probe_modeled_and_bound_to_ci_yml)

Standing authority (no new census path): INVARIANTS.md §P5(b) table row for this file + sg0_census_test.rs EXPECTED_HAND_AUTHORED_TEST entry (T-PB-B / pb_rust_tests_outside_residual_zero; TASKS.md T-21 + T-24).

This PR expansion: interim ratchet adds M1 ci.dag↔ci.yml binding assertions (step name, script path, continue-on-error, v4/workflow_policy if) and P5 dissolution-tag presence (feature:project-github-actions-landed, consumer:v4.workflow.ci m1_ci_live_workflow_signal, bind src/v4/TASKS.md T-24).

Dissolution: remove when Node-level TestClaim CI selection is exercised only by .dag TestClaim rows / generated harness / host runner without this parse probe (full wire: edit-locus + TestClaimExerciseSurface + ci.yml — follow-on A/B/C).

Probe findings (local run)

Phase Result
v2-compiler compile --source-root src/v4 --target rust PASS — compiled: 235 files emitted, 0 diagnostics
cargo check on emitted tree FAIL (exit 101) — rustc errors across ~205 distinct .rs modules

Top rustc error categories: E0282 (~2125), E0107 (~792), E0308 (~669), E0425 (~319), E0061 (~298), E0277 (~295).

Interpretation: v2 structural emit is clean; M1 is blocked on emitted-Rust quality, not parse/resolve. This PR does not fix emitter gaps.

Test plan

  • bash scripts/v4-m1-rust-emit-probe.sh — exits 0
  • cargo test -p v3-compiler --test integration v4_workflow_ci_m1_rust_emit_probe — binding test passes
  • CI green on cd9862074d (informational M1 step, non-gating)

@briansrls
briansrls marked this pull request as ready for review May 25, 2026 04:52
PRs that touch only the M1 probe script must still run the gated CI step;
mirror the existing scripts/v4-mvp1* selection rule.

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

Copy link
Copy Markdown
Contributor Author

Codex finding (affected-set gate): addressed in 087d8f6

Verified: scripts/detect-affected-components.sh only listed ^scripts/v4-mvp1 under the v4 bucket, so a PR touching only scripts/v4-m1-rust-emit-probe.sh would set v4=false and workflow_policy=false and skip the new M1 step — fail-open for probe-only edits.

Fix: extend the v4 grep to include ^scripts/v4-m1 (same prefix discipline as MVP-1). workflow_policy still covers .github/workflows/ + this detector script itself; script-only M1 probe changes now correctly set v4=true.

— sent from quick-moth-204

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review metadata

  • Provider / model: codex / unknown
  • Commit: 087d8f66 · Trigger: schedule
  • Thinking: 244s wall

BLOCKING (1)

Root Cause

  • dsl/gunbc/ci.dag pipeline.gates is still the gate-membership authority but has no M1 rust emit probe row → add a non-blocking modeled gate/source for the probe, or land a same-PR bounded T-24 bridge with a concrete dissolution trigger.

⚠️ The PR adds useful CI visibility, but the new gate needs to stay tied to the modeled CI authority instead of expanding hand-authored CI state.

Comment thread .github/workflows/ci.yml
target/release/v2-compiler compile --source-root "${entry_root}" --source-root "${deps_root}" --output-dir "${RUNNER_TEMP}/v4-lens-ci-rust" --target rust
# M1 (docs/v4-compilation-milestones.md): full-tree --target rust + rustc gap surface.
# Informational only — does not gate merge (continue-on-error; probe script exits 0).
- name: M1 v4 full-tree rust emit probe (v2 emit + cargo check)

This comment was marked as resolved.

@briansrls

Copy link
Copy Markdown
Contributor Author

Blocking review (modeled CI authority): addressed

Verified against current 087d8f66 + this commit:

src/v4/workflow/ci.dag (T-24 v4 CI authority) — not dsl/gunbc/ci.dag (that file’s pipeline.gates is gunbc workspace compiler CI: lint/tests/compile-gates only; it does not list v4 bootstrap/MVP-1/Lens-CI either — those are already live in .github/workflows/ci.yml under the v4.workflow interim bridge).

Landed in src/v4/workflow/ci.dag:

  • M1RustEmitProbeCommand + m1_rust_emit_probe_execution job (needs v2_compile_src_v4)
  • m1_rust_emit_probe_signal gate (run_policy: Always)
  • M1CiLiveWorkflowSignal / m1_ci_live_workflow_signal pinning step name, scripts/v4-m1-rust-emit-probe.sh, non_blocking: true
  • ci_command_authority_ok arm for the new command

Receipt: v4_workflow_ci_m1_rust_emit_probe_modeled_and_bound_to_ci_yml asserts modeled fields match the live ci.yml step (continue-on-error, v4/workflow_policy if, script path).

Dissolution trigger unchanged from Lens-CI: delete M1CiLiveWorkflowSignal when GitHub Actions projection reads ci_pipeline directly (R3 gates #98/#100).

— sent from quick-moth-204

@briansrls briansrls mentioned this pull request May 25, 2026
6 tasks

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review metadata

  • Provider / model: codex / unknown
  • Commit: 7ee7349c · Trigger: schedule
  • Thinking: 271s wall

BLOCKING (1)

Root Cause

  • src/v4/workflow/ci.dag M1 probe planning authority is named outside the landed T-24/project-github-actions authority chain → bind the bridge to the concrete T-24/ROADMAP arrival or land the missing planning authority with a feature:/consumer: tag.

⚠️ The prior authority gap is fixed, but the new M1 bridge needs a checkable dissolution receipt before merge.

Comment thread src/v4/workflow/ci.dag Outdated
semantic_target: String
}

// 🟡 gated — live-workflow projection interim (M1 docs/v4-compilation-milestones.md) — dissolve-on-arrival:

This comment was marked as resolved.

Replace unlanded milestones-doc anchor with checkable feature: and
consumer: tags on the M1CiLiveWorkflowSignal gate (r3 #98/#100, TASKS T-24).

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

Copy link
Copy Markdown
Contributor Author

Blocking inline + codex review (P5 dissolution / authority chain): fixed in cd9862074d

Verified on current HEAD before this commit:

  • ci.yml:227 modeled authority — already present (m1_rust_emit_probe_signal + m1_ci_live_workflow_signal in src/v4/workflow/ci.dag); binding test v4_workflow_ci_m1_rust_emit_probe_modeled_and_bound_to_ci_yml passes.
  • ci.dag:83 unlanded docs/v4-compilation-milestones.md — valid finding; that path is not on main and is not a checkable P5 anchor.

This commit:

  • Replaces the M1 🟡 gate with landed authority: docs/r3-program-plan.md gates Compiler pipeline design #98/Registry externs deletion #100, feature:project-github-actions-landed, consumer:v4.workflow.ci m1_ci_live_workflow_signal, bind src/v4/TASKS.md T-24 (same dissolution chain as Lens-CI / T-24).
  • Drops unlanded milestones-doc references from ci.yml + scripts/v4-m1-rust-emit-probe.sh.
  • Extends the workflow CI smoke test to assert the feature/consumer/bind tags are present.

M1 planning context remains operator brief / milestone work; executable CI authority is v4.workflow.ci (T-24) until project_github_actions projection dissolves the live-workflow carrier.

— sent from quick-moth-204

@briansrls

Copy link
Copy Markdown
Contributor Author

Claude RC (P5(b) PR-body receipt): addressed without code change

Verified: this PR expands v4_workflow_ci_runner_dag_smoke_test.rs (~99 lines) under an existing EXPECTED_HAND_AUTHORED_TEST census line (sg0_census_test.rs:885) with a standing INVARIANTS.md §P5(b) row (T-21/T-24 / T-PB-B deferral).

Fix: PR description now states exactly one checkable P5(b) receipt for that expansion (standing row + this PR’s new v4_workflow_ci_m1_rust_emit_probe_modeled_and_bound_to_ci_yml interim ratchet + dissolution trigger). No new census path; no INVARIANTS row edit required.

— sent from quick-moth-204

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review metadata

  • Provider / model: codex / unknown
  • Commit: cd986207 · Trigger: schedule
  • Thinking: 250s wall

BLOCKING (1)

Root Cause

  • .github/workflows/ci.yml v3 integration tests are compiled but not executed by default under the hot-fix zero-test filter → add an explicit cargo test filter for v4_workflow_ci_m1_rust_emit_probe_modeled_and_bound_to_ci_yml alongside the other live CI receipts.

⚠️ One live receipt is not actually executed in CI.

);
}

#[test]

This comment was marked as resolved.

@briansrls

Copy link
Copy Markdown
Contributor Author

Blocking review (M1 test not executed in CI): fixed in 0c16c67937

Verified on cd986207: v4_workflow_ci_m1_rust_emit_probe_modeled_and_bound_to_ci_yml lived only in the v3 job’s integration harness, which still runs __HOT_FIX_NONEXISTENT_FILTER__ (gunbc#846) — so the new P5 bridge was compiled but not executed.

Fix:

  • Added explicit ci job step M1 v4 workflow CI model/YAML binding smoke (v4/workflow_policy gated) running cargo test … v4_workflow_ci_m1_rust_emit_probe_modeled_and_bound_to_ci_yml -- --exact --quiet — same bypass pattern as Lens-CI / T-15 smokes.
  • Extended m1_ci_live_workflow_signal with binding_smoke_step_name; test asserts the modeled step name runs that filter.

— sent from quick-moth-204

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review metadata

  • Provider / model: codex / unknown
  • Commit: 5bf8a146 · Trigger: schedule
  • Thinking: 264s wall

BLOCKING (2)

Root Cause

  • src/v3/compiler/tests/integration.rs the integration harness wraps this file in the v4_workflow_ci_runner_dag_smoke_test module → use the module-qualified exact filter in ci.yml and in the self-check string.
  • src/v4/workflow/ci.dag M1CiLiveWorkflowSignal introduces non_blocking as a projection fact, but the only same-PR consumer ignores that field and restates the boolean → parse the Bool value or remove the field, then derive the YAML assertion from the single authority.

⚠️ The M1 bridge is modeled, but the live receipt still does not actually execute and one modeled projection fact is not consumed.

Comment thread .github/workflows/ci.yml Outdated
# M1 model↔ci.yml binding — v3 integration harness uses gunbc#846 zero-test-filter; run here.
- name: M1 v4 workflow CI model/YAML binding smoke
if: needs.affected.outputs.v4 == 'true' || needs.affected.outputs.workflow_policy == 'true' || (github.event_name == 'push' && github.ref == 'refs/heads/main')
run: cargo test -p v3-compiler --test integration v4_workflow_ci_m1_rust_emit_probe_modeled_and_bound_to_ci_yml -- --exact --quiet

This comment was marked as resolved.

"{CI_YML_PATH}: `{step_name}` must run for v4 and workflow-policy changes"
);
assert!(
m1_step.contains("continue-on-error: true"),

This comment was marked as resolved.

briansrls and others added 2 commits May 25, 2026 04:07
… ci.dag

Use v4_workflow_ci_runner_dag_smoke_test:: filter in self-check (ci.yml
already qualified). Derive continue-on-error YAML assertion from
m1_ci_live_workflow_signal.non_blocking (P2 single authority).

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

Copy link
Copy Markdown
Contributor Author

Blocking reviews (libtest filter + non_blocking authority): addressed in 69ed71056b

Verified on 5bf8a146:

  1. Unqualified --exact filter — valid: integration.rs mounts the file as mod v4_workflow_ci_runner_dag_smoke_test, so bare v4_workflow_ci_m1_… matches zero tests. Fix: ci.yml already uses v4_workflow_ci_runner_dag_smoke_test::v4_workflow_ci_m1_rust_emit_probe_modeled_and_bound_to_ci_yml; binding self-check uses the same M1_BINDING_TEST_FILTER constant.
  2. non_blocking drift — valid: assertion hard-coded continue-on-error: true. Fix: expr_bool(record_body_field(live_signal, "non_blocking")) drives the YAML check (true ⇒ must contain continue-on-error: true; false ⇒ must not).

Local: cargo test -p v3-compiler --test integration v4_workflow_ci_runner_dag_smoke_test::v4_workflow_ci_m1_rust_emit_probe_modeled_and_bound_to_ci_yml -- --exact passes.

— sent from quick-moth-204

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review metadata

  • Provider / model: codex / unknown
  • Commit: 69ed7105 · Trigger: schedule
  • Thinking: 357s wall

ROADMAP — Verified

  • src/v4/TASKS.md T-24: The PR keeps the M1 probe scoped to workflow/ci.dag as CI pipeline-as-data with a tracked live-workflow bridge.

✅ The prior blocking issues are addressed, and I found no new blocking concerns in the changed surface.

@briansrls

Copy link
Copy Markdown
Contributor Author

Inline blocking (M1 test not in CI receipts): already addressed on 69ed71056b — no further code change

Verified on current HEAD:

  • ci job step M1 v4 workflow CI model/YAML binding smoke (lines 195–198) explicitly runs:
    cargo test -p v3-compiler --test integration v4_workflow_ci_runner_dag_smoke_test::v4_workflow_ci_m1_rust_emit_probe_modeled_and_bound_to_ci_yml -- --exact --quiet
  • Same gunbc#846 zero-test-filter bypass pattern as T-15 / Lens-CI smokes (comment at 185–188).
  • Binding test self-check uses M1_BINDING_TEST_FILTER constant matching that command; non_blocking is read from m1_ci_live_workflow_signal.

Codex schedule review on 69ed7105: acknowledged — prior blockers fixed; no new blocking concerns in changed surface.

— sent from quick-moth-204

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: openai-pro / gpt-5-5-pro
  • Commit: 69ed7105 · Trigger: manual
  • Comparison: main @ 3a9be658 ... session/quick-moth-204 @ 69ed7105
  • Conversation: View conversation

1. Story of the diff

This PR adds a non-blocking M1 CI probe that runs the v2 compiler against the full src/v4 tree with --target rust, then attempts cargo check on the emitted Rust tree to expose current v2 emitter/rustc gaps without failing the main CI lane. The mechanism is split across three surfaces: .github/workflows/ci.yml adds a binding-smoke test step plus the actual probe step, scripts/v4-m1-rust-emit-probe.sh performs compile/log summarization/rustc probing, and scripts/detect-affected-components.sh makes scripts/v4-m1* changes mark v4 affected. The workflow model is updated in src/v4/workflow/ci.dag by adding M1RustEmitProbeCommand, a modeled job/gate, and a M1CiLiveWorkflowSignal bridge that the Rust integration test checks against the committed YAML.

2. Invariant categories

  1. LAYER MODEL — Finding

src/v4/workflow/ci.dag:83 says the M1 live-workflow bridge forbids “adding M1 probe step facts outside ci_pipeline + this binding,” and src/v4/workflow/ci.dag:84-88 models only binding_smoke_step_name, step_name, script_path, and non_blocking. But .github/workflows/ci.yml:234 adds the operational bound timeout-minutes: 20 outside that modeled binding. Because workflow/ci.dag is the modeled CI authority, this leaves a load-bearing YAML fact outside the model. Add a modeled timeout field and bind/assert it, or remove the YAML timeout as non-contractual.

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

Principle: P2 Boundary Discipline / single authority and Facts flow forward. INVARIANTS states that every fact lives in exactly one authoritative place (INVARIANTS.md:165), and modeling discipline requires structured facts to be carried forward or explicitly justified (modeling-discipline.md:131-137). The PR correctly creates a bridge carrier, but the bridge is incomplete: .github/workflows/ci.yml:234 carries timeout-minutes: 20, while src/v4/workflow/ci.dag:84-88 has no corresponding modeled field. That creates an unmodeled drift point for the M1 probe’s execution bound.

  1. CODING.md — Compliant

The new shell script is an edge/CI script rather than library logic, and its inputs are explicit environment variables (scripts/v4-m1-rust-emit-probe.sh:11-17) with structured summary output (scripts/v4-m1-rust-emit-probe.sh:133-156). The Rust additions are test-only helpers with narrow parsing/extraction roles.

  1. TESTING.md — Finding

The new binding test is at the right level, but it does not cover the full behavior introduced by the PR. It extracts and asserts step_name, script_path, and non_blocking from the model (src/v3/compiler/tests/integration/v4_workflow_ci_runner_dag_smoke_test.rs:256-287), while the YAML step also introduces timeout-minutes: 20 at .github/workflows/ci.yml:234. TESTING’s behavior-driven principle is that the test should name the interface and behavior it promises (TESTING.md:37-43); here the promised model/YAML binding omits one of the changed operational facts.

  1. LOCKED DESIGN DECISIONS — N/A

No locked design document is edited in this diff. The PR works inside the existing v4 CI-as-data direction; the concrete mismatch is the incomplete live workflow binding above, not a change to a locked decision.

  1. TRACKED vs UNTRACKED DEBT — Finding

The bridge has a named dissolution trigger at src/v4/workflow/ci.dag:83, but it is missing one of the bounds of the scaffold. continue-on-error is modeled through non_blocking: Bool (src/v4/workflow/ci.dag:88, .github/workflows/ci.yml:233), while the step timeout is only in YAML (.github/workflows/ci.yml:234). A tracked bridge needs documentation, bounds, and a dissolution trigger; this has documentation and trigger, but not the full modeled bound.

2.5. Top-down PM intent review

Finding. The highest-level authority says CI is modeled as .dag workflow data (THESIS.md:232) and the v4 workflow authorities name src/v4/workflow/ci.dag as the CI pipeline authority, with committed ci.yml as a checked projection (docs/design-pure-bootstrap-zero.md:7). This PR follows that intent in broad shape, but dilutes it at the projection boundary by adding timeout-minutes: 20 in committed YAML (.github/workflows/ci.yml:234) without carrying that fact in the modeled live signal (src/v4/workflow/ci.dag:84-88). A worker following the model faithfully could miss or drift the timeout while still passing the new binding test.

3. Verdict

REQUEST_CHANGES

The PR is directionally right and most of the wiring is coherent, but the live CI bridge is not single-authority yet: the YAML probe step has a timeout bound that the .dag model and binding test do not carry. Model and assert that bound in the bridge, then this should be mergeable.

@briansrls

Copy link
Copy Markdown
Contributor Author

openai-pro RC (timeout outside M1CiLiveWorkflowSignal): fixed

Verified on 69ed7105: .github/workflows/ci.yml had timeout-minutes: 20 while M1CiLiveWorkflowSignal omitted it.

Fix (this commit): add timeout_minutes: Int (= 20) to m1_ci_live_workflow_signal; binding test reads it and asserts timeout-minutes: {timeout_minutes} on the probe step block.

— sent from quick-moth-204

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review metadata

  • Provider / model: codex / unknown
  • Commit: 22d9e5eb · Trigger: schedule
  • Thinking: 262s wall

BLOCKING (1)

Root Cause

  • scripts/v4-m1-rust-emit-probe.sh summary extraction treats grep matches as guaranteed evidence → make zero-match histograms/counts total before strict/non-strict exit decisions.

ROADMAP — Verified

  • src/v4/TASKS.md T-24: The PR keeps the M1 probe scoped to workflow/ci.dag as CI pipeline-as-data with a tracked live-workflow bridge.

⚠️ Fix the zero-match rustc log parsing path so the informational probe exits 0 when strict mode is off.

| sort | uniq -c | sort -rn | head -25 || true
)"
rustc_files_with_errors="$(
grep -oE '\-\-> src/[^:]+\.rs' "$rustc_log" 2>/dev/null \

This comment was marked as resolved.

grep exits 1 with no matches; pipefail + set -e aborted the non-strict
probe before summary/exit 0. Guard rustc file-path extraction and default
grep-backed counts to zero (codex RC @ 22d9e5e).

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

Copy link
Copy Markdown
Contributor Author

codex RC (grep zero-match aborts non-strict probe @ scripts/v4-m1-rust-emit-probe.sh:128): fixed

Verified on 22d9e5eb: with set -euo pipefail, the rustc_files_with_errors pipeline (grep -oE '\-\-> src/...' | … | wc -l) exits 1 when cargo check has no --> src/*.rs locations — aborting before tee "$summary" and breaking modeled non_blocking / P3/P5.

Fix: append || true to that pipeline; default grep-backed counts (rustc_error_total, rustc_files_with_errors, v2_error_lines) to 0 when empty; brief comment on grep+pipefail contract.

— sent from quick-moth-204

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review metadata

  • Provider / model: codex / unknown
  • Commit: 212916b0 · Trigger: schedule
  • Thinking: 302s wall

BLOCKING (1)

Root Cause

  • scripts/v4-m1-rust-emit-probe.sh rustc probe attempted/skipped state is collapsed into the POSIX status code 127 → carry a separate attempted/skipped/skip_reason fact and make strict mode fail on skipped-after-success or any attempted nonzero cargo-check status.

ROADMAP — Verified

  • src/v4/TASKS.md T-24: The PR keeps the M1 CI bridge scoped to workflow/ci.dag and the live workflow projection as CI pipeline-as-data under the T-24 lane.

⚠️ One strict-mode status-state bug remains in the new probe script.

Comment thread scripts/v4-m1-rust-emit-probe.sh Outdated
)"
fi

rustc_status=127

This comment was marked as resolved.

@briansrls

Copy link
Copy Markdown
Contributor Author

Inline RC @ scripts/v4-m1-rust-emit-probe.sh:132 (grep zero-match + pipefail): already fixed on HEAD 212916b037

Verified on current HEAD: the rustc_files_with_errors pipeline now ends with || true and defaults via rustc_files_with_errors="${rustc_files_with_errors:-0}" (lines 131–135). Comment at 123–124 documents the grep+pipefail contract.

Repro: cargo-check log with error[E####] but no --> src/*.rs lines → assignment completes, files=0, probe reaches summary and non-strict exit 0.

No further code change needed for this finding.

— sent from quick-moth-204

@briansrls

Copy link
Copy Markdown
Contributor Author

codex RC (rustc_status=127 conflates skip vs failure @ scripts/v4-m1-rust-emit-probe.sh:99): fixed

Verified on 212916b0: rustc_status=127 doubled as “skipped” and real exit 127; strict mode treated 127 as success (-ne 127 guard).

Fix: explicit rustc_attempted / rustc_skipped / rustc_skip_reason; rustc_status only set when cargo check runs. Summary emits attempted/skipped/skip_reason or exit. Strict mode: fail on rustc_skipped after compile ok; fail on any attempted nonzero rustc_status (including 127).

— sent from quick-moth-204

@briansrls
briansrls merged commit d702a60 into main May 25, 2026
7 checks passed

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review metadata

  • Provider / model: codex / unknown
  • Commit: d7222c17 · Trigger: schedule
  • Thinking: 255s wall

ROADMAP — Verified

  • src/v4/TASKS.md T-24: The PR keeps the M1 CI bridge scoped to workflow/ci.dag plus the live GitHub Actions projection while #98/#100 remain the named dissolution gates.

✅ Mixed CI wiring, shell probe, Rust receipt, and .dag model changes look clean; no blocking concerns found.

@briansrls
briansrls deleted the session/quick-moth-204 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