@kudzujs/core 0.9.3 → 0.10.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.
@@ -2,11 +2,11 @@
2
2
 
3
3
  This document is the source of truth for Kudzu's product direction, architecture invariants, and future development order. Read it before extending React-shaped syntax or browser capabilities.
4
4
 
5
- The completed `0.9.0` execution sequence is maintained in [`docs/next-architecture/0.9-semantic-compression.md`](./docs/next-architecture/0.9-semantic-compression.md), with session-level implementation records in [`docs/next-architecture/0.9-implementation-plan.md`](./docs/next-architecture/0.9-implementation-plan.md). The next authorized milestone is the 1.0 AI delivery protocol recorded there. The completed compiler foundation and longer-term sequence remain in [`docs/next-architecture/large-application-ai-native-roadmap.md`](./docs/next-architecture/large-application-ai-native-roadmap.md); this document remains authoritative when selecting or accepting a migration capability.
5
+ The completed `0.9.0` execution sequence is maintained in [`docs/next-architecture/0.9-semantic-compression.md`](./docs/next-architecture/0.9-semantic-compression.md), with session-level implementation records in [`docs/next-architecture/0.9-implementation-plan.md`](./docs/next-architecture/0.9-implementation-plan.md). The next authorized execution train is [`docs/next-architecture/application-capability-release-plan.md`](./docs/next-architecture/application-capability-release-plan.md): each application-capability section owns one minor release, each independently accepted work packet owns one patch release, and the train closes with the separately gated 1.0 AI delivery proof. The completed compiler foundation and longer-term research remain in [`docs/next-architecture/large-application-ai-native-roadmap.md`](./docs/next-architecture/large-application-ai-native-roadmap.md); this document remains authoritative when selecting or accepting a migration capability.
6
6
 
7
7
  [`GOAL_A.md`](./GOAL_A.md) and [`GOAL_B.md`](./GOAL_B.md) are completed capability-validation records. Their commerce and realtime dashboard fixtures prove general lifecycle, navigation, async-workflow, and Worker capabilities; they are not separate product verticals or future priority lists.
8
8
 
9
- The post-0.9 local discovery audit of Memos, Apache Answer, and Actual Budget is recorded in [`docs/next-architecture/1.0-large-application-compatibility-audit.md`](./docs/next-architecture/1.0-large-application-compatibility-audit.md). Its passing reduced builds are not whole-application migrations. Each package-component, browser-data, router/layout, provider, and localization shape requires a separate executable evidence packet under the authorized 1.0 protocol before implementation.
9
+ The post-0.9 local discovery audit of Memos, Apache Answer, and Actual Budget is recorded in [`docs/next-architecture/1.0-large-application-compatibility-audit.md`](./docs/next-architecture/1.0-large-application-compatibility-audit.md). Its passing reduced builds are not whole-application migrations. Each package-component, browser-data, router/layout, provider, and localization shape requires a separate executable evidence packet under the authorized application-capability release plan before implementation.
10
10
 
11
11
  The first Apache Answer reduction is complete: one direct top-level `const match = useMatch("/exact-path")` over a named or aliased React Router import folds case-insensitively against the build-known application route. Reused relative components produce route-specific static HTML with zero browser bytes. Layout use, runtime-parameter pages, params, wildcards, query/hash patterns, trailing slashes, dynamic values, indirect calls, and pattern objects remain diagnosed.
12
12
 
@@ -53,6 +53,16 @@ Syntax compatibility does not mean reproducing React wholesale. Kudzu accepts th
53
53
 
54
54
  The active 0.9 plan defines the exact comparison and release gate. Benchmark-only feature omission, unmatched accessibility, weighted scores that hide losses, and unrecorded environment differences do not count as proof.
55
55
 
56
+ ### 0.10.0 Through 0.21.x: Application Capability Release Train
57
+
58
+ The post-0.9 train proves Kudzu as an application framework before freezing
59
+ 1.0. Local/shared state, async/server data, routing/lifetime, forms, large
60
+ lists, overlays, external UI, long-lived resources, lazy loading, React
61
+ migration, AI tooling, and production-scale proof each own one minor release.
62
+ Each independently reviewable evidence packet owns one patch release. The exact
63
+ sequence, stop conditions, completion gates, and active status are maintained in
64
+ [`docs/next-architecture/application-capability-release-plan.md`](./docs/next-architecture/application-capability-release-plan.md).
65
+
56
66
  ### 1.0.0: Best Framework For AI-Assisted Delivery
57
67
 
