docs(requirements): split typed id primitive row

Add explicit northstar ring fields to typed_id requirements and split the oversized ResourceId/ResourceRef obligation without changing behavior.

req: typed_id/001

req: typed_id/002

req: typed_id/003
This commit is contained in:
slhx agent
2026-06-25 15:12:40 +02:00
parent ee5b0d0f15
commit 829838e639
2 changed files with 6 additions and 3 deletions
+5 -2
View File
@@ -394,15 +394,18 @@ a `data-*` handle param is statically known or runtime-extracted. [north_star]
## typed_id
### req: typed_id/001
001 All public cross-page identifiers (`Slot`, `Atom`, `Handle`, `Form`) share a single internal primitive `ResourceId { kind: ResourceKind, id: u32 }`. A concrete runtime target is a `ResourceRef { resource: ResourceId, scope: Option<ScopeKey> }`. Typed wrappers (`Slot<T>`, `KeyedSlot<K, T>`, `Atom<T>`, `Handle<I>`, `Form<T>`) enforce kind safety at compile time. No special-case opcodes per resource kind; effects address resources uniformly. [north_star]
0 001 Public cross-page identifiers (`Slot`, `Atom`, `Handle`, `Form`) share one internal primitive: `ResourceId { kind: ResourceKind, id: u32 }`. Typed wrappers enforce kind safety at compile time. [north_star]
### req: typed_id/002
002 `ResourceKind` is an internal closed enum (Slot, Atom, Handle, Form).
0 002 `ResourceKind` is an internal closed enum (Slot, Atom, Handle, Form). [north_star]
Navigation is represented by `Navigate` effects, not by route resources.
External crates may not add variants. Extensibility comes via `Effect::event`
or custom `IntoEffect` implementations, never via new `ResourceKind` variants
in core. `Effect::event` lowers to the canonical `Emit` opcode.
### req: typed_id/003
0 003 A concrete runtime target is a `ResourceRef { resource: ResourceId, scope: Option<ScopeKey> }`. Effects address resources uniformly, with no special-case opcodes per resource kind. [north_star]
---
## scope