Repository navigation
MockBackedInvariant wiring - #722
Conversation
|
Review — good work, two coordination items before merge. The COORDINATION (must resolve before merge)1. Both PRs independently changed
2. Your version returns
BLOCKING (must do now)Un-draft this PR to trigger CI. All checks are currently NON-BLOCKING
When #717 resolves its regression and one of the two PRs is ordered: update this branch accordingly. These are mechanical changes — an hour of work once the ordering is clear. |
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Review metadata
Review already delivered above. The background test run completed successfully (exit 0); no changes to my verdict. |
|
Review metadata
Findings
Verdict: REQUEST_CHANGES. The runner code shape looks fail-closed, but the newly added fixture/test fails under the existing parser/lowerer contract. Verification run: |
… gate closed (#720), in-review pointers for #717 / #722 (#723) * WIP: r1 testgen * docs(r1-testgen-manager): working-state refresh — schema extensions (#678), runner (#688), LensAPI Day-1 gate (#679) Runner foundation (#688) already merged; update status to reflect that. Fix "Open questions" placeholder to _(none today)_. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs(r1-testgen-manager): uncheck user_authored_lens_compiles until #679 merges [x] while "merge pending" violates the section's own "update as sub-deliverables close" rule. Keep unchecked until the PR lands. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs(r1-testgen-manager): mark user_authored_lens_compiles closed (#679 merged) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs(r1-testgen-manager): mark testgen_manual_claim_is_first_class closed (#707) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore: apply cargo fmt * fix(test_runner_test): remove unused PathBuf import after stale test deletion Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs(r1-testgen-manager): mark testgen_structural_coverage [x] (#720 merged) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs(r1-testgen-manager): note PR #722 MockBackedInvariant in review Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1cab2ebd63
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| predicate: MockBackedInvariant({ | ||
| subject: mock_subject_ref, | ||
| invariant: mock_invariant_ref | ||
| }), |
There was a problem hiding this comment.
Encode MockBackedInvariant fixture with positional arguments
This fixture passes a single record literal into MockBackedInvariant, but the current predicate constructor is parsed as two positional payload values; compiling this file now throws ArityMismatch { expected: 2, actual: 1 } (and then an opaque-body resolve error), so the new integration paths panic before they can verify runner dispatch. In practice this breaks the added tests that depend on this fixture until the payload is authored in positional form.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Verified against current head 1145ddfbc: this is fixed now. The fixture uses the positional form:
predicate: MockBackedInvariant(mock_subject_ref, mock_invariant_ref),
I also reran cargo test -p v3-compiler mock_backed_invariant -- --nocapture; the fixture compile test and runner dispatch test both pass (3 passed).
|
Review metadata
Verdict: APPROVE — diff is small, narrowly scoped, and honestly labeled. The Exploratory observations (optional, non-blocking):
|
|
Review metadata
Verdict: APPROVE Diff is narrowly scoped, the Verified with |
|
Review metadata
All call sites updated. The diff is small and contained: extends an existing NotYetImplemented variant to carry a reason string, wires up a stub dispatch for Verdict: APPROVE — this is a narrow, honest stub. The NotYetImplemented reason-carrying shape is a strict improvement (no more silent "not wired"), the edge resolver fails-closed on non-DeclarationRef payloads, and the fixture's |
|
Review metadata
Verdict: APPROVE Diff is small and narrowly scoped. I don’t see concrete violations of the pinned modeling, coding, or testing discipline; the Validated with: |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
1b5a87b3· Trigger:schedule - Thinking:
168s wall
Non-blocking — Strengths
src/v3/compiler/tests/fixtures/r1_mock_backed_invariant_gate.dagThe empty requires bridge is documented, bounded to this fixture, and has a named service-simulation trigger, so it is tracked scaffold rather than an authority split.
✅ No blocking concerns; the PR keeps MockBackedInvariant runner wiring fail-closed while preserving TestClaim.requires as the resource authority.
|
Review metadata
Findings
VerdictREQUEST_CHANGES — returning Exploratory observations
|
|
Review metadata
Findings
Verdict: REQUEST_CHANGES. The focused tests pass, but they currently cement the false-positive behavior rather than proving the invariant path. |
|
Review metadata
Verdict: APPROVE — diff is small and narrowly scoped to wiring Notes on why this is clean:
Exploratory (non-asks): the fixture comment notes that struct-variant field names are schema-only and the parser accepts positional payload — that's a latent coprod seam worth dissolving eventually, but nothing in this diff makes it worse. |
|
Review metadata
Verdict: APPROVE Diff is narrowly scoped to wiring Verified: |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
98296aa3· Trigger:schedule - Thinking:
177s wall
✅ No blocking concerns; the added runner path validates MockBackedInvariant payload shape and returns a typed NYI instead of fabricating success.
|
Review metadata
Findings: None. Verdict: APPROVE — Small, disciplined wiring change. MockBackedInvariant moves from the generic Exploratory observation (optional): |
|
Review metadata
Verdict: APPROVE — diff is narrowly scoped and I don’t see concrete violations of the pinned invariants. The new Verified with |
|
Director review (tidy-koi-422): Converging → merge.
Squash-merging. |
|
Merge blocked — conflicts with main after #728 landed.
Please merge
No scope changes expected; push and CI should go green immediately. |
# Conflicts: # src/v3/compiler/src/test_runner.rs
|
Review metadata
Verdict: APPROVE The diff is narrowly scoped, keeps |
|
Merge blocked again — conflicts with main after #717 landed. Same pattern as before: #717 (LensOutputEquals) touched Please merge
Push once resolved; CI should pass quickly and I'll squash-merge. |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
4d9f601f· Trigger:schedule - Thinking:
180s wall
Non-blocking — Strengths
src/v3/compiler/src/test_runner.rsMockBackedInvariant validates the DeclarationRef-shaped payload and returns a typed NYI instead of fabricating success, matching the C-8 fail-closed staging rule.src/v3/compiler/tests/fixtures/r1_mock_backed_invariant_gate.dagThe fixture documents the empty requires bridge and keeps mock resource authority on TestClaim.requires, matching locked DB-15 R2.
ROADMAP — Verified
- DB-15 generated runner execution follow-up: This advances the tracked runner-integration lane without reopening the locked TestClaim/TestPredicate schema.
✅ Mixed Rust runner/.dag fixture/test changes look clean; no blocking concerns.
# Conflicts: # src/v3/compiler/src/test_runner.rs # src/v3/compiler/tests/integration/m1_5_user_authored_lens_gate_test.rs # src/v3/compiler/tests/integration/test_runner_test.rs
… met (#722) MockBackedInvariant wiring landed in #722. Update Working state and decisions log: testgen half of the impossible-bugs re-dispatch trigger is now fully met (runner via #688/#705 + wiring via #722). Suite stays parked on Substrate T-LaneE and Surface T-Emit; idempotency-class proof rows are now dispatchable on testgen alone at Director's discretion. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…t-merge - #722 (MockBackedInvariant wiring) merged 2026-04-24; row now [x] with a one-line receipt (dispatch + DeclarationRef resolution + typed NYI). - #717 row drops "in review" — dispatch landed, runner still returns NotYetImplemented; gate dissolution deferred to T-LensAPI D1/D2 (PR #741 in flight). - Decisions-log entry updated with the same refresh. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…on still NYI) Codex review on #743 flagged P1 (Documentation Describes Live State): the brief claimed MockBackedInvariant runner was "[live]" after #722, but src/v3/compiler/src/test_runner.rs:454 still returns ClaimResult::NotYetImplemented for mock simulation. #722 wired dispatch + schema, not evaluation. Distinguish the two and revert the trigger status to half-met. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…lip to landed (#744) * WIP: r1 testgen * docs(r1-testgen-manager): working-state refresh — schema extensions (#678), runner (#688), LensAPI Day-1 gate (#679) Runner foundation (#688) already merged; update status to reflect that. Fix "Open questions" placeholder to _(none today)_. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs(r1-testgen-manager): uncheck user_authored_lens_compiles until #679 merges [x] while "merge pending" violates the section's own "update as sub-deliverables close" rule. Keep unchecked until the PR lands. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs(r1-testgen-manager): mark user_authored_lens_compiles closed (#679 merged) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs(r1-testgen-manager): mark testgen_manual_claim_is_first_class closed (#707) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore: apply cargo fmt * fix(test_runner_test): remove unused PathBuf import after stale test deletion Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs(r1-testgen-manager): mark testgen_structural_coverage [x] (#720 merged) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs(r1-testgen-manager): note PR #722 MockBackedInvariant in review Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * WIP: r1 testgen * docs(r1-testgen-manager): flip #722 to landed + refresh #717 rows post-merge - #722 (MockBackedInvariant wiring) merged 2026-04-24; row now [x] with a one-line receipt (dispatch + DeclarationRef resolution + typed NYI). - #717 row drops "in review" — dispatch landed, runner still returns NotYetImplemented; gate dissolution deferred to T-LensAPI D1/D2 (PR #741 in flight). - Decisions-log entry updated with the same refresh. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* WIP: r1 testgen * docs(r1-testgen-manager): working-state refresh — schema extensions (#678), runner (#688), LensAPI Day-1 gate (#679) Runner foundation (#688) already merged; update status to reflect that. Fix "Open questions" placeholder to _(none today)_. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs(r1-testgen-manager): uncheck user_authored_lens_compiles until #679 merges [x] while "merge pending" violates the section's own "update as sub-deliverables close" rule. Keep unchecked until the PR lands. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs(r1-testgen-manager): mark user_authored_lens_compiles closed (#679 merged) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs(r1-testgen-manager): mark testgen_manual_claim_is_first_class closed (#707) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore: apply cargo fmt * fix(test_runner_test): remove unused PathBuf import after stale test deletion Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs(r1-testgen-manager): mark testgen_structural_coverage [x] (#720 merged) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs(r1-testgen-manager): note PR #722 MockBackedInvariant in review Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * WIP: r1 testgen * docs(r1-testgen-manager): flip #722 to landed + refresh #717 rows post-merge - #722 (MockBackedInvariant wiring) merged 2026-04-24; row now [x] with a one-line receipt (dispatch + DeclarationRef resolution + typed NYI). - #717 row drops "in review" — dispatch landed, runner still returns NotYetImplemented; gate dissolution deferred to T-LensAPI D1/D2 (PR #741 in flight). - Decisions-log entry updated with the same refresh. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * WIP: r1 testgen * docs(r1-testgen-manager): T-LensAPI lane closed via #741 — flip rows + decisions log - `lens_output_is_queryable_data` gate flips [ ] → [x]; receipt names D1+D2, the deleted `compile_to_dag` bridge, and the `r1_lens_output_input_from_program` Dag-reflection sentinel. - `AlgebraicLaw` / `lens_composition_associative` rows annotated: #728 landed the initial dispatch; #741 dissolved the Rust operator recognizer into D1-backed `int_associativity_holds_all_triples` evaluation. - Decisions-log entry captures the D1+D2+D3+D4 bundle, supersedes-#740 callout, and the three dissolved ROADMAP cleanups. Prior decisions-log entry rewritten to reflect what #728 actually shipped vs what #741 dissolved. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs(r1-testgen-manager): correct `compile_to_dag` dissolution claim (codex review on #753) `compile_to_dag(&claim.source, ...)` is still called on the real evaluation path in #741 — intentional and load-bearing (program Dag for reflection, canonical lens pairing for P2 id_space alignment), not a dissolved bridge. ROADMAP §77 item 1 retains an open follow-on for retiring the parallel compile paths once DeclarationRef resolves lens + inputs structurally. - `lens_output_is_queryable_data` row receipt rewritten: real evaluation replaces the NYI thin receipt; compile paths remain fail-closed (P3); two follow-ons (§77 items 1 + 3) explicitly open. - Decisions-log entry tightened: only ONE Rust recognizer was deleted (`declaration_is_binary_int_add_associativity_witness`); the LensOutputEquals thin-receipt shape was replaced, not a recognizer deleted. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…half-met until evaluation lands (#743) * docs(r1-release-manager): capture T-Demo Day-1 [live] + add narrow-scanner ledger row Brief refresh captures today's landings: - T-Demo Day-1 Compiles [live] end-to-end for both canonical fixtures (stage-(a) #686, stage-(b) #705 via TestRunner::run_suite). - Text-slicing bridge from #686 dissolved in place in #705 — one owed T-Receipts row that never needed to be written. - Impossible-bugs suite re-dispatch trigger 'Testgen runner + MockBackedInvariant wiring' is now half-met: runner foundation (#688) + T-Demo consumer proof (#705). MockBackedInvariant wiring remains. - #687 closed and re-authored as #701 (same branch + -ne enforcement tightening) — logged as a process note on #701. ROADMAP ledger gains a receipt row for the 'tests/integration/common/mod.rs:319 narrow-scanner' debt surfaced by T-Demo: the scanner deliberately does not model Rust char literals, forcing downstream tests into DAG_ESCAPE_BYTE / DAG_QUOTE_BYTE workarounds. Small scope, but attracts bridge-shaped workarounds in every new test under its scan path. * docs(r1-release-manager): director polish (citation + section header) Two non-blocking polish asks from director review: - ROADMAP narrow-scanner row reworded to not point at moved/renamed code; 'byte-constant pattern that landed in #686 and survived #705's bridge dissolution' instead of citing a specific module path. - 'Dissolved in place (not ledger rows)' subsection gains a brief header explaining the pattern (queued debt whose dissolution trigger fired before the row was written; prevents ledger bloat). * docs(r1-release-manager): fix reference integrity Codex review caught two live-state/docs-authority mismatches: - Brief cited ROADMAP.md:364-365 for the two post-R1 gap rows, but this PR's own ledger insertion shifted them to :362-363. - ROADMAP narrow-scanner row cited tests/integration/common/mod.rs:319 but the live path is src/v3/compiler/tests/integration/common/mod.rs:319. Both updated to the correct live-state coordinates. * docs(r1-release-manager): correct narrow-scanner row — no surviving in-tree workaround Codex review correctly caught that DAG_ESCAPE_BYTE / DAG_QUOTE_BYTE do not exist on main; they were in #686's text-slicing helper and dissolved with it in #705. The earlier row claimed they 'survived #705's bridge dissolution,' which is factually wrong. Reworded to: - Keep the scanner constraint as the real, standing latent debt. - Present #686's constants as historical evidence of what the constraint forces, not as a currently-surviving workaround. - State explicitly: no in-tree instance today; the constraint is a workaround attractor for the next test author landing under its scan path. Dissolution trigger unchanged. * docs(r1-release-manager): anchor narrow-scanner row by symbol, not line Line-anchored citation at mod.rs:319 pointed inside a doc-comment block — drift-prone per claude review's non-ask observation. Re-anchor to the stable symbols (IntegrationRsScan / integration_rs_active_line_contains); those survive editor churn in a way a doc-comment line number does not. * docs(briefs): release — testgen side of impossible-bugs trigger fully met (#722) MockBackedInvariant wiring landed in #722. Update Working state and decisions log: testgen half of the impossible-bugs re-dispatch trigger is now fully met (runner via #688/#705 + wiring via #722). Suite stays parked on Substrate T-LaneE and Surface T-Emit; idempotency-class proof rows are now dispatchable on testgen alone at Director's discretion. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs(briefs): release — correct #722 status (dispatch wired, evaluation still NYI) Codex review on #743 flagged P1 (Documentation Describes Live State): the brief claimed MockBackedInvariant runner was "[live]" after #722, but src/v3/compiler/src/test_runner.rs:454 still returns ClaimResult::NotYetImplemented for mock simulation. #722 wired dispatch + schema, not evaluation. Distinguish the two and revert the trigger status to half-met. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs(briefs): release — fix stale line anchor (test_runner.rs:454 → :461) Codex non-blocking nit on #743: line 454 is the Ok(name) arm; the NotYetImplemented return is at line 461. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs(briefs): release — cite eval_mock_backed_invariant by symbol, not line Codex flagged stale line anchor (:461 now points at LensOutputEquals after main moved). Switch to function-name citation with current line as a hint, so the next refactor doesn't re-stale this. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Opened from session-dashboard for session
lively-boar-414.