Skip to content

Every platform, artifact name and installation URL is derived from one model, and a projection that disagrees with it is refused

share/distribution.yaml declares the binary, the repository releases come from, the

declared statusdeclared status: guaranteed Declared deterministic and blocking, implemented, and naming the behavioural test that is to prove it. Whether a recorded run supports it is the evidence verdict, shown beside it.

recorded evidencerecorded evidence: not run Declared guaranteed, and not supported by a recorded run: the test is named, and no passing run of the current inputs is recorded. how evidence is recorded

share/distribution.yaml is the model. The installer's platform table, the release build matrix, the documentation's table, the website's dataset and the public release metadata are generated from it, and `majordomus generate --check` exits 10 naming any that has fallen behind.

What it means

share/distribution.yaml declares the binary, the repository releases come from, the installer's canonical URL and defaults, the archive naming function, and every target with its operating system, architecture, C library, Rust target triple, status and the runner a release builds it on. A target it does not declare does not exist — not for the release build, not for the installer, not for the documentation, not for the website.

Everything else is a projection: the build matrix in docs/generated/distribution-matrix.json, the platform table inside the published install.sh, the platform table in docs/INSTALL.md, the dataset the website renders, and the public metadata of every recorded release. None of them states a platform of its own, and none of them is written by hand.

How it works

majordomus generate --target distribution writes all of them from the model and the release records under .ai/repo/releases/. --check compares each with what is committed and exits 10 naming any that differs, which is reached by just derive-check, by the CI gate the site job runs, and by the release pipeline before a single artifact is built.

The naming function exists once, as Target::artifact_name, and every caller reaches it through majordomus distribution artifact — including the packaging script, which asks for the name rather than composing one.

How to see it

majordomus distribution                     # the install command, the defaults, the tally
majordomus distribution targets             # every declared platform and its status
majordomus distribution validate            # every invariant, exit 10 with each violation
majordomus generate distribution --check    # every projection, exit 10 if any is stale

What it does not cover

That a declared platform works is proved by building it, not by declaring it: the release builds every supported target and verifies each archive on the runner it was built on. The model is what makes the set of platforms one fact rather than five.

Why it exists

A supported platform has to be true in the build matrix, in the installer's table, in the documentation, on the website and in what the tool says about itself. Written down five times it is wrong within a release, and the person who discovers it is the person who cannot install the tool. Adding a platform here is one edit and a regeneration; the behavioural case proves that by adding one to a copy of the model and requiring it to appear everywhere.

Detail rendered from docs/claims/distribution-canonical-model.md.

From the statement to the proof

  1. 1 · the public statement

    Every platform, artifact name and installation URL is derived from one model, and a projection that disagrees with it is refused

    Made on Install, Projection.

  2. 2 · the canonical claim

    distribution-canonical-modeldeclared status: guaranteed in docs/CLAIMS.yaml

    Defined in read it on this site · docs/DISTRIBUTION.md

  3. 3 · the implementation

    apps/majordomus-cli/src/distribution/mod.rs

  4. 4 · the test and the scenarios

    Test: test/cases/84_distribution_model.sh

    Executed in Install the tool in one command, on a machine with no toolchain.

  5. 5 · the recorded runs

    recorded evidence: not run how evidence is recorded

Verify it yourself

The test runs in a disposable temporary repository and asserts the behaviour, not a string in the source.

from a clone of the repository
bash test/run.sh 84_distribution_model

Where this claim is used

responsibilities it covers

Related claims same implementation

Searches the titles and descriptions of every page this site publishes.