Accepted adr-002 · 2026-09-29

A Project Declares Where Its Dossiers Live: SpecDossier Finds Them by That Declaration, in the Project's Own Governance, and Nowhere Else

Context

adr-001 left undecided where in a project its dossiers live and how SpecDossier learns their address, with no dossier format to decide it against. On 2026-09-28 the principal leaned toward the project itself, as part of its governance — perhaps a folder of dossiers — with the project declaring the routes SpecDossier discovers or keeps ("an approach, perhaps not the best", P6).

On 2026-09-29 the first walk put it before a real case. The principal decided the route is declared by the project. The walk that settled dossier-walk none → opened (code/.governance/sow-open-a-dossier.ncl, receipt signed with the level's key) implements it: a project declares `{ path }` in `.governance/dossiers.ncl`, typed by code/schemas/dossier.ncl `Declaration`; `specdossier open` finds the nearest project above the working directory holding that declaration and writes the dossier there; `specdossier dossier` derives opened only for a file in that directory.

What existed before: code/schemas/service.ncl declares governance levels by absolute path on the deployer's side ("declared, never discovered"), and specdossier-core finds a SOW's level by walking up to `.governance/`.

Decision

A PROJECT DECLARES WHERE ITS DOSSIERS LIVE. The declaration is the project's own file, `.governance/dossiers.ncl`, holding one path relative to the project's root that cannot leave it. The directory it names is the project's choice — inside `.governance/` or anywhere else in its tree.

SPECDOSSIER FINDS DOSSIERS ONLY BY THAT DECLARATION. It does not fix a directory, does not search the tree for dossier-shaped files, and does not treat a file outside the declared directory as a dossier: such a file reads as not opened, naming the directory the project declared.

THE ANCHOR IS THE PROJECT'S GOVERNANCE DIRECTORY, NOT ONTOREF. `.governance/` is where the declaration is looked for; opening reads nothing else of it — no authority, no ontoref format. A project needs a `.governance/` directory, not ontoref, not signatio.

WHAT THIS DOES NOT DECIDE: how a deployed service learns which projects to read (today service.ncl names levels by absolute path, on the deployer's side, and no dossier path); whether it keeps their addresses; how a guest with no access to the project reaches the part put to them. The first walk that goes through the service settles them.

AMENDED 2026-10-08 BY adr-017: the declaration may name presets of closing terms the face offers when a dossier is opened.

AMENDED 2026-10-08 BY adr-020 AND adr-021: the first of the questions this decision left open is settled. A deployed service learns which projects and levels to read from the generated declaration its service.ncl imports — each project's `.specdossier/governances.ncl`, collected by a script (adr-021) — and a project's dossiers from the directory the level's `.governance/dossiers.ncl` declares, read and never written (adr-020).

Constraints

Alternatives considered