Repository navigation
T-4.17 Wave 2b: wasm type deepening + AlgebraInhabitanceDecl fill (deps T-4/T-33/T-2; SM5 gate dissolved #3697) - #3831
Conversation
|
Review metadata
1. Story of the diffThis PR deepens the Wasm v4 language model from a wave-1 primitive-fact bundle into a wave-2b 2. Invariant categories
2.5. Top-down PM intent reviewCompliant with one blocking tracking defect. The PM-level intent behind T-4.17 Wave 2b is preserved: Wasm’s target model is moving toward structurally declared primitive facts, algebra inhabitance, law obligations, effects, and partiality, which supports the thesis goal that target grounding is modeled once in the shared substrate and then read mechanically. The only intent risk is the unbound yellow law-key coproduct: as written, it can become permanent scaffold rather than a dissolved bridge, which conflicts with the project’s progress-as-dissolution discipline. 3. VerdictREQUEST_CHANGES The Wasm wave-2b modeling direction is solid, and the main |
Align wasm.dag law-key scaffold comment with typescript/rust Wave 2b precedent (feature:model-core-law-expression-carrier, owner, and dissolve-on-arrival trigger). Teach strict_deprose_dag to emit the same long-form tag for WasmModelCoreLawKey as TsModelCoreLawKey. Addresses cursor + openai-pro REQUEST_CHANGES on #3831.
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
887934ac· Trigger:schedule - Thinking:
232s wall
BLOCKING (2)
Root Cause
src/v3/compiler/tests/integration/v4_compiler_emit_translate_smoke_test.rsthe new smoke ratchets commutative_semiring_node/approximate_field_node imports rather than the type-node constructors → require the *_type_node constructors and build the inhabitance rows from actual wasm inhabitant nodes.src/v4/extdeps/languages/wasm.dagWave-2b partiality vocabulary only has divisor-nonzero/divide-by-zero symbols → add signed-overflow precondition/discharge facts and attach them to wasm_op_integer_div_s.
|
|
||
| fn wasm_integer_algebra_inhabitance(facts: WasmIntegerPrimitiveFacts) -> AlgebraInhabitanceDecl { | ||
| let inhabitant = wasm_integer_facts_node(facts: facts) | ||
| AlgebraInhabitanceDecl { |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
|
|
||
| fn wasm_partiality_semantics_wave2b() -> PartialitySemanticsDecl { | ||
| PartialitySemanticsDecl { | ||
| operations: [ |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
- AlgebraInhabitanceDecl.algebra: commutative_semiring_type_node / approximate_field_type_node (not inhabitance wrapper *_node carriers) - Partiality: add signed-quotient-overflow precondition/discharge for wasm_op_integer_div_s and wasm_op_integer_rem_s (WASM idiv_s/irem_s trap) - Smoke test ratchets *_type_node imports Addresses blocking review on #3831 (P2 single-authority + P1 spec fidelity). Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
WebAssembly irem_s returns 0 for INT_MIN rem_s -1; only idiv_s traps on that edge. Remove the incorrect rem_s quotient-overflow partiality row. Addresses cursor REQUEST_CHANGES review 19833 on #3831. Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
ae92452a· Trigger:schedule - Thinking:
260s wall
BLOCKING (1)
Root Cause
src/v4/extdeps/languages/wasm.dagWave-2b folds only the primitive facts catalogs, which do not carry the canonical wasm_inhabitant_i32/i64/f32/f64 identity → fold algebra inhabitance and law rows over records that carry both inhabitant id and facts, then build with wasm_integer_inhabitant_node/wasm_float_inhabitant_node.
| } | ||
|
|
||
| fn wasm_integer_algebra_inhabitance(facts: WasmIntegerPrimitiveFacts) -> AlgebraInhabitanceDecl { | ||
| let inhabitant = wasm_integer_facts_node(facts: facts) |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
35349d4 to
041fbb8
Compare
…pt row Reconcile HEAD wasm Wave 2b same-path expansion with origin/main PR #3840 MVP-1 ratchet paragraph; remove committed conflict markers. Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
93f75542· Trigger:schedule - Thinking:
312s wall
ROADMAP — Verified
- T-PB-B pb_rust_tests_outside_residual_zero: The same-path Rust smoke expansion is receipted in INVARIANTS with +0 SG-0 paths under the concrete T-PB-B row.
✅ No blocking concerns found in the current diff.
Unblocks CI strict_deprose_dag import test (SyntaxError on main from #3831). Co-authored-by: Cursor <cursoragent@cursor.com>
Per r4-program-dispatch-plan.md row 6 ("De-prose Python removal — Delete now"):
remove the de-prose Python ratchet wholesale rather than patching it.
- scripts/strict_deprose_dag.py — deleted
- scripts/test_strict_deprose_dag.py — deleted
- .github/workflows/ci.yml — drop the "v4 strict-deprose script self-test
(Python)" and "v4 strict-deprose allowlist (--check; merge-base + Part 6
inventory)" steps
The immediate trigger: the WasmModelCoreLawKey branch added in #3831 dropped
the trailing tuple lines, leaving an unclosed `(` at line 446 and breaking
py_compile on every PR. Patching that block would cement a script we have
already chosen to dissolve; the dispatch-plan accepts a brief enforcement
gap until lens enforcement lands.
Note: scripts/refresh_v4_dissolution_tag_authority.py imports from
strict_deprose_dag and will break on next ad-hoc invocation. It is not on
CI and is left for a follow-on disposal PR rather than expanded scope here.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Per r4-program-dispatch-plan.md row 6 ("De-prose Python removal — Delete now"):
remove the de-prose Python ratchet wholesale rather than patching it.
- scripts/strict_deprose_dag.py — deleted
- scripts/test_strict_deprose_dag.py — deleted
- .github/workflows/ci.yml — drop the "v4 strict-deprose script self-test
(Python)" and "v4 strict-deprose allowlist (--check; merge-base + Part 6
inventory)" steps
The immediate trigger: the WasmModelCoreLawKey branch added in #3831 dropped
the trailing tuple lines, leaving an unclosed `(` at line 446 and breaking
py_compile on every PR. Patching that block would cement a script we have
already chosen to dissolve; the dispatch-plan accepts a brief enforcement
gap until lens enforcement lands.
Note: scripts/refresh_v4_dissolution_tag_authority.py imports from
strict_deprose_dag and will break on next ad-hoc invocation. It is not on
CI and is left for a follow-on disposal PR rather than expanded scope here.
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Summary
Adds wasm Wave 2b type deepening to
wasm.dag:commutative_semiring_type_node; f32/f64 →approximate_field_type_node, each with grounded witness Nodes (P2 single-authority: algebra field carries type node, not inhabitance wrapper).WasmModelCoreLawKeycoproduct with full 🟡 dissolution scaffold (feature/owner/dissolve-on-arrival).wasm_model_core_wave2b()/wasm_language_model_wave2b()(wave1 aliases delegate here).v4_wasm_language_model_declares_wave2b_algebra_inhabitance(+0 SG-0 paths), anchor updated to wave2b,strict_deprose_dag.pyledger tag forWasmModelCoreLawKey.INVARIANTS.mdrow forv4_compiler_emit_translate_smoke_test.rsdocuments the wasm same-path expansion under ROADMAP § T-PB-B deferral (matching Python wave-2b pattern).Test plan
python3 scripts/strict_deprose_dag.py --check— passcargo test -p v3-compiler v4_wasm_language_model_declares_wave2b_algebra_inhabitance— pending current-head CINotes
No merge-ready assertion until current-head dashboard reviews (≥2 approvals, no REQUEST_CHANGES) and CI green. Operator merges manually.