Maintainer Handbook

CNA snapshot 009d40f5  ·  Development › Maintainer Handbook  ·  source links pinned to 009d40f5

✓

Evidence basis: source-verified at the pinned commit. Claims on this page were checked by reading the CNA source at commit 009d40f5; unless a sentence says otherwise, nothing here was built or executed. This hub organises the task pages; each recipe states its own evidence basis.

The Maintainer Handbook is organised around jobs, not chapters. Each recipe starts from something you need to do to CNA — fix a renderer bug, change a public XNA behaviour, add a regression test — and gives the owner, the first files to read, how to reproduce narrowly, the trap most likely to produce a locally passing but architecturally wrong change, and the evidence the change needs. Detail lives in the Architecture and Internals pages; recipes link there instead of repeating it.

Recipes

I need to…Start withMain internals
Fix a renderer bugWhich identity, which family, which host — then a second backend to separate shared logic from one translation layer.Selection, Draw path, the family page
Change public XNA behaviourThe XNA-shaped header, the owning module, the oracle and the C ABI consequence.Runtime, GraphicsDevice
Modify a platform backendThe IPlatform contract, the sibling backends, and the conformance suite.Platforms
Add a regression testWhich object group, which fixture, which CTest role, and how narrow the failing case can be.Test architecture
Modify ContentManagerThe load ladder, cache key, reader registry and unload semantics.Content runtime
Modify the Content PipelineImporter, processor, writer and the golden round-trip; the pipeline must not need a device.Content pipeline
Update the C APIHandle ownership, the error barrier, the ABI version and the binding pins.C API internals
Debug shutdown and lifetimeThe destruction order, borrowed pointers and callback barriers.Shutdown, Ownership map
Investigate a sample failureSeparate a CNA defect from a sample, content, configuration or host problem.Debugging cookbook
Change build configurationRoot options, the three selectors, presets and the configure-time refusals.CMake architecture
Make a releaseVersion, ABI and changelog discipline, and what a release does and does not promise.Releases & versioning
Update libcna.com after CNA changesAdvance the pin, recompute the canonical facts, re-audit the changed paths, regenerate the indexes and validate.Maintenance & pin policy

Anatomy of a recipe

  1. Find the owner of the behaviour: module, physical renderer family or platform backend, and whether the file is generated.
  2. Read first — the few files and symbols that establish the contract, in reading order.
  3. Reproduce narrowly — the smallest configuration (platform, audio, renderer axes) and the smallest failing test.
  4. Make the smallest change that preserves the invariant you identified.
  5. Prove it — the focused test, then a second independent backend or host, then the broader suite, and an honest note of what could not be run.
  6. Check the blast radius — other backends, the C ABI, bindings, build selection, generated files.
  7. Review checklist — what a human reviewer must be able to reconstruct from the diff alone.

Working references

The same subsystem is explained at four altitudes. These are the neighbouring pages at each one.

Architecture
Architecture maps
Internals
Internals
Maintainer workflow
Human Takeover · Working on CNA
Tests and validation
Testing