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

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/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:

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.