dist/model.json, the single file that describes the whole model: every later step reads it and none re-reads the sources. It is described by model.schema.json, published with the core package, and holds five blocks plus the two neighbourhoods: build, the only dated block, with the tool version, the timestamp, the fingerprint of the merged profile, one entry per source with its commit, whether links across sources were resolved and the contracts imported; entities, one object per note with its identifier, type, title, locale, application, domain, type origin, attributes and source; links, one object per source, target and relation triple with its combined confidence and every provenance; findings, the same array as the build log; candidates, the recurring expressions, the schemas of the imported contracts and the pairs of twin resources; neighbours, the best co-occurrence neighbours per entity; displayed_neighbourhood, the one-hop neighbours shown on every page. Keys are sorted at every depth, and a model (note: Model) read back refuses anything the schema (31 passages, no note) does not describe.
The file is the interface (21 passages, no note) between the build (note: Build) and everything after it: the rendering, the linter (note: Linter) in global scope (note: Scope), which fetches the published model of the wiki with the validators the server (3 passages, no note) gave, the Cypher export, and the future service. Its schema is part of what a version of the tool commits (29 passages, no note) to.