SpecDossier is part of ontoref Gov.
SpecDossier
a governance tool of the same family as signatio · beta

SpecDossier keeps the terms of a Statement of Work, not its execution, and brings them to landing.

The dossier of a Statement of Work: drafts by digest, review rounds, receipts, and a one-way mirror.

A dossier is opened in a project on a governed document — a SOW, an ADR, a biop, or several at once — declaring how it closes. It goes through rounds where every invited party, a guest with no access to the project included, comments on the part put to them, and each point ends incorporated, declined with its reason or routed elsewhere. The person who answers agrees the version by its digest, in their own copy; the agreed bytes land on a branch the project grants. SpecDossier exposes and accredits: it does not sign, implement nor judge the content of a work.

The dossier

A file in the project, found only where the project declares

What is SpecDossier's own is the dossier (ADR-001). A project declares where its dossiers live in .governance/dossiers.ncl, and SpecDossier finds them by that declaration and nowhere else (ADR-002). The format is schemas/dossier.ncl; the governed document is held by reference, and its content never enters the dossier:

Dossier = id + opened + governs + closing + agreed
Closing = signature + invited + expires
Point = by + anchor + read + says + disposition
Agreed = digest + by + on + points + preflight
  • governs is one document of kind 'WorkOrder, 'Adr or 'Biop, or a list of several, related only by part_of and after. Nothing models priority (ADR-008).
  • closing is declared at opening: a signature 'Required or 'None, at least one invited party as who:hat, and an optional expiry that closes it 'Blocked or 'Done.
  • point answers a part (anchor) of the bytes it read, by digest. Its disposition is 'Incorporated, 'Declined with a reason, or 'Routed to somewhere; the contract refuses the last two without them.
  • agreed fixes the version by its sha256, names who answers for it, carries every point of its round and the digest of each pre-flight report it was agreed on. With several documents, the set is agreed by the digest of its manifest: one <digest> <path> line per document, sorted by path.

A dossier's stage — opened, agreed, diverged — is derived from its files on each reading. A governed document that moves after its agreement reads diverged, naming both digests; restored, it reads agreed again.

Principles

It exposes; it does not act and does not judge

Exposes, never acts

It does not sign, implement nor present a work for execution, and it never decides what is valid. Every stage it shows is recomputed from the files, by the function a reader without the service uses.

No judgment on the content

What it establishes is mechanical identity: whether a file is still the agreed one by its digest, whether a signature verifies. A work whose content is to be questioned goes back to an agent working with the destination project.

Nothing is left behind

A point stays owed until the agreement disposes of it. A new revision expires the reading, never the debt, and specdossier agree is refused while any point is owed.

Responsibility is a person's

An agent may draft, supervise a round and return a document. A person opens a dossier, agrees its version and answers for it; the agreement is written in their copy (ADR-003).

No signer's key is held

Signatures are made on the signer's machine, out of band. The authority the project declares verifies and attests them (ADR-004). The only key the service holds is its own, for the commits and log entries it writes.

Identity is the authority's

Who someone is and which hats they hold is answered by signatio, verified against pinned keys. The service keeps no table of people; without an authority it answers only one operator on the loopback.

Evidence shown as produced

The pre-flight is a command the project declares, run in the person's copy at each round and bound to the revision's digest. Its rows are shown as written, unknown included; the only count made is of rows that declare blocks = true (ADR-007, ADR-009).

Dependencies point one way

It reads ontoref's SOW, ADR and biop, signatio's answers and openbyname's protocol as published, and imports none of their code. A copy of the repository builds and verifies alone; each dependency is optional.

One path of actions, many faces

Every action on a dossier is a verb of the CLI, or the core action that verb calls. The web handler calls that same action; no face is a second path.

A dossier, end to end

From opening to a landing in the signed log

  1. Open

    specdossier open writes the dossier where .governance/dossiers.ncl declares, on one governed document or several, with its closing terms and invited parties. The clock is never read: the day is an argument.

  2. Round

    specdossier round puts the document, as it is in the person's copy, before the service: its bytes, their digest, and each pre-flight report run there. The round is transient and the service's; it is not mirrored, and losing it loses no agreement. The service never reads the project for a round.

  3. Remark

    Each invited party, a guest included, logs in with the authority the round names and raises points on the parts of the document, each bound to the digest it read and carrying their own Authorize decision. A guest reads exactly what was put before them.

  4. Hand

    specdossier hand gives a supervising agent the document with every point on the part it answers. What the agent returns is put as a new revision; it agrees nothing.

  5. Agree

    specdossier agree writes into the dossier, in the person's copy, the digest of the version the round shows and every point dispositioned as N=incorporated, N=declined:<reason> or N=routed:<where>. It is refused naming each point still owed.

  6. Attest

    When the closing asks for a signature, specdossier attest takes the signer's detached minisign signature over the agreed document — or over the set's manifest — to the round's authority, and prints the attestation once it verifies against the authority's pinned key.

  7. Land

    specdossier land sends the agreed dossier. The service pushes it, the governed document byte for byte and the attestation to a branch under the prefix the project granted, never its main one, in one commit signed with its own key (ADR-005). Merging the branch is the project's decision.

  8. Verify

    Every landing is an entry in a log only the service writes, each a commit signed with its key. specdossier verify-log checks a clone of it against an allowed_signers file; a tampered entry fails to verify.

