Repository navigation
docs(evaluator): R3 E4 branch readiness / blocker audit (docs-only) - #1388
Conversation
Records the exact E1 prerequisites E4 (Branch arm coverage) depends on, after STOP+PING acceptance in #1371/#1374 follow-on dispatch: 1. Runtime Value Rust mirror with at least LiteralValue + VariantValue { tag: DeclarationId, payload: Box<Value> } arms. 2. eval_port port-level demand-eval authority (consumes existing EvalStateStack::lookup + dag.port_opt(port).produced_by). 3. eval_node dispatch shell with all five Behavior arms, four returning NotYetImplemented placeholders until later slices fill. 4. Frame discipline reaching EvalStateStack<Value> instantiation — E2's helpers are generic on V; E4 consumes the instantiated stack. Also previews E4's eval_branch implementation per PR-B.1 §B.1.3 + acceptance tests, and names the STOP+PING boundary E4 must respect when unblocked. Cross-links E0 / E2 / PR-B.1 / dispatch brief. Docs-only; no Rust, no substrate, no tests. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Review metadata
The diff only adds Findings: None. Nothing here contradicts INVARIANTS.md (it reinforces single-authority / no parallel demand-eval and fail-closed diagnostics), docs/modeling-discipline.md (no new substrate types or Rust enums in the diff), CODING.md (Rust style applies to implementation code), or TESTING.md (docs-only; no new tests claimed as shipped). Verdict: APPROVE — Narrow, honest docs-only audit with explicit scope (“AUDIT”, “Out of scope”), point-in-time verification anchored to a named |
…ip before frame lookup Reviewer flagged on the merged E0 brief that "frame lookup first" allows a caller-supplied initial frame containing a nonexistent PortId to evaluate successfully — Fail-Closed violation. Carries the fix forward in this E4 readiness audit since E4's eventual implementation consumes eval_port: order is dag.port_opt(&port) → frame_lookup → producer-node demand-eval. A follow-on docs amendment should clarify E0's wording. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ult_port Reviewer flagged on merged E0: eval_value's signature lacked stack parameter, so a Value-produced PortId demand-eval would return Value without making the port readable — Facts-Flow-Forward violation. Carries the fix forward: E1 signature must be eval_value(node, stack: &mut EvalStateStack) and call stack.bind_top(node.result_port, value) before returning. Same producer-bind invariant for eval_transform / eval_loop / eval_branch (eval_bind already binds explicitly). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
7fbd92a8· Trigger:schedule - Thinking:
216s wall
BLOCKING (1)
Root Cause
docs/briefs/r3-evaluator-e4-branch-readiness-audit.mdE0 remains an unsuperseded boundary contract after this audit changes the required port-resolution order -> amend the E0 contract now or mark the exact E0 section superseded by this audit.
| Fail-Closed and "Every Dependency Is A Substrate Fact"). The E0 | ||
| brief's port-level contract said "frame lookup first" without | ||
| this prerequisite — E1's implementation must perform the | ||
| membership check ahead of frame lookup, and a follow-on docs |
There was a problem hiding this comment.
BLOCKING: The audit knowingly leaves E0's live eval_port contract with the opposite lookup order, so Documentation Describes Live State / Explicit Boundary Contracts require updating or explicitly superseding the E0 wording here.
…corrections Reviewer flagged that E0 remains authoritative while this audit changes the required eval_port order and the eval_value signature. Adds an explicit "Supersedes" §naming the two E0 sections this audit corrects (Port-level evaluation contract step 1; Per-Behavior slice fills eval_value signature) and notes E1 implementation MUST follow the audit wording until a follow-on E0 amendment lands. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Review metadata
APPROVE — Docs-only audit brief. New file under |
…51-pr-e-e4-readiness
|
Review metadata
APPROVE — docs-only audit brief, single new file under No findings. |
Summary
Per Director re-task after PR-E E4 STOP+PING was accepted: docs-only audit recording the exact E1 prerequisites E4 (Branch arm coverage) depends on. E4 implementation waits for E1 / E1.0 to land the runtime
ValueRust mirror andeval_node/eval_portshell.Brief contents
docs/briefs/r3-evaluator-e4-branch-readiness-audit.md:EvalFrame<V>/EvalStateStack<V>generic onV; E1 has not landed (verified via grep — no runtimeValuemirror, noeval_value/eval_node/eval_portoutsidelens_apply.rs::EvalCtxwhich operates onFieldValue).Value::VariantValue { tag: DeclarationId, payload: Box<Value> }access; (2)eval_portport-level demand-eval authority; (3)eval_nodedispatch shell with all fiveBehaviorarms (fourNotYetImplementedplaceholders); (4) Frame discipline reachingEvalStateStack<Value>instantiation.eval_branchper PR-B.1 §B.1.3, acceptance tests, balanced-stack invariant.Constraints upheld
Test plan
🤖 Generated with Claude Code