@kudzujs/core 0.8.61 → 0.9.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/MIGRATION_ROADMAP.md +37 -1
- package/PERFORMANCE.md +79 -1
- package/README.md +2 -2
- package/RELEASES.md +58 -0
- package/bin/kudzu.mjs +10 -1
- package/docs/next-architecture/0.9-baseline.md +1199 -0
- package/docs/next-architecture/0.9-benchmark-contracts.md +507 -0
- package/docs/next-architecture/0.9-component-property-contract.md +89 -0
- package/docs/next-architecture/0.9-compression-ledger.md +227 -0
- package/docs/next-architecture/0.9-final-proof-audit.md +176 -0
- package/docs/next-architecture/0.9-implementation-plan.md +1819 -0
- package/docs/next-architecture/0.9-resource-lifecycle.md +118 -0
- package/docs/next-architecture/0.9-semantic-compression.md +384 -0
- package/docs/next-architecture/README.md +16 -12
- package/docs/next-architecture/compiler-current-architecture.md +7 -7
- package/docs/next-architecture/large-application-ai-native-roadmap.md +6 -4
- package/docs/next-architecture/versioning.md +3 -2
- package/framework/README.md +3 -1
- package/framework/binding-runtime.js +4 -4
- package/framework/build.mjs +135 -30
- package/framework/compiler/ast-helpers.mjs +5 -0
- package/framework/compiler/browser-signal-passes.mjs +2 -7
- package/framework/compiler/collection-analysis.mjs +4 -0
- package/framework/compiler/descriptor-session.mjs +36 -12
- package/framework/compiler/effect-analysis.mjs +28 -8
- package/framework/compiler/effect-codegen.mjs +79 -36
- package/framework/compiler/effect-private-ref-pass.mjs +4 -8
- package/framework/compiler/handler-lowering.mjs +12 -7
- package/framework/compiler/ir/module-ir.mjs +26 -4
- package/framework/compiler/list-runtime-codegen.mjs +4 -2
- package/framework/compiler/optimize/command-specialization.mjs +4 -7
- package/framework/compiler/outside-click-pass.mjs +79 -0
- package/framework/compiler/react-migration-pass.mjs +27 -1
- package/framework/compiler/route-artifact-report.mjs +4 -3
- package/framework/compiler/route-build-record.mjs +12 -0
- package/framework/compiler/route-capability-planner.mjs +3 -3
- package/framework/compiler/route-ir.mjs +27 -11
- package/framework/compiler/runtime-codegen.mjs +2 -2
- package/framework/compiler/source-compiler.mjs +407 -74
- package/framework/core.d.ts +1 -0
- package/framework/core.mjs +18 -5
- package/framework/dependency-runtime.js +1 -1
- package/framework/effect-runtime.js +2 -2
- package/framework/list-runtime.js +67 -24
- package/framework/native-runtime.js +12 -9
- package/framework/runtime.js +1 -1
- package/framework/serialization.js +13 -6
- package/framework/shared-runtime.js +14 -12
- package/package.json +1 -1
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
# Kudzu 0.9 Semantic Compression Ledger
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
|
|
5
|
+
This ledger completes `0.9.0-06 / Session 06A` at revision `ef5c991` and
|
|
6
|
+
records the first independently verified Session 06B deletion.
|
|
7
|
+
|
|
8
|
+
```text
|
|
9
|
+
Core semantic LOC before 06B: 5,296
|
|
10
|
+
0.8.62 baseline: 4,961
|
|
11
|
+
Ordered normalization entries: 15 page / 14 imported
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Candidate Decisions
|
|
15
|
+
|
|
16
|
+
### Component Effect Helper Materialization
|
|
17
|
+
|
|
18
|
+
- Producers: `attachStateBackedEffects()` and the setter-callback helper block
|
|
19
|
+
in `source-compiler.mjs`.
|
|
20
|
+
- Consumers: specialized effect analysis, helper insertion, ComponentAnalysis
|
|
21
|
+
ownership, and EffectIR registration.
|
|
22
|
+
- Duplicate decision: both rewrite `__kComponentUseEffect`, preserve authored
|
|
23
|
+
source, install specialization/state links, create one compiler helper, and
|
|
24
|
+
register capability flags.
|
|
25
|
+
- Required diagnostics: object-property no-state/ref/ID and every setter-callback
|
|
26
|
+
hook/callback diagnostic remain source-owned.
|
|
27
|
+
- Enabled deletion: Work Item 05 proved the same helper ABI and OwnerRef.
|
|
28
|
+
- Expected delta: -14 to -22 core LOC; zero passes/runtime concepts/bytes.
|
|
29
|
+
- Regression fixtures: WorkLedger object props, array-prop effect sync, callback
|
|
30
|
+
and ref ownership, and object-property negatives.
|
|
31
|
+
- Decision: selected first; actual delta is -25 core LOC.
|
|
32
|
+
|
|
33
|
+
### Serializable Initializer Declaration Lookup
|
|
34
|
+
|
|
35
|
+
- Producers: `componentHasDirectPrimitiveState()`,
|
|
36
|
+
`componentHasDirectArrayState()`, and `directStateInitializer()`.
|
|
37
|
+
- Consumers: debounce, setter-effect pairing, and child/row state seeding.
|
|
38
|
+
- Duplicate decision: each rescans one direct `useState()` declaration before
|
|
39
|
+
applying a caller-specific primitive/object/array restriction.
|
|
40
|
+
- Required diagnostics: debounce, setter-child, keyed-row, reducer, and Zustand
|
|
41
|
+
messages remain caller-owned.
|
|
42
|
+
- Enabled deletion: ComponentAnalysis and the shared literal grammar.
|
|
43
|
+
- Expected delta: -6 to -12 core LOC; zero passes.
|
|
44
|
+
- Regression fixtures: debounce, reducer, lazy-state, keyed-row hooks,
|
|
45
|
+
setter-child object/array, and Zustand fixtures.
|
|
46
|
+
- Decision: selected second; actual delta is -7 core LOC.
|
|
47
|
+
|
|
48
|
+
### Imported Calculation And Derived Production
|
|
49
|
+
|
|
50
|
+
- Producers: imported-calculation validators, binding/list discovery, and
|
|
51
|
+
selected-effect Derived registration.
|
|
52
|
+
- Consumers: BindingIR, DerivedIR, EffectIR, and binding-backed lists.
|
|
53
|
+
- Duplicate decision: source purity/static fields are inspected from multiple
|
|
54
|
+
authored roles.
|
|
55
|
+
- Required diagnostics: binding/list wording and stronger effect-only wording.
|
|
56
|
+
- Enabled deletion: canonical Derived identity removes one repeated async check.
|
|
57
|
+
- Expected delta: -1 core LOC now; broader work needs producer redesign.
|
|
58
|
+
- Regression fixtures: Medusa, Mercury, and imported-calculation negatives.
|
|
59
|
+
- Decision: reject broad work; one line is too small for this slice.
|
|
60
|
+
|
|
61
|
+
### Context And Zustand Shared Actions
|
|
62
|
+
|
|
63
|
+
- Producers: Context discovery and Zustand normalization.
|
|
64
|
+
- Consumers: generic descriptor, handler-lowering, and ModuleIR paths.
|
|
65
|
+
- Duplicate decision: generic action/state ownership was duplicated before 03.
|
|
66
|
+
- Required diagnostics: Provider exposure/capture and Zustand store shape.
|
|
67
|
+
- Enabled deletion: Work Item 03 already removed generic consumer branches.
|
|
68
|
+
- Expected delta: 0; remaining code is adapter-specific.
|
|
69
|
+
- Regression fixtures: Context/shared-action and Zustand suites.
|
|
70
|
+
- Decision: evidence-closed.
|
|
71
|
+
|
|
72
|
+
### Listener Pair Validation
|
|
73
|
+
|
|
74
|
+
- Producers: outside-click and media-query normalizers.
|
|
75
|
+
- Consumers: ordinary EffectIR analysis/codegen.
|
|
76
|
+
- Duplicate decision: add/remove identity is shared, but targets and proof differ.
|
|
77
|
+
- Required diagnostics: outside-click containment and media snapshot wording.
|
|
78
|
+
- Enabled deletion: only `isNodeWithin()` was identical and was removed in 04.
|
|
79
|
+
- Expected delta: 0; a generic matcher would move code.
|
|
80
|
+
- Regression fixtures: outside-click and Cal.com media-query suites.
|
|
81
|
+
- Decision: reject.
|
|
82
|
+
|
|
83
|
+
### Animation Cancellation Validation
|
|
84
|
+
|
|
85
|
+
- Producers: effect-private ref normalization and general effect resource proof.
|
|
86
|
+
- Consumers: existing EffectIR ownership.
|
|
87
|
+
- Duplicate decision: `.current` coalescing/reset differs from a local identifier.
|
|
88
|
+
- Required diagnostics: ref write-count/reset and local loop cancellation.
|
|
89
|
+
- Enabled deletion: none.
|
|
90
|
+
- Expected delta: 0.
|
|
91
|
+
- Regression fixtures: Memos outline and canvas/frame negatives.
|
|
92
|
+
- Decision: reject.
|
|
93
|
+
|
|
94
|
+
### Specialization Discovery Loops
|
|
95
|
+
|
|
96
|
+
- Producers: setter, reducer, keyed/state-backed, and object-property loops.
|
|
97
|
+
- Consumers: shared `specialize()` plus distinct callback/list owners.
|
|
98
|
+
- Duplicate decision: resolution/iteration looks similar, but source boundaries,
|
|
99
|
+
ordering, and diagnostics differ.
|
|
100
|
+
- Required diagnostics: every specialization label and callback depth.
|
|
101
|
+
- Enabled deletion: only the helper materializer selected above.
|
|
102
|
+
- Expected delta: 0 for broader unification; mostly code movement.
|
|
103
|
+
- Regression fixtures: the complete setter/reducer/keyed/component matrix.
|
|
104
|
+
- Decision: reject broader consolidation.
|
|
105
|
+
|
|
106
|
+
### Derived Diagnostic Rewording
|
|
107
|
+
|
|
108
|
+
- Producers: `collectionExpression()` and caller string rewrites.
|
|
109
|
+
- Consumers: reactive JSX/imported-calculation diagnostics.
|
|
110
|
+
- Duplicate decision: presentation wording, not semantic analysis.
|
|
111
|
+
- Required diagnostics: authored role plus exact parser reason.
|
|
112
|
+
- Enabled deletion: none without adding a formatter API.
|
|
113
|
+
- Expected delta: 0 to +5 LOC.
|
|
114
|
+
- Regression fixtures: reactive JSX, Derived, and selector negatives.
|
|
115
|
+
- Decision: defer to 06C only if diagnostics require it.
|
|
116
|
+
|
|
117
|
+
### Route Dependency Denormalization
|
|
118
|
+
|
|
119
|
+
- Producers: EffectIR analysis, transformed effect ABI, and route rendering.
|
|
120
|
+
- Consumers: RouteIR, effect codegen, and capability planning.
|
|
121
|
+
- Duplicate decision: source references become route IDs only after repeated and
|
|
122
|
+
conditional execution; these are different authority levels.
|
|
123
|
+
- Required diagnostics: authored dependency and concrete route ownership errors.
|
|
124
|
+
- Enabled deletion: none without a new ownership projection.
|
|
125
|
+
- Expected delta: 0 or positive; architecture risk is high.
|
|
126
|
+
- Regression fixtures: every dependency, keyed, conditional, and navigation suite.
|
|
127
|
+
- Decision: reject.
|
|
128
|
+
|
|
129
|
+
## First 06B Result
|
|
130
|
+
|
|
131
|
+
One `materializeComponentHelper()` now owns the shared compiler-only effect
|
|
132
|
+
rewrite, source retention, helper registration, setter/state-owner maps, and
|
|
133
|
+
capability flags. Object-property and setter callers retain distinct diagnostics
|
|
134
|
+
and prepend-versus-replace render shapes.
|
|
135
|
+
|
|
136
|
+
```text
|
|
137
|
+
Production files changed: 1
|
|
138
|
+
Core semantic LOC: 5,296 -> 5,271 (-25)
|
|
139
|
+
Passes / normalization entries: 0 / 0
|
|
140
|
+
IR kinds / runtime concepts: 0 / 0
|
|
141
|
+
Accepted source / diagnostics: unchanged
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Artifact comparisons are byte-identical:
|
|
145
|
+
|
|
146
|
+
| Fixture | Files | Deploy SHA-256 | JS raw / gzip |
|
|
147
|
+
|---|---:|---|---:|
|
|
148
|
+
| WorkLedger object prop | 13 | `31886797161a33150afb3bcbf697545afd9d2041a4968decd33146e68d4b7595` | 37,302 / 14,083 B |
|
|
149
|
+
| Array prop effect sync | 10 | `5e3bd8413e3d42c54e5c50d7098aa5c383e73846f7ad80201c663eae92393ec5` | 21,172 / 8,251 B |
|
|
150
|
+
|
|
151
|
+
Verification passes `npm run check`, all 245 Node tests, all 245 required-Chrome tests, and fresh-install package smoke. The maintained Worker/effect benchmark remains 907 raw / 477 gzip B for Worker and 13,786 raw / 5,931 gzip B for the window graph; seven same-target builds have a 444.7 ms median, with no timing claim.
|
|
152
|
+
|
|
153
|
+
## Second 06B Result
|
|
154
|
+
|
|
155
|
+
The primitive debounce and array setter-effect checks now consume the existing
|
|
156
|
+
`directStateInitializer()` lookup and retain their caller-owned primitive/array
|
|
157
|
+
restrictions. The two duplicate component-body scans are deleted. The shared
|
|
158
|
+
lookup still accepts only one direct `useState()` declaration with a serializable
|
|
159
|
+
literal, so source acceptance and diagnostics are unchanged.
|
|
160
|
+
|
|
161
|
+
```text
|
|
162
|
+
Production files changed: 1
|
|
163
|
+
Core semantic LOC: 5,271 -> 5,264 (-7)
|
|
164
|
+
Total 06B deletion: 5,296 -> 5,264 (-32)
|
|
165
|
+
Core LOC above 0.8.62: +303
|
|
166
|
+
Passes / normalization entries: 0 / 0
|
|
167
|
+
IR kinds / runtime concepts: 0 / 0
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
| Fixture | Files | Baseline and candidate deploy SHA-256 | Baseline and candidate JS raw / gzip |
|
|
171
|
+
|---|---:|---|---:|
|
|
172
|
+
| Parameterized debounce | 13 | `b7106651c6a619b01a3e98101df4ac68f9262803e6729451ef03ed3971b36dc7` | 16,053 / 7,735 B |
|
|
173
|
+
| Array prop effect sync | 10 | `5e3bd8413e3d42c54e5c50d7098aa5c383e73846f7ad80201c663eae92393ec5` | 21,172 / 8,251 B |
|
|
174
|
+
|
|
175
|
+
Verification again passes `npm run check`, all 245 Node tests, all 245
|
|
176
|
+
required-Chrome tests, and package smoke. The maintained Worker/effect graph
|
|
177
|
+
remains 907 raw / 477 gzip B for Worker and 13,786 raw / 5,931 gzip B for the
|
|
178
|
+
window graph. Seven same-target builds have a 507.7 ms median; this is a
|
|
179
|
+
completion diagnostic, not a timing comparison.
|
|
180
|
+
|
|
181
|
+
## Diagnostic Audit
|
|
182
|
+
|
|
183
|
+
The preceding commit and final candidate were built against six invalid
|
|
184
|
+
fixtures. All six fail with the same authored relative file, line, column, and
|
|
185
|
+
message after path normalization; only internal stack-frame line numbers move:
|
|
186
|
+
|
|
187
|
+
| Fixture | Stable authored diagnostic |
|
|
188
|
+
|---|---|
|
|
189
|
+
| Object property dynamic path | `src/DynamicView.tsx:4:24 useEffect() object property dependencies require a direct static property path` |
|
|
190
|
+
| Object property alias | `src/AliasView.tsx:4:17 Object-property component property aliases are not supported; read the static prop.field path directly at each consumer` |
|
|
191
|
+
| Object property mutation | `src/MutationView.tsx:3:28 Object-property component props must remain immutable` |
|
|
192
|
+
| Setter effect indirect call | `src/Dropdown.tsx:6:5 Setter-callback prop "setSelectedItems" must be called directly inside an intrinsic event handler` |
|
|
193
|
+
| Setter effect mismatched pair | `src/pages/index.tsx:7:50 Setter-callback effect prop "setSelectedItems" must target the same direct array state passed through "selectedItems"` |
|
|
194
|
+
| Parameterized debounce delay | `src/pages/index.tsx:7:45 Parameterized debounce hook delays must be numeric literals` |
|
|
195
|
+
|
|
196
|
+
No generated `.kudzu` path is primary, no fallback is added, and no diagnostic
|
|
197
|
+
formatter or abstraction is justified.
|
|
198
|
+
|
|
199
|
+
## Final Complexity Review
|
|
200
|
+
|
|
201
|
+
The 0.9 candidate retains ten Semantic Kernel concepts, ten indexed ModuleIR
|
|
202
|
+
record kinds, five post-normalization compiler stages, fifteen page/fourteen
|
|
203
|
+
imported normalization entries, and ten browser runtime concepts. Compatibility
|
|
204
|
+
LOC falls by 9. Session 06 closes at 5,264 core semantic lines after removing 32
|
|
205
|
+
lines. The later Work Item 07 scaling paths add 53 lines, so the current
|
|
206
|
+
candidate is 5,317 lines, up 356 from 0.8.62. Existing capability families gain
|
|
207
|
+
bounded lifecycle specialization; the semantic-codegen/browser-runtime file set
|
|
208
|
+
is 2,854 lines and the frozen C2 graph is 1,705 raw / 589 gzip B
|
|
209
|
+
above its first complete acceptance run and adds no runtime concept.
|
|
210
|
+
|
|
211
|
+
The increase is bounded to existing records and consumers: zero semantic
|
|
212
|
+
concepts, IR kinds, passes, normalization entries, runtime concepts, public APIs,
|
|
213
|
+
or generic browser runtimes were added. The candidate ledger found no further
|
|
214
|
+
deletion that does not move source-specific proof or weaken ownership. This
|
|
215
|
+
closes Work Item 06 without authorizing another abstraction.
|
|
216
|
+
|
|
217
|
+
The maintained public storefront completes the scaling gate against preceding
|
|
218
|
+
commit `bb7fdc5` with one warm-up and seven alternating clean builds per size:
|
|
219
|
+
|
|
220
|
+
| Products | Pages / files | Output bytes | Baseline / candidate median |
|
|
221
|
+
|---:|---:|---:|---:|
|
|
222
|
+
| 100 | 111 / 148 | 1,368,823 | 2,767.3 / 2,755.4 ms |
|
|
223
|
+
| 1,000 | 1,011 / 1,048 | 10,164,835 | 8,407.7 / 8,190.3 ms |
|
|
224
|
+
| 10,000 | 10,011 / 10,048 | 97,521,905 | 63,966.5 / 64,217.4 ms |
|
|
225
|
+
|
|
226
|
+
Every baseline/candidate manifest and byte count is identical. Distributions
|
|
227
|
+
overlap, so no timing change is claimed; raw samples are in `PERFORMANCE.md`.
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# Kudzu 0.9 Final Proof Audit
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
|
|
5
|
+
Work Item `0.9.0-07` is complete as of 2026-08-20. The measured candidate is
|
|
6
|
+
the release commit containing this audit.
|
|
7
|
+
|
|
8
|
+
Benchmark source remains local and ignored by project policy. The final audit
|
|
9
|
+
therefore records commands, versions, acceptance, artifacts, and candidate
|
|
10
|
+
revision in tracked documentation rather than committing benchmark fixtures.
|
|
11
|
+
The complete comparison passes.
|
|
12
|
+
|
|
13
|
+
## Local Harness Policy
|
|
14
|
+
|
|
15
|
+
`.gitignore` intentionally excludes the complete `benchmarks/` tree. Benchmark
|
|
16
|
+
source, dependencies, generated output, and raw local files must not be committed.
|
|
17
|
+
Only accepted protocol, environment, candidate revision, and results belong in
|
|
18
|
+
tracked architecture/performance records.
|
|
19
|
+
|
|
20
|
+
The current local dependency set resolves React 19.2.8, Vue 3.5.40, Svelte
|
|
21
|
+
5.56.7, Astro 7.1.3, Vite 8.1.5, Next.js 16.2.11, Nuxt 4.5.0, and SvelteKit
|
|
22
|
+
2.70.1. Final evidence must restate these exact versions.
|
|
23
|
+
|
|
24
|
+
The public commerce repository is independently pinned at
|
|
25
|
+
`f2d5be1a516c539e30f7125f6870d42b1dd02ecd`, but its package lock references
|
|
26
|
+
Kudzu 0.8.15 and candidate testing depends on an untracked manual symlink. Its
|
|
27
|
+
three-sample sequential scale command also does not meet the final seven-sample
|
|
28
|
+
rotating protocol. The repository-owned paired runner compares Kudzu revisions,
|
|
29
|
+
not frameworks.
|
|
30
|
+
|
|
31
|
+
## Matrix Gaps
|
|
32
|
+
|
|
33
|
+
| Required application | Available local evidence | Release blocker |
|
|
34
|
+
|---|---|---|
|
|
35
|
+
| Content | Local Kudzu/React/Vue/Svelte/Astro five-route C1 acceptance passes | None; native disclosure reaches 0 B route/session JavaScript for every target. |
|
|
36
|
+
| Stateful | Local five-target matrix passes seven rotating builds/browser profiles, complete frozen C2 acceptance, and uniform artifact/CPU/heap/transfer/build-RSS fields | None; final row filter/restore and search restore medians pass. |
|
|
37
|
+
| Commerce | Kudzu/Astro generated storefront passes acceptance and seven rotating 10,000-product cold/warm runs | None; build time and peak RSS pass. |
|
|
38
|
+
| Resource | Local five-target Worker/navigation matrix passes seven rotating builds/browser profiles, complete frozen C5 acceptance, and uniform artifact/CPU/heap/transfer/build-RSS fields | No acceptance or metric-field gap remains; timing conclusions still follow the statistical gate. |
|
|
39
|
+
|
|
40
|
+
The C2/C5 suites now collect actual transferred and unique session JavaScript,
|
|
41
|
+
preload graphs, fresh-process peak RSS, script execution cost, post-journey and
|
|
42
|
+
repeated-disposal heap, deterministic digests, and interleaved builds. Chrome's
|
|
43
|
+
`V8CompileDuration` remains zero for most targets, so separately attributable
|
|
44
|
+
parse CPU would require a trace; `ScriptDuration` remains the uniform execution
|
|
45
|
+
measure.
|
|
46
|
+
|
|
47
|
+
## C1 Content Acceptance
|
|
48
|
+
|
|
49
|
+
The local C1 suite builds `/`, `/article/example`, `/category/example`, `/about`,
|
|
50
|
+
and `/static` for Kudzu, React, Vue, Svelte, and Astro. Every target passes:
|
|
51
|
+
|
|
52
|
+
- complete initial HTML, metadata, landmarks, headings, native links, code, and accessible SVG;
|
|
53
|
+
- build-known `example` route content, local image/font assets, and article-only CSS;
|
|
54
|
+
- labelled disclosure behavior and observable state;
|
|
55
|
+
- JavaScript-disabled content plus native `/about` navigation;
|
|
56
|
+
- readable article content when the required script is missing;
|
|
57
|
+
- zero JavaScript on `/static`.
|
|
58
|
+
|
|
59
|
+
Environment: Node 24.14.0, Chrome 142.0.7444.175, Linux x64. This was one
|
|
60
|
+
acceptance build per target, not a timing benchmark.
|
|
61
|
+
|
|
62
|
+
The first version used state-backed disclosure and exposed an 11,348 B Kudzu
|
|
63
|
+
route graph versus 410 B inline Astro JavaScript. Replacing every implementation
|
|
64
|
+
with native `<details>/<summary>` preserves acceptance and reaches 0 B route and
|
|
65
|
+
session JavaScript for every target.
|
|
66
|
+
|
|
67
|
+
| Target | Files | Total bytes | Deployed / session JS | Deploy SHA-256 |
|
|
68
|
+
|---|---:|---:|---:|---|
|
|
69
|
+
| Kudzu | 9 | 8,441 | 0 / 0 B | `49d1fa4e9c46e7e960e38d07130aa1f0d488f2d8c350ebec05d53ab78941d755` |
|
|
70
|
+
| React | 10 | 197,444 | 191,123 / 0 B | `95638a81350d5a3fa1fb1329e3c0d7e9cec5267f6fa2ac0ff5b54006f280d319` |
|
|
71
|
+
| Vue | 10 | 70,840 | 64,519 / 0 B | `96be755a12e6c733d20679043b0387353f3d9d3f873a57136f5f93e194e891ce` |
|
|
72
|
+
| Svelte | 10 | 32,768 | 26,447 / 0 B | `447d186ac55eba9fd6f9b20f75608e83ebd757f840dc19de99fa7ba2ab366375` |
|
|
73
|
+
| Astro | 7 | 8,680 | 0 / 0 B | `e75073eb394393aa636c6efab17c26fe8995113f1c9d79d4e02357990834940b` |
|
|
74
|
+
|
|
75
|
+
## Stateful And Capability Runs
|
|
76
|
+
|
|
77
|
+
Astro 7.1.3 React-island variants join React 19.2.8, Vue 3.5.40, Svelte 5.56.7,
|
|
78
|
+
and Kudzu in the local runtime and capability matrices. One warm-up, seven
|
|
79
|
+
rotating builds, and seven fresh rotating Chrome profiles pass for all five
|
|
80
|
+
targets.
|
|
81
|
+
|
|
82
|
+
The C2 matrix now proves immutable object replacement, multi-state derived
|
|
83
|
+
output, keyed 1,000-row local state/effect/ref ownership, filter/restore,
|
|
84
|
+
conditional child cleanup and fresh remount, accessible SVG keyboard state, a
|
|
85
|
+
zero-JavaScript static sibling, and blocked/delayed/missing-JavaScript behavior.
|
|
86
|
+
Kudzu emits 41,862 raw / 15,819 gzip B JavaScript versus 196,089 / 60,661 B
|
|
87
|
+
React and 197,771 / 61,994 B Astro+React. All 19 operations and ownership checks
|
|
88
|
+
pass in every profile.
|
|
89
|
+
|
|
90
|
+
The C5 matrix now proves dependency replacement, invalidation before cleanup,
|
|
91
|
+
late-callback suppression, 30 conditional mount/dispose cycles, exact listener
|
|
92
|
+
removal and Worker termination, flat final active handles, accessible output,
|
|
93
|
+
zero-resource-JavaScript static siblings, and blocked/delayed/missing-JavaScript
|
|
94
|
+
behavior. Every target records 32 balanced starts, invalidations, listener
|
|
95
|
+
removals, terminations, and ignored stale callbacks with zero stale mutations.
|
|
96
|
+
Kudzu's Worker graph is 17,639 raw / 8,189 gzip B versus 193,422 / 60,159 B
|
|
97
|
+
React and 195,108 / 61,493 B Astro+React. Uniform artifact, transfer, preload,
|
|
98
|
+
build-RSS, script CPU, heap, digest, and environment fields are recorded.
|
|
99
|
+
|
|
100
|
+
The final 21-profile C2 measurements close the browser release gate. Row-local
|
|
101
|
+
ref resolution, synchronous cleanup, per-list lifecycle gating, shared
|
|
102
|
+
list-item and ownership-path maps, item-dependency transport gating, structural
|
|
103
|
+
row fill/ID plans, row-state release cleanup, and boolean-toggle specialization
|
|
104
|
+
reduce row filter from 34.6 to 12.0 ms, ownership-heavy row restore from 208.6
|
|
105
|
+
to 62.6 ms, and search restore from 77.5 to 51.6 ms. Row filter is faster than
|
|
106
|
+
Vue's 13.3 ms; row restore and search restore are within 3.5% and 1.8% of their
|
|
107
|
+
nearest comparator medians of 60.5 and 50.7 ms. C5 repeated Worker processing, reconnect, 30-cycle
|
|
108
|
+
ownership, cleanup, heap, and active-handle measurements have no comparable
|
|
109
|
+
acceptance gap.
|
|
110
|
+
|
|
111
|
+
This optimization adds no semantic primitive, ModuleIR kind, compiler pass,
|
|
112
|
+
normalization entry, runtime concept, or public API, and changes zero measured
|
|
113
|
+
core semantic concepts or passes. Core semantic LOC grows from 5,311 to 5,317
|
|
114
|
+
for async production compilation, while the semantic-codegen/browser-runtime
|
|
115
|
+
file set grows from 2,771 to 2,854 lines. C2 deploy JavaScript is 43,567 raw /
|
|
116
|
+
16,408 gzip B while generated row command HTML and measured ownership work fall;
|
|
117
|
+
the frozen fixture count is unchanged.
|
|
118
|
+
|
|
119
|
+
## Commerce Scaling
|
|
120
|
+
|
|
121
|
+
The public storefront was linked to the current candidate and compared with
|
|
122
|
+
Astro using acceptance before timing, generated source/assets outside the timed
|
|
123
|
+
interval, one warm-up, 21 rotating cold builds, 21 rotating warm builds, peak
|
|
124
|
+
RSS, actual route counts, output bytes, and deterministic manifests.
|
|
125
|
+
|
|
126
|
+
| Products | Target | Routes | Cold / warm median | Peak RSS median | Output bytes |
|
|
127
|
+
|---:|---|---:|---:|---:|---:|
|
|
128
|
+
| 100 | Kudzu | 111 | 3,317 / 3,552 ms | 363,492 KiB | 1,368,823 |
|
|
129
|
+
| 100 | Astro | 111 | 3,558 / 3,710 ms | 330,252 KiB | 2,070,726 |
|
|
130
|
+
| 1,000 | Kudzu flattened input | 1,011 | 2,949 / 2,964 ms | 264,600 KiB | 10,057,806 |
|
|
131
|
+
| 1,000 | Astro | 1,011 | 3,835 / 3,845 ms | 408,100 KiB | 14,896,056 |
|
|
132
|
+
| 10,000 | Kudzu flattened input | 10,011 | 22,614 / 22,151 ms | 542,484 KiB | 96,379,876 |
|
|
133
|
+
| 10,000 | Astro | 10,011 | 23,198 / 23,438 ms | 612,412 KiB | 142,543,510 |
|
|
134
|
+
|
|
135
|
+
The fixture's preparation phase emits flattened page props and bounded collection
|
|
136
|
+
rows instead of compiling an unused 37 MiB nested catalog literal. Kudzu is
|
|
137
|
+
23.1%/22.9% faster cold/warm than Astro at 1,000 products and 2.5%/5.5%
|
|
138
|
+
faster at 10,000 products. The 10,000-product output digest is
|
|
139
|
+
`811234693329ebd61eeceb6cd05e5d52473e5c81972a820253bf1aea664a0910`.
|
|
140
|
+
One-shot CLI builds intern repeated RouteIR descriptors, update validated records
|
|
141
|
+
in place, spool rendered HTML to staging until runtime families are known, stream
|
|
142
|
+
the unchanged pretty plan, and release standalone plans after serialization.
|
|
143
|
+
Peak RSS falls 71.0% to 542,484 KiB, 11.4% below Astro's 612,412 KiB. Dev,
|
|
144
|
+
incremental, navigation, `afterBuild`,
|
|
145
|
+
the 135 MiB plan, and the 31 MiB artifact report retain their evidence contracts.
|
|
146
|
+
The retained-render and staged-HTML changes add no
|
|
147
|
+
semantic primitive, pass, runtime concept, public API, browser byte, or fixture;
|
|
148
|
+
the commerce output digest is unchanged by that deletion.
|
|
149
|
+
|
|
150
|
+
## Stale Results
|
|
151
|
+
|
|
152
|
+
The runtime raw file identifies revision `468372b` with the production changes
|
|
153
|
+
uncommitted, while the capability raw file identifies `f213e73`; both record
|
|
154
|
+
their exact ignored benchmark source hashes. Other ignored result files still
|
|
155
|
+
identify older candidates:
|
|
156
|
+
|
|
157
|
+
| Suite | Recorded Kudzu |
|
|
158
|
+
|---|---:|
|
|
159
|
+
| Calculated SVG | 0.8.1 |
|
|
160
|
+
| Commerce desktop | 0.6.13 |
|
|
161
|
+
| Commerce mobile | 0.5.10 |
|
|
162
|
+
|
|
163
|
+
They cannot establish the 0.9 candidate or be presented as checked-in evidence.
|
|
164
|
+
|
|
165
|
+
## AI Migration Handoff
|
|
166
|
+
|
|
167
|
+
Model-driven success rate and cost belong to the 1.0 AI Delivery Protocol Seed,
|
|
168
|
+
not the 0.9 browser/build release gate. No model result is fabricated for 0.9.
|
|
169
|
+
|
|
170
|
+
## Completion
|
|
171
|
+
|
|
172
|
+
1. The 10,000-route peak-RSS loss is closed without dropping route-plan or artifact evidence.
|
|
173
|
+
2. Seven rotating 10,000-product cold and warm samples pass build-time, RSS, acceptance, and deterministic-output gates.
|
|
174
|
+
3. Model-driven AI migration measurement remains in the 1.0 work item.
|
|
175
|
+
|
|
176
|
+
The 0.9 final-proof gates are closed.
|