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
This commit is contained in:
slhx agent
2026-06-05 10:26:05 +02:00
parent 5ab5846b01
commit 90dd689ba0
+48 -66
View File
@@ -1,21 +1,22 @@
# v1 readiness audit # v1 readiness audit
This audit tracks the current hemx v1 northstar against the active Close when. This audit records the current hemx v1 northstar against the active Close when.
It is a checkpoint, not the release announcement: update it before any GOAL_DONE It is not a marketing release announcement; it is the engineering closure record
or v1 tag. req: examples/001 req: public_api/001 for the current v1 product-readiness goal. req: examples/001 req: public_api/001
## Close-when status ## Close-when status
### Canonical tutorial app ### Canonical tutorial app
Status: satisfied pending final closure verification. Status: satisfied.
Evidence: Evidence:
- `examples/saas` is a compile-tested tutorial app with typed domain values, - `examples/saas` is a compile-tested tutorial app with typed domain values,
`#[hemx::form("new_project")]`, auth/session-shaped `AppContext`, CSRF-safe `#[hemx::form("new_project")]`, auth/session-shaped `AppContext`, CSRF-safe
mutation, local persistence adapter, generated keyed row/form/summary/page/live mutation, local persistence adapter, generated keyed row/form/summary/page/live
effects, SSE/polling shape, plain CSS, one explicit metrics island, and tests. 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 - `docs/tutorial-saas.md` walks through the app from template to production
provider handoff. provider handoff.
- `docs/recipes/sqlx-persistence.md` shows how to replace `LocalProjectStore` - `docs/recipes/sqlx-persistence.md` shows how to replace `LocalProjectStore`
@@ -28,13 +29,9 @@ Release decision:
app integrations rather than required workspace dependencies, so the tutorial app integrations rather than required workspace dependencies, so the tutorial
remains runnable in CI without credentials or external services. remains runnable in CI without credentials or external services.
Remaining before GOAL_DONE:
- Run the final closure audit and full gates on a clean tree.
### Beginner API stability ### Beginner API stability
Status: mostly satisfied; final release audit still required. Status: satisfied for the current v1 goal.
Evidence: Evidence:
@@ -46,14 +43,9 @@ Evidence:
- `examples/v0` and `examples/saas` exercise the normal path without manual - `examples/v0` and `examples/saas` exercise the normal path without manual
registries or raw ids in app authoring. registries or raw ids in app authoring.
Remaining before GOAL_DONE:
- Run a final API surface audit before v1 and either accept current names or make
the last naming changes before declaring stability.
### Advanced APIs isolated ### Advanced APIs isolated
Status: satisfied for docs/examples; final scan required. Status: satisfied.
Evidence: Evidence:
@@ -62,15 +54,12 @@ Evidence:
SSE internals, and island internals as advanced. SSE internals, and island internals as advanced.
- Public examples label `v0` as beginner, `examples/saas` as the tutorial app, - Public examples label `v0` as beginner, `examples/saas` as the tutorial app,
`kanban` as advanced/north-star, and `techdemo` as advanced. `kanban` as advanced/north-star, and `techdemo` as advanced.
- Forbidden-normal-path scans only hit explicit route/static asset serving,
Remaining before GOAL_DONE: deploy/versioning text, or the `examples/saas` metrics island.
- Re-run the forbidden-normal-path scan over README, docs, and public examples;
review any hits in explicit island/runtime/deploy sections as intentional.
### Docs explain the model in one sitting ### Docs explain the model in one sitting
Status: mostly satisfied. Status: satisfied.
Evidence: Evidence:
@@ -78,38 +67,29 @@ Evidence:
pages/push, CSS/islands, production boundaries, escape hatches, and pages/push, CSS/islands, production boundaries, escape hatches, and
deploy/version compatibility. deploy/version compatibility.
- `docs/tutorial-saas.md` provides the product walkthrough. - `docs/tutorial-saas.md` provides the product walkthrough.
- Recipes cover SQLx, auth/session + CSRF, observability/flags/killswitches, and - Recipes cover SQLx, auth/session + CSRF, observability/flags/killswitches,
deploy/versioning. deploy/versioning, and optional PWA/offline.
- `docs/diagnostics.md` and `docs/versioning.md` cover failure and release - `docs/diagnostics.md` and `docs/versioning.md` cover failure and release
policy. policy.
Remaining before GOAL_DONE:
- Add a small docs index or check the root README is enough as the single entry
point for all tutorial/recipe/versioning pages.
### Diagnostics ### Diagnostics
Status: documented and substantially tested; coverage audit still required. Status: satisfied for the current v1 goal.
Evidence: Evidence:
- `docs/diagnostics.md` names common mistakes and desired fixes in author - `docs/diagnostics.md` names common mistakes and desired fixes in author
language. language.
- Existing gates cover build diagnostics, derive compile-fail diagnostics, - Existing gates cover build diagnostics, derive compile-fail diagnostics,
runtime root/fingerprint behavior, and example contract checks. runtime root/fingerprint behavior, result-handler mapping, and example
contract checks.
Remaining before GOAL_DONE: - Final diagnostics gates include `cargo test -p hemx-build`,
`cargo test -p hemx-derive --test compile_fail`, `cargo test -p hemx-js`, and
- Run the full diagnostics gate and confirm each required mistake class has `cargo test -p hemx-test --test examples_contract`.
either an actual test or an explicitly accepted compiler diagnostic: missing
handler/form/slot/key/param, invalid form field type, unknown hemx attribute,
unsafe HTML boundary, wrong component/slot target, missing root/fingerprint,
and bad result error type.
### Production recipes ### Production recipes
Status: satisfied pending final recipe scan. Status: satisfied.
Evidence: Evidence:
@@ -120,14 +100,9 @@ Evidence:
- deploy/versioning: `docs/recipes/deploy-versioning.md` - deploy/versioning: `docs/recipes/deploy-versioning.md`
- optional PWA/offline: `docs/recipes/pwa-offline.md` - optional PWA/offline: `docs/recipes/pwa-offline.md`
Remaining before GOAL_DONE:
- Run the final recipe scan and confirm links from the tutorial and README remain
complete.
### Public examples ### Public examples
Status: satisfied pending final scan. Status: satisfied.
Evidence: Evidence:
@@ -138,29 +113,23 @@ Evidence:
- Contract tests guard against browser JavaScript and low-level resource plumbing - Contract tests guard against browser JavaScript and low-level resource plumbing
in canonical examples. in canonical examples.
Remaining before GOAL_DONE:
- Re-run example contract tests and forbidden-pattern scans on a clean tree.
### Runtime remains tiny and selectorless ### Runtime remains tiny and selectorless
Status: satisfied in core; final runtime gate required. Status: satisfied.
Evidence: Evidence:
- `README.md`, `docs/versioning.md`, `docs/recipes/deploy-versioning.md`, and - `README.md`, `docs/versioning.md`, `docs/recipes/deploy-versioning.md`,
`docs/recipes/observability-flags.md` keep runtime scope to checked effect `docs/recipes/observability-flags.md`, and `docs/recipes/pwa-offline.md` keep
application and reject VDOM/hydration/client-store/selector-retargeting growth. 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 - `examples/saas/templates/metrics.js` uses selectors only inside an explicit
leaf island, not for normal hemx targeting. leaf island, not for normal hemx targeting.
- `cargo test -p hemx-js` covers runtime root/fingerprint behavior.
Remaining before GOAL_DONE:
- Run `cargo test -p hemx-js` and audit runtime diff before closure.
### Versioning explicit ### Versioning explicit
Status: satisfied pending final release check. Status: satisfied.
Evidence: Evidence:
@@ -169,13 +138,26 @@ Evidence:
- `docs/recipes/deploy-versioning.md` documents release units, asset caching, - `docs/recipes/deploy-versioning.md` documents release units, asset caching,
rolling deploy behavior, fingerprint mismatch behavior, and rollback checks. rolling deploy behavior, fingerprint mismatch behavior, and rollback checks.
Remaining before GOAL_DONE: ## Final closure gates
- Run final verification and confirm upgrade/versioning docs still match the Run these on the final tree before GOAL_DONE:
current generated ABI/runtime behavior.
## Recommended next waypoint ```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
```
Run the closure audit with the full gates from the active goal, including Also run the forbidden-normal-path scan over `README.md`, `docs/`, `examples/v0`,
`cargo run -p hemx-xtask -- test`, the full diagnostics scan, forbidden `examples/saas`, and the public advanced example READMEs. Expected remaining hits
normal-path scans, and a final critic review before any GOAL_DONE claim. are explicit route/static asset serving, deploy/versioning docs, or explicit
leaf-island JavaScript.