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
5.6 KiB
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/saasis a compile-tested tutorial app with typed domain values,#[hemx::form("new_project")], auth/session-shapedAppContext, 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.mdwalks through the app from template to production provider handoff.docs/recipes/sqlx-persistence.mdshows how to replaceLocalProjectStorewith 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, tupleIntoEffect, andResult<impl IntoEffect, E>mapping. docs/versioning.mddefines stable beginner API vs wire/runtime ABI vs advanced escape hatches.examples/v0andexamples/saasexercise the normal path without manual registries or raw ids in app authoring.
Advanced APIs isolated
Status: satisfied.
Evidence:
README.md,docs/versioning.md, anddocs/diagnostics.mdidentify raw effects, ids, render/target construction, manual registries, runtime hooks, SSE internals, and island internals as advanced.- Public examples label
v0as beginner,examples/saasas the tutorial app,kanbanas advanced/north-star, andtechdemoas advanced. - Forbidden-normal-path scans only hit explicit route/static asset serving,
deploy/versioning text, or the
examples/saasmetrics island.
Docs explain the model in one sitting
Status: satisfied.
Evidence:
README.mdexplains render → slot/key → effect → runtime, forms/errors, pages/push, CSS/islands, production boundaries, escape hatches, and deploy/version compatibility.docs/tutorial-saas.mdprovides the product walkthrough.- Recipes cover SQLx, auth/session + CSRF, observability/flags/killswitches, deploy/versioning, and optional PWA/offline.
docs/diagnostics.mdanddocs/versioning.mdcover failure and release policy.
Diagnostics
Status: satisfied for the current v1 goal.
Evidence:
docs/diagnostics.mdnames 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, andcargo 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.mdis the beginner entry.examples/saas/README.mdidentifies the production-shaped tutorial app.examples/kanban/README.mdidentifies Kanban as advanced/north-star.examples/techdemo/README.mdidentifies 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, anddocs/recipes/pwa-offline.mdkeep runtime scope to checked effect application and reject VDOM/hydration/client store/selector-retargeting growth.examples/saas/templates/metrics.jsuses selectors only inside an explicit leaf island, not for normal hemx targeting.cargo test -p hemx-jscovers runtime root/fingerprint behavior.
Versioning explicit
Status: satisfied.
Evidence:
docs/versioning.mddefines semver tiers, wire/runtime ABI policy, advanced escape-hatch policy, upgrade-note template, and release checklist.docs/recipes/deploy-versioning.mddocuments 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:
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.