Skip to content

MockBackedInvariant wiring - #722

Merged
briansrls merged 13 commits into
mainfrom
session/lively-boar-414
Apr 24, 2026
Merged

briansrls merged 13 commits into
mainfrom
session/lively-boar-414

Conversation

@briansrls

Copy link
Copy Markdown
Contributor

Opened from session-dashboard for session lively-boar-414.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review — good work, two coordination items before merge.

The eval_mock_backed_invariant dispatch, the fixture, and the requires: [] workaround comment are all exactly right. The fixture documentation (requires: [] is intentional) matches the brief. Here's what to address:

COORDINATION (must resolve before merge)

1. NotYetImplemented(String) also introduced in PR #717 (clever-owl-421, in review).

Both PRs independently changed ClaimResult::NotYetImplemented from a unit variant to NotYetImplemented(String). Whichever merges second will see a conflict. The fix depends on merge order:

2. resolve_declaration_ref_edge — signature conflict with #717.

Your version returns Result<String, String> (display name). #717's version returns Result<DeclarationId, String>. If both land, test_runner.rs will have conflicting definitions. Resolution depends on merge order:

BLOCKING (must do now)

Un-draft this PR to trigger CI. All checks are currently skipping. The logic looks correct but CI must pass before merge.

NON-BLOCKING

  • The m1_5_user_authored_lens_gate_test.rs additions (+11) look fine — just the testclaim_string_field helper usage.
  • No new .rs files so no SG-0 census update needed — correct.
  • mock_subject_ref: Int = 0 / mock_invariant_ref: Int = 0 as placeholder refs is the right pattern (matches how r1_lens_output_equals_gate.dag does it).

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.

briansrls added a commit that referenced this pull request Apr 24, 2026
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@briansrls
briansrls marked this pull request as ready for review April 24, 2026 06:37
@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: claude / claude-opus-4-7
  • Commit: 1cab2ebd · Trigger: schedule
  • Thinking: 238s wall

Review already delivered above. The background test run completed successfully (exit 0); no changes to my verdict.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: codex / codex-default
  • Commit: 1cab2ebd · Trigger: schedule
  • Thinking: 338s wall

Findings

  • BLOCKING: src/v3/compiler/tests/fixtures/r1_mock_backed_invariant_gate.dag:20 uses MockBackedInvariant({ ... }), but the current lowerer treats that as one positional record payload and reports ArityMismatch { expected: 2, actual: 1 } plus an opaque-body diagnostic. This violates TESTING.md’s executable behavior-receipt discipline: the new fixture/test path does not compile cleanly, so the runner dispatch is not actually exercised. Use the currently-supported positional form, e.g. MockBackedInvariant(mock_subject_ref, mock_invariant_ref), or land the lowering support for named variant payloads in the same PR.

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: cargo test -p v3-compiler --test integration test_runner -- --nocapture failed with 11 passed, 2 failed, both on the new MockBackedInvariant({ ... }) syntax.

briansrls added a commit that referenced this pull request Apr 24, 2026
… 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>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 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".

Comment on lines +20 to +23
predicate: MockBackedInvariant({
subject: mock_subject_ref,
invariant: mock_invariant_ref
}),

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge 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 👍 / 👎.

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.

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).

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: claude / claude-opus-4-7
  • Commit: aaac1d23 · Trigger: schedule
  • Thinking: 28s wall

Verdict: APPROVE — diff is small, narrowly scoped, and honestly labeled. The MockBackedInvariant dispatch resolves both DeclarationRef edges and then explicitly returns NotYetImplemented(reason) with a named dissolution trigger ("service simulation is not wired"), which is a tracked bridge, not hidden scaffolding. The fixture's requires: [] and its rationale are documented inline. Tests assert the actual reason string, so when simulation lands the ratchet flips naturally.

Exploratory observations (optional, non-blocking):

  • test_runner.rs:13 — widening NotYetImplemented to carry a String is a nice small improvement (facts flow forward: the "why" rides with the verdict instead of being reconstructed by callers). Worth considering whether Fail paths elsewhere in this file would benefit from the same structured-reason treatment over free-form strings, but that's for another PR.
  • test_runner.rs:268 — resolve_declaration_ref_edge currently only special-cases FieldValue::Record(fields) if fields.is_empty() for a nicer error; every other non-Reference variant falls through to {other:?}. Fine for now, but if more predicates take DeclarationRef edges, this probably wants to move next to the DeclarationRef type itself as a shared helper rather than living private to the mock path.
  • Fixture comment at r1_mock_backed_invariant_gate.dag:4-8 is exactly the kind of "why this shape" note that ages well — keep doing this.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: codex / codex-default
  • Commit: aaac1d23 · Trigger: schedule
  • Thinking: 286s wall

