genesis-compiler 1.2.6 → 1.2.8
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 +38 -17
- package/docs/prompt-integration.md +1 -1
- package/docs/stack-components.md +19 -4
- package/package.json +2 -4
- package/plugins/genesis/.codex-plugin/plugin.json +1 -1
- package/src/cli.js +20 -8
- package/src/index/agent-skills.js +11 -3
- package/src/index/check.js +9 -5
- package/src/index/code-index.js +7 -2
- package/src/index/context.js +2 -2
- package/src/index/deployment.js +2 -2
- package/src/index/environment-files.js +6 -2
- package/src/index/init.js +2 -2
- package/src/index/launch.js +2 -1
- package/src/index/prompt.js +24 -16
- package/src/index/stack-catalog.js +111 -26
- package/src/index/stack.js +60 -8
- package/src/index/verification.js +2 -1
- package/src/index/workspace-setup.js +4 -2
- package/src/index.js +42 -18
- package/stacks/pieces/cpp.md +0 -34
- package/stacks/pieces/csharp.md +0 -22
- package/stacks/pieces/go.md +0 -22
- package/stacks/pieces/java.md +0 -22
- package/stacks/pieces/jskit-mysql.md +0 -56
- package/stacks/pieces/jskit-postgresql.md +0 -56
- package/stacks/pieces/jskit.md +0 -114
- package/stacks/pieces/kotlin.md +0 -22
- package/stacks/pieces/mysql.md +0 -29
- package/stacks/pieces/nodejs.md +0 -36
- package/stacks/pieces/php.md +0 -23
- package/stacks/pieces/postgresql.md +0 -30
- package/stacks/pieces/python.md +0 -23
- package/stacks/pieces/ruby.md +0 -22
- package/stacks/pieces/rust.md +0 -22
- package/stacks/pieces/shell.md +0 -23
- package/stacks/pieces/vue.md +0 -28
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
# Stack piece: jskit-postgresql
|
|
2
|
-
|
|
3
|
-
## Description
|
|
4
|
-
|
|
5
|
-
JSKIT PostgreSQL runtime, live-schema CRUD generation, and persistence conventions.
|
|
6
|
-
|
|
7
|
-
## Requires
|
|
8
|
-
|
|
9
|
-
- `jskit`
|
|
10
|
-
- `postgresql`
|
|
11
|
-
|
|
12
|
-
## Conflicts
|
|
13
|
-
|
|
14
|
-
- `jskit-mysql`
|
|
15
|
-
|
|
16
|
-
## Environment defaults
|
|
17
|
-
|
|
18
|
-
- Default `DB_CLIENT`: `pg`
|
|
19
|
-
|
|
20
|
-
## Resources
|
|
21
|
-
|
|
22
|
-
```json genesis-resource
|
|
23
|
-
{
|
|
24
|
-
"id": "database",
|
|
25
|
-
"kind": "postgresql",
|
|
26
|
-
"environmentAlternatives": [
|
|
27
|
-
{
|
|
28
|
-
"required": ["DATABASE_URL"]
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
"required": ["DB_HOST", "DB_PORT", "DB_NAME", "DB_USER", "DB_PASSWORD"],
|
|
32
|
-
"allowEmpty": ["DB_PASSWORD"]
|
|
33
|
-
}
|
|
34
|
-
]
|
|
35
|
-
}
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
## Adoption
|
|
39
|
-
|
|
40
|
-
- Confirm that the application's effective PostgreSQL environment alternatives
|
|
41
|
-
and driver match this Resource declaration; add a project Resource contract
|
|
42
|
-
when the existing application legitimately differs.
|
|
43
|
-
- Verify from source that the database preparation path discovers every
|
|
44
|
-
package-owned migration, preserves the existing ledger, orders cross-package
|
|
45
|
-
constraints safely, and invokes an app-owned idempotent seed. Do not execute
|
|
46
|
-
it during adoption.
|
|
47
|
-
|
|
48
|
-
## Deslop
|
|
49
|
-
|
|
50
|
-
- Use the installed JSKIT database runtime and generated resource/repository
|
|
51
|
-
seams; do not add a second client, connection factory, CRUD transport, or
|
|
52
|
-
file-persistence fallback.
|
|
53
|
-
- Keep environment normalization, transactions, row mapping, and database
|
|
54
|
-
error translation at one established persistence boundary.
|
|
55
|
-
- Never compete with or rewrite a generator-owned baseline migration. Preserve
|
|
56
|
-
retained migration history and data semantics.
|
package/stacks/pieces/jskit.md
DELETED
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
# Stack piece: jskit
|
|
2
|
-
|
|
3
|
-
## Description
|
|
4
|
-
|
|
5
|
-
AI-first JSKIT runtime capabilities, tested source patterns, Vue surfaces, and
|
|
6
|
-
application-owned composition.
|
|
7
|
-
|
|
8
|
-
## Requires
|
|
9
|
-
|
|
10
|
-
- `nodejs`
|
|
11
|
-
|
|
12
|
-
## Skill
|
|
13
|
-
|
|
14
|
-
- Package: `@jskit-ai/agent-docs`
|
|
15
|
-
- Path: `skills/jskit`
|
|
16
|
-
|
|
17
|
-
## Guidance
|
|
18
|
-
|
|
19
|
-
- Before creating or modifying JSKIT Vue/Vuetify UI, load the installed
|
|
20
|
-
`jskit` Agent Skill and read its `references/material-3.md` completely.
|
|
21
|
-
- Implement Material 3 through JSKIT patterns, shared screens, shell and
|
|
22
|
-
placement seams, app-owned theme configuration, and supported Vuetify APIs.
|
|
23
|
-
- Use geometry-preserving Material skeletons for all user-visible loading;
|
|
24
|
-
never use a generic spinner or circular progress indicator, or let content
|
|
25
|
-
jump when data arrives. Actions use stable disabled/pending labels.
|
|
26
|
-
- Keep resource-load and field errors in context, but route transient
|
|
27
|
-
user-command failures through JSKIT's shared non-layout-shifting action
|
|
28
|
-
feedback/snackbar path.
|
|
29
|
-
|
|
30
|
-
## Adoption
|
|
31
|
-
|
|
32
|
-
- Read the installed JSKIT skill's existing-application migration guidance
|
|
33
|
-
completely before editing Stack or assessing readiness.
|
|
34
|
-
- Inventory the coordinated `@jskit-ai/*` package graph, application-owned
|
|
35
|
-
composition, package-owned migrations, explicit repositories/features/named
|
|
36
|
-
actions, and current client resources without running a broad package update.
|
|
37
|
-
- Compare the real package scripts with JSKIT's current Workspace setup,
|
|
38
|
-
Launch, verification, and Deployment declarations. Older source needs complete
|
|
39
|
-
project-owned overrides until a separately approved port supplies the current
|
|
40
|
-
commands.
|
|
41
|
-
- Inspect existing setup and database preparation for both migration discovery
|
|
42
|
-
and an app-owned idempotent seed. Never infer `db:prepare` from the selected
|
|
43
|
-
component when the script or preparation file does not exist.
|
|
44
|
-
- When authenticated Preview exists, preserve the app-owned Preview identity
|
|
45
|
-
command, selectors, protocol, environment names, runtime, and timeout in the
|
|
46
|
-
project's Launch declaration. A host-saved identity name/value is not a
|
|
47
|
-
substitute for this application contract.
|
|
48
|
-
- Treat generator descriptors, receipts, sync commands, legacy service
|
|
49
|
-
locators, and retired tool manifests as migration evidence only. Translate
|
|
50
|
-
live facts into current source/Stack and report remaining port work; do not
|
|
51
|
-
add compatibility readers or claim adoption performed the port.
|
|
52
|
-
|
|
53
|
-
## Workspace setup
|
|
54
|
-
|
|
55
|
-
- Prepare `Install dependencies` with `nodejs` when `package.json` exists: `npm` `install`
|
|
56
|
-
- Prepare `Prepare database` with `nodejs` if `scripts/prepare-database.js` exists: `npm` `run` `db:prepare`
|
|
57
|
-
|
|
58
|
-
## Environment files
|
|
59
|
-
|
|
60
|
-
- Dotenv `.env`
|
|
61
|
-
|
|
62
|
-
## City regions
|
|
63
|
-
|
|
64
|
-
- Ignore `**/test/**`
|
|
65
|
-
- Ignore `**/tests/**`
|
|
66
|
-
- Ignore `**/__tests__/**`
|
|
67
|
-
- Ignore `**/*.test.*`
|
|
68
|
-
- Ignore `**/*.spec.*`
|
|
69
|
-
- Match `packages` as `Packages`: `packages/**`
|
|
70
|
-
- Match `source` as `Source`: `src/**`
|
|
71
|
-
- Fallback `everything-else` as `Everything else`
|
|
72
|
-
|
|
73
|
-
## Launch
|
|
74
|
-
|
|
75
|
-
### Target `app`: Run app
|
|
76
|
-
|
|
77
|
-
- Default.
|
|
78
|
-
- Preferred port: `3000`
|
|
79
|
-
- URL path: `/`
|
|
80
|
-
- Ready when: `GET` `/api/health` returns `200`
|
|
81
|
-
- Runtimes: `nodejs`
|
|
82
|
-
- Serve `Develop`: `npm` `run` `develop`
|
|
83
|
-
|
|
84
|
-
## Deployment
|
|
85
|
-
|
|
86
|
-
- Runtimes: `nodejs`
|
|
87
|
-
- Ready when: `GET` `/api/health` returns `200`
|
|
88
|
-
- Prepare `Install dependencies`: `npm` `install`
|
|
89
|
-
- Build `Build`: `npm` `run` `build`
|
|
90
|
-
- Migrate `Prepare database`: `npm` `run` `db:prepare`
|
|
91
|
-
- Serve `Start`: `npm` `start`
|
|
92
|
-
|
|
93
|
-
## Deslop
|
|
94
|
-
|
|
95
|
-
- For every affected JSKIT screen, load the installed `jskit` Agent Skill,
|
|
96
|
-
read `references/material-3.md`, and execute its Material 3 audit.
|
|
97
|
-
- Use JSKIT patterns, packages, resources, composables, screens, and placement
|
|
98
|
-
seams instead of parallel framework plumbing.
|
|
99
|
-
- Treat copied pattern source as app-owned and customizable. Adapt routes,
|
|
100
|
-
placements, and infrastructure tests coherently; when replacing a foundation
|
|
101
|
-
route, update its baseline browser coverage instead of deleting it.
|
|
102
|
-
- Consolidate repeated validation, pending/error state, API access, and page
|
|
103
|
-
behavior at the shared resource or established JSKIT seam.
|
|
104
|
-
- Replace transient command-error alerts that shift page content with the
|
|
105
|
-
established JSKIT action feedback/snackbar seam; preserve stable in-page
|
|
106
|
-
resource-load errors, retry states, and field validation.
|
|
107
|
-
- Replace generic in-content spinners with Material skeletons that reserve the
|
|
108
|
-
final layout, and verify that loading completion does not shift content.
|
|
109
|
-
- Remove pass-through wrappers and abandoned scaffold code only when doing so
|
|
110
|
-
preserves routes, placements, baseline tests, and observable behavior.
|
|
111
|
-
|
|
112
|
-
## Commands
|
|
113
|
-
|
|
114
|
-
- Verify `application`: `npm` `run` `verify`
|
package/stacks/pieces/kotlin.md
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
# Stack piece: kotlin
|
|
2
|
-
|
|
3
|
-
## Description
|
|
4
|
-
|
|
5
|
-
Kotlin package, public callable, coroutine, nullability, build, and test conventions.
|
|
6
|
-
|
|
7
|
-
## Requires
|
|
8
|
-
|
|
9
|
-
- Nothing.
|
|
10
|
-
|
|
11
|
-
## Indexers
|
|
12
|
-
|
|
13
|
-
- `kotlin`
|
|
14
|
-
|
|
15
|
-
## Deslop
|
|
16
|
-
|
|
17
|
-
- Preserve package visibility, nullability, coroutine ownership, public types,
|
|
18
|
-
dependency injection, and Gradle or multiplatform conventions.
|
|
19
|
-
- Keep private functions near their caller. Consolidate repeated mapping,
|
|
20
|
-
validation, state, and error translation at an existing boundary.
|
|
21
|
-
- Remove redundant extension functions, wrappers, sealed hierarchies, and
|
|
22
|
-
generic layers that do not make the domain or lifecycle clearer.
|
package/stacks/pieces/mysql.md
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# Stack piece: mysql
|
|
2
|
-
|
|
3
|
-
## Description
|
|
4
|
-
|
|
5
|
-
MySQL persistence and migration conventions.
|
|
6
|
-
|
|
7
|
-
## Requires
|
|
8
|
-
|
|
9
|
-
- Nothing.
|
|
10
|
-
|
|
11
|
-
## Adoption
|
|
12
|
-
|
|
13
|
-
- Identify the application's accepted connection alternatives, client/driver,
|
|
14
|
-
migration directories and ledger, transaction ownership, and the exact
|
|
15
|
-
preparation command without connecting to or mutating a database.
|
|
16
|
-
- Distinguish fresh-schema creation from existing-database upgrade. Record how
|
|
17
|
-
package/application migrations are ordered and how a retained ledger prevents
|
|
18
|
-
historical migrations from rerunning.
|
|
19
|
-
- Identify app-owned seed behavior and whether it is deterministic and
|
|
20
|
-
idempotent. A migration-only command is not a complete seed contract.
|
|
21
|
-
|
|
22
|
-
## Deslop
|
|
23
|
-
|
|
24
|
-
- Keep connection configuration, transaction ownership, and database error
|
|
25
|
-
translation at one persistence boundary.
|
|
26
|
-
- Use the selected integration's client and migration lifecycle instead of
|
|
27
|
-
adding parallel connection factories or schema-management code.
|
|
28
|
-
- Preserve migration history and data semantics. Deslop is not permission for
|
|
29
|
-
destructive schema changes.
|
package/stacks/pieces/nodejs.md
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# Stack piece: nodejs
|
|
2
|
-
|
|
3
|
-
## Description
|
|
4
|
-
|
|
5
|
-
Node.js package, command, module, dependency, and test conventions.
|
|
6
|
-
|
|
7
|
-
## Requires
|
|
8
|
-
|
|
9
|
-
- Nothing.
|
|
10
|
-
|
|
11
|
-
## Indexers
|
|
12
|
-
|
|
13
|
-
- `javascript`
|
|
14
|
-
|
|
15
|
-
## Adoption
|
|
16
|
-
|
|
17
|
-
- Identify the package manager from the lockfile and preserve the existing
|
|
18
|
-
module system, supported Node.js version, package entrypoints, and executable
|
|
19
|
-
commands.
|
|
20
|
-
- Record the source's real dependency installation, build, verification,
|
|
21
|
-
development, and production commands. Do not assume `npm run develop`,
|
|
22
|
-
`npm test`, or `npm start` exists merely because a current foundation uses it.
|
|
23
|
-
- Identify every long-running process, its workdir, host/port handling,
|
|
24
|
-
readiness signal, and shutdown ownership before declaring Launch.
|
|
25
|
-
|
|
26
|
-
## Deslop
|
|
27
|
-
|
|
28
|
-
- Preserve the package's existing module system, package manager, public
|
|
29
|
-
exports, registered commands, and supported runtime.
|
|
30
|
-
- Prefer direct modules and Node.js built-ins over wrappers that merely rename
|
|
31
|
-
an operation.
|
|
32
|
-
- Keep single-consumer helpers private and close to their caller. Consolidate
|
|
33
|
-
repeated argument, path, serialization, error, and process-lifecycle logic
|
|
34
|
-
only when one clear shared operation exists.
|
|
35
|
-
- Make subprocess, listener, timer, and cleanup ownership obvious. Remove dead
|
|
36
|
-
entrypoints and duplicate public exports instead of maintaining aliases.
|
package/stacks/pieces/php.md
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# Stack piece: php
|
|
2
|
-
|
|
3
|
-
## Description
|
|
4
|
-
|
|
5
|
-
PHP package, namespace, callable, dependency, and test conventions.
|
|
6
|
-
|
|
7
|
-
## Requires
|
|
8
|
-
|
|
9
|
-
- Nothing.
|
|
10
|
-
|
|
11
|
-
## Indexers
|
|
12
|
-
|
|
13
|
-
- `php`
|
|
14
|
-
|
|
15
|
-
## Deslop
|
|
16
|
-
|
|
17
|
-
- Preserve established namespaces, package boundaries, public interfaces,
|
|
18
|
-
framework lifecycle, dependency injection, and Composer conventions.
|
|
19
|
-
- Keep private and protected helpers close to their owning class. Consolidate
|
|
20
|
-
repeated request, validation, mapping, and persistence behavior at the
|
|
21
|
-
existing application seam rather than adding generic utility layers.
|
|
22
|
-
- Remove abandoned service wrappers, duplicated facades, and aliases that do
|
|
23
|
-
not protect a real compatibility boundary.
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
# Stack piece: postgresql
|
|
2
|
-
|
|
3
|
-
## Description
|
|
4
|
-
|
|
5
|
-
PostgreSQL persistence and migration conventions.
|
|
6
|
-
|
|
7
|
-
## Requires
|
|
8
|
-
|
|
9
|
-
- Nothing.
|
|
10
|
-
|
|
11
|
-
## Adoption
|
|
12
|
-
|
|
13
|
-
- Identify the application's accepted connection alternatives, client/driver,
|
|
14
|
-
migration directories and ledger, transaction ownership, search-path/schema
|
|
15
|
-
assumptions, and the exact preparation command without connecting to or
|
|
16
|
-
mutating a database.
|
|
17
|
-
- Distinguish fresh-schema creation from existing-database upgrade. Record how
|
|
18
|
-
package/application migrations are ordered and how a retained ledger prevents
|
|
19
|
-
historical migrations from rerunning.
|
|
20
|
-
- Identify app-owned seed behavior and whether it is deterministic and
|
|
21
|
-
idempotent. A migration-only command is not a complete seed contract.
|
|
22
|
-
|
|
23
|
-
## Deslop
|
|
24
|
-
|
|
25
|
-
- Keep connection configuration, transaction ownership, and database error
|
|
26
|
-
translation at one persistence boundary.
|
|
27
|
-
- Use the selected integration's client and migration lifecycle instead of
|
|
28
|
-
adding parallel connection factories or schema-management code.
|
|
29
|
-
- Preserve migration history and data semantics. Deslop is not permission for
|
|
30
|
-
destructive schema changes.
|
package/stacks/pieces/python.md
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# Stack piece: python
|
|
2
|
-
|
|
3
|
-
## Description
|
|
4
|
-
|
|
5
|
-
Python package, module, callable, dependency, and test conventions.
|
|
6
|
-
|
|
7
|
-
## Requires
|
|
8
|
-
|
|
9
|
-
- Nothing.
|
|
10
|
-
|
|
11
|
-
## Indexers
|
|
12
|
-
|
|
13
|
-
- `python`
|
|
14
|
-
|
|
15
|
-
## Deslop
|
|
16
|
-
|
|
17
|
-
- Preserve established package boundaries, public imports, typing style,
|
|
18
|
-
dependency injection, and synchronous or asynchronous execution conventions.
|
|
19
|
-
- Keep single-consumer helpers private and close to their caller. Consolidate
|
|
20
|
-
repeated validation, serialization, resource lifetime, and error translation
|
|
21
|
-
only at one clear existing seam.
|
|
22
|
-
- Remove pass-through modules, speculative base classes, and utility wrappers
|
|
23
|
-
that merely rename standard Python or framework operations.
|
package/stacks/pieces/ruby.md
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
# Stack piece: ruby
|
|
2
|
-
|
|
3
|
-
## Description
|
|
4
|
-
|
|
5
|
-
Ruby module, class, callable, dependency, lifecycle, and test conventions.
|
|
6
|
-
|
|
7
|
-
## Requires
|
|
8
|
-
|
|
9
|
-
- Nothing.
|
|
10
|
-
|
|
11
|
-
## Indexers
|
|
12
|
-
|
|
13
|
-
- `ruby`
|
|
14
|
-
|
|
15
|
-
## Deslop
|
|
16
|
-
|
|
17
|
-
- Preserve established modules, public entry points, dependency boundaries,
|
|
18
|
-
lifecycle callbacks, and Bundler and test conventions.
|
|
19
|
-
- Keep private methods with their owning class or module. Consolidate repeated
|
|
20
|
-
coercion, validation, persistence, and error handling at an existing seam.
|
|
21
|
-
- Remove forwarding objects, metaprogramming, concerns, and service layers that
|
|
22
|
-
obscure a direct operation without protecting a real shared boundary.
|
package/stacks/pieces/rust.md
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
# Stack piece: rust
|
|
2
|
-
|
|
3
|
-
## Description
|
|
4
|
-
|
|
5
|
-
Rust module, public item, ownership, error, async, Cargo, and test conventions.
|
|
6
|
-
|
|
7
|
-
## Requires
|
|
8
|
-
|
|
9
|
-
- Nothing.
|
|
10
|
-
|
|
11
|
-
## Indexers
|
|
12
|
-
|
|
13
|
-
- `rust`
|
|
14
|
-
|
|
15
|
-
## Deslop
|
|
16
|
-
|
|
17
|
-
- Preserve module visibility, ownership and borrowing, error types, feature
|
|
18
|
-
gates, async runtime boundaries, and Cargo workspace conventions.
|
|
19
|
-
- Keep private functions near their callers. Consolidate repeated conversion,
|
|
20
|
-
validation, and resource cleanup only when one ownership model remains clear.
|
|
21
|
-
- Remove needless traits, boxes, clones, wrapper types, and generic layers that
|
|
22
|
-
do not protect a real semantic or compatibility boundary.
|
package/stacks/pieces/shell.md
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# Stack piece: shell
|
|
2
|
-
|
|
3
|
-
## Description
|
|
4
|
-
|
|
5
|
-
Shell script function, process, environment, portability, and test conventions.
|
|
6
|
-
|
|
7
|
-
## Requires
|
|
8
|
-
|
|
9
|
-
- Nothing.
|
|
10
|
-
|
|
11
|
-
## Indexers
|
|
12
|
-
|
|
13
|
-
- `shell`
|
|
14
|
-
|
|
15
|
-
## Deslop
|
|
16
|
-
|
|
17
|
-
- Preserve the script's supported shell, command-line contract, environment
|
|
18
|
-
semantics, quoting rules, exit statuses, and process ownership.
|
|
19
|
-
- Keep private functions close to their callers. Consolidate repeated argument
|
|
20
|
-
parsing, validation, cleanup, and command execution only at a clear script or
|
|
21
|
-
sourced-library boundary.
|
|
22
|
-
- Remove needless command wrappers, subshells, pipelines, aliases, and dynamic
|
|
23
|
-
evaluation that obscure a direct, safely quoted operation.
|
package/stacks/pieces/vue.md
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
# Stack piece: vue
|
|
2
|
-
|
|
3
|
-
## Description
|
|
4
|
-
|
|
5
|
-
Vue component, reactive state, resource hydration, routing, and screen-state conventions.
|
|
6
|
-
|
|
7
|
-
## Requires
|
|
8
|
-
|
|
9
|
-
- `nodejs`
|
|
10
|
-
|
|
11
|
-
## Guidance
|
|
12
|
-
|
|
13
|
-
### Reactive state hydration
|
|
14
|
-
|
|
15
|
-
- Cached query/resource data and route state may already exist when a component is created. Never rely on a default lazy `watch()` to initialize writable UI state.
|
|
16
|
-
- Prefer a computed source of truth. When local writable state is necessary, initialize it synchronously and use `{ immediate: true }` for watchers that hydrate or validate from resource data, query results, props, or `route.query`.
|
|
17
|
-
- Keep genuinely change-only watchers non-immediate.
|
|
18
|
-
- Persist user-selected filters and screen context in the URL when they must survive navigation.
|
|
19
|
-
- Test stateful screens by navigating away and back with a warm query cache, including browser back/forward navigation.
|
|
20
|
-
|
|
21
|
-
## Adoption
|
|
22
|
-
|
|
23
|
-
- Identify the real client entrypoint, router, build tool, development command,
|
|
24
|
-
production build output, API proxy/origin contract, and environment-file
|
|
25
|
-
conventions.
|
|
26
|
-
- Record existing unit and browser-test commands plus their base-URL, storage
|
|
27
|
-
state, and managed-browser assumptions. Do not install a browser or replace a
|
|
28
|
-
working host-managed browser contract during adoption.
|