AGENTS.md@docs · git:20261101.f97b4dc · 2026-11-01 · sha256 ff822f0f7f2c79a1
AGENTS.md@docs git:20261101.f97b4dcA
Immutable. This exact content never changes and is served at /api/v1/blob/ff822f0f7f2c79a1.
# Docs: file map
> Read when: changing the Markdown documentation in docs/ (the wire format spec, the design, codegen, diagnostics, pitfalls, benchmarks), or deciding where a piece of documentation belongs.
The repository's own Markdown documentation, read on GitHub and by contributors. The website
(https://nino.xgamedev.net, Fumadocs, English and Chinese) lives in the separate repository
`JasonXuDeveloper/Nino.Docs` (local clone `/workspace/nino.docs`, with its own CLAUDE.md); it takes its facts from
this repository and its numbers from the release body. `audit-docs` audits this directory and the site.
```
spec/
README.md what the specification covers, its sources and its versioning (spec version per Nino
release; a change table)
wire-format.md the byte-by-byte specification of what Nino v4 writes and reads, for implementations in
other languages: primitives, strings, raw layouts, collections, [NinoType] objects,
the [NinoTypeLayout] grammar (§8), reader validation (§9), worked examples
v4-design.md the v4 architecture: goals, target frameworks, binary format, Nino.Core, the generator
codegen.md nino-gen for contributors: where it lives, the pipeline (layouts, IR, targets, templates),
why each target writes what it does, adding a type, regenerating, tests; usage is the
site's codegen page
diagnostics.md every NINO diagnostic with its fix (the analyzer's help links point here), and nino-gen's
NINOGEN ones
pitfalls.md problems met building v4 (memory layouts across runtimes, the generator, benchmarking)
and what Nino does about them; read before changing the wire format or raw fast paths
layouts.md the layout of every unmanaged BCL struct on every runtime CI runs (size, field offsets),
against the canonical one, from tests/Nino.RuntimeTests' `# layout` lines
v4-benchmarks.md build-time and runtime numbers against v3 3.3.13 and MemoryPack; the runtime tables are
written by benchmarks/readme.py from a release's report
assets/ logo.png (README); benchmark.svg (the README chart, written by readme.py) and
benchmark.png (rendered from it by report.yml: nuget.org shows no SVG)
```
## Rules for these files
- A change to the bytes Nino writes updates `spec/wire-format.md`, bumps its version and adds a row to the table in
`spec/README.md`, in the commit with the `Wire-Format:` trailer. A check every reader must make goes into §9.
- A new diagnostic gets a `### NINOxxx` section in `diagnostics.md` (its id is the help link's anchor).
- Never type benchmark numbers into `v4-benchmarks.md`'s runtime tables or the chart: `benchmarks/readme.py` writes
them from a full run (benchmarks/AGENTS.md says which runs count).
- The website's pages are written from these files and the source (Nino.Docs' CLAUDE.md): a change users see here
needs the site, and its changelog, brought in line too.