From 89dbc3f0f4a43b8af40117592363b33adf89c1fb Mon Sep 17 00:00:00 2001 From: slhx agent Date: Thu, 25 Jun 2026 14:05:36 +0200 Subject: [PATCH] docs(requirements): split canonical API scaling rule Split oversized canonical_authoring/006 into generated-shape, normal authoring surfaces, and escape-hatch boundary requirements. req: canonical_authoring/006 req: canonical_authoring/012 req: canonical_authoring/013 --- AGENTS.md | 2 +- REQUIREMENTS.md | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 79f79c2..d518067 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -57,7 +57,7 @@ Keep it stable. Prefer pointers to canonical sources over copied structure, file - Use the same Workout command surface for tests, production build, and mobile release: `cargo run -p hemx-xtask -- workout test`, `cargo run -p hemx-xtask -- workout build`, `HEMX_WORKOUT_ORIGIN=https://workout.example.com cargo run -p hemx-xtask -- workout mobile-release`, and `HEMX_WORKOUT_ORIGIN=https://workout.example.com cargo run -p hemx-xtask -- workout mobile-verify`; Android/iOS SDKs, store submission targets, and signing remain external blockers, not repo-owned secrets. req: examples/006 req: examples/011 - hemx core stays small: effects, typed ids, registries, and wire schema only. - Routing, auth, sessions, transport, transitions, sync, and storage belong in integration/user crates. -- Public examples and beginner APIs should use templates plus Rust, generated resources, and `IntoEffect`, not raw ids, selectors, wire formats, or runtime opcodes. req: canonical_authoring/001 req: canonical_authoring/010 +- Public examples and beginner APIs should use templates plus Rust, generated resources, and `IntoEffect`, not raw ids, selectors, wire formats, or runtime opcodes. req: canonical_authoring/001 req: canonical_authoring/006 req: canonical_authoring/010 - `examples/html_examples` is the copy-paste HTML pattern gallery for htmx-style examples; keep exact htmx URL slugs visible while translating behavior to boring `.heml`, generated resources, and server-owned Rust state. req: htmx_equivalents/001 req: htmx_equivalents/005 req: examples/007 - Use `cargo run -p hemx-xtask -- app new PATH` for the generic page/form/keyed-row/notice starter, and `cargo run -p hemx-xtask -- app new --mobile PATH` for the phone-first starter with host capabilities, recovery truth, and release-kit commands. req: ceremony/005 req: ceremony/006 - The public component-reuse explanation lives in `docs/recipes/reusable-partials.md`; do not grow a client component framework to explain partial composition. diff --git a/REQUIREMENTS.md b/REQUIREMENTS.md index e8d4c84..0546be6 100644 --- a/REQUIREMENTS.md +++ b/REQUIREMENTS.md @@ -74,7 +74,13 @@ client app state framework. 009 Generated helpers must not combine persistence, routing, rendering, target selection, or domain policy into generic commands such as `refresh`, `save_and_update`, `sync_component`, or `rerender`. [north_star] ### req: canonical/006 -006 There is no separate beginner API and expert API. The simple generated shape is canonical and should scale: generated slots, partials, forms, class constants, islands/events, and page helpers are normal. Explicit primitives, raw targets, raw HTML, raw effects, manual registries/form parsing, low-level ids/opcodes, wire formats, and raw routes remain named escape hatches or internals around the same render/target/effect/transport model. [north_star] +006 There is no separate beginner API and expert API; the simple generated shape is canonical. [north_star] + +### req: canonical/012 +012 Generated slots, partials, forms, class constants, islands/events, and page helpers are normal authoring surfaces. [north_star] + +### req: canonical/013 +013 Explicit primitives, raw targets, raw HTML, raw effects, manual registries/form parsing, low-level ids/opcodes, wire formats, and raw routes remain named escape hatches or internals around the same render/target/effect/transport model. [north_star] ### req: canonical/007 007 Opaque islands are explicit leaf adapters: templates declare `data-hemx-island` and optional generated handles/events; server code may emit snapshots/events such as `ui::game.emit(event)`, while island JS owns only high-frequency local behavior. Islands do not introduce a component runtime, client state graph, VDOM, or second UI model. [north_star]