Repository navigation
Conversation
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
029f6fb0· Trigger:schedule - Thinking:
430s wall
BLOCKING (1)
Root Cause
src/v2/02_parse.dagidentity was added at selected construction sites instead of enforced through a canonical Node copy/update path → route Node rebuilds through identity-preserving helpers or copy ident everywhere the node is rebuilt.
| let r3 = expect(tokens: type_args.tokens, expected: ExpectGt) | ||
| if has_err(err: r3.err) { return TypeResult { type_expr: dummy_te, tokens: r3.tokens, ctx: type_args.ctx, err: r3.err } } | ||
| let te = Node { name: type_name, span: start_span, ident_span: Some { value: start_span }, children: type_args.args, connective: NoConnective, params: [], inferred: none, return_cardinality: Required, uses: [], body: none, transport: none, properties: [], type_annotation: none, is_self_recursive: false, has_non_tail_self_call: false, match_pattern: none, expr_data: NoExprData } | ||
| let te = Node { name: type_name, ident: type_ref_ident(intern_table: ctx.intern_table, name: type_name), span: start_span, ident_span: Some { value: start_span }, children: type_args.args, connective: NoConnective, params: [], inferred: none, return_cardinality: Required, uses: [], body: none, transport: none, properties: [], type_annotation: none, is_self_recursive: false, has_non_tail_self_call: false, match_pattern: none, expr_data: NoExprData } |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
Feedback triage (HEAD
|
| Suite | Result |
|---|---|
pd3_ (12 tests) |
pass |
m1_brand_twins_over_refined_base_remain_distinct_in_infer_representation |
pass |
item_ident_spans_point_at_identifiers_not_keywords |
pass |
CI (8b738e) |
all green |
Note: chained_type_alias_field_access / indirect_type_alias_cycles_do_not_recurse_forever also fail on origin/main — pre-existing, not introduced by this PR.
— sent from eager-seal-256
Feedback triage: cursor APPROVE @
|
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
8b738e47· Trigger:schedule - Thinking:
476s wall
Non-blocking — Strengths
src/v2/04_resolve.dagClassified as code; the changed resolve path keeps identity in Node.ident while leaving ident_span as source-location data.
✅ No blocking concerns in the changed lines.
Feedback triage: codex @
|
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
2a8602e3· Trigger:schedule - Thinking:
638s wall
✅ No blocking concerns in the changed lines.
Feedback triage: codex @
|
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
45b743cf· Trigger:schedule - Thinking:
383s wall
Non-blocking — Strengths
src/v2/04_resolve.dagThe resolve path preserves declaration identity through ident while keeping ident_span tied to the structural source location, which matches the side-channel plan.
✅ No blocking concerns in the changed lines.
Feedback triage: codex @
|
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
02928eef· Trigger:schedule - Thinking:
243s wall
Non-blocking — Strengths
src/v2/04_resolve.dagAlias peeling now preserves declaration identity in ident while keeping ident_span tied to the structural source location.
✅ No blocking concerns found in the changed lines.
Feedback triage: codex @
|
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
dc0e9671· Trigger:schedule - Thinking:
423s wall
✅ Classified as code/substrate changes; no blocking concerns in the changed lines.
Feedback triage: codex @
|
…xist; T-9 rides #4581 Audited 2026-06-09 against the live tree: call-graph extraction is not readable as substrate facts today, three layers deep — (1) zero production writers of dependency_binds_to_edge (4 lens fixtures only; dependency.dag's own T-9 marker confirmed unbuilt); (2) resolve_atom materializes canonicalized spelling, not reference (spelling re-join would rebuild the channel BRAND is dissolving); (3) no stage produces ComputationNode trees and no FunctionRef carrier is landed — call sites have no v4 representation. Fix: T-9 BindsTo materialization lands as a rider on #4581's binding_id stamping (same write, same seam), serving the dependency classifier, structural_resolution lens, and this checker with one producer. Slice step 2 now gated on that producer. https://claude.ai/code/session_018QC433THjRyqiHuP8czPi4
Measured: the THESIS computation substrate is consumable shapes with zero producers — no stage builds ComputationNode trees, no FunctionRef carrier landed, eval's Transform arm is a call_primitive slot, and the mvp1 'emitted add fn' is a TypeNode Arrow signature (the T0/RTADD/T1 receipts are type-expr-tier). Sized as a first-class node: wave 0 carriers ride #4581 binding_id + the T-9 rider (no new FunctionRef carrier, fewer variants; body = Arrow.body per E-9); wave 1 keystone = source-ingested add body through parse/resolve/infer/eval by execution (~PROV-sized); waves 2-4 behaviors/translate/breadth. Gates SELFHOST facets 1-2 (co-equal with SPINE), termination-checker layer 3, emit ladder T4+, STAGE-ADOPTION. Recommends honest relabeling of T0/RTADD/T1 as signature-tier in the dep graph. Cross-linked from the termination design's prerequisite section. https://claude.ai/code/session_018QC433THjRyqiHuP8czPi4
… seam closures New: design-node-identity-channels.md — single P2 authority for Node- carried fields and equality participation (binding_id IN / occurrence id OUT / BindsTo rides the binding_id channel); #4581 is the linchpin seam; landing order fixed; allocator-determinism obligation flagged to #4581 (DB-8/fixed-point back door). PROV Q-P2 resolved against it; COMPREP wave 0 lands through it. Seam closures: Map Q-M1 reconciled to canonical-order-is-representation (insertion-order draft withdrawn; canonical total order on keys named as the introduced requirement); map_get/match_pattern bridge deletion ownership assigned to the Map landing with the Optional sweep explicitly excluding the site (deep flavor => one co-landed PR); value-set de-gated from the termination checker (structurally terminating; checker validates it later, nothing waits). https://claude.ai/code/session_018QC433THjRyqiHuP8czPi4
…e, bidirectional coercion, self-host, Map, PROV, carrier-axis) (#4605) * docs: design — termination checker (fuel-elimination lane C1) Checker-not-discoverer design for replacing remaining/fuel threading in 06_translate with validated descent proofs: carrier upgrades in v4.std.cardinality (lexicographic TerminationProof + ProofEdge port), SCC checker ported from dsl/std/{termination,graph}.dag onto v4.std.dependency, serialize_type_expr_* cluster as the minimal slice, fuel-triad dissolution ratchet (40 remaining-params / 20 guards -> 0). https://claude.ai/code/session_018QC433THjRyqiHuP8czPi4 * docs: design — general value-set lattice (non-integer containment) Closed description family (Empty/Universal/IntegerInterval/Enumeration/ Product/TaggedUnion) with anchor-gated structural containment, semantic strictness replacing R1's syntactic !=, integer_value_set fold-in per its own dissolve-on-arrival marker, R1/R2 as the executing consumers, and the decidability carve stated honestly (predicate refinements stay refusal). https://claude.ai/code/session_018QC433THjRyqiHuP8czPi4 * docs: design — bidirectional emit/ingest as one declared coercion relation One FormalGrammar production-row set per target, both directions derived as interpreters over the same rows; production selection = find_witness over a closed candidate set; four static bidirectionality obligations (slot bijection, forward/backward determinism, declared quotient); inverse-aware constraints on emit ladder T3-T6; home-language add-subset slice with round-trip claim as the inverse proof. Notes dangling CP-1b anchors (TASKS.md, design-v4-compiler-homomorphism.md). https://claude.ai/code/session_018QC433THjRyqiHuP8czPi4 * docs: design — self-host fixed point (v4 bootstrap ratchet) Precise oracle (stage1==stage2 bit-identical over a declared artifact set, DB-8 prerequisite, located divergence diffs), hand_maintained_src as declared data + census sweep with per-entry dissolution triggers, four-stage plan honoring the emit-ladder gate (stage A buildable now: zip-fold equality wiring + census; B per-module convergence ladder; C whole-compiler promotion, operator-gated pins; D diverse double- compilation). Notes SELF_HOSTING.md path drift (lives in src/v3/). https://claude.ai/code/session_018QC433THjRyqiHuP8czPi4 * docs: design — Map representation unification (extensional data, one equality authority) Map<K,V> re-shaped from stored-closure partial function to finite extensional entry data (the P1 nickname fix); map_get signature preserved, body honest; PartialFunction<K,V> carrier for the intensional concept with derivable one-way map->function projection; v2 raw_map_lookup dual-dispatch chokepoint + match_pattern bridge delete; closes B-MAP-LOOKUP-OPTION-C-1, B-LOOKUP-1, finite-set-uniqueness markers in one landing. #4564 runtime semantics are the regression floor; iteration-order (DB-8) escalated as Q-M1. https://claude.ai/code/session_018QC433THjRyqiHuP8czPi4 * docs: designs — provenance occurrence-id anchoring (PROV/T-8) + carrier-core-axis decision memo PROV: opaque occurrence id stamped on Node (brand-channel playbook), span data off-tree in a per-compile SpanIndex keyed by id, reusing Locus/Extent ByteRange as the span carrier; one equality-exclusion rule at the single equality authority; carried/derived transport receipts; fail-closed Unanchored/NoEnclosingOccurrence outcomes. Written as input to the HELD operator scoping decision. Carrier axis: decision criterion (functional dependency => coincidence obligation, not a sixth axis; independent pair => ModelCoreFactAxisCarrier) with a measure-first census as the front door; folding into Encoding rejected on both branches. https://claude.ai/code/session_018QC433THjRyqiHuP8czPi4 * docs: tracking memo — Optional match-surface consistency (T3 root-cause, lane adhoc-ce8d7ae6) Records the measured T3 root-cause (substrate-consistency defect, not the positional-vs-labeled model question — the witness never compiled) and registers conditional #9 (Optional-representation unification, sibling of #5 Map). Branch criterion: surface flavor => bounded arm-normalization sweep; deep flavor => #9, co-landing with the Map map_get/match_pattern bridge. Grounds the defect class at collection.dag:28/112 (canonical Present|Absent vs Some/None arms over a Witness-typed value). Flavor unmeasured; the lane reports it. https://claude.ai/code/session_018QC433THjRyqiHuP8czPi4 * docs: apply operator rulings to design open questions (2026-06-09) Q-B1: commitment reframed as the four obligations, not a formalism — grammar formalisms are modeled data; PEG may exist as parse-only; bidirectional verdict = passing obligations 1-4. Q-M1: canonical key order IS the Map representation (one order, plain structural equality, DB-8 by construction; no insertion-order concept). Q-V2: no new CoercionMismatchKind variant (fewer variants for now). Q-T2: gate-in-infer confirmed; checker made relocation-cheap by construction (pure substrate function; infer holds only the gating wire). Q-S2: wave-1 artifact set = emitted .rs; committed-.rs-era transition noted as its own lane re-declaring the compare set. Q-S3: pin rotation operator-GO only, confirmed. https://claude.ai/code/session_018QC433THjRyqiHuP8czPi4 * docs(termination): FunctionRef/call-graph audit — producer does not exist; T-9 rides #4581 Audited 2026-06-09 against the live tree: call-graph extraction is not readable as substrate facts today, three layers deep — (1) zero production writers of dependency_binds_to_edge (4 lens fixtures only; dependency.dag's own T-9 marker confirmed unbuilt); (2) resolve_atom materializes canonicalized spelling, not reference (spelling re-join would rebuild the channel BRAND is dissolving); (3) no stage produces ComputationNode trees and no FunctionRef carrier is landed — call sites have no v4 representation. Fix: T-9 BindsTo materialization lands as a rider on #4581's binding_id stamping (same write, same seam), serving the dependency classifier, structural_resolution lens, and this checker with one producer. Slice step 2 now gated on that producer. https://claude.ai/code/session_018QC433THjRyqiHuP8czPi4 * docs: sizing — COMPREP (function bodies in the v4 pipeline) Measured: the THESIS computation substrate is consumable shapes with zero producers — no stage builds ComputationNode trees, no FunctionRef carrier landed, eval's Transform arm is a call_primitive slot, and the mvp1 'emitted add fn' is a TypeNode Arrow signature (the T0/RTADD/T1 receipts are type-expr-tier). Sized as a first-class node: wave 0 carriers ride #4581 binding_id + the T-9 rider (no new FunctionRef carrier, fewer variants; body = Arrow.body per E-9); wave 1 keystone = source-ingested add body through parse/resolve/infer/eval by execution (~PROV-sized); waves 2-4 behaviors/translate/breadth. Gates SELFHOST facets 1-2 (co-equal with SPINE), termination-checker layer 3, emit ladder T4+, STAGE-ADOPTION. Recommends honest relabeling of T0/RTADD/T1 as signature-tier in the dep graph. Cross-linked from the termination design's prerequisite section. https://claude.ai/code/session_018QC433THjRyqiHuP8czPi4 * docs: portfolio-review fixes — Node identity-channel authority + four seam closures New: design-node-identity-channels.md — single P2 authority for Node- carried fields and equality participation (binding_id IN / occurrence id OUT / BindsTo rides the binding_id channel); #4581 is the linchpin seam; landing order fixed; allocator-determinism obligation flagged to #4581 (DB-8/fixed-point back door). PROV Q-P2 resolved against it; COMPREP wave 0 lands through it. Seam closures: Map Q-M1 reconciled to canonical-order-is-representation (insertion-order draft withdrawn; canonical total order on keys named as the introduced requirement); map_get/match_pattern bridge deletion ownership assigned to the Map landing with the Optional sweep explicitly excluding the site (deep flavor => one co-landed PR); value-set de-gated from the termination checker (structurally terminating; checker validates it later, nothing waits). https://claude.ai/code/session_018QC433THjRyqiHuP8czPi4 * docs: fix doc_refs CI (regen doc-chain) + resolve T3 dual-authority seam - docs/thesis/doc-authority.md: regenerate embedded doc-chain via check_doc_refs.py --write-graph (new design docs joined the graph; the stale chain was the doc_refs CI failure). - design-bidirectional-coercion.md §6: precedence note — rows-not- closures remains the direction authority; the T3 fold-carrier binding decision (incl. positional/labeled discipline) lands only after the one bounded run, with design-optional-surface.md §4 as the single authority for sequencing (review thread r3384485736). https://claude.ai/code/session_018QC433THjRyqiHuP8czPi4 --------- Co-authored-by: Claude <noreply@anthropic.com>
…1/A.2) Runtime architecture: pure total core (no panics by construction — modeled refusal vs host fault, never collapsed); effects reified as typed requests minted only against declared EffectSignatures (purity structurally enforced, fail-closed at eval); handlers as extdeps/ runtimes bundles (pure/test, host via the one host_run door, dispatch); arena-per-run store under P4; run-loop = bounded fold over the #4566 RunnableFrontier; dispatch-is-an-effect unifies Brief D as one handler; answers D's five-question input spec inline. Co-keystone slice with COMPREP wave 1 + an effects slice under the pure handler bundle. Brand phase 2: mint-once at the declaring module keyed by QualifiedName; imports reference and re-exports preserve binding_id through the 03_name_resolve Admission carrier (no spelling-joins at module boundaries); corpus determinism decision escalated — canonicalized allocation (rec) vs content-derived ids, touching in-flight #4581; slice includes the cross-module A3 brand-twin rejection and an order-perturbation determinism claim. Doc-chain regenerated. https://claude.ai/code/session_018QC433THjRyqiHuP8czPi4
|
Closing to avoid confusion — this PR implements the SUPERSEDED design. The brand-identity work was re-ratified to the binding_id approach in #4587 (Amendment 4) after codex proved the original Node.ident/ident_span approach unsound (an InternTable spelling-id is NOT declaration identity). This PR's code is still the old approach (16 with_authored_identity/ident_span-graft sites, zero binding_id), so it can never meet the undraft receipt matrix (you can't prove 'authority-direct binding_id' with code that has no binding_id). Rather than untangle, the binding_id implementation restarts fresh on the #4587 6-step contract (substrate BindingId/TypeDeclBinding/decl_registry → build_type_env registration → atomic ident_span-graft deletion + with_preserved_binding_id → PD-3 compares binding_id → dogfood → Amendment-4 guardrails) with the full by-execution receipt matrix (incl. the 11/11 adversarial PD-3 suite ported from #4536, brand-twins reject by execution, one origination site). No work is lost that the new design doesn't redo correctly; the #4536 verification + the #4587 design are the durable artifacts. — sent from still-raven-546 |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
1c746198· Trigger:schedule - Thinking:
437s wall
BLOCKING (1)
Root Cause
src/v2/04_types.dagLeaf declaration identity was modeled as a local compatibility check instead of the single leaf-type equality authority → route node_type_equals/core leaf cases through the same identity comparison.
| @@ -769,7 +780,7 @@ fn node_type_compatible(left: Node, right: Node, source_indices: Map<String, New | |||
| else { node_type_compatible(left: left_inner, right: right_inner, source_indices: source_indices) } | |||
There was a problem hiding this comment.
Invariant violation: BLOCKING: Identity-aware leaf comparison is only wired into node_type_compatible; node_type_equals remains authored-name based for callers like src/v2/04_access.dag:88, so honest ident_span can collapse distinct brands and violates Facts Flow Forward.
… phase-2 designs (#4609) * docs: compute-fabric design briefs A-D + PROV status flip Four grounded designs for the compute fabric (the coercion flip applied to provisioning), rebased onto merged #4605: - design-compute-request.md (A): ComputeRequest as a typed fact-bundle — dimensioned interval resource asks, closed capability vocabulary with per-kind satisfaction rules, workload effect facts; lands only inside the A+B+C slice (no request type without its resolver). - design-compute-providers.md (B): ComputeProvider concept in std/, homelab/gcp instances in extdeps/compute/; availability classes carry obligation sets discharged structurally against workload effect facts (Preemptible => re-runnable via the effects partition); declared-vs- reality divergence detected fail-closed at dispatch; unify-with-OaaS_v2 argued over greenfield (P5). gunb.ai-side grounding marked out-of-clone. - design-compute-policy-selection.md (C): compute_select as a find_witness domain wrapper (constraints.dag precedent) plugging into the existing MultiplicityPolicy/TargetDeclaredPriority seam; policy = declared lexicographic ordering over dimensioned objectives; ties and zero-satisfier cases refuse with a per-candidate located report; no fold variant added; A+B+C slice with 5 claims is prototypable now. - design-compute-dispatch.md (D): gated dependency statement — OaaS_v2 bridge contract with P2 host-boundary discipline (no implicit re-execution; re-selection is declared policy), dissolution trigger on the native runtime path, and the 5-question input spec the runtime- architecture design must answer for its first real consumer. Also: design-provenance-span.md status flipped HELD -> dispatched (operator GO 2026-06-09, #4592); doc-chain regenerated. https://claude.ai/code/session_018QC433THjRyqiHuP8czPi4 * docs: v4 runtime-architecture + brand phase-2 designs (design-TODO A.1/A.2) Runtime architecture: pure total core (no panics by construction — modeled refusal vs host fault, never collapsed); effects reified as typed requests minted only against declared EffectSignatures (purity structurally enforced, fail-closed at eval); handlers as extdeps/ runtimes bundles (pure/test, host via the one host_run door, dispatch); arena-per-run store under P4; run-loop = bounded fold over the #4566 RunnableFrontier; dispatch-is-an-effect unifies Brief D as one handler; answers D's five-question input spec inline. Co-keystone slice with COMPREP wave 1 + an effects slice under the pure handler bundle. Brand phase 2: mint-once at the declaring module keyed by QualifiedName; imports reference and re-exports preserve binding_id through the 03_name_resolve Admission carrier (no spelling-joins at module boundaries); corpus determinism decision escalated — canonicalized allocation (rec) vs content-derived ids, touching in-flight #4581; slice includes the cross-module A3 brand-twin rejection and an order-perturbation determinism claim. Doc-chain regenerated. https://claude.ai/code/session_018QC433THjRyqiHuP8czPi4 * docs: review fixes — selection-seam overload removed, dispatch wait-bound made structural r3384872268 (accepted): compute_select no longer overloads TargetDeclaredPriority.priority with an ordering meaning — verified find_witness_realized treats priority as an exact selected candidate (identical routing to UserSelected), so the overload would give one carrier two type-indistinguishable meanings (P2). The ordering is now a compute-domain ComputePolicy carrier; the wrapper computes the lexicographic argmax (ties refuse) and invokes find_witness with UserSelected{argmax}; find_witness carriers untouched. r3384872272 (accepted): an unbounded compute ask can no longer reach a waiting handler — the dispatch effect-request constructor structurally requires the finite wait-bound fact (same constructor-requires-fact pattern as effect signatures); P4 bounded waiting enforced at the boundary that waits, not by policy goodwill. https://claude.ai/code/session_018QC433THjRyqiHuP8czPi4 * docs: review fix — capacity satisfaction tests the hard minimum, grant carried in SelectionResult r3385120097 (accepted): the capacity clause required provider containment of the whole requested interval, but the interval's upper end is max-useful (allocation preference), not a requirement — containment would refuse providers that satisfy the ask (P1 modal-force compression). Fix per the review's option (b): satisfaction = provider.available >= request.min per dimension; the granted allocation min(available, max_useful) is computed at selection and carried in SelectionResult (the dispatcher needs the grant anyway); preferring larger grants is available to policies as an objective, separated from satisfaction. Request doc now states the two ends' modal force at the type. https://claude.ai/code/session_018QC433THjRyqiHuP8czPi4 * docs: align §2 grounding row with the min-satisfaction capacity fix (r3385120097 residue) https://claude.ai/code/session_018QC433THjRyqiHuP8czPi4 --------- Co-authored-by: Claude <noreply@anthropic.com>
Summary
Wire
Node.ident(intern-table declaration id) as the A3/PD-3 brand-identity side-channel, replacing the TRANSITIONident_spangraft (with_authored_identity).identon type-reference nodes vialeaf_type_ref_node/type_ref_ident.with_preserved_declaration_identitygraftsidentity.identonto structural carriers;ident_spanstays source-location-only.brand_name_at/declaration_identity_athelpers in00_core; PD-3 andnode_type_compatibleprefer intern-id equality when both sides are stamped, with string fallback for unstamped kernel/synthetic nodes.ident: Some(item_ident)so declaration identity round-trips through resolve.Implements the phase plan from PR #4579 design (
docs/planning/brand-identity-side-channel-a3-pd3-design-2026-06-09.md).Test plan
cargo run -p v2-compiler --bin regen_stage0(wrote 68 generated stage0 files)cargo test -p v2-compiler-tests pd3_— 12/12 passedcargo test -p v2-compiler-tests m1_brand— 1/1 passedcargo test -p v2-compiler-tests item_ident_spans— 1/1 passed (ident_span honesty)