policy-nexus/docs/publication-contract.md
tegwick a8fb62a3bc Start the arc42 contract and publish the first ADR set
Add the owner-facing publication contract, a regenerable ADR review
ledger, and publication entries for this repo's ADR-0001 plus the eight
ready railiance-master ADRs.
2026-08-18 22:16:02 +02:00

4.9 KiB

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/<name>_vN.md
architecture One arc42 document per system docs/architecture/<system>_v0.1.md or canon/architecture/<system>_v0.1.md
constitution Estate constitution canon/constitution/
adr Architecture decision record docs/adr/<file>.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

---
id: <globally-unique-id>
title: "Human title"
status: proposed | accepted | superseded | withdrawn
owner: <owning-repo-or-canon-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:

/<kind>/<document>/<version>/
/<kind>/<document>/<version>/revisions/<revision>/
  • <kind> is one of the four kinds above.
  • <document> 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).
  • <version> is the document series (v0.1, v1). A new major version is a new current address; the old one stays and is marked superseded.
  • <revision> is the front-matter revision (for example draft-8, accepted-1). That URL is write-once.

Examples:

/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 once Markitect registers arc42-v1:

markitect validate docs/architecture/<system>_v0.1.md --schema arc42-v1

Until that schema exists, author against the template. This repo will not publish an architecture document that cannot be validated after the schema lands.

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.

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