noyalib-architecture-contractlisted
Install: claude install-skill sebastienrousseau/agtmls
# noyalib architecture contract
**Version:** v0.0.14 · **Date-stamp:** 2026-07-08 · **Audience:** mid-level engineer or Sonnet-class model about to modify parser / loader / streaming / CST code.
> **Reference material** (verbatim routing snippet, exhaustive
> invariant table, detailed rustdoc excerpts, full known-weak-points
> rationale): see `reference.md` in this directory. Load when you
> need file:line citations beyond the top few, the verbatim
> `stream_eligible` conjunction, the `value_target_bypass`
> two-clause explanation, or the extended weak-points writeup.
This skill exists to keep the three most load-bearing decisions in the
library from silently drifting. If you skip it, the failure mode is
not a compile error — it is an invariant that used to hold quietly and
now doesn't, discovered weeks later in a downstream bug report.
The workspace-wide `#![forbid(unsafe_code)]` policy (ADR-0003) is
non-negotiable: no exceptions, no `unsafe` blocks, no
`#[allow(unsafe_code)]`. This is orthogonal to the loader parity
contract but is the second axis of the panic-free / memory-safe
posture the library ships on.
---
## 1. The three-loader architecture (the single most load-bearing decision)
noyalib ships **three** paths from a `&str` to a Rust value. They
share a scanner and event stream; they diverge on what they build
downstream.
| Path | What it produces | When it runs | Owner file |
|---|---|---|---|
| **StreamingDeserializer** | typed `T` directly (no AST) | `from_