You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@
4
4
5
5
### Changed
6
6
7
-
-**The bounded TypeScript lane now proves the same-tree wrapper family in M52** — eligible `kind:function` roots may still use the helper-aware monotone-up lane from M46, and may now also classify to `function.wrapper.pipeline.v1` when they declare the exact same-tree local dep tuple `function.arithmetic_leaf.monotone_down_nonnegative.v1` then `function.arithmetic_leaf.monotone_up.v1`. The lane remains Bun-only, atom-only, and additive to Rust proof; it still does not widen to chain3 execution, molecule execution, generic multi-dep execution, seam kinds, cross-library TypeScript resolution, `spec validate --target-language`, or `spec export --target-language`.
7
+
-**The bounded TypeScript lane now proves the same-tree chain3 family in M54** — eligible `kind:function` roots may still use the helper-aware monotone-up lane from M46 and the same-tree wrapper lane from M52, and may now also classify to `function.wrapper.pipeline.chain3.v1` when they declare the exact same-tree local dep tuple `function.wrapper.pipeline.v1` then `function.arithmetic_leaf.monotone_up.v1` then `function.arithmetic_leaf.monotone_down_nonnegative.v1`. The lane remains Bun-only, atom-only, and additive to Rust proof; it still does not widen to molecule execution, generic multi-dep execution, seam kinds, nested chain3 closure members, cross-library TypeScript resolution, `spec validate --target-language`, or `spec export --target-language`.
`spec` now exposes one bounded TypeScript execution lane. It is intentionally narrow:
53
53
54
54
- Bun is the only TypeScript prerequisite. The lane shells out to `bun`; no alternate Node, npm, or tsx contract is supported.
55
-
- Eligible roots are exactly `kind: function` specs that classify to either `function.arithmetic_leaf.monotone_up.v1`or `function.wrapper.pipeline.v1`.
55
+
- Eligible roots are exactly `kind: function` specs that classify to `function.arithmetic_leaf.monotone_up.v1`, `function.wrapper.pipeline.v1`, or the bounded same-tree `function.wrapper.pipeline.chain3.v1`.
56
56
- Monotone-up roots may declare `deps: []` or exactly one direct local helper dep. That helper must classify to `function.helper.identity_passthrough.v1`, exist in the same loaded unit set and generated tree, and be the only direct dep of the current unit.
57
57
- Wrapper roots must declare exactly two direct local deps in the same loaded unit set and generated tree. The ordered dep tuple is frozen to `function.arithmetic_leaf.monotone_down_nonnegative.v1` then `function.arithmetic_leaf.monotone_up.v1`, and both deps must author non-empty `body.typescript`.
58
+
- Chain3 roots must declare exactly three direct local deps in the same loaded unit set and generated tree. The ordered dep tuple is frozen to `function.wrapper.pipeline.v1` then `function.arithmetic_leaf.monotone_up.v1` then `function.arithmetic_leaf.monotone_down_nonnegative.v1`, and every direct dep must author non-empty `body.typescript`.
59
+
- Chain3 closure collection stays bounded. A same-tree wrapper may appear as a closure member under a chain3 root, but nested `function.wrapper.pipeline.chain3.v1` closure members remain unsupported.
58
60
- Rust remains the default target. TypeScript proof is additive only; it writes `target_proofs.typescript` without replacing the Rust proof surface.
59
61
- TypeScript execution is atom-only. Only `local_tests` run in this lane; `.test.spec` molecule tests remain unsupported for `--target-language typescript` and fail before Bun runs.
60
62
- The accepted `local_tests.expect` grammar is deliberately small: `<current_unit>(Decimal::new(int, scale), ...) == Decimal::new(int, scale)`. The left-hand side must be a direct call to the current unit, and both the arguments and expected value must use integer-literal `Decimal::new(...)` forms.
@@ -68,19 +70,19 @@ spec test <path> --target-language typescript
68
70
spec status <unit-or-root> --target-language typescript
69
71
```
70
72
71
-
`spec status <unit-or-root> --target-language typescript` reports target-specific proof only. In M52, a root-level status over a mixed example like `examples/ecommerce` may stay non-green unless every unit in scope is either freshly proven in the bounded monotone-upor wrapper lane, or truthfully remains outside that lane.
73
+
`spec status <unit-or-root> --target-language typescript` reports target-specific proof only. In M54, a root-level status over a mixed example like `examples/ecommerce` may stay non-green unless every unit in scope is either freshly proven in the bounded monotone-up, wrapper, or same-tree chain3 lane, or truthfully remains outside that lane.
72
74
73
-
The generated helper filenames remain frozen in M52:
75
+
The generated helper filenames remain frozen in M54:
74
76
75
77
-`__spec_ts/runtime.ts`
76
78
-`__spec_ts/build_entry.ts`
77
79
-`__spec_ts/local_tests.ts`
78
80
79
-
Commands and surfaces that do not widen for M52:
81
+
Commands and surfaces that do not widen for M54:
80
82
81
83
-`spec validate` does not accept `--target-language`
82
84
-`spec export` does not accept `--target-language`
83
-
- This lane does not widen to chain3 execution, molecule execution, generic multi-dep execution, seam kinds, cross-library TypeScript resolution, `spec validate --target-language`, or `spec export --target-language`.
85
+
- This lane does not widen to molecule execution, generic multi-dep execution, seam kinds, cross-library TypeScript resolution, nested chain3 closure members, `spec validate --target-language`, or `spec export --target-language`.
Copy file name to clipboardExpand all lines: TODOS.md
+3-1Lines changed: 3 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -190,6 +190,8 @@
190
190
191
191
-[x]**Wrapper TypeScript execution in `spec`** — Completed by M52 (2026-05-12). The bounded Bun-backed TypeScript lane now admits the same-tree `function.wrapper.pipeline.v1` family with the frozen direct local dep tuple `monotone_down_nonnegative -> monotone_up`, while keeping proof additive and target-specific.
192
192
193
+
-[x]**Bounded same-tree chain3 TypeScript execution in `spec`** — Completed by M54 (2026-05-13). The bounded Bun-backed TypeScript lane now admits the same-tree `function.wrapper.pipeline.chain3.v1` family with the frozen direct local dep tuple `wrapper.pipeline -> monotone_up -> monotone_down_nonnegative`, while keeping proof additive, atom-only, and target-specific.
194
+
193
195
-[ ]**Cross-library TypeScript helper imports** — Deferred by the M46 review. Same-tree helper execution is enough to close the current product-family mismatch; cross-library target resolution is a different portability problem.
194
196
195
-
-[ ]**Generic multi-dependency TypeScript execution** — Deferred again after M52. The current lane is intentionally family-shaped: helper-aware monotone-up roots plus same-tree wrapper roots only, not arbitrary dependency topologies.
197
+
-[ ]**Generic multi-dependency TypeScript execution** — Deferred again after M54. The current lane is intentionally family-shaped: helper-aware monotone-up roots plus same-tree wrapper roots and same-tree chain3 roots only, not arbitrary dependency topologies.
Copy file name to clipboardExpand all lines: semantic-families/function.wrapper.pipeline.chain3.v1/fixtures/aligned/units/pricing/checkout_chain3_aligned.unit.spec
Copy file name to clipboardExpand all lines: semantic-families/function.wrapper.pipeline.chain3.v1/fixtures/aligned/units/pricing/pricing_discount_leaf_aligned.unit.spec
Copy file name to clipboardExpand all lines: semantic-families/function.wrapper.pipeline.chain3.v1/fixtures/aligned/units/pricing/pricing_tax_leaf_aligned.unit.spec
Copy file name to clipboardExpand all lines: semantic-families/function.wrapper.pipeline.chain3.v1/fixtures/aligned/units/pricing/pricing_total_wrapper_aligned.unit.spec
let stderr = String::from_utf8_lossy(&output.stderr);
15446
15465
assert!(
15447
15466
stderr.contains(
15448
-
"TypeScript target requires compatibility key function.arithmetic_leaf.monotone_up.v1or function.wrapper.pipeline.v1 in M52; found function.arithmetic_leaf.monotone_down_nonnegative.v1"
15467
+
"TypeScript target requires compatibility key function.arithmetic_leaf.monotone_up.v1, function.wrapper.pipeline.v1, or function.wrapper.pipeline.chain3.v1 in M52; found function.arithmetic_leaf.monotone_down_nonnegative.v1"
stderr.contains("TypeScript chain3 target requires direct deps to classify as function.wrapper.pipeline.v1 then function.arithmetic_leaf.monotone_up.v1 then function.arithmetic_leaf.monotone_down_nonnegative.v1 in M54"),
15628
15777
"{stderr}"
15629
15778
);
15630
15779
assert!(
15631
15780
!marker_path.exists(),
15632
-
"chain3 wrapper rejection should happen before Bun build/test execution"
15781
+
"wrong dep order rejection should happen before Bun build/test execution"
0 commit comments