docs(requirements): split misc rows
Add explicit ring fields to misc requirements and split oversized primitive-design rows without changing behavior. req: misc/001 req: misc/002 req: misc/003 req: misc/004 req: misc/005 req: misc/006 req: misc/007 req: misc/008 req: misc/009 req: misc/010
This commit is contained in:
+14
-11
@@ -1060,31 +1060,34 @@ what a valid business email is. [north_star]
|
||||
## misc
|
||||
|
||||
### req: misc/001
|
||||
001 Workspace layout: `hemx-core` (types + postcard schema, no_std), `hemx-derive` (proc-macros), `hemx-build` (surface consumer + code generation), `hemx-axum` (integration), `hemx-js` (runtime single file), `hemx-transition` (optional), `hemx-sync` (optional), `hemx-wasm` (optional). No kitchen-sink crate.
|
||||
0 001 Workspace layout separates `hemx-core`, `hemx-derive`, `hemx-build`, `hemx-axum`, `hemx-js`, and optional transition/sync/wasm crates; no kitchen-sink crate.
|
||||
|
||||
### req: misc/002
|
||||
002 All crates compile on stable Rust. MSRV 1.80. `hemx-core` has zero proc-macro dependencies.
|
||||
0 002 All crates compile on stable Rust. MSRV 1.80. `hemx-core` has zero proc-macro dependencies.
|
||||
|
||||
### req: misc/003
|
||||
003 Three execution modes supported: server-first (request/response), client-local WASM (requestAnimationFrame, no round-trip), and hybrid sync (local + remote via `hemx-sync`). Modes are opt-in per handler, not global.
|
||||
0 003 Three execution modes are supported: server-first, client-local WASM, and hybrid sync. Modes are opt-in per handler, not global.
|
||||
|
||||
### req: misc/004
|
||||
004 The only required user-facing proc-macro in hemx core is `#[hemx::handler]`.
|
||||
Optional ergonomic macros may exist: `#[hemx::surface]`, `#[hemx::component]`,
|
||||
`#[hemx::app]`, and integration-crate macros such as `#[hemx::island]` or
|
||||
`#[hemx_sync::presence]`. No `!` call-syntax macros.
|
||||
0 004 The only required user-facing proc-macro in hemx core is `#[hemx::handler]`; optional ergonomic macros may exist, but no `!` call-syntax macros.
|
||||
|
||||
### req: misc/005
|
||||
005 Source spans are present on every Surface node, attribute, and scope. Error messages cite file, line, and column. This is non-negotiable for DX.
|
||||
0 005 Source spans are present on every Surface node, attribute, and scope. Error messages cite file, line, and column. This is non-negotiable for DX.
|
||||
|
||||
### req: misc/006
|
||||
006 Authoring hemx attributes use the `data-hemx-*` prefix. Runtime lowering may emit compact `data-hid`, `data-sid`, `data-key`, atom ids, and control ids. No unprefixed custom attributes.
|
||||
0 006 Authoring hemx attributes use the `data-hemx-*` prefix. Runtime lowering may emit compact ids. No unprefixed custom attributes.
|
||||
|
||||
### req: misc/007
|
||||
007 Id allocation is deterministic from canonical symbol paths. Ids are stable across builds unless the symbol path changes. Deploy mismatch between server and client is caught by a build-schema version check, not silent failure.
|
||||
0 007 Id allocation is deterministic from canonical symbol paths. Ids are stable across builds unless the symbol path changes. Deploy mismatch is caught by a build-schema version check.
|
||||
|
||||
### req: misc/008
|
||||
008 Core design rule: add one primitive only if it deletes five special cases. `ScopeKey` deletes: loop keying, component scoping, modal instances, nested forms, portal boundaries. `ResourceId` deletes: special opcodes per kind, separate registries, separate wire formats, separate test APIs. `Effect::event` deletes: plugin API, custom JS bridges, chart adapters, map SDK wrappers.
|
||||
0 008 Core design rule: add one primitive only if it deletes five special cases. `ScopeKey` deletes loop keying, component scoping, modal instances, nested forms, and portal boundaries.
|
||||
|
||||
### req: misc/009
|
||||
0 009 `ResourceId` deletes special opcodes per kind, separate registries, separate wire formats, and separate test APIs.
|
||||
|
||||
### req: misc/010
|
||||
0 010 `Effect::event` deletes plugin APIs, custom JS bridges, chart adapters, and map SDK wrappers.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user