- public TemplateSet::render (String sink) and
TemplateSet::render_to_write (io::Write sink), synchronous and
deterministic, both surfacing the wave-1 Error enum
- render-name rule enforced behaviorally: the entry resolves names
against the set-level bookkeeping before the substrate is
consulted, so a partial's name or an unknown name is a typed
Error::Render (substrate TemplateNotFound reason), never a
rendered partial
- strict-mode missing variable is a typed error in both sinks,
never silently-empty output; the write sink's streaming
(non-atomic) semantics on mid-render failure documented
- determinism pinned by tests: byte-identical repeated renders,
byte-identical output across registry rebuilds in opposite
registration order, and byte-for-byte agreement between sinks
Verification: cargo test (19 passed), cargo clippy --all-targets
-- -D warnings, cargo fmt --check, cargo doc --no-deps, and
cargo build --target wasm32-unknown-unknown --release all green.