A specified YAML data layer for Rust and language bindings. Built in public, starting with the contract.
The repository contains the specification, build specification, decision records and a working Rust core with an initial CLI. No library package, CLI or binding has been released. See implementation status for current coverage and remaining work.
- Owned values with exact integers, arbitrary mapping keys and retained non-core tags.
- YAML 1.2 Core resolution, duplicate-key errors and explicit merge policy.
- Source locations and structured errors shared by generic and typed Rust APIs.
- Finite resource budgets, including alias and merge expansion accounting.
- One Rust implementation, a thin CLI, then Go and TypeScript bindings.
The initial design uses granit-parser as its internal event source. yamlprims
owns the value, policy and error contract; it does not expose backend types or
promise compatibility with every existing YAML library. It performs no includes,
environment interpolation or network access.
Current tagged specification: spec-v1.3, a draft contract. The working revision 1.4 proposal defines loader depth, anchor-cache accounting, bounded error precedence and entry/copy/key admission. Caller-tree guarantees remain deferred. Earlier specification tags and their file digests remain immutable, including historical draft-status wording. A specification tag may include in-development Rust source; it does not imply a crate release, API freeze or conformance of that source to every requirement. Existing corpus profiles remain bound to their cited specification revision. GitHub release publication is separate from specification tagging. See the roadmap and acceptance gates and open design items. The release procedure covers signed specification tags and package-publication timing.
Feedback on examples, semantic boundaries and acceptance criteria is welcome. Please state the specification section and expected behavior when proposing a change. We will qualify the implementation against pinned, independently reviewed test material, including structcorpus.
make check # checks the specification release; no Rust toolchain required
make test-rust # runs the included core, truth, wire and stack regressionsCode and general documentation: MIT OR
Apache-2.0. The normative specification under docs/spec/ is
CC0-1.0. Upstream material retains its own notices.