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:
+5
-2
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user