Artifacts
The files codegraph writes that are not the interchange model. Each is a derived model: a second model built from the first, self-describing, deterministic, and never mistakable for a model.jsonl — the kind field says what it is.
| Artifact | Written by | kind / artifact |
Shape |
|---|---|---|---|
city.json |
city, replay, history --city |
codegraph.city/1 |
one JSON document |
navigator.json |
navigator |
codegraph.navigator/1 |
one JSON document |
history.jsonl |
scm |
"artifact": "history" |
JSONL, section-ordered |
domain-facts.json |
domain-facts |
codegraph.domainFacts/1 |
one JSON document |
<model>.insights.jsonl |
explain |
codegraph.insights/1 |
JSONL, header/records/trailer |
Two more files are not artifacts in this sense: model.jsonl is the interchange contract, and model.db is a derived, disposable cache.
What every artifact carries
- Its own kind. A consumer can refuse a file that is not what it expected.
- Its view. A city, a navigator model or a set of dossiers computed under
--internal-onlyor--declared-onlystates that view in the artifact, because a coupling number without its view is not a fact. TheViewDescriptoris{name, filters}. - Its corpus. A display name and the model roots the artifact was built from, verbatim.
- Its diagnostics. Whatever the transform dropped, could not place, or could not measure — counted, and named where naming is affordable.
Determinism
Two runs over one unchanged model produce byte-identical artifacts. Arrays are sorted (never Sets, which do not survive JSON.stringify), dimensions are rounded to a fixed number of decimals, and no artifact body carries a timestamp. The one exception is stated where it applies: the insights.jsonl trailer carries generatedAt, and nothing else in that file does.
Last updated on