doctor-upgrade (osa/Codex): client-side colibri upgrade + git-behind fixable check #292

Closed
opened 2026-06-28 20:00:38 +02:00 by clawdie · 0 comments
Owner

Host/agent: osa / Codex (Agent B) · Branch from: current main
Design source of truth: docs/wiki/doctor.md (Option A — client-side upgrade)

Client-side self-rebuild + the one fixable: true check.

Blocked on

doctor-engine merge — needs the fixable field in the daemon JSON to know what --fix can act on.

Contract (read the same shape doctor-engine emits)

{"check": "...", "status": "pass|warn|fail", "detail": "...", "fixable": true|false}

Scope

  1. Client-side colibri upgrade subcommand.
  2. Steps: git fetch origin → check HEAD behind origin/maincargo build --workspace --release → stop daemon → swap binary → start daemon.
  3. Restart is #[cfg]: FreeBSD = service colibri_daemon restart, Linux = systemctl restart colibri-daemon. Everything else (fetch/build/swap) is shared.
  4. Client-side git-behind-origin checkgit rev-list --count HEAD..@{u}, integrated into colibri doctor as a client-side supplement (NOT a daemon check). This is the first fixable: true check.
  5. colibri upgrade --check — dry-run; reports whether an upgrade is available without building.
  6. colibri doctor --fix — runs daemon doctor, then for each fixable warn/fail triggers the appropriate fix (→ colibri upgrade).

Files

colibri-client only. Disjoint from doctor-engine; merge order irrelevant except the --fix wiring, which needs doctor-engine's fixable field merged first.

**Host/agent:** osa / Codex (Agent B) · **Branch from:** current `main` **Design source of truth:** [docs/wiki/doctor.md](../src/branch/main/docs/wiki/doctor.md) (Option A — client-side upgrade) Client-side self-rebuild + the one `fixable: true` check. ### Blocked on doctor-engine merge — needs the `fixable` field in the daemon JSON to know what `--fix` can act on. ### Contract (read the same shape doctor-engine emits) ```json {"check": "...", "status": "pass|warn|fail", "detail": "...", "fixable": true|false} ``` ### Scope 1. Client-side `colibri upgrade` subcommand. 2. Steps: `git fetch origin` → check HEAD behind `origin/main` → `cargo build --workspace --release` → stop daemon → swap binary → start daemon. 3. Restart is `#[cfg]`: FreeBSD = `service colibri_daemon restart`, Linux = `systemctl restart colibri-daemon`. Everything else (fetch/build/swap) is shared. 4. **Client-side `git-behind-origin` check** — `git rev-list --count HEAD..@{u}`, integrated into `colibri doctor` as a client-side supplement (NOT a daemon check). This is the first `fixable: true` check. 5. `colibri upgrade --check` — dry-run; reports whether an upgrade is available without building. 6. `colibri doctor --fix` — runs daemon doctor, then for each `fixable` warn/fail triggers the appropriate fix (→ `colibri upgrade`). ### Files `colibri-client` only. Disjoint from doctor-engine; merge order irrelevant except the `--fix` wiring, which needs doctor-engine's `fixable` field merged first.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
clawdie/colibri#292
No description provided.