From ee5b0d0f154c396e1cf8dbf9af3c1fe3b44b49c9 Mon Sep 17 00:00:00 2001 From: slhx agent Date: Thu, 25 Jun 2026 15:09:51 +0200 Subject: [PATCH] docs(requirements): add rings to effect algebra Add explicit northstar ring fields to effect_algebra requirements without changing behavior. req: effect_algebra/001 req: effect_algebra/002 req: effect_algebra/003 req: effect_algebra/004 req: effect_algebra/005 req: effect_algebra/006 --- AGENTS.md | 2 +- REQUIREMENTS.md | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 71afddf..389d1e2 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -55,7 +55,7 @@ Keep it stable. Prefer pointers to canonical sources over copied structure, file - Example behavior tests should prefer `hemx_test` generated-resource assertions over raw slot constants or raw effect/payload matching. req: test/008 - Run the workout product exemplar with `cargo run -p hemx-xtask -- workout dev` and open `http://127.0.0.1:3028`; set `HEMX_WORKOUT_ADDR=127.0.0.1:3030` if the default port is busy. Its durable visual direction and recovery expectations live in `examples/workout/DESIGN.md`. req: examples/008 - 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; keep features in core only when they fit typed resources plus EffectBatch ops. req: laws/001 +- 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. req: laws/001 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 diff --git a/REQUIREMENTS.md b/REQUIREMENTS.md index 8a47ec9..13e31fb 100644 --- a/REQUIREMENTS.md +++ b/REQUIREMENTS.md @@ -372,22 +372,22 @@ a `data-*` handle param is statically known or runtime-extracted. [north_star] ## effect_algebra ### req: effect_algebra/001 -001 The canonical op set is minimal and closed: `Put`, `Insert`, `Remove`, `Move`, `Focus`, `Navigate`, `Emit`. +0 001 The canonical op set is minimal and closed: `Put`, `Insert`, `Remove`, `Move`, `Focus`, `Navigate`, `Emit`. [north_star] ### req: effect_algebra/002 -002 `Put` replaces the payload of a resource. For a Slot, this means replacing its rendered contents. For an Atom, this means replacing its stored value. +0 002 `Put` replaces the payload of a resource. For a Slot, this means replacing its rendered contents. For an Atom, this means replacing its stored value. [north_star] ### req: effect_algebra/003 -003 `Insert`, `Remove`, and `Move` operate on keyed collection resources. They require a key type checked by generated `KeyedSlot` wrappers. +0 003 `Insert`, `Remove`, and `Move` operate on keyed collection resources. They require a key type checked by generated `KeyedSlot` wrappers. [north_star] ### req: effect_algebra/004 -004 `Navigate` changes browser history or represents a server redirect. Route matching remains outside hemx core. +0 004 `Navigate` changes browser history or represents a server redirect. Route matching remains outside hemx core. [north_star] ### req: effect_algebra/005 -005 `Emit` dispatches a native `CustomEvent` and is the only raw JS interop primitive in core. +0 005 `Emit` dispatches a native `CustomEvent` and is the only raw JS interop primitive in core. [north_star] ### req: effect_algebra/006 -006 DOM-specific operations such as `innerHTML`, `textContent`, class toggles, or keyed node lookup are runtime lowering details, not separate author-facing concepts. +0 006 DOM-specific operations such as `innerHTML`, `textContent`, class toggles, or keyed node lookup are runtime lowering details, not separate author-facing concepts. [north_star] ---