← ClaudeAtlas

noyalib-architecture-contractlisted

Load-bearing design decisions, invariants, and weak points in noyalib's parser, loader, and CST. Use before editing scanner, loader, streaming, or CST code, or answering 'why are there three loaders' and 'explain value_target_bypass and stream_eligible'. Not incidents (noyalib-failure-archaeology).
sebastienrousseau/agtmls · ★ 1 · AI & Automation · score 80
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_