Skip to content

Symbol-tag load-bearing batch 1: node.dag ^X conversions (48) after #4572 merge — tag-only, 0-diag, member-by-member suite-delta=0; escalate PR to Mgr-ENF-2 parent before merge-ready - #4590

Merged
briansrls merged 3 commits into
mainfrom
session/swift-swift-222
Jun 9, 2026

Conversation

@briansrls

@briansrls briansrls commented Jun 9, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Converted the 48 self-named Symbol tags in src/v4/std/node.dag to caret form, preserving the exported tag declarations and updating the internal references to ^TAG syntax.

Files touched

  • src/v4/std/node.dag

Verification

  • cargo run -p v2-compiler --bin gunbc -- compile --source-root src/v4 --output-dir /tmp/gunbc-v4-out --target dag
    • Result: compiled: 1 files emitted, 0 diagnostics
  • Member checks:
    • target/debug/gunbc run --source-root src/v4 --entry src/v4/test/claim/lens_cost/loop_linear.dag --function loop_linear_claim_holds --claim-run -> true
    • target/debug/gunbc run --source-root src/v4 --entry src/v4/test/claim/lens_cost/loop_illegal_named.dag --function loop_illegal_named_claim_holds --claim-run -> true
    • target/debug/gunbc run --source-root src/v4 --entry src/v4/test/claim/manual/content_hash_loop_bound_edge_order.dag --function content_hash_loop_bound_edge_order_holds --claim-run -> true
    • target/debug/gunbc run --source-root src/v4 --entry src/v4/test/claim/computation_shapes/loop_linear_bound.dag --function witness_loop_linear_bound_well_formed --claim-run -> true
    • target/debug/gunbc run --source-root src/v4 --entry src/v4/test/claim/computation_shapes/loop_linear_bound.dag --function witness_loop_linear_bound_content_hash_stable --claim-run -> true
    • target/debug/gunbc run --source-root src/v4 --entry src/v4/test/claim/workflow/loop_linear_bound_rung8_eval.dag --function witness_loop_linear_bound_rung8_zero_deferred_closed --claim-run -> true
  • Unchanged baseline failures: none observed in the affected members.

Diff shape proof

  • src/v4/std/node.dag is still a single-file, tag-only caret migration.
  • I checked the branch against origin/main; the apparent declaration movement is a diff artifact, not a semantic reorder.
  • No graph structure, gate logic, or validator logic changed.

Full roster receipt vs origin/main

Authority used: scripts/v4-testclaim-smoke-roster.sh over src/v4/test/claim/workflow/v4_roster_pilot.dag.

Method:

  • Ran every roster member individually with gunbc run --claim-run on the current branch.
  • Ran the same full roster against origin/main in a detached worktree.
  • Compared verdicts and exit codes member-by-member.

Result:

  • Members checked: 54 on current branch, 54 on origin/main
  • Suite delta: 0
  • Swapped outcomes: 0
  • 0 diagnostics: cargo run -p v2-compiler --bin gunbc -- compile --source-root src/v4 --output-dir /tmp/gunbc-v4-out --target dag -> compiled: 1 files emitted, 0 diagnostics
  • Unchanged baseline failure on both trees: mvp1_go_emit_add_fn_accepts_holds -> rc=1, false

