@kudzujs/core 0.16.24 → 0.16.26
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/README.md +47 -5
- package/framework/compiler/effect-private-ref-pass.mjs +2 -0
- package/framework/compiler/source-compiler.mjs +6 -1
- package/package.json +2 -7
- package/GOAL_A.md +0 -116
- package/GOAL_B.md +0 -121
- package/MIGRATION_ROADMAP.md +0 -457
- package/PERFORMANCE.md +0 -2200
- package/RELEASES.md +0 -4653
- package/docs/next-architecture/0.9-baseline.md +0 -1199
- package/docs/next-architecture/0.9-benchmark-contracts.md +0 -507
- package/docs/next-architecture/0.9-component-property-contract.md +0 -89
- package/docs/next-architecture/0.9-compression-ledger.md +0 -227
- package/docs/next-architecture/0.9-final-proof-audit.md +0 -176
- package/docs/next-architecture/0.9-implementation-plan.md +0 -1819
- package/docs/next-architecture/0.9-resource-lifecycle.md +0 -118
- package/docs/next-architecture/0.9-semantic-compression.md +0 -384
- package/docs/next-architecture/1.0-large-application-compatibility-audit.md +0 -372
- package/docs/next-architecture/README.md +0 -56
- package/docs/next-architecture/application-capability-release-plan.md +0 -2358
- package/docs/next-architecture/compiler-current-architecture.md +0 -95
- package/docs/next-architecture/goal-a-compiler-foundation.md +0 -151
- package/docs/next-architecture/goal-b-optimization-benchmarks.md +0 -86
- package/docs/next-architecture/goal-c-state-resource-research.md +0 -88
- package/docs/next-architecture/goal-d-routing-compatibility-decisions.md +0 -52
- package/docs/next-architecture/large-application-ai-native-roadmap.md +0 -486
- package/docs/next-architecture/performance-gates.md +0 -50
- package/docs/next-architecture/versioning.md +0 -91
- package/framework/README.md +0 -105
|
@@ -1,372 +0,0 @@
|
|
|
1
|
-
# Kudzu 1.0 Large-Application Compatibility Audit
|
|
2
|
-
|
|
3
|
-
## Status
|
|
4
|
-
|
|
5
|
-
This 2026-08-21 local discovery audit measures source compatibility after
|
|
6
|
-
`0.9.0`; it does not authorize a new runtime, replace the 1.0 AI delivery
|
|
7
|
-
protocol, or claim whole-application migration success. The probes used Kudzu
|
|
8
|
-
`0.9.2` at `f69722032a3790dfb13151e17e1ab0f60c8280d3` on Node 24.14.0.
|
|
9
|
-
Original repositories and Kudzu remained unchanged.
|
|
10
|
-
|
|
11
|
-
The result is a compatibility gap: Kudzu builds reduced public slices from all
|
|
12
|
-
three applications, but meaningful source retention is too low for a React-like
|
|
13
|
-
large-application migration claim.
|
|
14
|
-
|
|
15
|
-
## Pinned Applications
|
|
16
|
-
|
|
17
|
-
| Application | Revision | License | Frontend scope | Original build |
|
|
18
|
-
|---|---|---|---:|---|
|
|
19
|
-
| [Memos](https://github.com/usememos/memos) | `e5ed6e7ec60e141d6e354f3ab59906c2c47dccac` | MIT | 393 TS/TSX modules, 43,099 LOC, 19 leaf routes | Pass: 5,089 modules, 292 files |
|
|
20
|
-
| [Apache Answer](https://github.com/apache/answer) | `3b9f1370612e690a0b7f230f05e688930db4c6d3` | Apache-2.0 | 377 TS/TSX modules, 48,091 LOC, 88 explicit paths | Pass: 681 files |
|
|
21
|
-
| [Actual Budget](https://github.com/actualbudget/actual) | `87e33e49eb4d666c33e0c0f172faf340d1b7aa0a` | MIT | sparse desktop client: 810 TS/TSX modules, 163,344 LOC, 80 route declarations | Not established: acquisition lacks workspace tooling and core packages |
|
|
22
|
-
|
|
23
|
-
The Actual Budget result is diagnostic only. Its sparse checkout contains the
|
|
24
|
-
selected desktop components but not the component library, core backend, Yarn
|
|
25
|
-
release, database, worker coordinator, or spreadsheet implementation.
|
|
26
|
-
|
|
27
|
-
The migrated adapters, copied source, detailed diagnostic logs, and line-diff
|
|
28
|
-
inputs remain local under `/tmp/opencode/kudzu-large-apps`; they are not durable
|
|
29
|
-
tracked evidence. The pinned upstream commits and original build commands are
|
|
30
|
-
reproducible, but retention and migrated-output values remain discovery results
|
|
31
|
-
until an external fixture repository pins the adapters and acceptance harness.
|
|
32
|
-
|
|
33
|
-
## Migration Results
|
|
34
|
-
|
|
35
|
-
### Memos
|
|
36
|
-
|
|
37
|
-
The probe selected `/about`, `/explore`, and `/auth` from the real route and
|
|
38
|
-
component closures. The reduced Kudzu app builds three pages and one interactive
|
|
39
|
-
page. `/about` and `/explore` emit zero JavaScript; `/auth` emits 12,374 raw /
|
|
40
|
-
5,956 gzip bytes of route JavaScript.
|
|
41
|
-
|
|
42
|
-
| Measure | Result |
|
|
43
|
-
|---|---:|
|
|
44
|
-
| Direct corresponding source retained | 163 / 640 lines (25.5%) |
|
|
45
|
-
| Retention including omitted feed/auth closure | 163 / 996 lines (16.4%) |
|
|
46
|
-
| Final migrated TS/TSX | 12 files, 408 LOC |
|
|
47
|
-
| Deploy | 14 files |
|
|
48
|
-
|
|
49
|
-
The passing output is not behavior-equivalent. Live instance data, Connect RPC,
|
|
50
|
-
TanStack Query, pagination, privacy filtering, markdown, reactions, SSE refresh,
|
|
51
|
-
authentication, token storage, SSO discovery, and post-auth navigation are
|
|
52
|
-
absent. The public feed is a build-known snapshot.
|
|
53
|
-
|
|
54
|
-
### Apache Answer
|
|
55
|
-
|
|
56
|
-
The probe selected questions list/detail and tags list/detail. It preserves all
|
|
57
|
-
six selected component roles, but replaces the browser router, React Bootstrap,
|
|
58
|
-
i18next, SWR/axios, Zustand-backed globals, guards, and live API data. Four Kudzu
|
|
59
|
-
pages build; the questions list is zero JavaScript and the tags list uses the
|
|
60
|
-
existing keyed-filter capabilities.
|
|
61
|
-
|
|
62
|
-
| Measure | Result |
|
|
63
|
-
|---|---:|
|
|
64
|
-
| Exact selected source retained | 22 / 1,103 lines (2.0%) |
|
|
65
|
-
| Final migrated TS/TSX | 8 files, 257 LOC |
|
|
66
|
-
| Deploy | 17 files, 48,389 raw bytes |
|
|
67
|
-
| JavaScript | 33,384 raw / 13,641 gzip bytes |
|
|
68
|
-
|
|
69
|
-
The result has no Answer API, auth, mutations, loading/error state, pagination,
|
|
70
|
-
editor, cache invalidation, or route guards. Runtime detail paths render one
|
|
71
|
-
representative snapshot rather than the requested entity.
|
|
72
|
-
|
|
73
|
-
### Actual Budget
|
|
74
|
-
|
|
75
|
-
The probe selected the grouped report-table workflow and retained five imported
|
|
76
|
-
component boundaries. It produces one complete static report page with 0 bytes
|
|
77
|
-
of JavaScript.
|
|
78
|
-
|
|
79
|
-
| Measure | Result |
|
|
80
|
-
|---|---:|
|
|
81
|
-
| Exact selected source retained | 22 / 906 lines (2.4%) |
|
|
82
|
-
| Final authored probe | 268 LOC |
|
|
83
|
-
| Output | 2,810 B HTML, 1,990 B CSS, 0 B JavaScript |
|
|
84
|
-
|
|
85
|
-
This is an exported report, not Actual Budget. Database opening, query execution,
|
|
86
|
-
spreadsheet bindings, Redux and query state, synchronization, undo, preferences,
|
|
87
|
-
privacy formatting, Worker/SharedWorker ownership, synchronized scrolling, and
|
|
88
|
-
transaction drill-down are absent.
|
|
89
|
-
|
|
90
|
-
## Repeated Blockers
|
|
91
|
-
|
|
92
|
-
| Blocker | Memos | Answer | Actual | Decision |
|
|
93
|
-
|---|---|---|---|---|
|
|
94
|
-
| Package components used during render | Lucide, Base UI | React Bootstrap | Actual component library, React Aria | Record separate package shapes; this broad grouping does not prove one shared semantic concept. |
|
|
95
|
-
| Browser data/query ownership | TanStack Query, Connect RPC, SSE | SWR, axios | TanStack Query, worker-backed database | Define build-time snapshot and owned-effect migration contracts before considering an adapter. Do not add a query cache runtime. |
|
|
96
|
-
| Router/layout semantics | RouterProvider, guards, lazy routes | nested guarded routes, outlets, `useMatch` | React Router screens and drill-down state | Keep native/file routing as the default; inventory nested layout and guard source shapes separately. |
|
|
97
|
-
| Provider/global state | auth, instance, view/filter contexts | Zustand site/session/UI stores | Redux, preferences, non-serializable state | Continue package-neutral action/state reductions only from executable behavior fixtures. |
|
|
98
|
-
| Localization and formatting | i18next | i18next | i18next, locale/currency/privacy preferences | Prefer build-known locale routes; browser-switchable locale ownership needs independent evidence. |
|
|
99
|
-
| Dynamic presentation | markdown/editor/media/map | editor, Markdown, package widgets | grids, charts, spreadsheets | Treat imperative leaves and package adapters independently; no generic component runtime. |
|
|
100
|
-
|
|
101
|
-
These broad blocker families recur, but they do not establish one shared missing
|
|
102
|
-
semantic concept. Each package, query/data, router/layout, provider, localization,
|
|
103
|
-
or imperative-leaf shape still needs an independent executable reduction before
|
|
104
|
-
architecture review. Fixture count does not authorize a semantic primitive. The
|
|
105
|
-
first implementation must stop at native behavior, existing semantics,
|
|
106
|
-
normalization, or a bounded internal adapter before considering kernel growth.
|
|
107
|
-
|
|
108
|
-
## Compatibility Conclusion
|
|
109
|
-
|
|
110
|
-
Kudzu `0.9.2` supports large output and selected ordinary TSX, but not low-change
|
|
111
|
-
migration of these large React applications. The reported retention denominators
|
|
112
|
-
are not directly comparable: Memos includes an omitted feed/auth closure, Answer
|
|
113
|
-
counts six selected modules, and Actual counts five retained component files from
|
|
114
|
-
an incomplete sparse checkout. Every method still reports substantial rewriting.
|
|
115
|
-
|
|
116
|
-
Current viable use is narrower:
|
|
117
|
-
|
|
118
|
-
- static public pages and build-known read-only exports;
|
|
119
|
-
- bounded forms and keyed interactions that already match Kudzu ownership;
|
|
120
|
-
- separately accepted imperative leaves owned by effects;
|
|
121
|
-
- native navigation to an existing application for unsupported workflows.
|
|
122
|
-
|
|
123
|
-
Do not describe Memos, Answer, or Actual Budget as migrated applications. The
|
|
124
|
-
passing probes are reductions that identify compatibility work.
|
|
125
|
-
|
|
126
|
-
## Authorized Handoff
|
|
127
|
-
|
|
128
|
-
The authoritative next milestone remains the equal-condition 1.0 AI delivery
|
|
129
|
-
protocol in `0.9-implementation-plan.md`; this audit is candidate-selection input
|
|
130
|
-
only. If that protocol selects an Apache Answer task, its first unsupported source
|
|
131
|
-
shape is `useMatch` in the questions route. The implementation process must:
|
|
132
|
-
|
|
133
|
-
1. preserve that exact failing source and reduce only the first unsupported shape;
|
|
134
|
-
2. identify existing IR producers, consumers, ownership, nearby rejected forms,
|
|
135
|
-
and expected browser-byte impact before editing the compiler;
|
|
136
|
-
3. run behavior and accessibility acceptance rather than build checks alone;
|
|
137
|
-
4. report source retention as a diagnostic with an explicit denominator, not an
|
|
138
|
-
unapproved pass threshold;
|
|
139
|
-
5. keep package-component, query/data, router/layout, localization, and provider
|
|
140
|
-
work as separate evidence packets.
|
|
141
|
-
|
|
142
|
-
Combining these blockers into one compatibility runtime is not approved.
|
|
143
|
-
|
|
144
|
-
## First Reduction Completion
|
|
145
|
-
|
|
146
|
-
The user selected the Apache Answer routing probe under the authorized protocol.
|
|
147
|
-
The first unsupported source shape, direct `const isIndexPage = useMatch("/")`,
|
|
148
|
-
now lowers through the existing router normalization pass to one compiler-internal
|
|
149
|
-
build-time route comparison. The same relative `Questions` component renders the
|
|
150
|
-
Answer title at `/` and the Questions title at `/questions`.
|
|
151
|
-
|
|
152
|
-
| Measure | Result |
|
|
153
|
-
|---|---:|
|
|
154
|
-
| Upstream-derived positive fixtures | 1 |
|
|
155
|
-
| Nearby negative fixtures | 2 |
|
|
156
|
-
| Semantic primitives | 0 |
|
|
157
|
-
| ModuleIR/RouteIR records | 0 |
|
|
158
|
-
| Compiler passes | 0 new |
|
|
159
|
-
| Browser runtime concepts | 0 |
|
|
160
|
-
| Browser JavaScript | 0 B on both routes |
|
|
161
|
-
|
|
162
|
-
The producer is `compiler/router-pass.mjs`; the only consumer is a build-time
|
|
163
|
-
helper in `core.mjs` reading the invocation's application route. No SPA router,
|
|
164
|
-
path matcher, route signal, state, effect, handler, or browser module is added.
|
|
165
|
-
Layout and runtime-parameter use fail before output; dynamic patterns and
|
|
166
|
-
parameterized/wildcard/query/hash/trailing-slash forms fail with source
|
|
167
|
-
diagnostics. Matching follows React Router's default case-insensitive behavior.
|
|
168
|
-
Broader nested layouts, guards, outlets, and dynamic matching remain separate
|
|
169
|
-
evidence packets.
|
|
170
|
-
|
|
171
|
-
## Second Reduction Completion
|
|
172
|
-
|
|
173
|
-
The next repeated Apache Answer blocker, direct
|
|
174
|
-
`const curPage = Number(urlSearchParams.get("page")) || 1`, now separates the
|
|
175
|
-
nullable query signal into a compiler-owned local and reuses the existing pure
|
|
176
|
-
primitive binding evaluator. Query removal through `popstate` restores the
|
|
177
|
-
finite authored fallback.
|
|
178
|
-
|
|
179
|
-
| Measure | Result |
|
|
180
|
-
|---|---:|
|
|
181
|
-
| Upstream-derived positive fixtures | 1 |
|
|
182
|
-
| Nearby negative fixtures | 1 |
|
|
183
|
-
| Semantic primitives | 0 |
|
|
184
|
-
| ModuleIR/RouteIR records | 0 |
|
|
185
|
-
| Existing core files changed | 3 |
|
|
186
|
-
| Core LOC delta | +39 |
|
|
187
|
-
| Compiler passes | 0 new |
|
|
188
|
-
| Browser runtime concepts | 0 |
|
|
189
|
-
| Raw browser ESM | 11,211 B |
|
|
190
|
-
| Build benchmark delta | Not measured; route-local compatibility slice |
|
|
191
|
-
|
|
192
|
-
The producer remains `compiler/router-pass.mjs`; generic reactive-local
|
|
193
|
-
substitution and binding consumers handle the result. `param-codegen.mjs` now
|
|
194
|
-
applies its existing `popstate` synchronization to read-only query routes as
|
|
195
|
-
well as writable routes. `Math.max`, `parseInt`, dynamic names, aliases, and
|
|
196
|
-
other composed query expressions remain unsupported pending independent source
|
|
197
|
-
evidence.
|
|
198
|
-
|
|
199
|
-
## Third Reduction Completion
|
|
200
|
-
|
|
201
|
-
Apache Answer's adjacent
|
|
202
|
-
`(urlSearchParams.get("order") || QUESTION_ORDER_KEYS[0]) as QuestionOrderBy`
|
|
203
|
-
now follows the same compiler-owned query signal path. The fallback is accepted
|
|
204
|
-
only when it is a static numeric element of a named relative JSON-safe immutable
|
|
205
|
-
array. The selected string is folded before binding/effect analysis, so the
|
|
206
|
-
browser handler retains neither the array nor its source module.
|
|
207
|
-
|
|
208
|
-
| Measure | Result |
|
|
209
|
-
|---|---:|
|
|
210
|
-
| Upstream-derived positive fixtures | 1 |
|
|
211
|
-
| Nearby negative fixtures | 1 |
|
|
212
|
-
| Semantic primitives | 0 |
|
|
213
|
-
| ModuleIR/RouteIR records | 0 |
|
|
214
|
-
| Existing core files changed | 2 |
|
|
215
|
-
| Core LOC delta | +7 |
|
|
216
|
-
| Compiler passes | 0 new |
|
|
217
|
-
| Browser runtime concepts | 0 |
|
|
218
|
-
| Raw browser ESM | 11,210 B |
|
|
219
|
-
| Build benchmark delta | Not measured; route-local compatibility slice |
|
|
220
|
-
|
|
221
|
-
Static output uses `newest`, `?order=active` updates both the attribute and text,
|
|
222
|
-
and query removal through `popstate` restores `newest`. Dynamic indexes, local
|
|
223
|
-
fallback arrays, package imports, calls, and arbitrary expressions remain
|
|
224
|
-
unsupported.
|
|
225
|
-
|
|
226
|
-
## Fourth Reduction Completion
|
|
227
|
-
|
|
228
|
-
Apache Answer's Questions page uses React Bootstrap `Row` and `Col` only as
|
|
229
|
-
declarative layout wrappers with static classes and children. The existing React
|
|
230
|
-
migration normalization pass now erases those named package imports and emits
|
|
231
|
-
native `div.row` and `div.col` markup. Bootstrap CSS remains an ordinary
|
|
232
|
-
application stylesheet dependency rather than a Kudzu runtime.
|
|
233
|
-
|
|
234
|
-
| Measure | Result |
|
|
235
|
-
|---|---:|
|
|
236
|
-
| Upstream-derived positive fixtures | 1 |
|
|
237
|
-
| Nearby negative fixtures | 1 |
|
|
238
|
-
| Semantic primitives | 0 |
|
|
239
|
-
| ModuleIR/RouteIR records | 0 |
|
|
240
|
-
| Existing core files changed | 1 |
|
|
241
|
-
| Core LOC delta | +48 |
|
|
242
|
-
| Compiler passes | 0 new |
|
|
243
|
-
| Browser runtime concepts | 0 |
|
|
244
|
-
| Browser JavaScript | 0 B |
|
|
245
|
-
| Build benchmark delta | Not measured; static normalization slice |
|
|
246
|
-
|
|
247
|
-
The generated document preserves the Questions heading, complementary sidebar,
|
|
248
|
-
children order, and Bootstrap class contract without scripts or behavior
|
|
249
|
-
markers. Breakpoint/grid props such as `md={6}`, dynamic classes, spreads,
|
|
250
|
-
subpath/default/namespace imports, and other React Bootstrap components remain
|
|
251
|
-
unsupported.
|
|
252
|
-
|
|
253
|
-
## Runtime Translation Boundary
|
|
254
|
-
|
|
255
|
-
Apache Answer's next Questions-page failure is `react-i18next`
|
|
256
|
-
`useTranslation()`. Its values are not build-known: initialization uses the
|
|
257
|
-
repository's English YAML fallback, while storage and server responses can add
|
|
258
|
-
or replace the active resource bundle. Folding English would lose behavior and
|
|
259
|
-
shipping i18next would add a forbidden package runtime.
|
|
260
|
-
|
|
261
|
-
Kudzu now reports that boundary at the hook reference and directs migration to
|
|
262
|
-
the existing static-locale treatment: `getStaticPaths()` plus locale props when
|
|
263
|
-
resources are build-known, or an owned browser effect when selection only exists
|
|
264
|
-
in the browser. This diagnostic adds no semantic primitive, pass, runtime
|
|
265
|
-
concept, browser byte, or successful migration claim.
|
|
266
|
-
|
|
267
|
-
The following Questions-page store reads are not the same reduced Zustand shape:
|
|
268
|
-
`loggedUserInfoStore`, `siteInfoStore`, and `loginSettingStore` own multiple data
|
|
269
|
-
fields, server-fed replacement actions, and storage side effects. Their values
|
|
270
|
-
are not build-known and cannot be preserved by folding initial literals. They
|
|
271
|
-
remain an application data-ownership migration packet; this audit does not
|
|
272
|
-
authorize a Zustand runtime or broaden `SharedStateIR` around one application's
|
|
273
|
-
store graph.
|
|
274
|
-
|
|
275
|
-
## Fifth Reduction Completion
|
|
276
|
-
|
|
277
|
-
Apache Answer's `useQuestionList()` and `useQuestionRecommendList()` wrappers
|
|
278
|
-
compose SWR, axios, and `qs` around browser-only data. The executable reduction
|
|
279
|
-
keeps the Questions page's URL-derived page/order semantics but moves ownership
|
|
280
|
-
to one native fetch effect with application-owned loading, error, and keyed data
|
|
281
|
-
state. The existing dependency replacement contract prevents a delayed old
|
|
282
|
-
response from overwriting a newer query.
|
|
283
|
-
|
|
284
|
-
| Measure | Result |
|
|
285
|
-
|---|---:|
|
|
286
|
-
| Upstream-derived positive fixtures | 1 |
|
|
287
|
-
| Static exclusion fixtures | 1 |
|
|
288
|
-
| Semantic primitives | 0 |
|
|
289
|
-
| ModuleIR/RouteIR records | 0 new |
|
|
290
|
-
| Existing core files changed | 2 |
|
|
291
|
-
| Core LOC delta | +6 |
|
|
292
|
-
| Compiler passes | 0 new |
|
|
293
|
-
| Browser runtime concepts | 0 new |
|
|
294
|
-
| Raw interactive browser ESM | 32,005 B |
|
|
295
|
-
| Static sibling JavaScript | 0 B |
|
|
296
|
-
| Build benchmark delta | Not measured; browser-data compatibility slice |
|
|
297
|
-
|
|
298
|
-
Chrome acceptance starts from `?page=2&order=active`, replaces it with the
|
|
299
|
-
recommendation endpoint, rejects the delayed stale response, renders nested
|
|
300
|
-
keyed tags, reports HTTP 500 through `role="alert"`, and recovers on the next
|
|
301
|
-
query. SWR, axios, `qs`, caches, Providers, retries, deduplication, and background
|
|
302
|
-
refetch remain absent. The only compiler adjustment folds the already validated
|
|
303
|
-
imported immutable string fallback before generic effect dependency analysis.
|
|
304
|
-
|
|
305
|
-
## Sixth Reduction Completion
|
|
306
|
-
|
|
307
|
-
The full Answer source contains 94 direct `Col` elements; 63 use only static
|
|
308
|
-
numeric spans across `xs`, `sm`, `md`, `lg`, `xl`, and `xxl`. The existing React
|
|
309
|
-
Bootstrap normalization now maps integer literals 1 through 12 to native
|
|
310
|
-
Bootstrap classes, omits bare `col` when spans exist, and preserves static
|
|
311
|
-
authored classes. All 98 observed breakpoint props fit this shape.
|
|
312
|
-
|
|
313
|
-
| Measure | Result |
|
|
314
|
-
|---|---:|
|
|
315
|
-
| Upstream-derived positive fixtures | 1 |
|
|
316
|
-
| Nearby negative fixtures | 1 |
|
|
317
|
-
| Observed Col sites covered | 63 / 94 |
|
|
318
|
-
| Semantic primitives | 0 |
|
|
319
|
-
| ModuleIR/RouteIR records | 0 |
|
|
320
|
-
| Existing core files changed | 1 |
|
|
321
|
-
| Core LOC delta | +14 |
|
|
322
|
-
| Compiler passes | 0 new |
|
|
323
|
-
| Browser runtime concepts | 0 |
|
|
324
|
-
| Browser JavaScript | 0 B |
|
|
325
|
-
| Build benchmark delta | Not measured; static normalization slice |
|
|
326
|
-
|
|
327
|
-
Chrome is unnecessary for this static mapping: emitted HTML exactly carries
|
|
328
|
-
`col-md-6`, multi-breakpoint login classes, and the five-span tag grid without
|
|
329
|
-
scripts or behavior markers. Dynamic, boolean, object, offset/order, style,
|
|
330
|
-
spread, and polymorphic forms remain separate evidence packets.
|
|
331
|
-
|
|
332
|
-
## Seventh Reduction Intake
|
|
333
|
-
|
|
334
|
-
The first authentication fixture now builds one layout-owned session record from
|
|
335
|
-
the Answer login/current-user/401 shapes. Native `FormData`, token storage,
|
|
336
|
-
current-user fetch, shared header/settings reads, clear, and replacement
|
|
337
|
-
navigation compile without Zustand, axios, React Router, or React in output; a
|
|
338
|
-
public sibling remains static. One compiler correction prevents shared-state
|
|
339
|
-
identifiers such as `session.token` from being misclassified as imported
|
|
340
|
-
calculation results during effect dependency analysis. This adds no IR kind,
|
|
341
|
-
pass, or runtime concept. Required Chrome now proves anonymous, invalid and
|
|
342
|
-
valid login, token restore after reload, shared header/settings reads, 401
|
|
343
|
-
storage/state clearing, and replacement navigation against a deterministic
|
|
344
|
-
server. The authentication reduction is complete without a production change.
|
|
345
|
-
|
|
346
|
-
## Route Shell Intake
|
|
347
|
-
|
|
348
|
-
The first route-shell fixture builds seven representative Answer paths: home,
|
|
349
|
-
questions, runtime question detail, tags, runtime tag detail, admin dashboard,
|
|
350
|
-
and legal. `Layout`/`SideNavLayout` become one ordinary composed shell, links are
|
|
351
|
-
native anchors, and bracket pages reuse the existing pathname reader and rewrite
|
|
352
|
-
metadata. No RouterProvider, Outlet, SPA router, semantic primitive, pass, or new
|
|
353
|
-
runtime concept is added; the legal sibling remains zero-JavaScript. Expanding
|
|
354
|
-
the same manifest/composition treatment across all 88 upstream paths remains the
|
|
355
|
-
next route migration gate.
|
|
356
|
-
|
|
357
|
-
Chrome acceptance directly enters `/questions/42/example-question`, verifies
|
|
358
|
-
both runtime pathname fields and the composed primary/section navigation, then
|
|
359
|
-
performs native document navigation to `/tags/kudzu` and verifies the tag field
|
|
360
|
-
in the destination document. No hydration or browser router participates.
|
|
361
|
-
|
|
362
|
-
## Authoring And Admin Intake
|
|
363
|
-
|
|
364
|
-
A backend-independent Answer authoring/admin fixture now builds three routes.
|
|
365
|
-
Question creation uses native constraints, `FormData`, a controlled markdown
|
|
366
|
-
textarea, file text import, preview, and browser-owned persistence. The admin
|
|
367
|
-
route restores that data into a keyed table and deletes rows through existing
|
|
368
|
-
list and handler semantics. React Hook Form, CodeMirror, axios, Zustand, and
|
|
369
|
-
React are absent from deploy handlers, and the legal sibling remains static.
|
|
370
|
-
This intake adds no compiler or runtime concept; rich editor lifecycle, server
|
|
371
|
-
validation, upload progress, dialogs, and complete admin browser journeys remain
|
|
372
|
-
separate gates.
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
# Kudzu Architecture Continuation
|
|
2
|
-
|
|
3
|
-
This directory is the compiler continuation packet. Planned versions remain plans until package metadata and release records mark them complete.
|
|
4
|
-
|
|
5
|
-
The top-level [`GOAL_A.md`](../../GOAL_A.md) and [`GOAL_B.md`](../../GOAL_B.md) are historical completed capability records. Do not overwrite or reinterpret them. The Goal A/B/C/D names in this directory refer to the next architecture discussion:
|
|
6
|
-
|
|
7
|
-
| Goal | Decision | Start condition |
|
|
8
|
-
|---|---|---|
|
|
9
|
-
| A: compiler foundation | Complete in `0.8.23` | The no-write source compiler, RouteIR v1, CapabilityIR v1, generator boundaries, and output baseline are recorded. |
|
|
10
|
-
| B: optimization benchmarks | Maintained gate | Keyed restoration, no-op normalization, exact route-entry transform reuse, and identical route-entry file sharing are retained; continue only when another current fixture reproduces a material loss. |
|
|
11
|
-
| C: state/resource model | Research only | Reduced fixtures expose a limitation |
|
|
12
|
-
| D: routing compatibility | Current behavior preserved | Revisit only with migration evidence and invariant review |
|
|
13
|
-
|
|
14
|
-
The completed `0.9.0` milestone is recorded in [`0.9-semantic-compression.md`](./0.9-semantic-compression.md) and [`0.9-implementation-plan.md`](./0.9-implementation-plan.md). It freezes the `0.8.62` baseline, then closes evidence-backed work on Derived, shared state/actions, resource ownership, component ownership, pass reduction, and final cross-framework proof. [`large-application-ai-native-roadmap.md`](./large-application-ai-native-roadmap.md) remains the completed foundation and longer-term plan. Model-driven delivery is separately gated for 1.0. ResourceIR remains unapproved; range ownership, virtualization, optimistic transactions, public adapters, and generic runtimes still require independent evidence and architecture review.
|
|
15
|
-
|
|
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
|
-
|
|
18
|
-
[`application-capability-release-plan.md`](./application-capability-release-plan.md) is the authoritative post-0.9 execution queue. Its `0.21.4` AI delivery proof is measured at Kudzu 11/25 versus React + Vite 24/25 and blocks `1.0.0`; the next packet must be selected from those measured failures. The plan 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
|
-
|
|
20
|
-
## Required Invariants
|
|
21
|
-
|
|
22
|
-
- Every route remains a complete static HTML document.
|
|
23
|
-
- Build-known static routes emit zero JavaScript.
|
|
24
|
-
- Interactive routes emit only capabilities they use.
|
|
25
|
-
- React, hydration, a VDOM, retained browser components, and React islands remain forbidden.
|
|
26
|
-
- Native anchors are the default; same-document navigation remains explicit and route-group scoped.
|
|
27
|
-
- Compiler specialization preserves ordinary React-shaped TSX where it can be analyzed safely.
|
|
28
|
-
- Unsupported nearby forms fail with source-located diagnostics.
|
|
29
|
-
|
|
30
|
-
## Reading Order
|
|
31
|
-
|
|
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.
|
|
46
|
-
|
|
47
|
-
## Resume Checklist
|
|
48
|
-
|
|
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.
|
|
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.
|
|
51
|
-
- [ ] Confirm `package.json` still reports the actual current version; never infer release status from this plan.
|
|
52
|
-
- [ ] Inspect the worktree and preserve unrelated or uncommitted changes.
|
|
53
|
-
- [ ] Start later architecture work only by an explicit decision from the completed Goal A baseline.
|
|
54
|
-
- [ ] Preserve accepted syntax, diagnostics, route plans, HTML, asset selection, and browser ownership behavior.
|
|
55
|
-
- [ ] Run the repository checks required by that implementation patch and record output deltas.
|
|
56
|
-
- [ ] Update this packet when a planned boundary changes; update release records only when a release actually occurs.
|