Decisions
27 decisions described. A decision is a choice made for the project, with its context, its options and what it affects.
| Decision | Date | First line | Links |
|---|---|---|---|
| Bounded neighbourhood | 2026-09-12 | Co-occurrence is accumulated per paragraph and never materialised as a full matrix. Only the fifty best neighbours of each node are kept, ranked by count then by identifier. | 50 |
| Locale per source | 2026-09-12 | Each source declares its locale as a BCP 47 tag, defaulting to the project locale. A language is described by data, never by code: a pack holding its name, its apostrophes, its collation options, its plural suffix rules and its stopwords, which the locale selects together with the type prefixes of the profile for that language; word segmentation and collation come from the platform's Unicode implementation. The engine ships en and fr; a regional variant such as fr-CA uses the pack of its language until a plugin registers a more specific one, other languages are packs shipped by plugins, and a tag with no pack is a build error. The adding a language pack process is the path. | 22 |
| Links are authoritative | 2026-09-12 | A markdown link to another note is the strongest relation the tool knows: confidence 1.00, above anything inferred, and a frontmatter reference comes next at 0.90. What an author wrote is never overturned by what the tool recognised: the relation of a mapped section or of a typed attribute stands, inference only fills what nobody declared, and the page tells a written link from a recognised word by the way it is drawn. A link to a missing file is an error, a link to a document attaches it, a link from a note to itself yields nothing, and several links to one target are one link with several provenances. | 20 |
| Paginated mentions | 2026-09-12 | The first twenty mentions of an entity are in the served HTML; the rest loads from a JSON fragment specific to that entity. Never a global index. | 16 |
| Declarative profile | 2026-09-12 | The meta-model is a YAML profile validated by a schema. The engine knows only types, attributes, relations and scores. Adding a type or a relation pair is a profile change, never a code change. | 15 |
| Fonts from a third-party host | 2026-09-12 | The first draft of the theme named its font families by loading them from a public font host, as most static sites do: one stylesheet link, no file to ship. Superseded by self-hosted fonts: a page that fetches a font from another host does not work from the disk, leaks the address of every reader to that host, and contradicts the rule that the site emits no request the project did not choose. | 14 |
| Deterministic identifiers | 2026-09-12 | An entity's identifier is its source name and its relative path without extension or type suffix, slugified; a frontmatter identifier takes precedence. Never a random identifier. The identifier is the page address. | 13 |
| Findings, not failures | 2026-09-12 | A content anomaly becomes a finding, never a crash. The build fails only when the configuration says so. Every check is a pure function in a registry shared by the build and the linter, and a test enforces their parity. | 13 |
| Core, plugins, preset | 2026-09-12 | The core reads markdown and produces JSON and depends on no office format nor system tool. Readers, converters, importers, viewers and heavy projections are plugins declared in the configuration. The unscoped concordance package is the preset that enables all of them. | 12 |
| Keyword page threshold | 2026-09-12 | A keyword page exists from three occurrences in at least two files; below that, the word is searchable but has no page. The threshold is configurable, and the build reports how many pages it generated and how many expressions it discarded. | 10 |
| Static first | 2026-09-12 | The build is a pipeline command that produces a static site. The main content of every page is in the served HTML, the site works over file://, and fragments load on demand from JSON files. An optional service will consume the same model later; nothing in the site depends on it. | 10 |
| Confidence and provenance on every link | 2026-09-12 | Every link carries a confidence between 0 and 1 and at least one provenance. When methods agree, confidences combine and every provenance is kept. The first version stores the score, orders mentions with it, and does not show it. | 9 |
| Standard markdown only | 2026-09-12 | Concordance reads CommonMark, GFM and optional YAML frontmatter, nothing else. No wikilink, no proprietary tag, no directive: every file stays readable without the tool, and structured information goes through frontmatter, headings and lists. | 9 |
| GPL-3.0-or-later | 2026-09-12 | Every package of the tool is published under the GNU General Public License, version 3 or later, and a licence inventory of the dependencies is regenerated and verified before every release; a dependency whose licence is outside the allow-list fails the check, and widening the list is a decision of the maintainers. The wiki a project generates with the tool is the project's own: the licence covers the tool, not what it documents. | 7 |
14 decisions of 14 — pagination by twenty. The Links column counts the related pages, which brings the most central decisions of the journey to the top.