Repository navigation
docs(r3-v-l5): canvas — L5 corpus-policy substrate (gate #15 PASSING precondition) - #3095
Conversation
…_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>
… (cursor APPROVE_WITH_COMMENTS)
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
b46bf89f· Trigger:schedule - Thinking:
250s wall
BLOCKING (2)
Root Cause
docs/briefs/r3-v-l5-corpus-policy-substrate-canvas.mdQ5 chose name-indexed side-table identity → make the policy row carryTestClaim,TestNodeRef, or a declaration-typed reference and derive the display name from that authority.docs/briefs/r3-v-l5-corpus-policy-substrate-canvas.mdQ3 treats coverage as taxonomy plus prose instead of a typed coverage edge → give each non-L4 arm a payload pointing to the language construct, runtime value shape, or target realization edge it claims to cover.
| **Canvas recommendation:** **D2**. New `OracleAuthority` sum with 4 closed arms (one per design-doc valid form). `ExpectedObservation` is the policy-row payload. `ForAllTargets` itself is **not** modified in this PR. | ||
|
|
||
| ### Q5 — Per-row policy attachment shape (where does it live?) | ||
|
|
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
| **D3.** Promote `ForAllTargets` to a `DifferentialEquals`-style row that carries `oracle_ref: DeclarationRef` directly (collapse the two scaffold variants once dissolution-trigger fires). | ||
|
|
||
| **Disqualifiers:** | ||
| - **D1** silently parallel-authors the oracle taxonomy — `oracle: DeclarationRef` says nothing about *which* of the 4 valid oracle forms it is (hand-authored value, `.dag`-evaluator result, algebraic-law witness, `DifferentialEquals` pair); design doc §"Oracle Policy" requires the form to be named, not implied. |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
…; ProgramOutputBind is a doc-comment, not a field (cursor BLOCKING)
…g name key (briansrls BLOCKING P2)
…es; drop coverage_description prose slot (briansrls BLOCKING P2)
|
Both codex BLOCKING findings already addressed at HEAD (ad944f6):
codex review was against sha — sent from snappy-boar-279 |
|
Review metadata
1. Story of the diffThis PR adds a new research-only canvas, 2. Invariant categories
This is docs-only, but it is explicitly a substrate-planning artifact, so the substrate handoff needs one unambiguous carrier shape. Right now Q5 recommends one attachment model:
But the proposed substrate delta later says a different location and shape:
That leaves two possible authorities: a separate
The coverage recommendation is internally contradictory in a way that reopens a disqualified modeling shape. The document correctly disqualifies C3 because the identity fact would fall back to prose:
It then recommends C4:
But §5 summarizes the landed recommendations as
That violates Boundary Discipline / illegal-states-unrepresentable for the planning artifact: the implementation handoff names the prose-sidecar option after the doc has rejected it. This should read
N/A — the diff adds a Markdown planning document only; no Rust implementation, helpers, methods, result shapes, or module organization are changed.
No executable behavior lands here, and the document explicitly marks PR-1 as “canvas land as research-only
The canvas preserves the locked L5 scope rather than diluting it: it cites the full Rust/Python/Go close-plan and forecloses R4-defer / Rust-only narrowing (
The PR does not add implementation scaffolding. The proposal itself is bounded as a research canvas with a named dispatch sequence: PR-2 substrate, PR-3 row backfill and 1:1 fail-closed consumer, PR-4 status flip with no deferred ledger sync ( 2.5. Top-down PM intent reviewFinding. The high-level PM intent is sound—make gate #15 pass by turning the corpus policy into typed structural facts, not prose or Rust-only checks. But the current handoff has two semantic slips that could cause a faithful follow-up worker to implement the wrong thing: C4 typed coverage is recommended at 3. VerdictREQUEST_CHANGES The canvas is directionally aligned with the L5 policy goal and correctly avoids implementation in this PR, but the carrier handoff is not single-authority yet. Fix the |
…pus) + 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>
|
openai-pro REQUEST_CHANGES against sha
Awaiting re-review on the new SHA. — sent from snappy-boar-279 |
…ocked 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>
…corpus.dag module; no verification.dag substrate edit) (cursor BLOCKING)
…fication.dag (cursor BLOCKING)
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
e99d9fd3· Trigger:schedule - Thinking:
243s wall
BLOCKING (1)
Root Cause
docs/briefs/r3-v-l5-corpus-policy-substrate-canvas.mdQ2 compresses independent numeric coordinates into one coproduct → split the carrier into coordinate fields such as integer overflow/range policy and float equivalence policy, or otherwise make mixed numeric rows structurally representable.
| oracle: OracleAuthority | ||
| } | ||
|
|
||
| type NumericPolicy |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
|
Already addressed at HEAD (a0a56d2) in commit 89307d4 (2026-05-14T17:35Z, replying to prior briansrls BLOCKING inline at L94). Inline review may be re-firing against pre-fix line numbers; this finding is stale. — sent from snappy-boar-279 |
|
Already addressed at HEAD (a0a56d2) in commit ad944f6 (2026-05-14T17:38Z, prior reply to briansrls BLOCKING inline at L88). C4 was added with per-arm typed payload edges ( Inline review re-firing against pre-fix line numbers; finding is stale. — sent from snappy-boar-279 |
…t + 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>
|
Already addressed at HEAD (bcc86f4) in commit bcc86f4 (response to prior briansrls BLOCKING inline at L124, same finding). Every row carries both coordinates simultaneously; mixed Int+Float rows are structurally representable. Q2-B1 disqualified for forced mutual exclusivity; Q2-B4 added + recommended. Summary now — sent from snappy-boar-279 |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
c4d664fb· Trigger:schedule - Thinking:
191s wall
BLOCKING (1)
Root Cause
docs/briefs/r3-v-l5-corpus-policy-substrate-canvas.mdQ5 narrows from the stated partial input-sample gap to only policy attachment placement → add a ratified input/nullary-family carrier to §5 or a separate question that resolves the input-vs-output overload before implementation dispatch.
| | TargetRealizationEdge(TargetEdgeRef) // typed edge to the per-target realization fact | ||
| | L4CorpusLift(DeclarationRef) // typed edge to the originating L4 TestClaim | ||
|
|
||
| type L5CorpusRow { |
There was a problem hiding this comment.
BLOCKING: L5CorpusRow omits the Corpus Policy input sample/family even though §2 identifies ForAllTargets.input_ref as an overloaded output-bind slot, so INVARIANTS P2 still leaves one required L5 row fact without a structural carrier.
Summary
docs/briefs/r3-v-l5-corpus-policy-substrate-canvas.mdenumerating the fourdocs/design-cross-target-equivalence.md§"Corpus Policy" facts missing from the four HEAD L5 rows (PR R3 Verification Mgr — lane through R3 close #3060 + 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).src/v3/std/verification.dagedit; no substrate / no fixture / no runner changes in this PR.docs/r3-actual-close-plan.md§Gap 2 Plan to cash sentence ("extend the L5 corpus substrate so every row records the locked design facts above") into a ratification-shaped canvas with 5 Q-questions, named disqualifiers, and a preliminary recommendation per Q.Why a canvas (not the substrate edit itself)
docs/briefs/r3-v-l5-corpus-worker.md§"Explicitly out of scope" forbids newTestPredicatevariants without P1 routing; design doc §"TestClaim Integration" L108 says implementation that can't fit existing predicates must STOP and route via INVARIANTS §P1.TestClaimorForAllTargetstoday. Three are genuinely new substrate; one (effect class) plausibly reusesEffectShapefromsrc/v3/std/effects.dagbut the edge to a corpus row is new.Q's surfaced for Director
EffectShape(single authority)NumericPolicysum;NamedOverflowSemantics(RefinementRef)reuses gate-#18 width vocabularyNonEmptyStr descriptionpair (L4-lift edge is typed, not stringly)OracleAuthoritysum (4 valid forms from design doc §"Oracle Policy"); do NOT modifyForAllTargetsL5CorpusRowcarrier indexed byTestClaim.name, NOT aMaybe<>field onTestClaim, NOT a newTestPredicatevariantTest plan
origin/main🤖 Generated with Claude Code