Skip to content

I0915 — Deployment joins the diagnostics that already exist

Add the deployment checks to the health and doctor architecture the repository already has, so that the answer to whether a deployment can succeed comes from the same diagnostic surface as every other verdict.

BLOCKED wave 5 · p0 · implementation profile · parallel safe

Part of fly-deployment — A deployment is a projection of the repository model, and a reachable URL is its evidence.

Blocked. This issue cannot start until I0914 is done. The status is derived from that, not declared.

Objective

Add the deployment checks to the health and doctor architecture the repository already has, so that the answer to whether a deployment can succeed comes from the same diagnostic surface as every other verdict.

Why

A second doctor framework is the defect this repository names explicitly. The existing health module already delegates each check to the engine that decides it; deployment checks belong there for the same reason.

Current state

system.health aggregates index diagnostics, benchmark coverage and projection staleness. No check knows anything about a deployment.

Desired state

The deployment checks are readable as machine-readable output and as human output, they mutate nothing, and each one delegates to the engine that already decides it.

Scope

  • apps/majordomus-cli/src/deploy/doctor.rs

Out of scope

  • A new diagnostics framework
  • Any check that mutates the provider, the repository or the working tree

Dependencies

What waits on this

Acceptance criteria

  • The checks cover the canonical object's validity, projection freshness, toolchain and tool availability, credential validity, application resolution, configuration validity, container build and non-root execution, port and health and readiness responses, absence of secret material and of local paths, size and memory budgets, machine count and resource sizing against the declared profile, and the deployed revision against the expected one
  • Every check states what it observed, what it expected and the command that repairs it
  • The output is available in both machine-readable and human-readable form, following the existing conventions
  • Every check is read-only and safe to run against production
  • No check duplicates a verdict another engine already produces

Validation

  • majordomus deploy doctor
  • cargo test --workspace --all-features

Evidence required

  • doctor_checks
  • machine_readable
  • read_only

Evidence

None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.

Risk

Checks that need the provider's network will make the local doctor slow and flaky. Local checks and remote checks have to be separable so that the fast ones stay usable in a hook.

Timeline

started
verified
completed

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/I0915.yaml. Read it back with majordomus plan show I0915.