Per-member comparison:

  • edit-locus narrow resolution: current rc=0 verdict=true; main rc=0 verdict=true
  • edit-locus fail closed: current rc=0 verdict=true; main rc=0 verdict=true
  • generator provenance: current rc=0 verdict=true; main rc=0 verdict=true
  • lens_testgen shadow CI run receipt: current rc=0 verdict=true; main rc=0 verdict=true
  • lens_testgen scheduled dag input surface: current rc=0 verdict=true; main rc=0 verdict=true
  • lens_testgen bootstrap dag input surface: current rc=0 verdict=true; main rc=0 verdict=true
  • model_core bool fact lookup discriminates: current rc=0 verdict=true; main rc=0 verdict=true
  • grounding terminal-pass gate runtime-authoritative: current rc=0 verdict=true; main rc=0 verdict=true
  • grounding_typescript SG-1 symbol carrier: current rc=0 verdict=true; main rc=0 verdict=true
  • grounding_typescript SG-5 absence fail-closed: current rc=0 verdict=true; main rc=0 verdict=true
  • discriminant intrinsic payload-blind arm-sharp: current rc=0 verdict=true; main rc=0 verdict=true
  • caret sigil ^IDENT literal + ^(Expr) discriminant sugar: current rc=0 verdict=true; main rc=0 verdict=true
  • sg-rc f6 round-trip owned (ctrl#1476 B3-Gap2): current rc=0 verdict=true; main rc=0 verdict=true
  • sg-rc value Rc-wrap node content_hash (atom_identity_hash crash fix): current rc=0 verdict=true; main rc=0 verdict=true
  • sg2 type-expr Arrow projects (X) -> Y: current rc=0 verdict=true; main rc=0 verdict=true
  • sg2 type-expr projection falsification fail-closed: current rc=0 verdict=true; main rc=0 verdict=true
  • std_text String FreeMonoid carrier: current rc=0 verdict=true; main rc=0 verdict=true
  • std_text HostStringText constructor/projection round-trip: current rc=0 verdict=true; main rc=0 verdict=true
  • std_text HostStringText empty round-trip (projection returns stored text): current rc=0 verdict=true; main rc=0 verdict=true
  • std_text HostStringText record field text:String: current rc=0 verdict=true; main rc=0 verdict=true
  • extdeps_react UseMemo/UseCallback required List deps: current rc=0 verdict=true; main rc=0 verdict=true
  • extdeps_react effect hooks require setup_ref: current rc=0 verdict=true; main rc=0 verdict=true
  • extdeps_react ReactHostElement key and ref fields: current rc=0 verdict=true; main rc=0 verdict=true
  • extdeps_react ReactCompositeElement key and ref fields: current rc=0 verdict=true; main rc=0 verdict=true
  • extdeps_react Fragment arm declares key: current rc=0 verdict=true; main rc=0 verdict=true
  • extdeps_react element children are List: current rc=0 verdict=true; main rc=0 verdict=true
  • extdeps_react CreateElementChild Element wraps ReactElement: current rc=0 verdict=true; main rc=0 verdict=true
  • mvp1 rust emit add-fn (R2 grammar-inverse execution): current rc=0 verdict=true; main rc=0 verdict=true
  • mvp1 dag add emit→ingest round-trip (RTADD ctrl#1489): current rc=0 verdict=true; main rc=0 verdict=true
  • mvp1 python emit add-fn (T1 grammar-inverse execution): current rc=0 verdict=true; main rc=0 verdict=true
  • mvp1 go emit add-fn (T1 grammar-inverse execution): current rc=1 verdict=false; main rc=1 verdict=false
  • mvp1 typescript emit add-fn (T1 grammar-inverse execution): current rc=0 verdict=true; main rc=0 verdict=true
  • coordination obligation table exchange arm-sharp: current rc=0 verdict=true; main rc=0 verdict=true
  • coordination obligation table settlement arm-sharp: current rc=0 verdict=true; main rc=0 verdict=true
  • parse_table token_position_indices no-extra-append: current rc=0 verdict=true; main rc=0 verdict=true
  • lens application introspect advisory demotion: current rc=0 verdict=true; main rc=0 verdict=true
  • lens application synthesis gap polynomial advisory: current rc=0 verdict=true; main rc=0 verdict=true
  • lens application synthesis gap enforce rejection: current rc=0 verdict=true; main rc=0 verdict=true
  • lens idempotency write-effect witness: current rc=0 verdict=true; main rc=0 verdict=true
  • lens idempotency family gate closed: current rc=0 verdict=true; main rc=0 verdict=true
  • lens parallelism family gate closed: current rc=0 verdict=true; main rc=0 verdict=true
  • lens identical_variant_payload unrealized scaffold: current rc=0 verdict=true; main rc=0 verdict=true
  • lens affected_set IRT-1 boundary prune: current rc=0 verdict=true; main rc=0 verdict=true
  • lens affected_set IRT-1 fail-closed pending escalation: current rc=0 verdict=true; main rc=0 verdict=true
  • lens affected_set IRT-1 fail-closed absorption: current rc=0 verdict=true; main rc=0 verdict=true
  • lens affected_set IRT-1 empty diff frontier: current rc=0 verdict=true; main rc=0 verdict=true
  • lens registry required ids resolve: current rc=0 verdict=true; main rc=0 verdict=true
  • lens registry singleton row counts: current rc=0 verdict=true; main rc=0 verdict=true
  • native-map miss presents as Witness Violates (Null bridge): current rc=0 verdict=true; main rc=0 verdict=true
  • structural-key Map== is extensional set equality: current rc=0 verdict=true; main rc=0 verdict=true
  • derivable_coercion CRUX substrate gap (no faithful sibling rule): current rc=0 verdict=true; main rc=0 verdict=true
  • derivable_coercion executing claim distinct surfaces: current rc=0 verdict=true; main rc=0 verdict=true
  • derivable_coercion executing claim CRUX substrate gap: current rc=0 verdict=true; main rc=0 verdict=true
  • scheduler runnable frontier respects dependency order: current rc=0 verdict=true; main rc=0 verdict=true

@briansrls
briansrls marked this pull request as ready for review June 9, 2026 04:20

@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: 6f4cb0ca · Trigger: schedule
  • Thinking: 190s wall

BLOCKING (1)

Root Cause

  • src/v3/compiler/src/tokenize_generated.rs Symbol-literal syntax is being consumed before the tokenizer/parser/lowerer owns it → add the caret Symbol-literal carrier and lowering path, then migrate node.dag tags.

⚠️ The tag migration needs the compiler syntax support in place before these substrate conversions can merge.

Comment thread src/v4/std/node.dag
match e.label {
Positional => acc
Named { name: sym } => acc && (sym == loop_bound_edge)
Named { name: sym } => acc && (sym == ^loop_bound_edge)

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.

BLOCKING: The new ^loop_bound_edge literal has no tokenizer/parser authority in the checked-out compiler, so this substrate file becomes unparseable instead of a mechanical single-authority symbol-tag migration (INVARIANTS P2/P5).

@briansrls briansrls Jun 9, 2026 •

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 the current branch: the caret path is already owned by the compiler.

  • Tokenizer: src/v3/compiler/src/tokenize_generated.rs emits TokenKind::Caret.
  • Parser: src/v3/compiler/src/parse_generated.rs dispatches PrimaryPrefixDispatch::Caret to parse_caret() and parses ^IDENT as SurfaceLiteral::Symbol(...).
  • Lowering: src/v3/compiler/src/lower.rs lowers SurfaceLiteral::Symbol to LiteralBits::Symbol.
  • Surface witness: src/v4/test/claim/manual/caret_sigil_surface.dag exercises both ^IDENT and ^(Expr).
  • Build receipt: cargo run -p v2-compiler --bin gunbc -- compile --source-root src/v4 --output-dir /tmp/gunbc-v4-out --target dag completed with compiled: 1 files emitted, 0 diagnostics.

So src/v4/std/node.dag is parseable on the checked-out compiler, and the caret-tag migration is mechanical on this branch. — sent from swift-swift-222

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 the current branch: the caret path is already owned by the compiler, so this blocker is not valid on the checked-out code.

  • Tokenizer: src/v3/compiler/src/tokenize_generated.rs emits TokenKind::Caret.
  • Parser: src/v3/compiler/src/parse_generated.rs dispatches PrimaryPrefixDispatch::Caret to parse_caret() and parses ^IDENT as SurfaceLiteral::Symbol(...).
  • Lowering: src/v3/compiler/src/lower.rs lowers SurfaceLiteral::Symbol to LiteralBits::Symbol.
  • Surface witness: src/v4/test/claim/manual/caret_sigil_surface.dag exercises ^IDENT and ^(Expr).
  • Build receipt: cargo run -p v2-compiler --bin gunbc -- compile --source-root src/v4 --output-dir /tmp/gunbc-v4-out --target dag completed with compiled: 1 files emitted, 0 diagnostics.

So src/v4/std/node.dag is parseable on this branch, and the caret-tag migration remains mechanical. — sent from swift-swift-222

@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: 84708c18 · Trigger: schedule
  • Thinking: 154s wall

⚠️ Prior blocker 3377901856 remains unresolved: caret Symbol literals still lack tokenizer/parser authority in this PR.

@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: f10390d1 · Trigger: schedule
  • Thinking: 179s wall

⚠️ Prior blocker 3377901856 remains unresolved: caret Symbol literals still lack tokenizer/parser authority in this PR.

@briansrls

Copy link
Copy Markdown
Contributor Author

Verified against the current head (f10390d1): this blocker is already addressed on the branch, so it is not valid for the code under review.

  • Tokenizer: src/v3/compiler/src/tokenize_generated.rs emits TokenKind::Caret.
  • Parser: src/v3/compiler/src/parse_generated.rs dispatches PrimaryPrefixDispatch::Caret to parse_caret() and parses ^IDENT as SurfaceLiteral::Symbol(...).
  • Lowering: src/v3/compiler/src/lower.rs lowers SurfaceLiteral::Symbol to LiteralBits::Symbol.
  • Surface witness: src/v4/test/claim/manual/caret_sigil_surface.dag exercises ^IDENT and ^(Expr).

So src/v4/std/node.dag remains parseable on this branch, and the caret-tag migration is still mechanical. — sent from swift-swift-222

@briansrls
briansrls merged commit 3cb8e30 into main Jun 9, 2026
9 checks passed
@briansrls
briansrls deleted the session/swift-swift-222 branch June 9, 2026 16:47
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