From ee95222b9b3998bb8cb3b3965e8638c92b137036 Mon Sep 17 00:00:00 2001 From: slhx agent Date: Thu, 25 Jun 2026 15:15:05 +0200 Subject: [PATCH] docs(requirements): add ring to scope row Add an explicit northstar ring field to the scope requirement without changing behavior. req: scope/001 --- AGENTS.md | 2 +- REQUIREMENTS.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index e60186d..dc70922 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -58,7 +58,7 @@ Keep it stable. Prefer pointers to canonical sources over copied structure, file - hemx core stays small: effects, typed ids, registries, and wire schema only; keep features in core only when they fit typed resources plus the closed EffectBatch op set, and treat DOM details as runtime lowering. Public identifiers should flow through typed wrappers over internal `ResourceId`/`ResourceRef`, not special-case opcodes. req: laws/001 req: typed_id/001 req: typed_id/003 req: effect_algebra/001 req: effect_algebra/006 - Routing, auth, sessions, transport, transitions, sync, and storage belong in integration/user crates. - Public examples and beginner APIs should use templates plus Rust, generated component APIs, resources, render/page helpers, and `IntoEffect`, not atoms, raw ids, selectors, wire formats, runtime opcodes, manual registries, `$OUT_DIR` includes, raw render/lower calls, or raw effect constructors; keep advanced layers out of starters. req: canonical_authoring/001 req: canonical_authoring/004 req: canonical_authoring/006 req: canonical_authoring/010 req: canonical_authoring/015 req: dx/001 req: dx/002 req: dx/010 req: component/003 req: component/004 req: public_api/001 req: public_api/002 req: public_api/003 req: public_api/005 req: public_api/006 req: progressive_disclosure/001 req: progressive_disclosure/002 req: progressive_disclosure/003 -- Typed partial swaps should stay expressed as generated target plus rendered partial plus swap kind, not selector-driven rerendering; HTTP, page navigation, push, and island behavior adapt around that loop, and docs should layer new primitives progressively. req: canonical_authoring/002 req: canonical_authoring/014 req: modes/001 req: progressive_disclosure/004 req: page_swap/001 req: page_swap/002 req: page_swap/003 +- Typed partial swaps should stay expressed as generated target plus rendered partial plus swap kind, not selector-driven rerendering; HTTP, page navigation, push, and island behavior adapt around that loop, and docs should layer new primitives progressively. Preserve keyed/optional scope identity for addressable nodes. req: canonical_authoring/002 req: canonical_authoring/014 req: modes/001 req: scope/001 req: progressive_disclosure/004 req: page_swap/001 req: page_swap/002 req: page_swap/003 - `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, not HTMX syntax or selector targeting. Boost containers enhance same-origin descendants only and preserve native external/download/new-tab behavior. req: htmx_equivalents/001 req: htmx_equivalents/003 req: htmx_equivalents/005 req: examples/007 req: page_swap/007 req: page_swap/008 - 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; do not treat it as a mobile framework or store-submission bot. req: ceremony/005 req: ceremony/006 req: ceremony/007 - 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 b013eaa..3d22319 100644 --- a/REQUIREMENTS.md +++ b/REQUIREMENTS.md @@ -411,7 +411,7 @@ in core. `Effect::event` lowers to the canonical `Emit` opcode. ## scope ### req: scope/001 -001 `Scope` is a first-class primitive. Keyed loops (`h-for`) create keyed +0 001 `Scope` is a first-class primitive. Keyed loops (`h-for`) create keyed dynamic scopes and require `h-key` for hemx-addressable nodes. Conditional branches (`h-if`, `h-else-if`, `h-else`, `h-match`, `h-case`) create optional presence scopes. Component instances, modals, tabs, and nested forms are scoped