58
68
  `1.0.0` means Kudzu Semantic IR v1 is stable and Kudzu is demonstrably the best framework in the maintained AI delivery benchmark, not merely the framework with the smallest runtime.
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.9.x`: the compiler API and supported TSX surface may change.
15
+ > Experimental `0.10.x`: the compiler API and supported TSX surface may change.
16
16
 
17
- **Latest release: 0.9.3 - Large-app migration slices.** Apache Answer-derived fixtures add exact route matching, composed query reads, native React Bootstrap layout, owned browser data, authentication build intake, route-shell, and authoring/admin migration evidence without React or package runtimes. Read the [release notes](./RELEASES.md#093---large-app-migration-slices), open the [release page](https://github.com/kudzujs/kudzu/releases/tag/v0.9.3), or follow the [architecture packet](./docs/next-architecture/README.md).
17
+ **Latest release: 0.10.0 - Application capability baseline.** A tracked greenfield project application now fixes the state, browser, output, and static zero-JavaScript contract used by the capability release train. Read the [release notes](./RELEASES.md#0100---application-capability-baseline), open the [release page](https://github.com/kudzujs/kudzu/releases/tag/v0.10.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,57 @@
1
1
  # Kudzu Releases
2
2
 
3
+ ## 0.10.0 - Application capability baseline
4
+
5
+ Kudzu 0.10.0 begins the application capability release train with a durable
6
+ greenfield project-management contract. Later state, data, routing, form, list,
7
+ overlay, external UI, lifecycle, lazy-loading, migration, and AI work must extend
8
+ this application or another explicit evidence packet rather than claim success
9
+ from isolated build output.
10
+
11
+ ### Changed in 0.10.0
12
+
13
+ - Added tracked `/login`, `/app/projects`, and `/help` greenfield application
14
+ routes with a machine-readable capability contract.
15
+ - Reused the existing primitive state command and direct text output without a
16
+ compiler pass, Handler ESM, new semantic primitive, or new runtime concept.
17
+ - Added a dedicated browser journey for the project-state interaction and a
18
+ static help control that emits no JavaScript.
19
+ - Established the capability-by-minor and evidence-packet-by-patch release plan
20
+ through the `1.0.0` application and AI delivery gate.
21
+ - Updated `create-kudzu@0.1.104` to generate projects on
22
+ `@kudzujs/core@^0.10.0`.
23
+
24
+ ### Output Evidence
25
+
26
+ - The greenfield fixture emits 4 deploy files, 1,970 raw bytes, 1,265 aggregate
27
+ gzip bytes, and deploy digest
28
+ `94ce7d01cac2e80823a36279294015d2f22328acaed571abb9996f8ca6171121`.
29
+ - `/app/projects` uses the existing 768 raw / 441 aggregate gzip byte command
30
+ runtime graph.
31
+ - `/help` emits complete HTML and 0 B JavaScript.
32
+ - Production semantic primitives, compiler passes, compiler LOC, and runtime
33
+ concepts are unchanged.
34
+
35
+ ### Validation
36
+
37
+ - The focused greenfield browser contract passes in Chrome.
38
+ - `npm run check`, all 273 non-browser tests, all 273 required-Chrome tests, and
39
+ `npm run test:package` pass on the release worktree.
40
+ - No performance comparison is claimed because production compiler and runtime
41
+ sources are unchanged; the exact fixture output baseline is executable.
42
+
43
+ ### Limits
44
+
45
+ This release does not claim project CRUD, authentication, server data, shared
46
+ layout state, or a complete large application. Those remain ordered capability
47
+ packets beginning with `0.10.1`.
48
+
49
+ ### Upgrade
50
+
51
+ ```sh
52
+ npm install @kudzujs/core@^0.10.0
53
+ ```
54
+
3
55
  ## 0.9.3 - Large-app migration slices
4
56
 
5
57
  Kudzu 0.9.3 adds evidence-backed compiler and source-migration paths derived
@@ -15,6 +15,8 @@ The completed `0.9.0` milestone is recorded in [`0.9-semantic-compression.md`](.
15
15
 
16
16
  [`1.0-large-application-compatibility-audit.md`](./1.0-large-application-compatibility-audit.md) records the first post-0.9 probes against Memos, Apache Answer, and Actual Budget. The audit finds that reduced slices build but whole-application source retention and behavior parity do not yet pass.
17
17
 
18
+ [`application-capability-release-plan.md`](./application-capability-release-plan.md) is the authoritative post-0.9 execution queue. It assigns one application-capability section to each minor release and one independently accepted evidence packet to each patch release from `0.10.0` through the `1.0.0` gate. It supersedes the provisional 0.10/0.11/0.12 tool-first ordering in the completed 0.9 handoff without rewriting that historical record.
19
+
18
20
  ## Required Invariants
19
21
 
20
22
  - Every route remains a complete static HTML document.
@@ -27,24 +29,25 @@ The completed `0.9.0` milestone is recorded in [`0.9-semantic-compression.md`](.
27
29
 
28
30
  ## Reading Order
29
31
 
30
- 1. [`0.9-semantic-compression.md`](./0.9-semantic-compression.md): completed scope, evidence, and release gates.
31
- 2. [`0.9-implementation-plan.md`](./0.9-implementation-plan.md): detailed session packets, benchmark plan, reports, and release procedure.
32
- 3. [`0.9-baseline.md`](./0.9-baseline.md): dated architecture, pass, IR, runtime-concept, LOC, and test baseline.
33
- 4. [`0.9-benchmark-contracts.md`](./0.9-benchmark-contracts.md): frozen matched-content, stateful, commerce, scale, resource, and anti-gaming contracts.
34
- 5. [`1.0-large-application-compatibility-audit.md`](./1.0-large-application-compatibility-audit.md): local large-application migration probes, retention caveats, blockers, and authorized-protocol handoff.
35
- 6. [`compiler-current-architecture.md`](./compiler-current-architecture.md): exact current responsibilities and data flow.
36
- 7. [`performance-gates.md`](./performance-gates.md): output, build, and browser gates.
37
- 8. [`large-application-ai-native-roadmap.md`](./large-application-ai-native-roadmap.md): completed foundation, longer-term direction, and completion evidence.
38
- 9. [`goal-a-compiler-foundation.md`](./goal-a-compiler-foundation.md): completed extraction and generator foundation.
39
- 10. [`versioning.md`](./versioning.md): completed patch sequence and future sequencing rules.
40
- 11. [`goal-b-optimization-benchmarks.md`](./goal-b-optimization-benchmarks.md): active measurements, retained optimizations, and continuation rules.
41
- 12. [`goal-c-state-resource-research.md`](./goal-c-state-resource-research.md): research boundary only.
42
- 13. [`goal-d-routing-compatibility-decisions.md`](./goal-d-routing-compatibility-decisions.md): routing and islands decisions.
32
+ 1. [`application-capability-release-plan.md`](./application-capability-release-plan.md): active minor/patch execution queue through `1.0.0`.
33
+ 2. [`0.9-semantic-compression.md`](./0.9-semantic-compression.md): completed scope, evidence, and release gates.
34
+ 3. [`0.9-implementation-plan.md`](./0.9-implementation-plan.md): detailed historical session packets, benchmark plan, reports, and release procedure.
35
+ 4. [`0.9-baseline.md`](./0.9-baseline.md): dated architecture, pass, IR, runtime-concept, LOC, and test baseline.
36
+ 5. [`0.9-benchmark-contracts.md`](./0.9-benchmark-contracts.md): frozen matched-content, stateful, commerce, scale, resource, and anti-gaming contracts.
37
+ 6. [`1.0-large-application-compatibility-audit.md`](./1.0-large-application-compatibility-audit.md): local large-application migration probes, retention caveats, blockers, and authorized-protocol handoff.
38
+ 7. [`compiler-current-architecture.md`](./compiler-current-architecture.md): exact current responsibilities and data flow.
39
+ 8. [`performance-gates.md`](./performance-gates.md): output, build, and browser gates.
40
+ 9. [`large-application-ai-native-roadmap.md`](./large-application-ai-native-roadmap.md): completed foundation, longer-term direction, and completion evidence.
41
+ 10. [`goal-a-compiler-foundation.md`](./goal-a-compiler-foundation.md): completed extraction and generator foundation.
42
+ 11. [`versioning.md`](./versioning.md): completed patch sequence and future sequencing rules.
43
+ 12. [`goal-b-optimization-benchmarks.md`](./goal-b-optimization-benchmarks.md): active measurements, retained optimizations, and continuation rules.
44
+ 13. [`goal-c-state-resource-research.md`](./goal-c-state-resource-research.md): research boundary only.
45
+ 14. [`goal-d-routing-compatibility-decisions.md`](./goal-d-routing-compatibility-decisions.md): routing and islands decisions.
43
46
 
44
47
  ## Resume Checklist
45
48
 
46
49
  - [ ] Read [`MIGRATION_ROADMAP.md`](../../MIGRATION_ROADMAP.md), [`0.9-semantic-compression.md`](./0.9-semantic-compression.md), and [`0.9-implementation-plan.md`](./0.9-implementation-plan.md) before planning migration work.
47
- - [ ] Follow the authorized 1.0 AI delivery protocol; treat post-0.9 compatibility audits as candidate-selection input, not replacement work queues.
50
+ - [ ] Follow the active patch in [`application-capability-release-plan.md`](./application-capability-release-plan.md); treat compatibility audits as candidate-selection input, not replacement work queues.
48
51
  - [ ] Confirm `package.json` still reports the actual current version; never infer release status from this plan.
49
52
  - [ ] Inspect the worktree and preserve unrelated or uncommitted changes.
50
53
  - [ ] Start later architecture work only by an explicit decision from the completed Goal A baseline.
@@ -0,0 +1,838 @@
1
+ # Application Capability Release Plan
2
+
3
+ This is the authoritative execution plan from `0.10.0` through `1.0.0`. It
4
+ replaces the provisional `0.10` normalize, `0.11` diagnostics, and `0.12`
5
+ adapter ordering recorded in the completed 0.9 packet. Those tools remain in
6
+ scope, but application capability evidence now determines their order.
7
+
8
+ The plan assigns one application-capability section to each minor release and
9
+ one independently releasable evidence packet to each patch release. Planned
10
+ versions are not completed releases. `package.json`, release notes, tags, and
11
+ registry metadata change only after the matching packet passes every gate.
12
+
13
+ ## Product Outcome
14
+
15
+ Kudzu must support complete modern application journeys with no React runtime,
16
+ VDOM, hydration, retained browser component tree, generic component renderer,
17
+ or hook dispatcher. Static routes may still emit zero JavaScript. Interactive
18
+ routes may emit every route- or feature-specific capability required for
19
+ correct behavior.
20
+
21
+ The target is zero unused runtime, not zero runtime.
22
+
23
+ ## Version Map
24
+
25
+ | Minor | Capability section | Required outcome |
26
+ |---|---|---|
27
+ | `0.10.x` | Local and shared state | The greenfield application shell and state ownership baseline are executable. |
28
+ | `0.11.x` | Async and server data | Loading, errors, stale work, mutation, and evidence-backed shared coordination are complete. |
29
+ | `0.12.x` | Routing and application lifetime | Authenticated route, layout, history, focus, and failure journeys are complete. |
30
+ | `0.13.x` | Forms | Production-shaped validation, drafts, conditional fields, autosave, and upload boundaries are complete. |
31
+ | `0.14.x` | Lists, tables, and virtualization | Large keyed data behavior and a measured bounded-DOM decision are complete. |
32
+ | `0.15.x` | Overlay and layer ownership | Accessible dialog, popover/menu, toast, and any proven layer ownership are complete. |
33
+ | `0.16.x` | External complex UI | Real editor, chart/map, or grid packages use bounded mount/update/dispose ownership. |
34
+ | `0.17.x` | Long-lived applications | Realtime, repeated navigation, cleanup, and long-running memory gates pass. |
35
+ | `0.18.x` | Lazy loading and code splitting | Large feature dependencies load only when their owner requires them. |
36
+ | `0.19.x` | React ecosystem migration | Apache Answer and Memos pass connected browser journeys through the compatibility boundary. |
37
+ | `0.20.x` | AI tooling and delivery cost | Structured tools and a fair tracked AI benchmark reduce cost per successful task. |
38
+ | `0.21.x` | Production-scale proof | Functional parity, build scale, browser performance, memory, and release evidence pass together. |
39
+ | `1.0.0` | Stable application model | Semantic IR v1 is stable and the maintained AI delivery gate passes. |
40
+
41
+ ## Execution Rules
42
+
43
+ 1. Work on exactly one patch packet at a time. Start the next packet only after
44
+ the previous packet is released or this document explicitly replans it.
45
+ 2. Begin behavior work with a real failing greenfield or React-derived fixture.
46
+ 3. Reduce the failure through native platform behavior, existing Kudzu
47
+ semantics, normalization, or an internal adapter, in that order.
48
+ 4. Two unrelated real fixtures register a repeated application limitation.
49
+ Three unrelated real fixtures are required before architecture review may
50
+ authorize a new semantic primitive.
51
+ 5. A patch may complete without a new primitive, compiler pass, public API, or
52
+ runtime when existing composition satisfies its acceptance contract.
53
+ 6. Package-specific knowledge ends in compatibility analysis, normalization,
54
+ or an internal adapter. It must not enter generic IR, codegen, or runtime.
55
+ 7. Every static sibling remains JavaScript-free. Every interactive route emits
56
+ only the capabilities selected by its validated route record.
57
+ 8. Every patch records semantic primitives, core compiler/pass LOC, runtime
58
+ concepts, browser bytes, fixtures, output hashes, and benchmark deltas.
59
+ 9. Do not publish a planned version merely because its source compiles. The
60
+ exact release commit must pass behavior, accessibility, browser, output,
61
+ package, and applicable performance gates.
62
+ 10. Never silently combine patch packets. Revise this plan first when an
63
+ inseparable producer/consumer boundary is proven.
64
+
65
+ ## Shared Testbeds
66
+
67
+ ### Greenfield Project Application
68
+
69
+ The maintained greenfield testbed is a project-management SaaS with this route
70
+ shape:
71
+
72
+ ```text
73
+ /login
74
+ /app/projects
75
+ /app/projects/:projectId
76
+ /app/issues
77
+ /app/issues/:issueId
78
+ /app/settings
79
+ /help
80
+ ```
81
+
82
+ It grows one accepted user journey at a time. `/help` is the static zero-JS
83
+ control. The application uses a deterministic local HTTP server until a packet
84
+ explicitly requires a different transport.
85
+
86
+ ### Apache Answer
87
+
88
+ The connected acceptance target is:
89
+
90
+ ```text
91
+ login
92
+ -> question list
93
+ -> search/filter/pagination
94
+ -> detail
95
+ -> create/edit
96
+ -> server validation/error
97
+ -> mutation and list refresh
98
+ -> logout
99
+ ```
100
+
101
+ ### Memos
102
+
103
+ The connected acceptance target is:
104
+
105
+ ```text
106
+ login
107
+ -> feed
108
+ -> pagination
109
+ -> create memo
110
+ -> reaction
111
+ -> realtime refresh
112
+ -> logout
113
+ ```
114
+
115
+ Actual Budget remains deferred until a complete pinned workspace and executable
116
+ dependency graph are available.
117
+
118
+ ## `0.10.x`: Local And Shared State
119
+
120
+ ### `0.10.0`: Application Contract And State Baseline
121
+
122
+ - **Purpose:** create the durable greenfield testbed and capability inventory.
123
+ - **Current limitation:** state, forms, lists, and navigation are proven mostly
124
+ in isolated fixtures rather than one maintained application.
125
+ - **Expected files:** a dedicated project-application fixture, browser
126
+ acceptance entry, package script, and capability manifest; no production
127
+ compiler or runtime file should change.
128
+ - **Acceptance:** `/app/projects` renders deterministic project state, one
129
+ interaction updates direct DOM, `/help` emits zero JavaScript, required
130
+ Chrome runs in CI, and route/artifact baselines are recorded.
131
+ - **AI effect:** one application and one manifest replace repeated repository
132
+ exploration when selecting later capability work.
133
+ - **Stop condition:** the fixture becomes a syntax showcase instead of a user
134
+ journey, or requires a new primitive before the baseline exists.
135
+ - **Done condition:** every later packet can add behavior to the same testbed
136
+ and reuse its framework-neutral acceptance harness.
137
+
138
+ **Completion evidence:** the tracked project application emits `/login`,
139
+ `/app/projects`, and `/help`. The project route reuses one existing primitive
140
+ SignalIR state and one command handler; it adds no production compiler LOC,
141
+ pass, semantic primitive, Handler ESM, or runtime concept. Its existing command
142
+ runtime graph is 768 raw / 441 aggregate gzip bytes, while `/help` emits 0 B
143
+ JavaScript. The complete fixture emits 4 files, 1,970 raw / 1,265 aggregate gzip
144
+ bytes, with deploy digest
145
+ `94ce7d01cac2e80823a36279294015d2f22328acaed571abb9996f8ca6171121`.
146
+ The focused Chrome journey, `npm run check`, 273 non-browser tests, 273
147
+ required-Chrome tests, and package smoke pass. No production performance claim
148
+ is made because compiler and runtime sources are unchanged.
149
+
150
+ ### `0.10.1`: Local, Object, Array, And Derived State Scale
151
+
152
+ - **Purpose:** prove stable dependency and ownership behavior with many ordinary
153
+ states and nested JSON-safe application records.
154
+ - **Expected boundary:** existing SignalIR, DerivedIR, bindings, conditions, and
155
+ keyed ownership; no normalized-state runtime.
156
+ - **Acceptance:** deterministic updates across project summary, filters, issue
157
+ counts, derived labels, conditional owners, and nested lists; unrelated DOM
158
+ does not change; removal releases owned state.
159
+ - **Performance:** record commit latency and runtime metadata for increasing
160
+ state/dependency counts.
161
+ - **Stop condition:** proposed support depends on arbitrary object mutation or a
162
+ generic rerender loop.
163
+ - **Done condition:** the recorded scale remains within the material regression
164
+ threshold and nearby unsupported dynamic paths fail at authored locations.
165
+
166
+ ### `0.10.2`: Shared Layout And Cross-Route State
167
+
168
+ - **Purpose:** keep workspace/session state across an explicit application
169
+ navigation group while resetting route-owned state.
170
+ - **Expected boundary:** existing SharedStateIR, layout state IDs, route release,
171
+ and native fallback.
172
+ - **Acceptance:** workspace selection survives project/list/detail transitions;
173
+ route drafts reset; reload behavior is explicit; a separate route group does
174
+ not receive the shared state.
175
+ - **Stop condition:** implementation requires a document-global store or SPA
176
+ router.
177
+ - **Done condition:** state lifetime and disposal are exact in browser tests and
178
+ static routes receive no shared-state runtime.
179
+
180
+ ### `0.10.3`: Persistence Recipe And State Release
181
+
182
+ - **Purpose:** prove URL, storage, and server-backed persistence without adding a
183
+ persistence framework.
184
+ - **Expected boundary:** application-owned effects and Web Storage.
185
+ - **Acceptance:** guarded restore, schema/version failure fallback, write after
186
+ state changes, logout clear, conditional/keyed release, and fresh remount.
187
+ - **Stop condition:** a generic persistence API is proposed without another
188
+ independent application requirement.
189
+ - **Done condition:** deterministic static fallback and browser recovery pass
190
+ with no storage runtime in unused routes.
191
+
192
+ ## `0.11.x`: Async And Server Data
193
+
194
+ ### `0.11.0`: Owned Fetch Lifecycle
195
+
196
+ - **Purpose:** establish the greenfield loading/error/data/refetch baseline.
197
+ - **Expected boundary:** existing EffectIR, ordinary state, and native `fetch`.
198
+ - **Acceptance:** delayed stale response loses state authority, HTTP failure is
199
+ accessible, explicit refetch recovers, route removal blocks late writes, and
200
+ authored cancellation is tested where required.
201
+ - **Stop condition:** a query cache is added to implement one request.
202
+ - **Done condition:** the project list journey passes and `/help` stays zero-JS.
203
+
204
+ ### `0.11.1`: List And Detail Data Consistency Evidence
205
+
206
+ - **Purpose:** expose the first real multi-consumer coordination limit.
207
+ - **Expected boundary:** layout shared state plus existing effects first.
208
+ - **Acceptance:** project list and detail observe one mutation, duplicate
209
+ requests are counted, route changes and refresh are deterministic, and all
210
+ current limitations are machine-recorded.
211
+ - **Stop condition:** the fixture invents package-shaped query semantics not
212
+ required by the user journey.
213
+ - **Done condition:** existing composition is accepted or the smallest repeated
214
+ missing coordination contract is isolated.
215
+
216
+ ### `0.11.2`: Shared Request Coordination
217
+
218
+ - **Purpose:** implement only the deduplication, subscriber, and invalidation
219
+ semantics authorized by `0.11.1` and two additional independent fixtures.
220
+ - **Expected boundary:** package-neutral application semantics; no TanStack,
221
+ SWR, Provider, retry scheduler, or public query API by default.
222
+ - **Acceptance:** one in-flight request per key, exact subscriber ownership,
223
+ invalidation after mutation, route/layout disposal, bounded retention, and
224
+ static exclusion.
225
+ - **Stop condition:** three unrelated fixtures do not require the same semantic
226
+ primitive, or ordinary shared state remains sufficient.
227
+ - **Done condition:** architecture review records the reused or new primitive,
228
+ runtime bytes, cache bound, and cleanup behavior.
229
+
230
+ ### `0.11.3`: Mutation, Optimistic Update, And Rollback
231
+
232
+ - **Purpose:** complete issue create/edit/delete behavior under failure.
233
+ - **Expected boundary:** immediate state setters and existing shared data
234
+ coordination; a transaction primitive is evidence-gated.
235
+ - **Acceptance:** optimistic list/detail update, server rejection, exact
236
+ rollback, duplicate-submit prevention, retained row identity, and accessible
237
+ error state.
238
+ - **Stop condition:** generic transactions are proposed for a single-owner
239
+ handler.
240
+ - **Done condition:** data integrity survives success, failure, navigation, and
241
+ retry.
242
+
243
+ ### `0.11.4`: Pagination, Refresh, And Polling Policy
244
+
245
+ - **Purpose:** complete bounded server-data loading before infinite data work.
246
+ - **Expected boundary:** URL signals, effects, native timers, and visibility
247
+ events.
248
+ - **Acceptance:** page/filter synchronization, back/forward, refresh, optional
249
+ polling cleanup, no duplicate work, and bounded retained results.
250
+ - **Stop condition:** background policy becomes a universal scheduler without
251
+ repeated evidence.
252
+ - **Done condition:** the exact owner and network behavior are measured and
253
+ documented.
254
+
255
+ ## `0.12.x`: Routing And Application Lifetime
256
+
257
+ ### `0.12.0`: Project Route Shell And Runtime Parameters
258
+
259
+ - **Purpose:** prove directly addressable project and issue routes.
260
+ - **Expected boundary:** file routes, runtime parameters, complete HTML, and
261
+ native navigation.
262
+ - **Acceptance:** direct entry, reload, invalid parameter rejection, project to
263
+ issue navigation, and standalone fallback.
264
+ - **Stop condition:** an SPA route registry is introduced.
265
+ - **Done condition:** all target routes are addressable without a browser router.
266
+
267
+ ### `0.12.1`: Shared Layout, History, Focus, And Scroll
268
+
269
+ - **Purpose:** complete the accepted same-document application group behavior.
270
+ - **Expected boundary:** existing navigation runtime and layout/route lifetime.
271
+ - **Acceptance:** back/forward, retained layout state, route cleanup, title/live
272
+ announcement, focus destination, hash behavior, and explicit scroll policy.
273
+ - **Stop condition:** browser-native navigation is weakened for routes outside
274
+ the approved group.
275
+ - **Done condition:** keyboard and browser-history journeys pass with native
276
+ recovery.
277
+
278
+ ### `0.12.2`: Authentication And Permission Boundary
279
+
280
+ - **Purpose:** complete login, restore, 401, logout, and permission-aware UI.
281
+ - **Expected boundary:** shared layout state, owned fetch, storage, and server or
282
+ host authorization.
283
+ - **Acceptance:** invalid and valid login, reload restoration, direct protected
284
+ entry, role-aware controls, server rejection, token clear, and logout.
285
+ - **Stop condition:** client conditional rendering is presented as a security
286
+ boundary.
287
+ - **Done condition:** server authorization and client UX responsibilities are
288
+ executable and explicit.
289
+
290
+ ### `0.12.3`: Route Failure And Restoration Policy
291
+
292
+ - **Purpose:** decide application-visible handling of navigation/data failures.
293
+ - **Expected boundary:** native fallback and application-owned error UI first.
294
+ - **Acceptance:** invalid document, asset failure, offline/error state, retry,
295
+ focus restoration, and no half-replaced route.
296
+ - **Stop condition:** a generic React-style error-boundary renderer is required.
297
+ - **Done condition:** every failure leaves a valid document and recoverable
298
+ navigation path.
299
+
300
+ ### `0.12.4`: Nested Layout Evidence Decision
301
+
302
+ - **Purpose:** determine whether multiple independently retained layout owners
303
+ are required.
304
+ - **Acceptance:** at least three unrelated application routes demonstrate the
305
+ same lifetime that one shared layout plus static composition cannot express.
306
+ - **Stop condition:** route nesting is only a source-organization preference.
307
+ - **Done condition:** either existing layout composition is accepted or a
308
+ minimal layout-owner chain is approved with explicit disposal order.
309
+
310
+ ## `0.13.x`: Forms
311
+
312
+ ### `0.13.0`: Production Form And Server Validation
313
+
314
+ - **Purpose:** complete issue creation with native constraints and server errors.
315
+ - **Expected boundary:** native form, FormData, state, and async handler.
316
+ - **Acceptance:** keyboard submit, native constraints, pending state, field and
317
+ form errors, retry, focus/ARIA linkage, and retained valid input.
318
+ - **Stop condition:** React Hook Form is reproduced.
319
+ - **Done condition:** complete accessible create/edit behavior passes without a
320
+ form runtime.
321
+
322
+ ### `0.13.1`: Nested Fields, Field Arrays, Dirty, And Touched
323
+
324
+ - **Purpose:** determine which form metadata needs framework support.
325
+ - **Expected boundary:** object/array state and keyed rows first.
326
+ - **Acceptance:** dynamic assignee/checklist rows, reorder/remove, conditional
327
+ fields, dirty/touched display, reset, and exact row identity.
328
+ - **Stop condition:** a registration/proxy runtime is added before three
329
+ independent forms require the same metadata graph.
330
+ - **Done condition:** application composition is accepted or the smallest
331
+ repeated metadata semantic is isolated.
332
+
333
+ ### `0.13.2`: Multistep Draft And Autosave
334
+
335
+ - **Purpose:** prove draft persistence across steps and failures.
336
+ - **Expected boundary:** routes or conditionals, state, dependency effects,
337
+ debounce cleanup, and storage/server persistence.
338
+ - **Acceptance:** step navigation, validation gate, debounced save, stale-save
339
+ rejection, reload restore, reset, and conflict/error state.
340
+ - **Stop condition:** a wizard or autosave scheduler is added for one form.
341
+ - **Done condition:** no data loss occurs across navigation, reload, or failure.
342
+
343
+ ### `0.13.3`: File Upload Boundary
344
+
345
+ - **Purpose:** move beyond local file reading to a real upload lifecycle.
346
+ - **Expected boundary:** native input, FormData/fetch or a proven browser API.
347
+ - **Acceptance:** type/size validation, progress when the selected transport can
348
+ expose it, cancellation, failure/retry, route departure, and successful
349
+ attachment mutation.
350
+ - **Stop condition:** chunking/resume/background upload is added without a real
351
+ application requirement.
352
+ - **Done condition:** the supported transport and unsupported progress/resume
353
+ boundary are explicit and tested.
354
+
355
+ ## `0.14.x`: Lists, Tables, And Virtualization
356
+
357
+ ### `0.14.0`: Project Table CRUD And Identity
358
+
359
+ - **Purpose:** establish the production table baseline.
360
+ - **Expected boundary:** existing keyed list runtime and valid table structure.
361
+ - **Acceptance:** insert, update, delete, reorder, sort, filter, selection,
362
+ row-local edit state, keyboard access, and retained DOM identity.
363
+ - **Stop condition:** a data-grid runtime is introduced for ordinary tables.
364
+ - **Done condition:** complete CRUD behavior passes with measured update latency.
365
+
366
+ ### `0.14.1`: Nested And Object-State Collections
367
+
368
+ - **Purpose:** prove project/group/issue/checklist nesting from ordinary object
369
+ state without authored field state.
370
+ - **Expected boundary:** existing object-property links and nested KeyedBlockIR.
371
+ - **Acceptance:** replacement, nested insertion/removal/reorder, latest handlers,
372
+ row cleanup, invalid-shape rejection, and static sibling exclusion.
373
+ - **Stop condition:** dynamic property paths or mutation require generic runtime
374
+ object observation.
375
+ - **Done condition:** direct immutable paths cover the application journey and
376
+ nearby dynamic forms fail clearly.
377
+
378
+ ### `0.14.2`: Infinite Loading Composition
379
+
380
+ - **Purpose:** prove sentinel-driven incremental loading before virtualization.
381
+ - **Expected boundary:** IntersectionObserver, owned fetch, append, keyed list.
382
+ - **Acceptance:** cursor progression, duplicate suppression, end/error/retry,
383
+ route cleanup, retained identity, and bounded result policy.
384
+ - **Stop condition:** infinite-query or observer runtime is added for one list.
385
+ - **Done condition:** the full journey passes with explicit network and memory
386
+ bounds.
387
+
388
+ ### `0.14.3`: 10,000-Item Browser Decision
389
+
390
+ - **Purpose:** measure direct DOM, pagination, and windowing alternatives.
391
+ - **Acceptance:** equivalent behavior, keyboard access, edit identity, scroll
392
+ latency, DOM count, heap, and update latency across alternatives.
393
+ - **Stop condition:** a virtualization result is claimed without equivalent
394
+ behavior or repeated samples.
395
+ - **Done condition:** the selected strategy and thresholds are recorded without
396
+ assuming direct 10,000-row rendering is acceptable.
397
+
398
+ ### `0.14.4`: Virtual Range Ownership
399
+
400
+ - **Purpose:** implement bounded DOM only if `0.14.3` and three independent
401
+ fixtures authorize it.
402
+ - **Expected boundary:** keyed ownership extended by a minimal visible-range
403
+ owner; no general component renderer.
404
+ - **Acceptance:** spacer/measurement behavior, retained key state, keyboard and
405
+ focus, dynamic row height policy, cleanup, and bounded heap.
406
+ - **Stop condition:** evidence favors pagination or native containment.
407
+ - **Done condition:** range semantics are package-neutral, optional, measured,
408
+ and absent from non-virtual routes.
409
+
410
+ ## `0.15.x`: Overlay And Layer Ownership
411
+
412
+ ### `0.15.0`: Native Dialog Baseline
413
+
414
+ - **Purpose:** use browser top-layer semantics for destructive issue actions.
415
+ - **Acceptance:** initial focus, Escape/cancel, confirm, trigger focus restore,
416
+ inert background, route cleanup, and static exclusion.
417
+ - **Stop condition:** a custom modal/focus-trap runtime replaces `<dialog>`.
418
+ - **Done condition:** project delete and edit confirmation pass accessibly.
419
+
420
+ ### `0.15.1`: Popover, Dropdown, And Menu Behavior
421
+
422
+ - **Purpose:** establish the native-first non-modal overlay boundary.
423
+ - **Expected boundary:** native Popover where available, ordinary state/events,
424
+ and owned listeners.
425
+ - **Acceptance:** positioning policy, outside click, Escape, trigger restore,
426
+ roving keyboard behavior where menu semantics apply, and route cleanup.
427
+ - **Stop condition:** package Portal/Slot reconciliation enters the runtime.
428
+ - **Done condition:** supported native and custom boundaries are explicit.
429
+
430
+ ### `0.15.2`: Toast And Notification Ownership
431
+
432
+ - **Purpose:** provide application feedback across route mutations.
433
+ - **Expected boundary:** layout state, keyed list, timer effects, and live region.
434
+ - **Acceptance:** queue, deduplication, timeout, pause/focus behavior if required,
435
+ dismissal, route persistence, announcement, and disposal.
436
+ - **Stop condition:** a global scheduler is added before ordinary composition is
437
+ shown insufficient.
438
+ - **Done condition:** notifications remain owner-bounded and absent from unused
439
+ route output.
440
+
441
+ ### `0.15.3`: Layer Owner Decision
442
+
443
+ - **Purpose:** decide whether logical ownership of DOM rendered outside its
444
+ authored range is necessary.
445
+ - **Acceptance:** three independent overlay fixtures fail native top-layer and
446
+ in-place composition for the same reason.
447
+ - **Stop condition:** the request is React Portal source compatibility alone.
448
+ - **Done condition:** no new concept is added, or a minimal owner edge with exact
449
+ cleanup/focus order is approved.
450
+
451
+ ## `0.16.x`: External Complex UI
452
+
453
+ ### `0.16.0`: Bounded External UI Contract
454
+
455
+ - **Purpose:** define and prove `mount`, `update`, `dispose`, owner, lifetime, and
456
+ route-specific assets without a React island.
457
+ - **Expected boundary:** DOM ref plus owned effect first.
458
+ - **Acceptance:** a small imperative package creates and disposes one real DOM or
459
+ canvas instance; static siblings exclude it.
460
+ - **Stop condition:** the package requires React reconciliation.
461
+ - **Done condition:** package ownership remains inside effect/handler ESM and no
462
+ generic widget runtime is added.
463
+
464
+ ### `0.16.1`: Real Editor Lifecycle
465
+
466
+ - **Purpose:** integrate one real CodeMirror-class editor.
467
+ - **Acceptance:** mount, initial value, application-state update, editor-to-state
468
+ update, dependency changes, route disposal, remount, errors, and accessibility.
469
+ - **Stop condition:** preserving the React wrapper requires a React island.
470
+ - **Done condition:** the native package owns its DOM and Kudzu owns only its
471
+ bounded lifecycle.
472
+
473
+ ### `0.16.2`: Chart And Map Lifecycle
474
+
475
+ - **Purpose:** validate the same contract against unrelated canvas/SVG/map DOM.
476
+ - **Acceptance:** resize/data update, listener/source cleanup, route transition,
477
+ retained instance where required, and asset exclusion.
478
+ - **Stop condition:** package-specific concepts enter generic IR/runtime.
479
+ - **Done condition:** one lifecycle model covers editor and chart/map evidence.
480
+
481
+ ### `0.16.3`: Grid And Drag/Drop Decision
482
+
483
+ - **Purpose:** test external data-grid or drag engine ownership against keyed
484
+ Kudzu state.
485
+ - **Acceptance:** keyboard equivalent, reorder/mutation, state synchronization,
486
+ package disposal, and failure recovery.
487
+ - **Stop condition:** two independent renderers attempt to own the same DOM.
488
+ - **Done condition:** either bounded ownership is proven or the package is
489
+ explicitly unsupported with a migration path.
490
+
491
+ ## `0.17.x`: Long-Lived Applications
492
+
493
+ ### `0.17.0`: Endurance Harness
494
+
495
+ - **Purpose:** make long-session correctness locally reproducible.
496
+ - **Expected files:** a dedicated browser soak harness and machine-readable heap,
497
+ listener, resource, DOM, and navigation counters.
498
+ - **Acceptance:** repeated route, conditional, keyed, dialog, and editor cycles;
499
+ raw traces are retained.
500
+ - **Stop condition:** only a short synthetic timing loop is measured.
501
+ - **Done condition:** failures identify the owner that retained memory or work.
502
+
503
+ ### `0.17.1`: WebSocket Application Journey
504
+
505
+ - **Purpose:** move from isolated fake socket ownership to project notifications.
506
+ - **Acceptance:** connect, message, keyed update, reconnect, stale socket
507
+ rejection, route/layout lifetime, offline/error state, and exact cleanup.
508
+ - **Stop condition:** a shared transport runtime is added for one consumer.
509
+ - **Done condition:** repeated navigation balances every listener, timer, and
510
+ socket handle.
511
+
512
+ ### `0.17.2`: Shared SSE/Transport Decision
513
+
514
+ - **Purpose:** test multiple independently mounted consumers, replay, and
515
+ reconnect against existing layout effects/shared state.
516
+ - **Acceptance:** subscription add/remove, one transport, replay ordering,
517
+ reconnect, consumer removal, final close, and bounded history.
518
+ - **Stop condition:** fewer than three independent applications require the same
519
+ shared transport semantics.
520
+ - **Done condition:** existing composition passes or a minimal transport owner is
521
+ architecture-approved.
522
+
523
+ ### `0.17.3`: Memory And Disposal Gate
524
+
525
+ - **Purpose:** close document/layout/route/range/external-instance memory risks.
526
+ - **Acceptance:** long repeated journeys show bounded heap, DOM, prefetch cache,
527
+ resource handles, listener counts, and state maps.
528
+ - **Stop condition:** undocumented browser GC timing is presented as exact proof.
529
+ - **Done condition:** retained growth has a declared bound and repeated samples
530
+ pass the agreed threshold.
531
+
532
+ ## `0.18.x`: Lazy Loading And Code Splitting
533
+
534
+ ### `0.18.0`: Route And Feature Artifact Baseline
535
+
536
+ - **Purpose:** record current route-specific ESM, shared chunks, preload, Worker,
537
+ CSS, and navigation prefetch behavior.
538
+ - **Expected boundary:** existing RouteBuildRecord and artifact report.
539
+ - **Acceptance:** exact source-to-artifact ownership and bytes for the greenfield
540
+ app, editor, Answer, and Memos routes.
541
+ - **Stop condition:** a new loader is designed before the current graph is
542
+ measured.
543
+ - **Done condition:** every eager dependency has a structural reason.
544
+
545
+ ### `0.18.1`: Bounded Lazy Capability Import
546
+
547
+ - **Purpose:** permit one statically analyzable feature dependency to load only
548
+ when its owner requests it.
549
+ - **Expected boundary:** validated static dynamic-import edge, route artifact
550
+ closure, owner token, and native ESM import.
551
+ - **Acceptance:** exact specifier, no arbitrary graph escape, deduplicated load,
552
+ error/retry, owner release, and static exclusion.
553
+ - **Stop condition:** arbitrary dynamic imports or lazy component rendering are
554
+ required.
555
+ - **Done condition:** the feature loader is capability-specific, not a component
556
+ runtime.
557
+
558
+ ### `0.18.2`: Lazy Editor Journey
559
+
560
+ - **Purpose:** apply `0.18.1` to the real editor.
561
+ - **Acceptance:** editor package absent before activation, loaded once on demand,
562
+ mount/update/dispose behavior unchanged, failure recoverable, and revisit
563
+ semantics explicit.
564
+ - **Stop condition:** package evaluation must occur during build rendering.
565
+ - **Done condition:** initial route bytes fall by the exact deferred package
566
+ graph without losing behavior.
567
+
568
+ ### `0.18.3`: Shared Chunks And Prefetch Policy
569
+
570
+ - **Purpose:** avoid duplicate large feature graphs and define optional preload.
571
+ - **Acceptance:** shared chunk ownership, no duplicate fetch, route/interaction
572
+ prefetch policy, cache bound, cancellation limits, and output report.
573
+ - **Stop condition:** all features are globally prefetched.
574
+ - **Done condition:** policy minimizes unused transfer while meeting accepted
575
+ interaction latency.
576
+
577
+ ## `0.19.x`: React Ecosystem Migration
578
+
579
+ ### `0.19.0`: Compatibility Boundary And Inventory
580
+
581
+ - **Purpose:** centralize package recognition and compatibility provenance without
582
+ changing semantic IR or browser output.
583
+ - **Expected files:** focused compatibility metadata/registry, current passes,
584
+ project report; no public plugin API.
585
+ - **Acceptance:** Native, Compiled, Normalized, Adapter, Owned External UI,
586
+ Partial, and Unsupported sites are deterministic and source-located.
587
+ - **Stop condition:** package origin enters ModuleIR, RouteIR, codegen, or runtime.
588
+ - **Done condition:** existing React Router, Bootstrap, Zustand, and browser
589
+ normalizations preserve output and diagnostics.
590
+
591
+ ### `0.19.1`: Apache Answer Authentication Journey
592
+
593
+ - **Purpose:** promote the existing build-only auth fixture to browser evidence.
594
+ - **Acceptance:** anonymous, invalid login, valid login, token restore, shared
595
+ header/settings, 401 clear, replacement navigation, public zero-JS sibling.
596
+ - **Stop condition:** client UI is treated as authorization.
597
+ - **Done condition:** the complete journey passes against a deterministic server.
598
+
599
+ ### `0.19.2`: Apache Answer Connected Authoring Journey
600
+
601
+ - **Purpose:** connect query, route, detail, create/edit, validation, mutation,
602
+ refresh, admin, and logout.
603
+ - **Acceptance:** behavior, accessibility, persistence, errors, navigation,
604
+ source retention, and output all pass.
605
+ - **Stop condition:** fixture-only compiler semantics or broad package runtime is
606
+ introduced.
607
+ - **Done condition:** this is a connected browser journey, not a whole-app claim.
608
+
609
+ ### `0.19.3`: Memos Feed And CRUD Journey
610
+
611
+ - **Purpose:** establish the first durable Memos application slice.
612
+ - **Acceptance:** login, loading/error, feed, pagination, create/edit/delete,
613
+ retained memo identity, refresh, and logout.
614
+ - **Stop condition:** outline-only or static feed output is presented as Memos
615
+ migration.
616
+ - **Done condition:** pinned upstream provenance and exact retained source are
617
+ recorded.
618
+
619
+ ### `0.19.4`: Memos Realtime Journey
620
+
621
+ - **Purpose:** add reaction and realtime refresh using the accepted long-lived
622
+ transport model.
623
+ - **Acceptance:** mutation, server event, deduplication, reconnect, stale event
624
+ rejection, route cleanup, and memory gate.
625
+ - **Stop condition:** a query or SSE package runtime is copied wholesale.
626
+ - **Done condition:** browser and endurance acceptance pass.
627
+
628
+ ### `0.19.5`: Actual Budget Intake Decision
629
+
630
+ - **Purpose:** determine whether a complete, legally and technically usable
631
+ workspace can become the third application proof.
632
+ - **Acceptance:** pinned source, install/build path, dependency inventory, first
633
+ executable user journey, and honest source-retention denominator.
634
+ - **Stop condition:** workspace dependencies or core packages remain absent.
635
+ - **Done condition:** a later packet is authorized, or deferral is recorded with
636
+ no compatibility claim.
637
+
638
+ ## `0.20.x`: AI Tooling And Delivery Cost
639
+
640
+ ### `0.20.0`: Structured Diagnostics
641
+
642
+ - **Purpose:** expose stable machine-readable errors from the existing compiler.
643
+ - **Acceptance:** version, code, stage, severity, source range, message,
644
+ compatibility class, and safe suggestion; human diagnostics remain useful.
645
+ - **Stop condition:** diagnostic codes expose pass filenames or unstable IR.
646
+ - **Done condition:** agents no longer parse message substrings for maintained
647
+ fixtures.
648
+
649
+ ### `0.20.1`: `kudzu inspect --json`
650
+
651
+ - **Purpose:** expose reachable application and compatibility inventory.
652
+ - **Acceptance:** filtered module/route/package/capability/owner/blocker facts,
653
+ deterministic order, schema version, and large-project context bound.
654
+ - **Stop condition:** the command builds a second analyzer or dumps full raw IR.
655
+ - **Done condition:** the first blocker can be selected without reading hundreds
656
+ of source or dependency files.
657
+
658
+ ### `0.20.2`: `kudzu explain --route`
659
+
660
+ - **Purpose:** trace one authored route to its selected browser artifacts.
661
+ - **Acceptance:** source site, normalization provenance, semantic owner,
662
+ capability, entry/chunk/style/Worker, byte reason, and zero-JS explanation.
663
+ - **Stop condition:** a second artifact graph is introduced.
664
+ - **Done condition:** existing route records and artifact reports answer the
665
+ query with bounded output.
666
+
667
+ ### `0.20.3`: Deterministic Normalize And Fix
668
+
669
+ - **Purpose:** automate only edits proven safe and useful by recorded AI trials.
670
+ - **Acceptance:** check/preview/write modes, exact ranges, idempotence, comments
671
+ retained, no unrelated formatting, and byte-equivalent output.
672
+ - **Stop condition:** canonical compiler source replaces ordinary authored TSX.
673
+ - **Done condition:** each fix has one diagnostic code and explicit preconditions.
674
+
675
+ ### `0.20.4`: AI Delivery Protocol And Runner
676
+
677
+ - **Purpose:** track fair Kudzu and React+Vite delivery attempts.
678
+ - **Acceptance:** pinned model/tools/prompts/budgets, framework-neutral behavior
679
+ suite, raw failures, token/cost/tool/file/build metrics, source retention, and
680
+ browser artifacts.
681
+ - **Stop condition:** Kudzu receives private compiler guidance unavailable to the
682
+ comparator.
683
+ - **Done condition:** every attempt is reproducible or fully attributable.
684
+
685
+ ### `0.20.5`: Tooling Cost Validation
686
+
687
+ - **Purpose:** prove that diagnostics/inspect/explain/fix lower total cost per
688
+ successful task.
689
+ - **Acceptance:** before/after attempts on the same tasks; failures remain in the
690
+ numerator; success behavior remains identical.
691
+ - **Stop condition:** token reduction comes from omitted behavior or hidden
692
+ context.
693
+ - **Done condition:** useful tools are retained and non-improving tools are
694
+ removed or deferred.
695
+
696
+ ## `0.21.x`: Production-Scale Proof
697
+
698
+ ### `0.21.0`: Functional Parity Matrix
699
+
700
+ - **Purpose:** freeze complete greenfield, Answer, and Memos acceptance.
701
+ - **Acceptance:** content, auth, forms, CRUD, shared data, large list, overlay,
702
+ editor, lazy load, realtime, errors, accessibility, and navigation pass.
703
+ - **Stop condition:** any build-only result is counted as application success.
704
+ - **Done condition:** every claimed capability has a browser journey and static
705
+ exclusion control.
706
+
707
+ ### `0.21.1`: Compiler And Route Scale
708
+
709
+ - **Purpose:** measure clean/incremental compilation and artifact emission.
710
+ - **Acceptance:** 100, 1,000, and separately provisioned 10,000 routes; module
711
+ graph time, parse/normalize/compile/render/write time, peak RSS, output digest,
712
+ and failure recovery.
713
+ - **Stop condition:** projected or incomplete 10,000-route data is called a pass.
714
+ - **Done condition:** repeated measurements and all material regressions are
715
+ explained or fixed.
716
+
717
+ ### `0.21.2`: Browser Performance And Memory
718
+
719
+ - **Purpose:** protect interaction latency and long-running stability.
720
+ - **Acceptance:** initial/session bytes, list/range latency, navigation, lazy
721
+ feature load, resource cleanup, repeated heap, detached DOM, cache, listeners,
722
+ and handles.
723
+ - **Stop condition:** smaller JavaScript is preferred over behavior parity.
724
+ - **Done condition:** complete features meet declared thresholds with bounded
725
+ long-session growth.
726
+
727
+ ### `0.21.3`: Package And Release Candidate
728
+
729
+ - **Purpose:** verify the exact candidate as an installed product.
730
+ - **Acceptance:** `npm run check`, `npm test`, required Chrome, focused
731
+ benchmarks, package smoke, tarball inspection, generated application, registry
732
+ dry run, docs, and release rollback procedure.
733
+ - **Stop condition:** version metadata changes before the exact candidate passes.
734
+ - **Done condition:** the reviewed commit is independently publishable.
735
+
736
+ ### `0.21.4`: AI Delivery Proof
737
+
738
+ - **Purpose:** run the final equal-condition comparison on production-shaped
739
+ tasks.
740
+ - **Acceptance:** highest or statistically tied success rate, lowest median cost
741
+ per successful task, complete raw attempts, maintainable source, and retained
742
+ browser/build advantage.
743
+ - **Stop condition:** cherry-picked attempts, toy-only tasks, or unequal tooling.
744
+ - **Done condition:** the evidence either authorizes `1.0.0` or names the next
745
+ measured blocker without changing the release criteria.
746
+
747
+ ## `1.0.0`: Stable Application Model
748
+
749
+ `1.0.0` is authorized only after every required `0.21.x` gate passes. It means:
750
+
751
+ - the small package-neutral application semantic model is stable;
752
+ - complete production-shaped application journeys pass;
753
+ - static routes retain zero JavaScript;
754
+ - interactive routes retain only used capabilities;
755
+ - React migration uses compatibility, normalization, adapters, and owned
756
+ external UI rather than a React runtime;
757
+ - browser/build/performance and long-running memory gates pass;
758
+ - the equal-condition AI benchmark meets the published success and cost gates.
759
+
760
+ ## Patch Session Procedure
761
+
762
+ Before implementation:
763
+
764
+ 1. Read this plan, `MIGRATION_ROADMAP.md`, the current architecture map, and the
765
+ applicable capability packet.
766
+ 2. Confirm the package version and inspect uncommitted work without modifying
767
+ unrelated changes.
768
+ 3. Confirm every earlier patch is complete or explicitly replanned.
769
+ 4. Name the exact application journey, failing fixture, owner, producer, and
770
+ consumer boundary.
771
+ 5. Record the baseline output, browser bytes, runtime concepts, compiler/pass
772
+ LOC, and applicable benchmark.
773
+
774
+ During implementation:
775
+
776
+ 1. Add the failing fixture first.
777
+ 2. Try native behavior and existing semantics before changing the framework.
778
+ 3. Keep the smallest correct patch and preserve ordinary React-shaped TSX.
779
+ 4. Add nearby negative diagnostics and static zero-cost exclusion.
780
+ 5. Do not broaden public APIs, IR, runtime, or package support beyond the packet.
781
+
782
+ Before release:
783
+
784
+ 1. Run focused tests, `npm run check`, `npm test`, required Chrome, and package
785
+ smoke.
786
+ 2. Run affected output and performance gates with at least seven interleaved
787
+ measured samples where a comparison is claimed.
788
+ 3. Record fixtures, semantic primitives, core/pass LOC, runtime concepts,
789
+ browser bytes, output digest, benchmark deltas, AI-cost effect, risks, and
790
+ known limits.
791
+ 4. Update package version, lockfile, release notes, support documentation, and
792
+ registry-facing records only on the exact accepted release commit.
793
+ 5. Complete the release transaction below, then advance the active status to
794
+ the next patch.
795
+
796
+ ## Release Transaction
797
+
798
+ Every completed patch and every new minor is a real release. A work session that
799
+ does not complete its packet does not consume a version; the next session
800
+ continues the same target version.
801
+
802
+ 1. Confirm the target version is the active packet and is not already present in
803
+ npm or Git tags.
804
+ 2. Update `package.json`, root lockfile metadata, `RELEASES.md`, README/support
805
+ records, and generator metadata when the release changes generated projects.
806
+ 3. Run the complete release gate on the exact versioned tree: focused tests,
807
+ `npm run check`, `npm test`, required Chrome, `npm run test:package`, affected
808
+ benchmarks, package inspection, and `git diff --check`.
809
+ 4. Inspect `git status`, the complete diff, and recent release history. Stage
810
+ only the intended packet and release files.
811
+ 5. Create one release commit using the established `Release Kudzu X.Y.Z`
812
+ convention. Do not amend a rejected release commit; fix forward and create a
813
+ new commit.
814
+ 6. Push the release commit and require its CI checks to pass.
815
+ 7. Create tag `vX.Y.Z` on that exact commit and push the tag. Never move or
816
+ repoint a published tag.
817
+ 8. Publish the matching GitHub release. The existing `Publish npm` workflow
818
+ checks out the tag, reruns check/test/package gates, verifies version/tag
819
+ equality, publishes `@kudzujs/core` and any changed `create-kudzu`, and checks
820
+ npm registry visibility.
821
+ 9. Require the publish workflow to pass, verify npm metadata and a fresh install
822
+ manually, and record the release URL and registry versions.
823
+ 10. Only after commit, push, tag, GitHub release, npm publication, registry
824
+ verification, and fresh-install verification succeed may the next patch
825
+ become active.
826
+
827
+ If Git push, tag push, GitHub release, npm publication, or registry verification
828
+ fails, the current packet remains active. Do not start or version the next
829
+ packet. npm versions and published tags are immutable; recover with the same
830
+ release transaction where possible or document and publish a forward-fix patch.
831
+
832
+ ## Active Status
833
+
834
+ | Patch | Status | Next exact action | Blocker |
835
+ |---|---|---|---|
836
+ | `0.10.0` | Release candidate | Complete commit, push, tag, GitHub release, npm publication, registry, and fresh-install verification. | Release transaction |
837
+ | `0.10.1` | Blocked | Extend the greenfield fixture with local, object, array, and derived state scale evidence after 0.10.0 publication. | 0.10.0 release |
838
+ | `0.10.2` onward | Blocked | Wait for the preceding patch acceptance and release record. | Ordered dependency |
@@ -1,6 +1,6 @@
1
1
  # Planned Version Sequence
2
2
 
3
- This is an execution sequence, not release history. `0.8.16` through `0.8.62` are completed scopes represented by package/release records.
3
+ This is an execution sequence, not release history. `0.8.16` through `0.8.62` are completed scopes represented by package/release records. The active `0.10.0` through `1.0.0` minor/patch sequence is maintained in [`application-capability-release-plan.md`](./application-capability-release-plan.md); that plan supersedes the provisional tool-first 0.10/0.11/0.12 ordering in the completed 0.9 handoff.
4
4
 
5
5
  Keep each patch behavior-preserving and independently reviewable. If a boundary proves inseparable, revise this plan before combining releases; do not silently broaden a patch.
6
6
 
@@ -62,15 +62,24 @@ Keep each patch behavior-preserving and independently reviewable. If a boundary
62
62
  - A planned patch may ship under a different actual version only if this table and release-facing documentation are updated before release.
63
63
  - Release notes describe completed facts; this file continues to describe future work.
64
64
  - Internal decomposition alone does not require `0.9.0`; use a minor only for a public compiler/tooling or compatibility boundary.
65
+ - From `0.10.0` onward, each application-capability section owns one minor and each independently accepted evidence packet owns one patch as defined by the active application-capability release plan.
65
66
 
66
67
  ## Generator Versions
67
68
 
68
- `create-kudzu@0.1.103` retains the explicit install instructions and generates projects with `@kudzujs/core@^0.9.0`.
69
+ `create-kudzu@0.1.104` retains the explicit install instructions and generates projects with `@kudzujs/core@^0.10.0`.
69
70
 
70
71
  ## Release Boundary
71
72
 
72
73
  Every patch is independently revertible before publication. After npm publication, never repoint its tag; forward-fix with the next patch. Require the exact commit to pass CI, package smoke installation, registry verification, and the performance gates before starting the next ownership seam.
73
74
 
75
+ From `0.10.0` onward every completed patch packet is a full release transaction:
76
+ version and lockfile updates, release records, an accepted `Release Kudzu X.Y.Z`
77
+ commit, commit push and CI, an immutable `vX.Y.Z` tag push, a published GitHub
78
+ release, npm publication through `.github/workflows/publish.yml`, registry
79
+ verification, and fresh-install verification. Incomplete work sessions retain
80
+ the same target version and do not create commits, tags, or npm releases merely
81
+ because the session ended.
82
+
74
83
  ## Per-Patch Continuation Checklist
75
84
 
76
85
  - [ ] Confirm all earlier planned patches are complete or explicitly replanned.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kudzujs/core",
3
- "version": "0.9.3",
3
+ "version": "0.10.0",
4
4
  "description": "HTML-first TSX framework with synchronous state semantics and no virtual DOM",
5
5
  "type": "module",
6
6
  "license": "MIT",