Skip to content

74. Repos command consolidation

Date: 2026-07-31

Status

Accepted

Supersedes the subcommand design in ADR 0057.

Context

ADR 0057 defined seven fullsend repos subcommands: init, install, status, add, remove, diff, sync, and upgrade. In practice operators rarely ran individual subcommands in isolation — a typical day-2 session involved running diff then sync then upgrade in sequence, and adding a repo required add followed by install. The separation created unnecessary cognitive load and scripting complexity without providing meaningful safety benefits.

Decision

Consolidate the seven subcommands into four, plus a utility command:

CommandPurposeAbsorbs
repos migrateMigrate an org from per-org to per-repo installReplaced repos init (PR #5816)
repos installConverge repos to desired state: manifest add, provision, sync drift, upgrade refsrepos add, repos diff, repos sync, repos upgrade
repos statusRead-only comparison of manifest vs actual state(unchanged)
repos uninstallTear down fullsend from repos and/or remove from manifestrepos remove
repos set-defaultSet or remove a platform-level default in repos.yaml(new)

repos install becomes an idempotent convergence operator with three phases: manifest add (for new repos passed as positional args), parallel provision, and convergence (variable sync + ref upgrade). --dry-run replaces repos diff. --force allows scaffold ref downgrades.

repos uninstall defaults to teardown + manifest removal. The old split behaviors are preserved via --manifest-only (manifest removal without teardown, replacing repos remove) and --uninstall-only (teardown without manifest removal).

Consequences

  • Simpler mental model — four commands cover all lifecycle operations; operators no longer need to sequence multiple subcommands.
  • Atomic convergence — drift detection and remediation happen in a single repos install invocation, reducing partial-apply risk.
  • Migration path — the absorbed commands map directly to flag combinations on the new commands; no functionality is lost.

References

  • ADR 0057 — original repos management design
  • PR #5807 — implementation