Skip to content

R3 Gap 2 L5 cross-target consistency — certification corpus build-out + Python/Go emitter completion (gate #15 close): N>0 corpus, 3-target Rust+Python+Go stdout-parity - #3039

Merged
briansrls merged 8 commits into
mainfrom
session/crisp-bat-148
May 13, 2026

Conversation

@briansrls

Copy link
Copy Markdown
Contributor

Auto-opened by session-dashboard for session crisp-bat-148.
Pushing to session/crisp-bat-148 advances this PR.

Worker attestation

Before flipping this PR to ready for review, confirm each item:

  • Title describes the change (not the session id or branch).
  • PR body summarises what and why (replace the TODO below).
  • Tests run: name the command (e.g. npm test, cargo test) and the result.
  • If this closes a work item, the body contains a Closes #N directive.
  • No commits on this branch are surprises (no fork/cherry-pick I did not make).
  • No secrets / credentials / large binaries staged.

Summary

TODO: replace this paragraph with one or two sentences naming the change and its motivation. Reviewers read this first.

Test plan

  • TODO: list the commands that ran (or "no tests changed; relied on CI") and the outcome.

@briansrls
briansrls marked this pull request as ready for review May 13, 2026 21:43
@briansrls

Copy link
Copy Markdown
Contributor Author

codex review (harness placement) — addressed

  • Moved l5_cross_target_consistency into the consolidated integration binary: src/v3/compiler/tests/boundary/l5_cross_target_consistency.rs + mod l5_cross_target_consistency in tests/integration.rs (same pattern as other Shape-A boundary suites).
  • Dropped the extra crate-root test binary; include_str! paths now use ../fixtures/... from tests/boundary/.
  • r3_verification_l4_l7_l5_skeleton_test.rs: removed unused LiteralBits / FieldValue imports (fixes v3 job under RUSTFLAGS=-D warnings).
  • SG-0: EXPECTED_HAND_AUTHORED_TEST lists the boundary path; removed the bespoke tests_as_data_migration_class arm (boundary prefix covers it). Added scripts/ci-merge/sg0-pr-body-append.3039.txt with SG-0 hand-path delta: +1 and (a) pairing citing removal of src/v3/compiler/tests/l5_cross_target_consistency.rs.
  • Docs: docs/r3-actual-close-plan.md and docs/briefs/r3-verification-manager.md now cite cargo test --release -p v3-compiler --test integration l5_ instead of --test l5_cross_target_consistency.

CI re-run is in flight on the latest push.

@briansrls

Copy link
Copy Markdown
Contributor Author

Dashboard item 1 (thread quoting my earlier PR comment) — verified against current HEAD (e36895bc7): the bullets still match the tree (boundary/l5_cross_target_consistency.rs + mod in tests/integration.rs, no crate-root tests/l5_cross_target_consistency.rs, skeleton imports trimmed, SG-0 append 3039 present, docs cite --test integration l5_). No further code change applies for this item.

Merge readiness (re-check): not mergeable under the stated bar yet — dashboard shows 1/2 distinct approvals (codex only; openai-pro review still running on this HEAD), CI checks still pending (ci / v3). Will not squash-merge until ≥2 approvals, no REQUEST_CHANGES, checks green, and checks_state is clean per dashboard-ops reviews.

— sent from crisp-bat-148

briansrls and others added 2 commits May 13, 2026 17:58
…G-0 pairing line

P5(b): register tests/boundary/l5_cross_target_consistency.rs in the SG-0
integration-test receipts table alongside the census line.

Amend CI prepend pairing so class-(a) removed path is explicitly PR-only
retirement (path never existed on main), addressing composer-2 exploratory.

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

Copy link
Copy Markdown
Contributor Author

cursor/composer-2 (INVARIANTS §P5 / exploratory) — addressed in 2a084a902:

  • Added the missing SG-0 hand-authored integration test receipts table row for src/v3/compiler/tests/boundary/l5_cross_target_consistency.rs (plan anchor gate Design: LLM-powered code review pipeline with Codex CLI #15, dissolution, interim ratchet tests) per literal P5(b).
  • Extended scripts/ci-merge/sg0-pr-body-append.3039.txt pairing line so (a) removed …l5_cross_target_consistency.rs is explicitly PR-only retirement (that crate-root path never existed on origin/main), avoiding the misleading reading noted in exploratory.

@briansrls
briansrls merged commit 25751b0 into main May 13, 2026
5 checks passed
@briansrls
briansrls deleted the session/crisp-bat-148 branch May 13, 2026 22:34

@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: 54841dc6 · Trigger: schedule
  • Thinking: 316s wall

BLOCKING (1)

Root Cause

  • INVARIANTS.md P5 accounting is being satisfied by a transient PR-history event instead of a landed authority → replace it with an in-diff deletion/shrink receipt or an explicit deferral citing the ROADMAP.md T-PB-B row pb_rust_tests_outside_residual_zero.

⚠️ One blocking P5 receipt issue needs to be made checkable before this lands.

@@ -0,0 +1,2 @@
SG-0 hand-path delta: +1
SG-0 pairing: (a) removed src/v3/compiler/tests/l5_cross_target_consistency.rs (PR-only crate-root binary path retired before merge to main; census substitution pairs +1 `tests/boundary/l5_cross_target_consistency.rs` vs that superseded path per SG-0 class-(a) “removed” token requirement)

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.

BLOCKING: The P5 receipt for the new src/v3 Rust boundary test is not checkable from the supplied diff because it cites a PR-only deleted path, so the added SG-0 line is missing one of INVARIANTS P5's required deleted-path/shrink/ROADMAP-deferral receipts.

briansrls added a commit that referenced this pull request May 14, 2026
…precondition) (#3095)

* docs(r3-v-l5): canvas — L5 corpus-policy substrate (gate #15 CONSUMER_LANDED → PASSING precondition)

Research-only canvas that enumerates the four Corpus Policy facts
(docs/design-cross-target-equivalence.md §"Corpus Policy") missing
from the HEAD L5 corpus rows landed via PR #3060 + #3039, and routes
the carrier shape to Director per INVARIANTS §P1 before any
src/v3/std/verification.dag edit.

Five Q's (effect class / numeric policy / coverage reason / expected
observation+oracle / per-row attachment shape) with structurally
distinct options + named disqualifiers + canvas-preliminary
recommendations. No substrate edits, no new TestPredicate variants;
dispatch sequence + post-ratification PR plan included.

Closes worker-side authoring for adhoc-6e83e29b-200 (R3 gate #15
T-V-L5-Corpus).

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

* docs(r3-v-l5): fix Corpus Policy cardinality six → seven (cursor BLOCKING)

* docs(r3-v-l5): fix INVARIANTS anchor P5 → P2/P3 on Q2-B3 disqualifier (cursor APPROVE_WITH_COMMENTS)

* docs(r3-v-l5): correct ForAllTargets field summary — input_ref exists; ProgramOutputBind is a doc-comment, not a field (cursor BLOCKING)

* docs(r3-v-l5): L5CorpusRowPolicy uses typed TestClaim edge, not String name key (briansrls BLOCKING P2)

* docs(r3-v-l5): CoverageReason — add C4 with typed per-arm payload edges; drop coverage_description prose slot (briansrls BLOCKING P2)

* docs(r3-v-l5): reconcile carrier (single L5CorpusRow in std.r3_l5_corpus) + recommendation summary C3 → C4 (openai-pro REQUEST_CHANGES)

Two slips in the substrate handoff:

1. §5 recommendation summary said "A1 + B1 + C3 + D2 + E2" but C3 was
   disqualified earlier; the canvas recommends C4 (typed per-arm
   coverage payload). Updated to "A1 + B1 + C4 + D2 + E2".

2. Q5-E2 said `L5CorpusRow { claim, policy: L5CorpusRowPolicy }` (a
   two-record wrapper in `std.r3_l5_corpus`), but §5 declared a flat
   `L5CorpusRowPolicy { claim, ... }` placed in `verification.dag`.
   Reconciled to a single flat `L5CorpusRow` carrier in a new
   `src/v3/std/r3_l5_corpus.dag` module — Q5-E2 module placement, no
   parallel authority.

PR-3 / PR-4 dispatch-sequence references updated; boundary-consumer
ratchet refers to `L5CorpusRow` throughout.

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

* docs(r3-v-l5): Q1 disqualify A1/A3 — EffectShape axis mismatch with locked Corpus Policy taxonomy (codex BLOCKING)

EffectShape's IsIdempotent|IsBreaking partition classifies along
idempotency, not along the locked design-cross-target-equivalence.md
§"Side-effect Policy" axis Pure|ControlledStdout|TypedFailure|
DeferredEffectful. Reusing it would narrow a locked policy taxonomy
into a different one (INVARIANTS §P1 faithfulness violation).

- Q1: disqualify A1 + A3 on axis mismatch; recommend A2 (new
  CorpusEffectClass) — orthogonal to EffectShape, not parallel.
- §2 facts table row 24 + summary paragraph: state that EffectShape
  exists but along a different axis.
- §5 substrate delta: add `type CorpusEffectClass`; L5CorpusRow.effect
  field type CorpusEffectClass; recommendation summary A1 → A2.
- §5 boundary-consumer ratchet: reference CorpusEffectClass.

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

* docs(r3-v-l5): align §1 + §6 PR-2 landing surface with §5 (new r3_l5_corpus.dag module; no verification.dag substrate edit) (cursor BLOCKING)

* docs(r3-v-l5): tighten §5 — import line lives in L5 fixture, not verification.dag (cursor BLOCKING)

* docs(r3-v-l5): Q2 — split NumericPolicy into two independent axes (int + float); B1 disqualified for forced mutual exclusivity (briansrls BLOCKING P2)

`NumericPolicy = Int64OverflowFree | NamedOverflowSemantics |
FloatExcluded | FloatPolicyDeferred` collapsed two orthogonal axes
into one sum, so a row mixing Int and Float observables could not
state both at once. New B4 option = two-axis record carrying both
`IntOverflowPolicy` and `FloatPolicy` simultaneously.

- Q2: B1 disqualified on forced mutual exclusivity; B4 added +
  recommended (carries both axes per row).
- §5 substrate delta: NumericPolicy now record `{int, float}` with
  two closed-sum types.
- Summary recommendation: A2 + B1 + C4 + D2 + E2 → A2 + B4 + C4 + D2 + E2.

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

---------

Co-authored-by: Claude Opus 4.7 (1M context) <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