Files
hemx/docs/v1-readiness.md
T
slhx agent 90dd689ba0 docs(hemx): record final v1 readiness audit
Record the current v1 readiness closure matrix after the final gates and normal-path review, including the release decision for provider recipes and the remaining verification checklist for GOAL_DONE.

req: examples/001

req: diagnostics/001

req: public_api/001

req: runtime/003

req: runtime/004
2026-06-05 10:26:05 +02:00

164 lines
5.6 KiB
Markdown

# v1 readiness audit
This audit records the current hemx v1 northstar against the active Close when.
It is not a marketing release announcement; it is the engineering closure record
for the current v1 product-readiness goal. req: examples/001 req: public_api/001
## Close-when status
### Canonical tutorial app
Status: satisfied.
Evidence:
- `examples/saas` is a compile-tested tutorial app with typed domain values,
`#[hemx::form("new_project")]`, auth/session-shaped `AppContext`, CSRF-safe
mutation, local persistence adapter, generated keyed row/form/summary/page/live
effects, full-page route fallback for settings, enhanced page-panel swap,
SSE/polling shape, plain CSS, one explicit metrics island, and tests.
- `docs/tutorial-saas.md` walks through the app from template to production
provider handoff.
- `docs/recipes/sqlx-persistence.md` shows how to replace `LocalProjectStore`
with an app-owned SQLx adapter without moving SQLx into core.
Release decision:
- The supported v1 production boundary is the compile-tested local persistence
adapter plus provider-explicit recipes. SQLx/auth/observability/deploy/PWA stay
app integrations rather than required workspace dependencies, so the tutorial
remains runnable in CI without credentials or external services.
### Beginner API stability
Status: satisfied for the current v1 goal.
Evidence:
- Normal path is documented around `app`, `component`, `handler`, `form`,
`page`, generated helpers, tuple `IntoEffect`, and `Result<impl IntoEffect, E>`
mapping.
- `docs/versioning.md` defines stable beginner API vs wire/runtime ABI vs
advanced escape hatches.
- `examples/v0` and `examples/saas` exercise the normal path without manual
registries or raw ids in app authoring.
### Advanced APIs isolated
Status: satisfied.
Evidence:
- `README.md`, `docs/versioning.md`, and `docs/diagnostics.md` identify raw
effects, ids, render/target construction, manual registries, runtime hooks,
SSE internals, and island internals as advanced.
- Public examples label `v0` as beginner, `examples/saas` as the tutorial app,
`kanban` as advanced/north-star, and `techdemo` as advanced.
- Forbidden-normal-path scans only hit explicit route/static asset serving,
deploy/versioning text, or the `examples/saas` metrics island.
### Docs explain the model in one sitting
Status: satisfied.
Evidence:
- `README.md` explains render → slot/key → effect → runtime, forms/errors,
pages/push, CSS/islands, production boundaries, escape hatches, and
deploy/version compatibility.
- `docs/tutorial-saas.md` provides the product walkthrough.
- Recipes cover SQLx, auth/session + CSRF, observability/flags/killswitches,
deploy/versioning, and optional PWA/offline.
- `docs/diagnostics.md` and `docs/versioning.md` cover failure and release
policy.
### Diagnostics
Status: satisfied for the current v1 goal.
Evidence:
- `docs/diagnostics.md` names common mistakes and desired fixes in author
language.
- Existing gates cover build diagnostics, derive compile-fail diagnostics,
runtime root/fingerprint behavior, result-handler mapping, and example
contract checks.
- Final diagnostics gates include `cargo test -p hemx-build`,
`cargo test -p hemx-derive --test compile_fail`, `cargo test -p hemx-js`, and
`cargo test -p hemx-test --test examples_contract`.
### Production recipes
Status: satisfied.
Evidence:
- SQLx: `docs/recipes/sqlx-persistence.md`
- auth/session + CSRF: `docs/recipes/auth-session-csrf.md`
- observability/metrics + feature flags/killswitches:
`docs/recipes/observability-flags.md`
- deploy/versioning: `docs/recipes/deploy-versioning.md`
- optional PWA/offline: `docs/recipes/pwa-offline.md`
### Public examples
Status: satisfied.
Evidence:
- `examples/v0/README.md` is the beginner entry.
- `examples/saas/README.md` identifies the production-shaped tutorial app.
- `examples/kanban/README.md` identifies Kanban as advanced/north-star.
- `examples/techdemo/README.md` identifies Techdemo as advanced.
- Contract tests guard against browser JavaScript and low-level resource plumbing
in canonical examples.
### Runtime remains tiny and selectorless
Status: satisfied.
Evidence:
- `README.md`, `docs/versioning.md`, `docs/recipes/deploy-versioning.md`,
`docs/recipes/observability-flags.md`, and `docs/recipes/pwa-offline.md` keep
runtime scope to checked effect application and reject VDOM/hydration/client
store/selector-retargeting growth.
- `examples/saas/templates/metrics.js` uses selectors only inside an explicit
leaf island, not for normal hemx targeting.
- `cargo test -p hemx-js` covers runtime root/fingerprint behavior.
### Versioning explicit
Status: satisfied.
Evidence:
- `docs/versioning.md` defines semver tiers, wire/runtime ABI policy, advanced
escape-hatch policy, upgrade-note template, and release checklist.
- `docs/recipes/deploy-versioning.md` documents release units, asset caching,
rolling deploy behavior, fingerprint mismatch behavior, and rollback checks.
## Final closure gates
Run these on the final tree before GOAL_DONE:
```sh
cargo run -p hemx-xtask -- test
cargo check --workspace
cargo test -p hemx-saas-example
cargo test -p hemx-v0-examples
cargo test -p hemx-build
cargo test -p hemx-js
cargo test -p hemx-derive --test compile_fail
cargo test -p hemx-test --test examples_contract
redgate list
redgate refs
redgate health --strict
git diff --check
```
Also run the forbidden-normal-path scan over `README.md`, `docs/`, `examples/v0`,
`examples/saas`, and the public advanced example READMEs. Expected remaining hits
are explicit route/static asset serving, deploy/versioning docs, or explicit
leaf-island JavaScript.