After the agreement, a dossier's reading adds the trail of each SOW it governs as ontoref reads it: the registry's row, agreed_in, the signatures and the receipt. No landed stage is derived by SpecDossier, and nothing agreed in another dossier is claimed (ADR-011).

Components

A CLI in the person's copy, a service that orders and gives access

specdossier

The CLI: open, round, remark, hand, agree, attest, land, apply, verify-log; and the readings dossier, view, card, stage, in Markdown, HTML or JSON.

specdossierd

The service: rounds, sessions, intents and link tickets in redb, the signed log of landings and redemptions, and the web face at /r/{id}. What each person owes is derived from the rounds on each request and never stored (ADR-013).

A reader

readonly = true mounts the reads and nothing else: the levels, their SOWs and views. No login, round, remark, intent or landing route exists on it (ADR-014). It may declare an authority to know who reads, and still mounts no act (ADR-018).

The shared face

The owner prepares an act on the web as an intent, single-use and expiring. openbyname carries their consent as a ticket the service issues and redeems once, and specdossier apply runs the act in their copy (ADR-006, ADR-012). Open and attest stay the CLI's.

Templates and languages

Every page is a minijinja template styled by UnoCSS with daisyUI and driven by htmx, embedded in the binary; no page loads anything from a CDN (ADR-015). The faces speak English and Spanish through Fluent catalogs; the work stays in its own language (ADR-016).

desk

The optional desktop app (Tauri), a second window on the installed CLI, never a second path to the service. It has no code yet.

Every change to the workspace is a SOW, signed and landed with its signed receipt. What must keep holding is a standing SOW paid at every commit: a pre-commit gate asks ontoref what live SOWs owe and refuses the commit when one is red (ADR-010).

Boundaries

What SpecDossier is not

Not a signer

Nothing in its normal build can produce a signature. Signing belongs to signatio and to the signer's machine; SpecDossier only verifies.

Not a judge

It does not run a work's checks, refute them, or rule on whether they are adequate. That is ontoref's, which evaluates and proposes a plan with its context and modes.

Not the record

What a dossier agreed lives in the project's files. The service keeps no register of projects, and nothing it stores becomes the record.

Not an executor

It keeps the terms, not the execution. What follows a landing — signing, implementing, merging — is the project's.

Not a scheduler

Priority is decided at a point, by who answers for it. SpecDossier does not model it; it records who resolved, when, and on what.

ontoref Gov

ontoref

One domain in three layers: how a project governed by ontoref governs itself.

What it is

Gov is ontoref's own domain. It holds the arrangement — what a project's boundary declares, its members, which artefacts a consumer inherits — and the exercise — what work is committed and how an act is delivered. Its name is the root of governance, governability and government, and elects none of them.

Why

A decision, a boundary or a delivery that lives only in someone's memory binds no one. In Gov each one is a declaration a project can be held to, and what holds it is a mechanism, not a good intention.

What for

A project reaches Gov by bond, never by imposition, and takes only the parts it needs. In signature governance each project carries one: the contract, the operations of work, the signature, the dossier, the agreement and the signing on an agent's behalf. Beside them, the capabilities any state of governance uses: the host boundary, deployment, the observed session and the opening by name.

How governance is layered

Protocol · base

ontoref's base: bonds and planes, content bound by digest, the unsigned work order, the check form, and mandatum's types. Every project is written in it; a project can bond without adopting any governance.

Management and governability · gov

The gov domain, in ontoref: how the constellation is organised, its management modes, and decisions held by validators.

Signature governance · foedus

The foedus domain, provided by the foedus project and operated by warden: the agreement, each party's annex and the tests that prove it. A project is here because it is a party to the agreement.

Isolation, provisioning, wuwei and openbyname are capabilities any state of governance uses — the agent's boundary, deployment, sessions, and running tasks locally — not governance: governance needs them, they do not need governance.

Each project chooses its governance mode

Governability (coherence) · ontoref alone

Coherence only: ontoref checks that the declarations hold together. No signature.

Auditable governance · signature

The person signs. It detects a departure; it does not prevent it.

Applied governance · signature + isolation

Signature and isolation together. It prevents.

Part of the same system

signature governance

capabilities

Agreed by its digest. Landed through the granted channel.

Every point dispositioned, every version fixed by its digest, every landing signed and verifiable offline by anyone with the service's public key.