Verdict: APPROVE

Diff is narrowly scoped, the MockBackedInvariant path fails closed with NotYetImplemented(reason) rather than fabricating a pass, and the fixture documents the temporary requires: [] bridge with a clear trigger. No concrete invariant, modeling, coding, or testing violations observed.

Verified with cargo test -p v3-compiler test_runner: 13 targeted tests passed.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: claude / claude-opus-4-7
  • Commit: 1b5a87b3 · Trigger: schedule
  • Thinking: 22s wall

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 MockBackedInvariant that resolves the two DeclarationRef edges and returns an explicit not-yet-wired reason, and adds a fixture + integration tests. The fixture comment correctly flags the requires: [] scaffold and names the dissolution trigger ("when service simulation lands").

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 requires: [] shortcut is documented with a bounded, named dissolution trigger (tracked bridge, not hidden debt). Tests pin both the dispatch path and the compile-clean shape. No INVARIANTS / modeling / CODING / TESTING violations observed in the diff.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: codex / codex-default
  • Commit: 1b5a87b3 · Trigger: schedule
  • Thinking: 313s wall

Verdict: APPROVE

Diff is small and narrowly scoped. I don’t see concrete violations of the pinned modeling, coding, or testing discipline; the MockBackedInvariant path stays typed/deferred rather than fabricating success, and the fixture documents the temporary empty-requires bridge.

Validated with:
cargo test -p v3-compiler --test integration test_runner -- --nocapture
cargo test -p v3-compiler --test integration r1_mock_backed_invariant_gate_fixture_compiles_against_bootstrap_context -- --nocapture

@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: 1b5a87b3 · Trigger: schedule
  • Thinking: 168s wall

Non-blocking — Strengths

  • src/v3/compiler/tests/fixtures/r1_mock_backed_invariant_gate.dag The 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.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: claude / claude-opus-4-7
  • Commit: 98296aa3 · Trigger: schedule
  • Thinking: 78s wall

Findings

  • src/v3/compiler/src/test_runner.rs:243-272 — eval_mock_backed_invariant is semantically identical to eval_compiles, but it reports Pass. The subject and invariant DeclarationRef edges are resolved only to be interpolated into failure messages; nothing about the claimed invariant/subject relationship is actually checked. Any MockBackedInvariant(...) claim whose source compiles cleanly will report Pass regardless of whether the invariant holds for the subject under any mock. That is a fabricated plausible result — it violates INVARIANTS.md P3 / C-8 Fail-Closed ("every path either succeeds fully or fails with a typed diagnostic; no fabricated plausible output"). The honest signal here is ClaimResult::NotYetImplemented("MockBackedInvariant mock simulation not yet wired"), matching the new NYI-with-reason shape the PR introduces at test_runner.rs:107-109. The "degenerate no-resource path" rationale in the fixture comment (r1_mock_backed_invariant_gate.dag:3-7) doesn't rescue this: it's an argument for why requires: [] is OK for fixture purposes, not for why a fully-discarded subject/invariant should return Pass.

  • src/v3/compiler/tests/integration/test_runner_test.rs:345-360 test_runner_mock_backed_invariant_fails_when_subject_source_fails — the test name claims to verify a failing subject, but the assertion only checks that the Fail reason string contains "subject_ref" and "invariant_ref", which is guaranteed by the error-message interpolation in eval_mock_backed_invariant regardless of whether the subject actually matters. Combined with the previous finding, this test bakes in the fail-open behavior rather than catching it. Consider asserting on the diagnostic content from claim.source failing (e.g. type mismatch Bool = 1), which is what actually drives the failure today. Relates to TESTING.md behavior-driven discipline: the test's name implies a property it isn't checking.

Verdict

REQUEST_CHANGES — returning Pass for MockBackedInvariant when nothing about the invariant has been verified fabricates a plausible result and violates P3 Fail-Closed. The structural plumbing (DeclarationRef edges, fixture, NYI-with-reason) is in good shape; the right landing is to keep all of it but route the evaluator to NotYetImplemented("...mock simulation not wired...") until real simulation lands, and update the failing-subject test to assert on the real failure signal.

