Skip to content

docs(planning): rung-3 acceptance predicate spec — phase1/nat_semiring (dag W1 / W1b staged) - #4003

Merged
briansrls merged 4 commits into
mainfrom
session/zesty-bat-510-rung3
May 30, 2026
Merged

briansrls merged 4 commits into
mainfrom
session/zesty-bat-510-rung3

Conversation

@briansrls

@briansrls briansrls commented May 30, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Staging — W1 vs W1b honesty

The landed W1 substrate proves wave-1 lex/grammar/C5-trivia authorities are present and re-derivable from dag.dag (dag_round_trip_wave1_authorities_ready). It does not yet prove emit→ingest bit-identical fidelity on the fixture — that's W1b/T-36, called out verbatim in the landed claim label and in dag_ingest_round_trip.dag:3.

Spec accordingly stages two predicates:

  • R3-dag-roundtrip-wave1-ready (W1, landed) — run_test_claim_round_trip_verdict returns Pass.
  • R3-dag-roundtrip-fidelity (W1b, T-36 unlanded) — explicit SKIP cell with upstream_blocked:w1b_emit_ingest_comparator_unlanded.

Row aggregate stays FAIL until W1b lands. That's the honest reading of the THESIS rung-3 standard ("round-trip preserved"), not a regression.

Aux-fixture handling

The committed claim_dag_ingest_round_trip binds to dag_round_trip_mvp1, not the ladder fixture. Spec renders that as a parallel diagnostic row phase1-aux/dag_round_trip_mvp1, with the ladder fixture rung-3 row showing dag=SKIP upstream_blocked:claim_nat_semiring_module_roundtrip_not_authored until the migration (joint spec §5 module-loader landing) closes the wedge.

§5 spot-checks (vs origin/main @ 0ace5f8b7)

Confirmed: 05_eval.dag W1 verdict path (:1723-1742) + runtime variant (:1745-1768), dag.dag wave-1 authorities readiness gate (:3168+), C5 trivia DeclaredNormalized (:3160-3166), claim W1/W1b split (dag_ingest_round_trip.dag:3,80), no RoundTripClaim row on nat_semiring (wedge confirmed).

Out of scope (named in §1, §7)

Coordination

Test plan

  • §5 spot-checks re-verified by reviewer against origin/main (re-pin if main advances past 0ace5f8b7).
  • Compiler Spine ack on W1/W1b staging vs landed substrate intent.
  • No edits to load-bearing files — pure docs/planning addition.
  • Headline policy (§4) matches companion specs verbatim where applicable.

🤖 Generated with Claude Code

…g (dag W1 / W1b staged)

Ladder/Fixture Manager third artifact. Cites #3960 (RoundTripClaim eval
path landed on main) per joint runner spec §3 row "rung 3" + §4.4
rung-split. Mirrors PR #3990 (rung 4) shape; additive to companion specs.

