docs(requirements): split build rows
Add explicit northstar ring fields to build requirements and split oversized proc-macro/global-codegen rows without changing behavior. req: build/001 req: build/002 req: build/003 req: build/004 req: build/005 req: build/006 req: build/007 req: build/008
This commit is contained in:
+12
-6
@@ -1032,22 +1032,28 @@ what a valid business email is. [north_star]
|
||||
## build
|
||||
|
||||
### req: build/001
|
||||
001 Build order: `.heml` → hemplate Surface facts (precomputed by `hemplate_build` or extracted in-process by hemplate for `hemx_build`) → `hemx_build` → `hemx.generated.rs` + `hemx.syms` + diagnostics.
|
||||
0 001 Build order: `.heml` → hemplate Surface facts (precomputed by `hemplate_build` or extracted in-process by hemplate for `hemx_build`) → `hemx_build` → `hemx.generated.rs` + `hemx.syms` + diagnostics.
|
||||
|
||||
### req: build/002
|
||||
002 Proc-macros (`#[hemx::handler]`, `#[hemx::surface]`) are side-effect free. They read generated artifacts (`hemx.syms`, `hemx.generated.rs`) but never parse `.heml`, never process generic Surface IR, and never write files. Global codegen lives only in `build.rs` invoked by `hemx_build`. [north_star]
|
||||
0 002 Proc-macros (`#[hemx::handler]`, `#[hemx::surface]`) are side-effect free. They read generated artifacts (`hemx.syms`, `hemx.generated.rs`) but never write files. [north_star]
|
||||
|
||||
### req: build/003
|
||||
003 `hemx-derive` (`#[hemx::handler]`) reads `hemx.syms` at expansion time to validate handle names, slot names, and form signatures. It generates only local glue (static fn-table entry) plus compile errors.
|
||||
0 003 `hemx-derive` (`#[hemx::handler]`) reads `hemx.syms` at expansion time to validate handle names, slot names, and form signatures. It generates only local glue (static fn-table entry) plus compile errors.
|
||||
|
||||
### req: build/004
|
||||
004 `#[hemx::surface]` reads `hemx.generated.rs` from `$OUT_DIR` and expands it into the annotated module. It is a pure include/bridge macro with no semantic analysis of its own.
|
||||
0 004 `#[hemx::surface]` reads `hemx.generated.rs` from `$OUT_DIR` and expands it into the annotated module. It is a pure include/bridge macro with no semantic analysis of its own.
|
||||
|
||||
### req: build/005
|
||||
005 A `build.rs` failure (missing Surface, version mismatch, stale hash) is a hard error before proc-macro expansion.
|
||||
0 005 A `build.rs` failure (missing Surface, version mismatch, stale hash) is a hard error before proc-macro expansion.
|
||||
|
||||
### req: build/006
|
||||
006 Proc-macros are considered local: they have knowledge of the item they annotate, plus pre-generated symbol tables. They do not have global knowledge of all handlers across the crate. Global checks (e.g. every declared handle has an implementation) are either deferred to app-mount tests or enabled by an optional `#[hemx::component]` macro.
|
||||
0 006 Proc-macros are local: they know the item they annotate plus pre-generated symbol tables. They do not have global knowledge of all handlers across the crate.
|
||||
|
||||
### req: build/007
|
||||
0 007 Proc-macros never parse `.heml` or process generic Surface IR. Global codegen lives only in `build.rs` invoked by `hemx_build`. [north_star]
|
||||
|
||||
### req: build/008
|
||||
0 008 Global checks for every declared handle having an implementation are deferred to app-mount tests or enabled by an optional `#[hemx::component]` macro.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user