Skip to content
Cockpit0.29.0
A snapshot: read at commit 707a04c7ce8 on 2026-10-18T00:06:01Z by majordomus 0.29.0. Nothing on this page is read again. See it live

docs/DELIVERY.md

Delivery

What it is

URI
majordomus://document/docs/DELIVERY.md
Kind
document
Identity
docs/DELIVERY.md
Path
docs/DELIVERY.md
Provenance
declared
Media type
text/markdown
As a capability
document.docs/DELIVERY.md

Front matter

{}

Content

# Delivery

Whether a product feature **exists** is computed, never recorded. A feature exists only when
every one of six dimensions passes:

```text
EXISTS = ON_MASTER ∧ DEPLOYED ∧ PUBLICLY_VERIFIED ∧ REQUIRED_TESTS_CURRENT ∧ TEST_EVIDENCE_PUBLISHED ∧ UI_LINKED
```

Anything short of that is **not delivered**. The decision is
[ADR 71](../.ai/repo/adrs/0071-a-feature-exists-only-when-delivery-is-computed-and-every-dimension-passes.md);
the code is `apps/majordomus-cli/src/delivery/`.

## Reading it

```bash
majordomus delivery report               # every feature, one row per feature
majordomus delivery report --check       # exit 10 unless every feature exists
majordomus delivery show evidence        # one feature: each dimension, its reason, its remedy
majordomus delivery report --format json # the document GET /api/v1/delivery returns
```

The same answers are `GET /api/v1/delivery`, `GET /api/v1/delivery/feature?id=<id>` and the
MCP tools `majordomus_delivery` and `majordomus_delivery_feature`. One declaration,
`capability/builtin/delivery.rs`, projects all of them.

## Verdicts

Every dimension is `pass`, `fail` or `unknown`, with the sentence that decided it and a
remediation. **Unknown is never pass.** A site that could not be reached is not deployed; a
clone without `origin/master` is not on master.

## States

A feature is `delivered` or `not_delivered`. Only the second carries a **development stage**,
and the stage is a different type from delivery:

| stage | means |
|-------|-------|
| `unknown` | git could not say where its implementation is |
| `not_implemented` | it names no implementation, or nothing committed one |
| `implemented_on_branch` | its latest implementation revision is not on the trunk |
| `on_master` | its implementation is on the trunk |
| `tested` | on the trunk, every required test current |
| `deployed` | tested, and contained in what the public site serves |

The stage is a ladder: a rung is reached only when every rung below it passes, so a feature
whose tests are unknown is `on_master` even when the site already serves it. `blocking` lists
the dimensions that do not pass.

## The dimensions

### `on_master`

The paths a feature is implemented by are derived from what its file names, never written
down: the source file of each capability module, `lib/<command>.sh` of each shell command,
and the `implementation` of each claim in `docs/CLAIMS.yaml`. The latest commit touching them
at `HEAD` must be an ancestor of `origin/<trunk>`, or the paths must be byte-identical on
both. A change only on the current branch fails with `implemented_on_branch`; a feature
naming nothing implementable fails with the remediation to name it; a clone without the
trunk is unknown.

### `deployed`

The public site serves the identity document `.ai/repo/ci/pages.yaml` names in
`deploy.identity` (`build.json`), at the `base_url` of `site/config.toml`. Deployed means the
commit in that document contains the feature's trunk revision. It is read once per report.
An unreachable site, or a served commit this clone does not have, is unknown.

### `publicly_verified`

Deployed, and the publication verified from outside by the script that owns it:

1. the identity says its tree was clean (`dirty: false`);
2. `scripts/pages verify --url URL --commit SHA --timeout 0` confirms the site serves it;
3. `scripts/pages built --commit <origin/gh-pages>` reports GitHub's own build as built.

Exit 10 of either script is a fail, exit 12 is unknown.

### `required_tests_current`, `test_evidence_published`, `ui_linked`

Phase 1 computes these as `unknown`, reason *evidence model lands with PR #577*. They exist
in the type so that phase 2 fills them — and so that, until it does, **no feature exists**.

## Hermetic runs

`MAJORDOMUS_DELIVERY_SITE_URL` replaces the site's address. A `file://` directory holding a
`build.json` is a site that both the delivery module and `scripts/pages verify` read through
the same `curl`: `test/cases/373_delivery_is_computed.sh` and
`test/cases/374_delivery_unknown_is_not_delivered.sh` never touch the network.

## Not yet

The public site does not render delivery. `PUBLIC_FEATURE_FIELDS` in `src/product.rs` is the
allow-list of what a public page carries, and the status slice that adds delivery to it is a
later change.