R3 binding:
- single .dag cell on rung 3 row (no rust/python/go — that's rung 5)
- staged predicates: R3-dag-roundtrip-wave1-ready (W1, landed substrate)
  + R3-dag-roundtrip-fidelity (W1b, T-36 unlanded — explicit SKIP cell)
- sole Pass constructor: run_test_claim_round_trip_verdict (P2 single-
  authority per 05_eval.dag:1723-1742); eval re-derives lex/grammar/C5
  from dag.dag, never trusts embedded ready atoms in claim input
- row aggregate stays FAIL until W1b lands — honest staging against the
  THESIS rung-3 standard ("round-trip preserved"), not a regression
- aux fixture phase1-aux/dag_round_trip_mvp1 rendered in parallel as
  diagnostic (the only currently executable RoundTripClaim row binds
  there, not to the ladder fixture; migration gated on module-loader
  per joint spec §5)

Out of scope (named in §1, §7):
- leaf-model verification (PR #3972) — orthogonal lane, NOT rung 3
- R3 for emitted rust/python/go (rung 5 cross-target territory)
- rung-4 predicate (companion spec)

§5 spot-checks against origin/main @ 0ace5f8 confirm landed substrate:
05_eval.dag W1 verdict + runtime variant, dag.dag wave-1 authorities
readiness gate (lex + grammar + C5 trivia), claim file W1/W1b split,
aux fixture committed, no RoundTripClaim row on nat_semiring yet (wedge
per §2.3 — gated on module-loader).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@briansrls briansrls changed the title Ladder/Fixture Manager — authority over 9-rung correctness ladder, fixture set, rung gate shape (acceptance predicates per rung), 'no rustc-clean as headline' enforcement per PR #3938 §11.1. First artifact: nat_semiring × rungs 0-2 acceptance predicate spec; ratify nat_semiring as Phase 1 fixture; d docs(planning): rung-3 acceptance predicate spec — phase1/nat_semiring (dag W1 / W1b staged) May 30, 2026
@briansrls
briansrls marked this pull request as ready for review May 30, 2026 18:56
@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: openai-pro / gpt-5-5-thinking
  • Commit: 5bb2f8ba · Trigger: manual
  • Comparison: main @ 0ace5f8b ... session/zesty-bat-510-rung3 @ 5bb2f8ba
  • Conversation: View conversation

1. Story of the diff

This PR adds a new planning authority for rung 3 of the v4 ladder on phase1/nat_semiring: it defines how the .dag RoundTripClaim row should be evaluated, how W1 “wave-1 authorities ready” differs from W1b bit-identical emit→ingest fidelity, and how the existing aux fixture should be reported without falsely closing the ladder fixture. The load-bearing mechanism is staged reporting: R3-dag-roundtrip-wave1-ready can prove only the landed W1 substrate gate, while R3-dag-roundtrip-fidelity remains blocked until T-36/W1b; therefore the rung-3 aggregate must remain FAIL until both stages pass. The doc mostly preserves that boundary, but one required headline example contradicts the aggregate rule and would let downstream reports mark aux rung 3 as PASS on W1 alone. chatgpt-review-62bc6cfc-1ece-4a…

2. Invariant categories

  1. LAYER MODEL (substrate vs implementation).

N/A — the diff adds a planning doc only; it does not change Dag substrate types, compiler passes, std/ declarations, or runtime code.

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

Finding — P2 Boundary Discipline / single reporting authority: docs/planning/v4-ladder-rung-spec-rung3-2026-05-30.md:183 gives a required headline example of phase1-aux/dag_round_trip_mvp1: rung3 PASS (dag=PASS — W1 wave-1 authorities ready), but the same spec’s aggregate authority says rung-3 PASS requires both W1 and W1b and that the row remains FAIL while W1b is unlanded at docs/planning/v4-ladder-rung-spec-rung3-2026-05-30.md:76. Section 6 repeats the expected aux baseline as rung3: FAIL (dag=SKIP) with upstream_blocked:w1b_emit_ingest_comparator_unlanded at docs/planning/v4-ladder-rung-spec-rung3-2026-05-30.md:222-234. That leaves two authoritative reporting shapes for the same fixture: W1-only PASS vs aggregate FAIL. Fix the headline example to report the W1 stage without making the rung aggregate PASS, e.g. rung3 FAIL (dag=SKIP/W1 PASS; W1b SKIP upstream_blocked:w1b_emit_ingest_comparator_unlanded) or whatever exact cell convention the spec intends.

  1. CODING.md.

N/A — no Rust implementation code, APIs, helpers, error shapes, or comments in code are changed; the prose planning artifact itself is the intended deliverable.

  1. TESTING.md.

Compliant — for a planning-only PR, it does not need to add executable tests. It does name the future executable receipt anchor, requiring the first nat_semiring RoundTripClaim PR to extend scripts/v4-phase1-nat-semiring-rung-gate.sh and supersede this expected baseline with an executed one at docs/planning/v4-ladder-rung-spec-rung3-2026-05-30.md:239.

  1. LOCKED DESIGN DECISIONS.

Compliant aside from the reporting finding above — the doc preserves the high-level “round-trip preserved” standard by explicitly refusing to close rung 3 until W1b bit-identical fidelity lands, rather than treating W1 readiness as the final proof.

  1. TRACKED vs UNTRACKED DEBT.

Compliant — the temporary gaps are named and bounded: module-loader-blocked migration of the RoundTripClaim row, W1b/T-36 fidelity comparator, and host gate script/CI extension are all listed as pending with concrete triggers at docs/planning/v4-ladder-rung-spec-rung3-2026-05-30.md:255-257.

2.5. Top-down PM intent review

Finding — brief could cause a worker to report the wrong rung state: the PM-level intent of this spec is “honest staging”: rung 3 is not actually closed until round-trip preservation is proven, and the doc’s own authority says W1 readiness does not prove bit-identical emit→ingest fidelity at docs/planning/v4-ladder-rung-spec-rung3-2026-05-30.md:23. The aggregate rule then makes that operational: rung-3 PASS requires both stages, and W1b-unlanded means aggregate FAIL at docs/planning/v4-ladder-rung-spec-rung3-2026-05-30.md:76. But the required headline example at docs/planning/v4-ladder-rung-spec-rung3-2026-05-30.md:183 tells workers to report the aux fixture as rung3 PASS for W1 readiness alone. A worker following that headline faithfully could publish exactly the semantic dilution the spec is otherwise trying to prevent: a rung-3 PASS without W1b fidelity.

3. Verdict

REQUEST_CHANGES. The spec is otherwise careful and well-scoped, but the contradictory required headline is load-bearing because this PR is itself a worker-facing planning authority. Fixing that one reporting example should align the doc with its own staged aggregate rule.

briansrls and others added 3 commits May 30, 2026 19:10
…tion + line anchors

Addresses cursor/composer-2.5 REQUEST_CHANGES + openai-pro REQUEST_CHANGES
on PR #4003. Three findings, all valid:

1. §4.2 required-headline example claimed `aux: rung3 PASS (dag=PASS — W1
   wave-1)` for W1-only readiness, contradicting §2.2 row-aggregate rule
   (PASS requires BOTH W1 + W1b). Workers following §4.2 could falsely
   close rung 3 on W1 alone. Fixed: all aux/post-migration headline
   examples now show row aggregate FAIL with named W1b blocking receipt.

2. §6 baseline for aux row rendered `dag=SKIP` while substrate is
   executable today (W1 verdict path landed). Violates companion §2.4
   (SKIP only when predicate did not run). Fixed: aux baseline now shows
   `dag=PASS` for executed W1 stage, row aggregate FAIL on unlanded W1b.

3. Line anchors at §2.2 / §1 / §2.6 / §5 cited `05_eval.dag:1729,1741`,
   `:1723-1742`, `:1707-1716`, `:1745-1768` — wrong by 2-4 lines on
   origin/main @ 0ace5f8. Fixed: precondition diagnostic at :1733;
   invalid_node at :1711; verdict fn at :1721-1739; runtime variant at
   :1741-1763; input admission at :1705-1717.

Added §2.2 cell-render clarification: the single `dag` cell reports the
W1 stage status alone (PASS/FAIL/SKIP based on whether W1 executed); W1b
status surfaces only as blocking receipt and row-aggregate gate. Keeps
the one-cell-per-target convention while preserving W1/W1b honesty.

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

Addresses cursor/composer-2.5 REQUEST_CHANGES on PR #4003:

1. §1 out-of-scope bullet said W1b carries an "explicit SKIP cell",
   contradicting §2.2 which states W1b does NOT get its own matrix cell
   (surfaces only as blocking receipt). Could lead workers to add a W1b
   column. Fixed: bullet now says W1b is the row's named blocking
   receipt (dag_roundtrip_fidelity_w1b_unlanded), not its own cell.

2. §5 spot-check claimed `git grep -l RoundTripClaim` on algebra_laws/
   returns nothing — actually returns nat_semiring.dag (import only).
   Wedge claim still correct (no RoundTripClaim row exists), but cited
   verification step was wrong. Fixed: tightened to
   `grep -nE 'RoundTripClaim *\{'` which correctly returns empty, with
   note that only an import exists.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@briansrls
briansrls merged commit c1e4d12 into main May 30, 2026
10 checks passed
briansrls added a commit that referenced this pull request May 30, 2026
…#4003)

Updates header to link the rung-3 companion spec (landed via PR #4003,
c1e4d12) and clarifies that rung-3's out-of-scope note here points to
the dedicated rung-3 doc citing #3960 (RoundTripClaim eval path), not
the prior brief's #3972 (leaf-model verification — orthogonal lane).

Also picks up the merge of main into session/zesty-bat-510 to align
with current substrate state.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 30, 2026
…rences post-#4003

Addresses cursor/composer-2.5 REQUEST_CHANGES on PR #3990 — three stale
references the header update missed:

1. §1 out-of-scope (:25): "Rung 3 round-trip predicate (W1 — Compiler
   Spine, PR #3972 pending)" → now points to the rung-3 companion spec
   citing PR #3960; notes #3972 is leaf-model verification, orthogonal.
2. §2.4 conjunction-line comment (:103): "until rung 3 spec lands
   (gated on PR #3972)" → spec landed via #4003; real gate is fixture
   row renderability (claim authoring + W1b), not spec existence.
3. §7 sign-off (:228): "Rung 3 acceptance predicate | DEFERRED — gated
   on PR #3972" → now LANDED, points to companion + #3960 citation.

All three contradicted the header's already-corrected statement that
the rung-3 companion landed via #4003 and that #3972 is a separate
lane. No semantic surface change beyond reference correction.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 30, 2026
…g (Rust W2) (#3990)

* docs(planning): rung-4 acceptance predicate spec — phase1/nat_semiring (Rust W2)

Ladder/Fixture Manager second artifact. Mirrors PR #3946 (rungs 0-2) shape;
additive to the companion spec — cites §2.4 cell vocabulary, §3 acceptance
rule, §4 headline rule rather than restating them.

R4 binding:
- single executed predicate R4-rust-emit-equals-eval (Rust only in W2 per
  joint runner spec §4.2 A3; python/go = SKIP, Phase 3 unallocated)
- atomic conjunction (host-exit-ok ∧ stdout-parsable ∧ value-equals-eval)
  expressed via run_test_claim_emit_vs_eval -> Verdict.Pass on a Host
  evidence row; sub-failures surface in the blocking receipt, not the matrix
- prerequisite chain: R4-rust runs only when R2-rust=PASS AND emit_host
  transport wired AND nat_semiring_rung34_runtime_value_rows populated;
  empty-roster wedge reads as SKIP (upstream_blocked:…), never FAIL
- independent gating from rung 3 per joint spec §4.4 rung-split (rung 3
  spec deferred — gated on PR #3972 W1 RoundTripClaim verdict shape)

§5 spot-checks against origin/main @ 7facb19 confirm landed substrate:
host_run.dag, test_claim_falsification.dag, verdict.dag, emit_host.dag,
nat_semiring_rung34_eval.dag, tools/emit_host_runner.

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

* docs(planning): fix rung-4 spec line anchors to origin/main @ 7facb19

Addresses cursor/composer-2.5 review on PR #3990: empty-roster anchor is
:23 not :21; gate is :56-63 not :54-61; aggregator is :26-32 not :23-28;
report_has_evidence is :36-42 not :34-40. Symbols and semantics unchanged
— pure line-number alignment with the pinned commit.

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

* docs(planning): rung-4 spec — cross-reference landed rung-3 companion (#4003)

Updates header to link the rung-3 companion spec (landed via PR #4003,
c1e4d12) and clarifies that rung-3's out-of-scope note here points to
the dedicated rung-3 doc citing #3960 (RoundTripClaim eval path), not
the prior brief's #3972 (leaf-model verification — orthogonal lane).

Also picks up the merge of main into session/zesty-bat-510 to align
with current substrate state.

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

* WIP: Ladder/Fixture Manager — authority over 9-rung correctness ladder, fixtu

* docs(planning): rung-4 spec — clear remaining stale rung-3/#3972 references post-#4003

Addresses cursor/composer-2.5 REQUEST_CHANGES on PR #3990 — three stale
references the header update missed:

1. §1 out-of-scope (:25): "Rung 3 round-trip predicate (W1 — Compiler
   Spine, PR #3972 pending)" → now points to the rung-3 companion spec
   citing PR #3960; notes #3972 is leaf-model verification, orthogonal.
2. §2.4 conjunction-line comment (:103): "until rung 3 spec lands
   (gated on PR #3972)" → spec landed via #4003; real gate is fixture
   row renderability (claim authoring + W1b), not spec existence.
3. §7 sign-off (:228): "Rung 3 acceptance predicate | DEFERRED — gated
   on PR #3972" → now LANDED, points to companion + #3960 citation.

All three contradicted the header's already-corrected statement that
the rung-3 companion landed via #4003 and that #3972 is a separate
lane. No semantic surface change beyond reference correction.

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

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 30, 2026
…anch-using)

Ratifies the Phase 4 Branch-using fixture (W2.5 widening per
docs/planning/v4-merge-wave-and-next-waves-2026-05-30.md §5).

Promotes the already-landed claim module
src/v4/test/claim/algebra_laws/field_patch_monoid.dag (179 lines, 10
CompilesClaim rows) as the Branch-using fixture rather than authoring fresh.
Primary control shape: if/else (line 33 fp_ok) + coproduct discrimination over
FieldPatch { Inherit | Override }.

Rung gate shape (§2) is NOT duplicated — inherited verbatim from
docs/planning/v4-ladder-rung-specs-2026-05-30.md §2 per CLAUDE.md ledger
standing principle. Only fixture subject + Phase 4 specifics in this doc.

Rungs 3-4 specs follow in separate PRs mirroring #4003 / #3990. Wiring
(roster .dag + CI gate + host script) is a follow-up PR; this doc is the
ratification authority only.

Predecessor structure:
- #3946 (rungs 0-2 spec on phase1/nat_semiring)
- #4003 (rung-3 spec template)
- #3990 (rung-4 spec template)
- #4015 (post-script-alignment receipt shape)

Not blocking Jun 1 v0.1.0 tag; v0.1.1 maturation narrative.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 30, 2026
…anch-using) (#4028)

* WIP: Ladder/Fixture Manager — authority over 9-rung correctness ladder, fixtu

* fix(ci): drop dead if/else around R2-rust upstream_blocked note

Review nit from claude/claude-opus-4-7 on PR #4015: both branches called
note_blocking with the same receipt id. Collapse to a single call.

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

* fix(ci): drop -l from R0-go-parse gofmt, discard formatted stdout

Review finding from cursor/composer-2.5 on PR #4015: `gofmt -e -l` exits
non-zero when emitted Go is syntactically valid but not gofmt-formatted,
which would record R0-go-parse=FAIL with `go_emit_parse_rejected` for a
formatting delta — violating §2.1 parse-only authority. Use plain
`gofmt -e` (exits non-zero only on parse/syntax errors) and discard the
formatted stdout, keeping stderr as the log.

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

* fix(ci): bound R0 parse probes under per-toolchain timeout

Review finding from openai-pro/gpt-5.5-pro on PR #4015: the three new parse-only
host-process invocations (rustc -Z parse-only nightly probe, per-file rustc
parse, xargs gofmt -e) bypassed V4_PHASE1_NAT_SEMIRING_TIMEOUT_SECS, breaking
the declared per-toolchain timeout contract (INVARIANTS P3 fail-closed).

Adds a `timed` command-prefix array (`timeout --preserve-status $secs` when set,
empty otherwise) and routes the three callsites through it. run_step is still
used for full compile/build checks where tee logging is desired; the prefix
form is for cases that pipe through xargs or discard stdout.

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

* docs(planning): rung 0-2 fixture spec — phase4/field_patch_monoid (Branch-using)

Ratifies the Phase 4 Branch-using fixture (W2.5 widening per
docs/planning/v4-merge-wave-and-next-waves-2026-05-30.md §5).

Promotes the already-landed claim module
src/v4/test/claim/algebra_laws/field_patch_monoid.dag (179 lines, 10
CompilesClaim rows) as the Branch-using fixture rather than authoring fresh.
Primary control shape: if/else (line 33 fp_ok) + coproduct discrimination over
FieldPatch { Inherit | Override }.

Rung gate shape (§2) is NOT duplicated — inherited verbatim from
docs/planning/v4-ladder-rung-specs-2026-05-30.md §2 per CLAUDE.md ledger
standing principle. Only fixture subject + Phase 4 specifics in this doc.

Rungs 3-4 specs follow in separate PRs mirroring #4003 / #3990. Wiring
(roster .dag + CI gate + host script) is a follow-up PR; this doc is the
ratification authority only.

Predecessor structure:
- #3946 (rungs 0-2 spec on phase1/nat_semiring)
- #4003 (rung-3 spec template)
- #3990 (rung-4 spec template)
- #4015 (post-script-alignment receipt shape)

Not blocking Jun 1 v0.1.0 tag; v0.1.1 maturation narrative.

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

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 30, 2026
Additive fixture-particular doc; gate vocabulary cites v4-ladder-rung-specs §2
and PR #4003 rung-3 companion (W1/W1b staged predicates). No §2 duplication.

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request May 30, 2026
…1/W1b inherited)

Binds rung-3 acceptance predicate to phase4/field_patch_monoid (ratified
#4028). Additive per-fixture doc — does NOT restate the W1/W1b predicate
shape, prerequisite chain, SG rule, or headline rule; those inherit verbatim
from #4003 (rung-3 spec on phase1/nat_semiring) per CLAUDE.md ledger standing
principle.

Fixture-particular content only:
- Scope binding (§1): predicate ids namespaced phase4/field_patch_monoid/rung3/*
- Note on Branch-using shape: round-trip predicate is shape-agnostic; if/else
  and FieldPatch coproduct discrimination are surface for algebraic laws, not
  new rung-3 predicates.
- Spot-check receipts (§6): fixture module on main, no RoundTripClaim row
  bound to field_patch_monoid → wedge per inherited #4003 §2.3.
- Baseline (§7): rung3=FAIL (dag=SKIP), blocking_receipt
  upstream_blocked:claim_field_patch_monoid_module_roundtrip_not_authored.
  Mirrors phase1/nat_semiring wedge per #4003 §6; same W3 module-loader
  unblock path.

Wave alignment: W2.5 maturation for v0.1.1; not Jun 1 gating. Coordinates
with royal-wolf-898 who is authoring rung-3/4 specs for phase4/branch_dispatch
+ phase4/loop_linear_bound in parallel (no overlap).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 30, 2026
…1/W1b inherited) (#4036)

* WIP: Ladder/Fixture Manager — authority over 9-rung correctness ladder, fixtu

* fix(ci): drop dead if/else around R2-rust upstream_blocked note

Review nit from claude/claude-opus-4-7 on PR #4015: both branches called
note_blocking with the same receipt id. Collapse to a single call.

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

* fix(ci): drop -l from R0-go-parse gofmt, discard formatted stdout

Review finding from cursor/composer-2.5 on PR #4015: `gofmt -e -l` exits
non-zero when emitted Go is syntactically valid but not gofmt-formatted,
which would record R0-go-parse=FAIL with `go_emit_parse_rejected` for a
formatting delta — violating §2.1 parse-only authority. Use plain
`gofmt -e` (exits non-zero only on parse/syntax errors) and discard the
formatted stdout, keeping stderr as the log.

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

* fix(ci): bound R0 parse probes under per-toolchain timeout

Review finding from openai-pro/gpt-5.5-pro on PR #4015: the three new parse-only
host-process invocations (rustc -Z parse-only nightly probe, per-file rustc
parse, xargs gofmt -e) bypassed V4_PHASE1_NAT_SEMIRING_TIMEOUT_SECS, breaking
the declared per-toolchain timeout contract (INVARIANTS P3 fail-closed).

Adds a `timed` command-prefix array (`timeout --preserve-status $secs` when set,
empty otherwise) and routes the three callsites through it. run_step is still
used for full compile/build checks where tee logging is desired; the prefix
form is for cases that pipe through xargs or discard stdout.

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

* docs(planning): rung 0-2 fixture spec — phase4/field_patch_monoid (Branch-using)

Ratifies the Phase 4 Branch-using fixture (W2.5 widening per
docs/planning/v4-merge-wave-and-next-waves-2026-05-30.md §5).

Promotes the already-landed claim module
src/v4/test/claim/algebra_laws/field_patch_monoid.dag (179 lines, 10
CompilesClaim rows) as the Branch-using fixture rather than authoring fresh.
Primary control shape: if/else (line 33 fp_ok) + coproduct discrimination over
FieldPatch { Inherit | Override }.

Rung gate shape (§2) is NOT duplicated — inherited verbatim from
docs/planning/v4-ladder-rung-specs-2026-05-30.md §2 per CLAUDE.md ledger
standing principle. Only fixture subject + Phase 4 specifics in this doc.

Rungs 3-4 specs follow in separate PRs mirroring #4003 / #3990. Wiring
(roster .dag + CI gate + host script) is a follow-up PR; this doc is the
ratification authority only.

Predecessor structure:
- #3946 (rungs 0-2 spec on phase1/nat_semiring)
- #4003 (rung-3 spec template)
- #3990 (rung-4 spec template)
- #4015 (post-script-alignment receipt shape)

Not blocking Jun 1 v0.1.0 tag; v0.1.1 maturation narrative.

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

* docs(planning): rung-3 acceptance spec — phase4/field_patch_monoid (W1/W1b inherited)

Binds rung-3 acceptance predicate to phase4/field_patch_monoid (ratified
#4028). Additive per-fixture doc — does NOT restate the W1/W1b predicate
shape, prerequisite chain, SG rule, or headline rule; those inherit verbatim
from #4003 (rung-3 spec on phase1/nat_semiring) per CLAUDE.md ledger standing
principle.

Fixture-particular content only:
- Scope binding (§1): predicate ids namespaced phase4/field_patch_monoid/rung3/*
- Note on Branch-using shape: round-trip predicate is shape-agnostic; if/else
  and FieldPatch coproduct discrimination are surface for algebraic laws, not
  new rung-3 predicates.
- Spot-check receipts (§6): fixture module on main, no RoundTripClaim row
  bound to field_patch_monoid → wedge per inherited #4003 §2.3.
- Baseline (§7): rung3=FAIL (dag=SKIP), blocking_receipt
  upstream_blocked:claim_field_patch_monoid_module_roundtrip_not_authored.
  Mirrors phase1/nat_semiring wedge per #4003 §6; same W3 module-loader
  unblock path.

Wave alignment: W2.5 maturation for v0.1.1; not Jun 1 gating. Coordinates
with royal-wolf-898 who is authoring rung-3/4 specs for phase4/branch_dispatch
+ phase4/loop_linear_bound in parallel (no overlap).

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

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 30, 2026
* docs(planning): rung-3 acceptance spec — phase4/branch_dispatch

Additive fixture-particular doc; gate vocabulary cites v4-ladder-rung-specs §2
and PR #4003 rung-3 companion (W1/W1b staged predicates). No §2 duplication.

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

* docs(planning): fix roster link path from docs/planning (#4034)

Use ../../src/v4/... (proactive; same fix as #4035 openai-pro RC).

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

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request May 30, 2026
)

* docs(planning): rung-3 acceptance spec — phase4/loop_linear_bound

Additive fixture-particular doc; cites v4-ladder-rung-specs §2 and #4003 rung-3
companion. Loop + loop_bound_edge subject; no §2 duplication.

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

* docs(planning): fix roster link path from docs/planning (#4035)

Use ../../src/v4/... so the scope link resolves to repo-root src/v4, not
docs/src/v4 (openai-pro RC).

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

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request May 30, 2026
…4039)

* WIP: Ladder/Fixture Manager — authority over 9-rung correctness ladder, fixtu

* fix(ci): drop dead if/else around R2-rust upstream_blocked note

Review nit from claude/claude-opus-4-7 on PR #4015: both branches called
note_blocking with the same receipt id. Collapse to a single call.

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

* fix(ci): drop -l from R0-go-parse gofmt, discard formatted stdout

Review finding from cursor/composer-2.5 on PR #4015: `gofmt -e -l` exits
non-zero when emitted Go is syntactically valid but not gofmt-formatted,
which would record R0-go-parse=FAIL with `go_emit_parse_rejected` for a
formatting delta — violating §2.1 parse-only authority. Use plain
`gofmt -e` (exits non-zero only on parse/syntax errors) and discard the
formatted stdout, keeping stderr as the log.

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

* fix(ci): bound R0 parse probes under per-toolchain timeout

Review finding from openai-pro/gpt-5.5-pro on PR #4015: the three new parse-only
host-process invocations (rustc -Z parse-only nightly probe, per-file rustc
parse, xargs gofmt -e) bypassed V4_PHASE1_NAT_SEMIRING_TIMEOUT_SECS, breaking
the declared per-toolchain timeout contract (INVARIANTS P3 fail-closed).

Adds a `timed` command-prefix array (`timeout --preserve-status $secs` when set,
empty otherwise) and routes the three callsites through it. run_step is still
used for full compile/build checks where tee logging is desired; the prefix
form is for cases that pipe through xargs or discard stdout.

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

* docs(planning): rung 0-2 fixture spec — phase4/field_patch_monoid (Branch-using)

Ratifies the Phase 4 Branch-using fixture (W2.5 widening per
docs/planning/v4-merge-wave-and-next-waves-2026-05-30.md §5).

Promotes the already-landed claim module
src/v4/test/claim/algebra_laws/field_patch_monoid.dag (179 lines, 10
CompilesClaim rows) as the Branch-using fixture rather than authoring fresh.
Primary control shape: if/else (line 33 fp_ok) + coproduct discrimination over
FieldPatch { Inherit | Override }.

Rung gate shape (§2) is NOT duplicated — inherited verbatim from
docs/planning/v4-ladder-rung-specs-2026-05-30.md §2 per CLAUDE.md ledger
standing principle. Only fixture subject + Phase 4 specifics in this doc.

Rungs 3-4 specs follow in separate PRs mirroring #4003 / #3990. Wiring
(roster .dag + CI gate + host script) is a follow-up PR; this doc is the
ratification authority only.

Predecessor structure:
- #3946 (rungs 0-2 spec on phase1/nat_semiring)
- #4003 (rung-3 spec template)
- #3990 (rung-4 spec template)
- #4015 (post-script-alignment receipt shape)

Not blocking Jun 1 v0.1.0 tag; v0.1.1 maturation narrative.

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

* docs(planning): rung-3 acceptance spec — phase4/field_patch_monoid (W1/W1b inherited)

Binds rung-3 acceptance predicate to phase4/field_patch_monoid (ratified
#4028). Additive per-fixture doc — does NOT restate the W1/W1b predicate
shape, prerequisite chain, SG rule, or headline rule; those inherit verbatim
from #4003 (rung-3 spec on phase1/nat_semiring) per CLAUDE.md ledger standing
principle.

Fixture-particular content only:
- Scope binding (§1): predicate ids namespaced phase4/field_patch_monoid/rung3/*
- Note on Branch-using shape: round-trip predicate is shape-agnostic; if/else
  and FieldPatch coproduct discrimination are surface for algebraic laws, not
  new rung-3 predicates.
- Spot-check receipts (§6): fixture module on main, no RoundTripClaim row
  bound to field_patch_monoid → wedge per inherited #4003 §2.3.
- Baseline (§7): rung3=FAIL (dag=SKIP), blocking_receipt
  upstream_blocked:claim_field_patch_monoid_module_roundtrip_not_authored.
  Mirrors phase1/nat_semiring wedge per #4003 §6; same W3 module-loader
  unblock path.

Wave alignment: W2.5 maturation for v0.1.1; not Jun 1 gating. Coordinates
with royal-wolf-898 who is authoring rung-3/4 specs for phase4/branch_dispatch
+ phase4/loop_linear_bound in parallel (no overlap).

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

* WIP: Ladder/Fixture Manager — authority over 9-rung correctness ladder, fixtu

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@briansrls
briansrls deleted the session/zesty-bat-510-rung3 branch June 1, 2026 18:43
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