Skip to content

ModelCore substrate-evolution (3/4): spec_facts: List<PrimitiveFactAxisBinding> → Map<Symbol, Node> uniqueness constraint — discharge E3-deferred follow-up from #3500 (codex BLOCKING #4: List admits duplicate axis bindings; std/collection already declares Map) - #3549

Merged
briansrls merged 5 commits into
mainfrom
session/crisp-seal-199
May 22, 2026

Conversation

@briansrls

@briansrls briansrls commented May 22, 2026 •

Copy link
Copy Markdown
Contributor

Summary

ModelCore primitive fact bundles now carry spec_facts as Map<Symbol, Node> instead of a list of axis/fact bindings. The Rust, Python, and C++ primitive bundle constructors now populate that keyed carrier with map_insert, making duplicate axis bindings structurally unrepresentable while preserving honestly absent axes.

Dashboard work item: node://adhoc-2089c5ab-15f

Test plan

  • ctrl-build -- cargo build -p v2-compiler --release passed.
  • ctrl-build -- bash -lc "cargo build -p v2-compiler --release && bash scripts/v4-bootstrap-viability.sh" passed; resolved 165 sources and emitted compiled: 1 files emitted, 0 diagnostics.
  • rg -n "PrimitiveFactAxisBinding|primitive_axis_binding|spec_facts: \\[|spec_facts: List" src/v4 returned no matches.

Worker attestation

  • Title describes the change.
  • PR body summarizes what and why.
  • Tests run are listed above.
  • Dashboard work item is named above.
  • Branch contains the expected ModelCore substrate-evolution commits.
  • No secrets, credentials, or large binaries staged.

@briansrls
briansrls marked this pull request as ready for review May 22, 2026 01:38

@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: 31232e7a · Trigger: schedule
  • Thinking: 249s wall

Non-blocking — Strengths

  • src/v4/std/model_core.dag The substrate move from List to Map<Symbol, Node> aligns with P2 by making duplicate axis bindings structurally unrepresentable.

✅ Reviewed as mixed .dag substrate/extdeps model plus Rust smoke-test update; no blocking concerns.

@briansrls
briansrls merged commit bb04d4b into main May 22, 2026
7 checks passed
briansrls added a commit that referenced this pull request May 22, 2026
SPI-3: infer_descent_witness_for_node remaps cardinality Violates to
infer_descent_not_derived while preserving upstream diagnostic.at (P2
facts-flow-forward). Receipts: infer_ground_add_mvp compiles/Holds paths.

Extdeps: align java/kotlin/lean/llvm_ir/machine_code/typescript/wasm
spec_facts with ModelCore Map<Symbol, Node> after #3549 (replacing stale
PrimitiveFactAxisBinding lists). Refresh strict-deprose Owns lines.

Co-authored-by: Cursor <cursoragent@cursor.com>

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

✅ Reviewed the mixed .dag substrate/extdeps update plus Rust smoke-test adjustment; no blocking concerns in the current diff.

briansrls added a commit that referenced this pull request May 22, 2026
SPI-3: infer_descent_witness_for_node remaps cardinality Violates to
infer_descent_not_derived while preserving upstream diagnostic.at (P2
facts-flow-forward). Receipts: infer_ground_add_mvp compiles/Holds paths.

Extdeps: align java/kotlin/lean/llvm_ir/machine_code/typescript/wasm
spec_facts with ModelCore Map<Symbol, Node> after #3549 (replacing stale
PrimitiveFactAxisBinding lists). Refresh strict-deprose Owns lines.

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request May 22, 2026
#3572)

* feat(v4/infer): SPI-3 descent bridge + extdeps Map alignment

SPI-3: infer_descent_witness_for_node remaps cardinality Violates to
infer_descent_not_derived while preserving upstream diagnostic.at (P2
facts-flow-forward). Receipts: infer_ground_add_mvp compiles/Holds paths.

Extdeps: align java/kotlin/lean/llvm_ir/machine_code/typescript/wasm
spec_facts with ModelCore Map<Symbol, Node> after #3549 (replacing stale
PrimitiveFactAxisBinding lists). Refresh strict-deprose Owns lines.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(v4/test): forward infer descent witness diagnostic in receipt helper

infer_descent_witness_contract_node reuses Violates diagnostic from
infer_descent_witness_for_node (preserves upstream.at) instead of
rebuilding at the subject node.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
@briansrls
briansrls deleted the session/crisp-seal-199 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