Skip to content

I2942 — An installer dry run changes nothing, and the install guide says only what is true

Stop `install.sh --dry-run --init` from initialising the repository when the resolved version is already installed, and correct what the install and distribution documents state by hand that is not true: the clone directory of the build-from-source steps, provenance for releases before attestation existed, the one call to GitHub the installer can make, and the container image the release workflow already publishes.

DONE wave 0 · p1 · implementation profile · parallel safe

Part of adopter-upgrades — An adopting repository survives a Majordomus upgrade, and what the tool vendors into it is adopter-neutral.

Objective

Stop `install.sh --dry-run --init` from initialising the repository when the resolved version is already installed, and correct what the install and distribution documents state by hand that is not true: the clone directory of the build-from-source steps, provenance for releases before attestation existed, the one call to GitHub the installer can make, and the container image the release workflow already publishes.

Why

Truth sweep before v1.0.0-alpha.1 (2026-10-17, f6 and this session, master 707a04c7ce8). (1) share/install/install.sh.in ran `run_init` in its 'already installed' branch before the dry-run branch, so `--dry-run --init` initialised the repository; docs/INSTALL.md says --dry-run changes nothing; case 85 only dry-runs with nothing installed. Reproduced by case 3342 against the unfixed installer: the stand-in launcher received `init`. (2) INSTALL.md.in cloned the repository placeholder and then changed into the binary placeholder, which renders `cd majordomus` after a clone that creates prismatic-majordomus. (3) 'every release archive is attested' while releases v0.3.1-v0.19.1 are listed and the attestation step arrived with v0.20.0 (git show v0.19.1:.github/workflows/release.yml has none). (4) 'never GitHub's API' while the optional provenance check calls it through gh. (5) docs/DISTRIBUTION.md says no container image is implemented, while release.yml's image job pushes one to ghcr.io per release.

Current state

A dry run can initialise a repository; four statements in the install and distribution documents are false.

Desired state

A dry run changes nothing in every branch; the documents state what the installer and the release workflow do.

Scope

  • share/install/install.sh.in
  • share/install/INSTALL.md.in
  • site/static/install.sh
  • docs/INSTALL.md
  • docs/DISTRIBUTION.md
  • test/cases/3342_a_dry_run_initialises_nothing.sh

Dependencies

None. This issue is a root of the graph.

Acceptance criteria

  • With the resolved version installed, install.sh --dry-run --init runs no init and says what it would run; --init alone still runs it
  • The build-from-source steps clone into the directory they then enter
  • The install guide scopes attestation to the releases that have it and names the provenance check as its one GitHub call; DISTRIBUTION.md names the container image

Validation

  • bash test/run.sh 3342_a_dry_run_initialises_nothing 85_installer 86_installer_platform

Evidence required

  • dry_run_case

Evidence

coverstypecommandresultat commit
dry_run_casetestbash test/run.sh 3342_a_dry_run_initialises_nothing 85_installer 86_installer_platform 97_install_gatetests: 4 passed, 0 failed (2026-10-18 ~03:15Z at 5b4f8ba6a3a). Red before: 3342 against master 707a04c's site/static/install.sh fails ('--dry-run --init ran init').5b4f8ba

Timeline

started
2026-10-18T03:16:08Z
verified
2026-10-18T03:16:23Z
completed
2026-10-18T03:16:44Z

Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.

Canonical record: .ai/repo/project/issues/I2942.yaml. Read it back with majordomus plan show I2942.

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