Exploratory observations

  • dag.diagnostics().iter().collect::<Vec<_>>() at test_runner.rs:266 is a no-op round-trip — dag.diagnostics() is presumably already sliceable; formatting it with {:?} directly would do the same thing without the allocation.
  • The fixture comment usefully documents why requires: [] is intentional, but it doesn't name a dissolution trigger for the bigger scaffold (when does eval_mock_backed_invariant stop being a compile-and-shrug?). A one-line pointer to the tracking issue/doc for real mock simulation would convert this from "unstated debt" to "tracked bridge" per the tracked vs untracked debt rule.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: codex / codex-default
  • Commit: 98296aa3 · Trigger: schedule
  • Thinking: 212s wall

Findings

  • [BLOCKING] src/v3/compiler/src/test_runner.rs:263 and src/v3/compiler/tests/integration/m1_5_testgen_test.rs:376 now treat MockBackedInvariant as passing whenever claim.source compiles cleanly. That does not evaluate the subject, invariant, or mock-backed obligation; it converts unsupported/unmaterialized invariant checking into a green result. This violates INVARIANTS.md P3 Fail-Closed: unresolved support should fail or remain typed as not implemented, not fabricate success.

Verdict: REQUEST_CHANGES. The focused tests pass, but they currently cement the false-positive behavior rather than proving the invariant path.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: claude / claude-opus-4-7
  • Commit: 85b9803a · Trigger: schedule
  • Thinking: 33s wall

Verdict: APPROVE — diff is small and narrowly scoped to wiring MockBackedInvariant through the runner's predicate dispatch as a typed NYI.

Notes on why this is clean:

  • ClaimResult::NotYetImplemented(String) remains a distinct non-Pass variant; eval_mock_backed_invariant (test_runner.rs:243-263) explicitly returns NYI rather than fabricating a Pass — fail-closed preserved. The test_runner_mock_backed_invariant_does_not_fabricate_pass_for_clean_source test locks that in.
  • Payload shape is validated before returning NYI (test_runner.rs:247-257), and the resolve_declaration_ref_edge helper gives typed diagnostics for the wrong shape — consistent with CODING.md (data + free helpers, explicit error strings).
  • Fixture lives in tests/fixtures/ not src/v3/std/, with a comment explaining the requires: [] choice and naming the dissolution trigger (T-TestGen) — tracked-bridge properties all present.
  • Test coverage matches the new behavior: dispatch test, clean-source no-Pass test, and the updated "other NYI" test now uses BehavioralObservation so we still cover the default arm after MockBackedInvariant became typed.

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.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: codex / codex-default
  • Commit: 85b9803a · Trigger: schedule
  • Thinking: 173s wall

Verdict: APPROVE

Diff is narrowly scoped to wiring MockBackedInvariant into the Rust test runner as a typed NotYetImplemented path, with payload validation and no fabricated pass. I didn’t find concrete violations of the pinned invariants, coding guidance, or testing discipline.

Verified:
cargo test -p v3-compiler --test integration test_runner -- --nocapture
cargo test -p v3-compiler --test integration r1_mock_backed_invariant_gate_fixture_compiles_against_bootstrap_context -- --nocapture

@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: 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.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: claude / claude-opus-4-7
  • Commit: 4d9f601f · Trigger: schedule
  • Thinking: 31s wall

Findings: None.

Verdict: APPROVE — Small, disciplined wiring change. MockBackedInvariant moves from the generic _ fallthrough to a typed NYI path that (a) validates payload shape, (b) resolves the DeclarationRef edges, and (c) returns NotYetImplemented with a specific reason rather than fabricating Pass — explicitly guarded by test_runner_mock_backed_invariant_does_not_fabricate_pass_for_clean_source. This is fail-closed behavior with tracked debt (clear "not wired yet" message, named T-TestGen dissolution trigger in the fixture comment). Extending NotYetImplemented to carry a reason string is a good shape improvement; the one existing call site is updated and the new match uses matches! with a reason substring check. Fixture lives under tests/fixtures/ with a comment explaining why it isn't auto-staged into bootstrap and why requires: [] is intentional — exactly the kind of bounded scaffold CODING/MODELING wants.

Exploratory observation (optional): resolve_declaration_ref_edge is local to test_runner.rs; if other predicates (LensOutputEquals, etc.) already duplicate this "FieldValue::Reference → declaration name" pattern, it could become a shared helper later. Not asking for it in this PR.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: codex / codex-default
  • Commit: 4d9f601f · Trigger: schedule
  • Thinking: 192s wall

