@kudzujs/core 0.12.3 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/PERFORMANCE.md CHANGED
@@ -6,6 +6,56 @@ Reproducibility classes: `npm run benchmark`, `npm run benchmark:keyed`, `npm ru
6
6
 
7
7
  The maintained 2026-08-13 comparison used Node 24.14.0 and an Intel Core i5-9500 Linux x64 host, one warm-up, and seven alternating fresh-process samples against clean `v0.8.44`. A narrow fast path skips Kudzu semantic transformation for 450 plain `.ts` modules whose runtime edges are exclusively resolvable relative TypeScript imports or exports; all other modules retain the existing transformer. Compile median fell from 2,323.9 ms to 1,413.2 ms (39.2%) and clean-build median from 3,325.3 ms to 2,382.4 ms (28.4%); every paired sample improved. Compile peak-RSS median fell from 571.2 MiB to 552.6 MiB, while build peak RSS was 570.9 MiB versus 568.8 MiB. Compiler scratch fell from 7,328,390 to 1,971,061 bytes. Both targets emitted the same 50 static HTML files, 10,980 bytes, and deploy SHA-256 `e107d78a7f55bc8a1af0ea6e53efeffa19b3d44d21c892484d103fa346e7ba7b`. This is a source-scale compiler comparison, not a cross-framework result.
8
8
 
9
+ ## 0.13.0 Production Form And Server Validation
10
+
11
+ Measured 2026-08-24 on Linux x64 with Node 24.14.0 and Chrome
12
+ 142.0.7444.175. Required Chrome uses real Enter key input to prove native empty
13
+ and minimum-length constraints, then executes delayed field-error, form-error,
14
+ and successful issue-creation responses. Pending state, focused and ARIA-linked
15
+ field feedback, alert/status roles, exact requests, retry, and retained valid
16
+ input all pass.
17
+
18
+ The application emits 44 files totaling 127,343 raw / 46,261 aggregate gzip
19
+ bytes with deploy SHA-256
20
+ `183f5a7ca081f99ae38de6974e61fdcb32ca49de699359aac053d0154ae38036`.
21
+ The two-route session uses 17 JavaScript files totaling 62,118 raw / 23,096
22
+ aggregate gzip bytes. Compared with `0.12.4`, the authored form, three primitive
23
+ states, one ref, and one route-specific handler add 992 raw / 433 aggregate gzip
24
+ session bytes and one browser file. `/help` remains 0 B JavaScript.
25
+
26
+ Navigation samples are `[3.8, 5.6, 4.3, 2.6, 2.9, 3.6, 3.1]` ms, with a 3.6 ms
27
+ median and 2.6/5.6 ms minimum/maximum. The range does not overlap the `0.12.4`
28
+ 1.5/2.4 ms range. This is a changed-content application measurement: the
29
+ destination now parses and mounts the complete issue form and route handler.
30
+ Production compiler/runtime source is unchanged, so no same-content runtime
31
+ regression or improvement claim is made.
32
+
33
+ Core semantic LOC remains 5,682 with no semantic primitive, IR kind, compiler
34
+ pass, production compiler/runtime line, runtime concept, public API, form
35
+ registry, metadata proxy, schema adapter, or form runtime.
36
+
37
+ ## 0.12.4 Nested Layout Evidence Decision
38
+
39
+ Verified 2026-08-24 on Linux x64 with Node 24.14.0 and Chrome
40
+ 142.0.7444.175. Six executable route sets fit the existing ownership model: one
41
+ retained layout owner around one replaceable route owner, followed by existing
42
+ conditional, keyed, effect, and DOM ownership. Zero routes prove an intermediate
43
+ retained layout lifetime, so the packet closes by its stop condition without an
44
+ owner chain.
45
+
46
+ Generated output is byte-identical to `0.12.3`: 43 deploy files totaling 123,835
47
+ raw / 45,379 aggregate gzip bytes with SHA-256
48
+ `fb9d24cc01791bf80b67b659738ba62beded6ff6ce14a86a278fa4b34d088acf`.
49
+ The two-route session remains 16 JavaScript files totaling 61,126 raw / 22,663
50
+ aggregate gzip bytes, and `/help` remains 0 B JavaScript.
51
+
52
+ Core semantic LOC remains 5,682 with zero semantic primitives, IR kinds,
53
+ compiler passes, production compiler/runtime lines, runtime concepts, layout
54
+ registries, disposal paths, public APIs, browser files, or browser bytes added.
55
+ No benchmark rerun or latency comparison applies because production and
56
+ generated code are unchanged; the published `0.12.3` 1.8 ms median and 1.5-2.4
57
+ ms range remain provenance rather than a new claim.
58
+
9
59
  ## 0.12.3 Route Failure And Restoration Policy
10
60
 
11
61
  Measured 2026-08-24 on Linux x64 with Node 24.14.0 and Chrome
package/README.md CHANGED
@@ -12,9 +12,9 @@ Kudzu compiles ordinary React-shaped TypeScript and TSX into complete static HTM
12
12
 
13
13
  *Watch: React-shaped TSX to static HTML and route-specific ESM in 22 seconds.*
14
14
 
15
- > Experimental `0.12.x`: the compiler API and supported TSX surface may change.
15
+ > Experimental `0.13.x`: the compiler API and supported TSX surface may change.
16
16
 
17
- **Latest release: 0.12.3 - Route failure and restoration policy.** Fetch and response-body transport failures retain the current document for focused retry, while invalid documents and assets keep native fallback. Read the [release notes](./RELEASES.md#0123---route-failure-and-restoration-policy), open the [release page](https://github.com/kudzujs/kudzu/releases/tag/v0.12.3), or follow the [architecture packet](./docs/next-architecture/README.md).
17
+ **Latest release: 0.13.0 - Production form and server validation.** Native constraints, application-owned pending and error state, focused field feedback, retained input, and retry ship without a form runtime. Read the [release notes](./RELEASES.md#0130---production-form-and-server-validation), open the [release page](https://github.com/kudzujs/kudzu/releases/tag/v0.13.0), or follow the [architecture packet](./docs/next-architecture/README.md).
18
18
 
19
19
  - [Documentation](https://kudzujs.cloud/docs)
20
20
  - [Installation guide](https://kudzujs.cloud/docs#install)
package/RELEASES.md CHANGED
@@ -1,5 +1,101 @@
1
1
  # Kudzu Releases
2
2
 
3
+ ## 0.13.0 - Production Form And Server Validation
4
+
5
+ Kudzu 0.13.0 compiles an accessible issue-creation form from ordinary TSX
6
+ without adding a form runtime, field registry, or metadata proxy.
7
+
8
+ ### Changed in 0.13.0
9
+
10
+ - Added a native issue form with `required` and `minLength` constraints,
11
+ keyboard submission, `FormData`, and application-owned pending state.
12
+ - Preserved field-level and form-level server errors, focused and ARIA-linked
13
+ field feedback, valid input across failures, and retry without re-entry.
14
+ - Reused existing state, ref, conditional, binding, and async handler semantics;
15
+ production compiler and runtime source remain unchanged.
16
+ - Updated `create-kudzu@0.1.118` to generate projects on
17
+ `@kudzujs/core@^0.13.0`.
18
+
19
+ ### Output Evidence
20
+
21
+ - The application emits 44 files totaling 127,343 raw / 46,261 aggregate gzip
22
+ bytes with deploy digest
23
+ `183f5a7ca081f99ae38de6974e61fdcb32ca49de699359aac053d0154ae38036`.
24
+ - The maintained two-route session uses 17 JavaScript files totaling 62,118 raw
25
+ / 23,096 aggregate gzip bytes; `/help` remains 0 B JavaScript.
26
+ - No semantic primitive, IR kind, compiler pass, production compiler/runtime
27
+ line, runtime concept, public API, form registry, schema adapter, or form
28
+ runtime was added.
29
+
30
+ ### Validation
31
+
32
+ - Required Chrome sends real Enter key input and proves native empty and
33
+ minimum-length constraints make zero requests.
34
+ - Deterministic delayed `422`, `503`, and `201` responses prove pending state,
35
+ exact request counts, field and form feedback, retained input, and retry.
36
+ - Seven fresh Chrome profiles record a 3.6 ms list-to-detail median with a
37
+ 2.6-5.6 ms range. This measures the changed destination form and handler, not
38
+ a same-content compiler/runtime regression.
39
+
40
+ ### Limits
41
+
42
+ Nested fields, field arrays, dirty/touched metadata, dynamic schemas, and form
43
+ registries remain unsupported. The `0.13.1` packet must first prove which of
44
+ those behaviors cannot be expressed with native controls and ordinary state.
45
+
46
+ ### Upgrade
47
+
48
+ ```sh
49
+ npm install @kudzujs/core@^0.13.0
50
+ ```
51
+
52
+ ## 0.12.4 - Nested Layout Evidence Decision
53
+
54
+ Kudzu 0.12.4 reviews executable route ownership evidence and keeps the existing
55
+ single-layout model instead of adding a speculative nested owner chain.
56
+
57
+ ### Changed in 0.12.4
58
+
59
+ - Reviewed the project application's list/detail/runtime routes, Apache Answer
60
+ route and authentication shells, Context and Zustand carts, and independent
61
+ navigation groups.
62
+ - Recorded zero routes requiring an intermediate retained layout whose state,
63
+ effects, or DOM survive descendant replacement and dispose on subtree exit.
64
+ - Accepted one shared layout plus static composition, route ownership, native
65
+ document navigation, and disjoint navigation groups as the current boundary.
66
+ - Updated `create-kudzu@0.1.117` to generate projects on
67
+ `@kudzujs/core@^0.12.4`.
68
+
69
+ ### Output Evidence
70
+
71
+ - The application remains unchanged at 43 files, 123,835 raw / 45,379 aggregate
72
+ gzip bytes, and deploy digest
73
+ `fb9d24cc01791bf80b67b659738ba62beded6ff6ce14a86a278fa4b34d088acf`.
74
+ - The maintained enhanced session remains 16 JavaScript files totaling 61,126
75
+ raw / 22,663 aggregate gzip bytes; `/help` remains 0 B JavaScript.
76
+ - No semantic primitive, IR kind, compiler pass, production compiler/runtime
77
+ line, runtime concept, layout registry, disposal path, or browser byte was
78
+ added.
79
+
80
+ ### Validation
81
+
82
+ - The machine-readable project contract records six reviewed route sets, zero
83
+ qualifying routes, no owner chain, and the reused ownership semantics.
84
+ - The full 273-test suite, package smoke, registry metadata, and fresh
85
+ installation are release gates.
86
+
87
+ ### Limits
88
+
89
+ Nested retained-layout owners remain unsupported. Reconsideration requires
90
+ three unrelated executable application routes proving the same intermediate
91
+ lifetime and explicit deepest-first disposal order.
92
+
93
+ ### Upgrade
94
+
95
+ ```sh
96
+ npm install @kudzujs/core@^0.12.4
97
+ ```
98
+
3
99
  ## 0.12.3 - Route Failure And Restoration Policy
4
100
 
5
101
  Kudzu 0.12.3 defines recovery for enhanced route failures without adding an
@@ -665,6 +665,39 @@ against the macOS arm64 Chrome 151 `0.12.2` samples.
665
665
  - **Done condition:** either existing layout composition is accepted or a
666
666
  minimal layout-owner chain is approved with explicit disposal order.
667
667
 
668
+ **Completion evidence:** architecture review covers the project application's
669
+ list, static detail, runtime project, and runtime issue routes; Apache Answer's
670
+ questions, tags, admin, and legal route-shell reduction; its independently
671
+ reduced authentication shell; the Context and Zustand cart reductions; and the
672
+ two disjoint navigation-group shells. All executable evidence fits one retained
673
+ layout owner around one replaceable route owner, followed by existing
674
+ conditional, keyed, effect, and DOM ownership. The project runtime routes use
675
+ native document navigation, the Answer shell is static composition, and the
676
+ independent navigation groups require disjoint top-level owners rather than a
677
+ nested owner chain.
678
+
679
+ No reviewed route proves an intermediate layout whose DOM, state, or effects
680
+ must survive descendant route replacement and then dispose on subtree exit.
681
+ The qualifying evidence count is zero, below the required three unrelated
682
+ routes. The stop condition is met: current nesting is source organization or
683
+ static composition, so this packet accepts the existing single-layout model and
684
+ does not authorize a layout-owner chain. A future review must first prove the
685
+ same otherwise-inexpressible intermediate lifetime in three unrelated
686
+ executable application routes, including leaf-before-intermediate and
687
+ deepest-first disposal requirements.
688
+
689
+ The project application records `closed-by-stop-condition`, the reviewed route
690
+ sets, an empty qualifying-route list, and the reused ownership semantics in its
691
+ machine-readable capability contract. This packet adds zero semantic
692
+ primitives, ModuleIR or RouteIR kinds, compiler passes, production compiler or
693
+ runtime lines, runtime concepts, normalization or adapter rules, public APIs,
694
+ layout registries, disposal paths, browser files, or browser bytes. Existing
695
+ fixtures and output remain unchanged: 43 deploy files totaling 123,835 raw /
696
+ 45,379 aggregate gzip bytes with the same deploy digest, a 61,126 raw / 22,663
697
+ aggregate gzip two-route JavaScript session, and 0 B JavaScript on `/help`. No
698
+ benchmark rerun or latency claim applies to a machine-readable evidence decision
699
+ with no generated-output change.
700
+
668
701
  ## `0.13.x`: Forms
669
702
 
670
703
  ### `0.13.0`: Production Form And Server Validation
@@ -677,6 +710,37 @@ against the macOS arm64 Chrome 151 `0.12.2` samples.
677
710
  - **Done condition:** complete accessible create/edit behavior passes without a
678
711
  form runtime.
679
712
 
713
+ **Completion evidence:** the maintained Alpha project detail now authors one
714
+ ordinary uncontrolled issue form with native `required` and `minLength`
715
+ constraints, `FormData`, three route-owned primitive states, one object ref, and
716
+ one async submit handler. Required Chrome sends real Enter key events through
717
+ the browser input domain and proves empty and short titles make zero requests.
718
+ For valid input, the deterministic server returns a delayed `422` field error,
719
+ then a `503` form error, then a `201` success. The journey verifies pending
720
+ disable/label state, title focus, `aria-invalid` and `aria-describedby` linkage,
721
+ alert/status roles, exact attempt/create counts, retry without re-entry, and
722
+ retention of the valid title and description through every response.
723
+
724
+ The existing native-form, state, ref, conditional, binding, and handler
725
+ semantics cover the complete packet. Production compiler and runtime source do
726
+ not change. The application route grows from 20 to 70 authored lines and emits
727
+ one additional route handler file; no form package, registration API, proxy
728
+ metadata graph, schema adapter, semantic primitive, IR kind, compiler pass,
729
+ runtime concept, public API, or browser runtime file is added. `/help` remains
730
+ complete HTML with 0 B JavaScript.
731
+
732
+ The project application emits 44 files totaling 127,343 raw / 46,261 aggregate
733
+ gzip bytes with deploy SHA-256
734
+ `183f5a7ca081f99ae38de6974e61fdcb32ca49de699359aac053d0154ae38036`.
735
+ The two-route session uses 17 JavaScript files totaling 62,118 raw / 23,096
736
+ aggregate gzip bytes, 992 raw / 433 gzip bytes above `0.12.4`; the detail route
737
+ itself adds the same 992 raw bytes and 440 gzip bytes. Seven fresh Linux x64
738
+ Chrome 142 profiles record list-to-detail samples of
739
+ `[3.8, 5.6, 4.3, 2.6, 2.9, 3.6, 3.1]` ms, a 3.6 ms median and 2.6/5.6 ms range.
740
+ The range does not overlap `0.12.4`; this is the measured cost of adding the
741
+ form DOM and route-specific handler to the destination application route, not a
742
+ same-content compiler/runtime comparison or a latency improvement claim.
743
+
680
744
  ### `0.13.1`: Nested Fields, Field Arrays, Dirty, And Touched
681
745
 
682
746
  - **Purpose:** determine which form metadata needs framework support.
@@ -1204,5 +1268,7 @@ release transaction where possible or document and publish a forward-fix patch.
1204
1268
  | `0.12.1` | Released | Preserve the published layout/history/focus/scroll evidence. | None |
1205
1269
  | `0.12.2` | Released | Preserve the published authentication and permission evidence. | None |
1206
1270
  | `0.12.3` | Released | Preserve the published route failure, focused retry, native fallback, and precommit retention evidence. | None |
1207
- | `0.12.4` | Active | Complete the nested layout evidence decision. | None |
1208
- | `0.12.5` onward | Blocked | Complete the `0.12.4` release transaction first. | Ordered patch boundary |
1271
+ | `0.12.4` | Released | Preserve the published single-layout decision and zero-owner-chain evidence. | None |
1272
+ | `0.13.0` | Released | Preserve native constraints, server feedback, focused field errors, retained input, and retry evidence. | None |
1273
+ | `0.13.1` | Active | Complete the nested fields, field arrays, dirty, and touched packet. | None |
1274
+ | `0.13.2` onward | Blocked | Complete the `0.13.1` release transaction first. | Ordered patch boundary |
@@ -66,7 +66,7 @@ Keep each patch behavior-preserving and independently reviewable. If a boundary
66
66
 
67
67
  ## Generator Versions
68
68
 
69
- `create-kudzu@0.1.116` retains the explicit install instructions and generates projects with `@kudzujs/core@^0.12.3`.
69
+ `create-kudzu@0.1.118` retains the explicit install instructions and generates projects with `@kudzujs/core@^0.13.0`.
70
70
 
71
71
  ## Release Boundary
72
72
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kudzujs/core",
3
- "version": "0.12.3",
3
+ "version": "0.13.0",
4
4
  "description": "HTML-first TSX framework with synchronous state semantics and no virtual DOM",
5
5
  "type": "module",
6
6
  "license": "MIT",