# Publication contract for source owners How a governing document gets a permanent address on `https://policy.coulomb.social`. This note is the owner-facing contract from POLICY-NEXUS-WP-0002-T01. It is not itself a published policy document. `policy-nexus` publishes. It does not author your document and it does not write back. ## What can be published | Kind | What it is | Typical source path | | --- | --- | --- | | `standards` | Governing standard | `canon/standards/_vN.md` | | `architecture` | One arc42 document per system | `docs/architecture/_v0.1.md` or `canon/architecture/_v0.1.md` | | `constitution` | Estate constitution | `canon/constitution/` | | `adr` | Architecture decision record | `docs/adr/.md` | Workplans, evidence, runbooks, review ledgers, and general docs are out. An ADR is published only after an explicit `publication.json` entry. Architecture documents follow the same rule. Discovery (`source-inventory.config.json`) is not publication. ## Front-matter the builder requires ```yaml --- id: title: "Human title" status: proposed | accepted | superseded | withdrawn owner: revision: "accepted-1" last_reviewed: "YYYY-MM-DD" review_interval: 6m --- ``` | Field | Rule | | --- | --- | | `id` | Must equal the `publication.json` `id`. Globally unique. Repo-prefix ADRs (`RMASTER-ADR-0001`, `policy-nexus-adr-0001`). Bare `ADR-001` will collide. | | `title` | Shown on the page and the site index. | | `status` | Honesty with the body. If the prose says relocated, the status is `superseded`. | | `owner` | Who answers for the content. | | `revision` or `version` | Becomes the immutable revision slug. | | `last_reviewed` or `updated` | ISO date. Currency starts here. | | `review_interval` | `Nd`, `Nm`, or `Ny`. Default `6m` if you do not declare one; the publication entry may also set it. | A document missing any of those fields fails the build. Do not ask this repo to invent them. ## Addresses From ADR-0001: ```text //// ////revisions// ``` - `` is one of the four kinds above. - `` is a kebab-case slug, unique on the site. If two systems would share a short name, prefix with the system slug (`railiance-repository-prefix`, not `repository-prefix`). - `` is the document series (`v0.1`, `v1`). A new major version is a new current address; the old one stays and is marked superseded. - `` is the front-matter `revision` (for example `draft-8`, `accepted-1`). That URL is write-once. Examples: ```text /standards/tenancy-posture/v0.1/ /architecture/policy-nexus/v0.1/ /adr/addressing-and-permanence/v1/ /adr/railiance-repository-prefix/v1/ ``` No URL is derived from a checkout path, branch, or build number. ## Architecture documents (arc42) One markdown file per system, following `markitect-main/examples/templates/TEMPLATE-ARC42.md`. - Chapter 9 **lists** that system's ADRs (id, status, pointer). It does not paste them. - First-wave complete means chapters **1, 3, 4, 5.1, 9 and 12** are real. Every other chapter is real or explicitly `N/A` with a reason. - A stub that can be published early has real chapters **1, 3 and 9** plus this front-matter. Validate: ```sh markitect validate docs/architecture/_v0.1.md \ --schema /path/to/markitect-main/markitect/schemas/arc42-schema-v1.0.md ``` Catalog id: `arc42-v1`. ## Infospace index The collection index lives at `the-custodian/canon/architecture/infospace/`. It **references** the owning-repo documents. It does not copy them. InfoTechCanon owns the information-space model, not this estate's building-block view. ```sh markitect infospace check --config \ the-custodian/canon/architecture/infospace/infospace.yaml ``` ## How to request publication 1. Put the front-matter on the source document in the owning repo. 2. For an architecture document, meet the stub or first-wave bar above. 3. Open a PR against `policy-nexus` that adds one `publication.json` entry (and a `repositories` path if the repo is new here). 4. `make check` and `make build` must pass. Do not glob a tree into `publication.json`. Inventory records every matching source; publication stays one explicit entry per document. ## First-wave architecture collection | Publication id | System slug | Owning repo | Source path | | --- | --- | --- | --- | | `coulomb-estate-architecture` | `coulomb-estate` | `the-custodian` | `canon/architecture/coulomb-estate_v0.1.md` | | `railiance-architecture` | `railiance` | `railiance-master` | `docs/architecture/railiance_v0.1.md` | | `net-kingdom-architecture` | `net-kingdom` | `net-kingdom` | `docs/architecture/net-kingdom_v0.1.md` | | `state-hub-architecture` | `state-hub` | `state-hub` | `docs/architecture/state-hub_v0.1.md` | | `policy-nexus-architecture` | `policy-nexus` | `policy-nexus` | `docs/architecture/policy-nexus_v0.1.md` |