Verdict: APPROVE — diff is narrowly scoped and I don’t see concrete violations of the pinned invariants. The new MockBackedInvariant path stays fail-closed/typed-NYI, keeps mock transport authority on requires, and the fixture documents its temporary gate shape.

Verified with git diff --check origin/main...HEAD, cargo test --test integration test_runner_ -- --nocapture, and cargo test --test integration r1_mock_backed_invariant_gate_fixture_compiles_against_bootstrap_context -- --nocapture.

@briansrls

Copy link
Copy Markdown
Contributor Author

Director review (tidy-koi-422): Converging → merge.

  • MockBackedInvariant dispatch resolves both DeclarationRef edges, then returns NotYetImplemented with a human-readable reason naming the unresolved mock-simulation step. Matches the "typed NYI reason, never silently ignored" pattern landed by feat(v3): dispatch LensOutputEquals in test runner (lens output is queryable data) #717/feat(v3): AlgebraicLaw runner + lens_composition_associative gate (#716) #728. ✓
  • ClaimResult::NotYetImplemented(String) carries the reason — aligns with fail-closed discipline (every detectable problem surfaces a message).
  • Fixture lives under tests/fixtures/ (not src/v3/std/), so it is not auto-staged into bootstrap. requires: [] is called out explicitly.
  • Structural tests prove: (a) predicate accepts DeclarationRef edges, (b) dispatch fires on the fixture, (c) a clean-compiling source does not fabricate a Pass.
  • All 4 CI checks green.

Squash-merging.

@briansrls

Copy link
Copy Markdown
Contributor Author

Merge blocked — conflicts with main after #728 landed.

#728 (AlgebraicLaw) also touches src/v3/compiler/src/test_runner.rs around ClaimResult, the dispatch match in run_claim, and the fn-variant imports. Squash-merging #728 flattened those changes onto main and they collide with this branch.

Please merge origin/main into session/lively-boar-414 and resolve:

  • ClaimResult::NotYetImplemented(String) — already your change; take yours.
  • run_claim match arms — take union (MockBackedInvariant from here, AlgebraicLaw from main).
  • use crate::dag::{…} — union both import lists.
  • Any _ => fallback in the match — keep the one with the format!("…is not wired…") message from this branch (consistent wording now across the runner).

No scope changes expected; push and CI should go green immediately.

# Conflicts:
#	src/v3/compiler/src/test_runner.rs
@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: codex / codex-default
  • Commit: 64761e06 · Trigger: schedule
  • Thinking: 151s wall

Verdict: APPROVE

The diff is narrowly scoped, keeps MockBackedInvariant fail-closed as NotYetImplemented, and does not introduce a duplicate mock transport authority. Focused checks passed: cargo test -p v3-compiler test_runner and the new gate fixture compile test.

@briansrls

Copy link
Copy Markdown
Contributor Author

Merge blocked again — conflicts with main after #717 landed.

Same pattern as before: #717 (LensOutputEquals) touched src/v3/compiler/src/test_runner.rs dispatch arms and ClaimResult::NotYetImplemented(String). Squash-merge flattened those onto main.

Please merge origin/main into session/lively-boar-414 and resolve:

  • run_claim match — take the union of arms (main now has LensOutputEquals + AlgebraicLaw; keep yours for MockBackedInvariant).
  • ClaimResult::NotYetImplemented(String) — already present on both sides; take yours.
  • _ => fallback wording — main uses TestPredicate \{label}` is not implemented in the Rust test runner`; either wording is fine, pick one and stay consistent.
  • use crate::dag::{…} — union the imports.

Push once resolved; CI should pass quickly and I'll squash-merge.

@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: 4d9f601f · Trigger: schedule
  • Thinking: 180s wall

Non-blocking — Strengths

  • src/v3/compiler/src/test_runner.rs MockBackedInvariant 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.dag The 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
@briansrls
briansrls merged commit 050ce5f into main Apr 24, 2026
3 checks passed
briansrls added a commit that referenced this pull request Apr 24, 2026
… 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>
briansrls added a commit that referenced this pull request Apr 24, 2026
…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>
briansrls added a commit that referenced this pull request Apr 24, 2026
…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>
briansrls added a commit that referenced this pull request Apr 24, 2026
…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>
briansrls added a commit that referenced this pull request Apr 24, 2026
* 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>
briansrls added a commit that referenced this pull request Apr 24, 2026
…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>
@briansrls
briansrls deleted the session/lively-boar-414 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