A snapshot: read at commit 707a04c7ce8 on 2026-10-18T00:06:01Z by majordomus 0.29.0. Nothing on this page is read again. See it live
fly-deployment
The container image is a projection of the repository model, and its smoke is its evidence
32issuesdevtask.milestone
5readydevtask.milestone
14blockeddevtask.milestone
0activedevtask.milestone
4completedevtask.milestone
The milestone
devtask.milestone- Title
- The container image is a projection of the repository model, and its smoke is its evidence
- Outcome
- One canonical deployment object under .ai/repo/deployments/ describes the image; a typed Rust model parses and validates it; the Dockerfile, its ignore file, the GHCR image that docker-image.yml and release.yml build, its smoke derived from the route registry, the doctor checks, the documentation and the cockpit view are projections of that object and of the capability registry, each checked for drift. The published image runs as a non-root user, carries no secret and no developer path, answers live and ready in its smoke, and has measured size, cold-start and memory baselines. Re-scoped 2026-10-14 from a Fly.io deployment, which the owner disconnected on 2026-10-12.
- Status
- ACTIVE
- Rank
0- Depends on
- unknown: the record declares no `depends_on`
- Waiting on
- none
- Holds back
- none
- Record
.ai/repo/project/milestones/fly-deployment.yaml- Its issues
- Every issue of this milestone
Where the work is
- Ready
- Blocked
- Waiting
- —
- Active
- —
- In review
- —
- Completion blocked
- —
- Complete
- Cancelled
What holds the most back
What may run at the same time
Every issue
| Readiness | Status | Issue | Title | Wave | Priority | Waiting on | Holds back |
|---|---|---|---|---|---|---|---|
| complete | DONE | I0901 | The deployment description is a kind of the layer, not a provider file | 0 | p0 | — | 31 |
| complete | DONE | I0902 | The deployment object becomes typed Rust that refuses nonsense | 1 | p0 | — | 29 |
| complete | DONE | I0903 | Deployment reads are declared once and projected everywhere | 2 | p0 | — | 11 |
| complete | DONE | I0904 | The listen address is one fact with two projections | 2 | p0 | — | 20 |
| ready | READY | I0905 | Liveness and readiness are registered capabilities, not router hacks | 2 | p0 | — | 19 |
| ready | READY | I0906 | Termination is graceful and proved against the real container | 3 | p1 | — | 7 |
| ready | READY | I0907 | The running process says what it is, from an allowlist | 2 | p1 | — | 0 |
| ready | READY | I0908 | A hosted process has no repository, and says so instead of failing | 2 | p0 | — | 0 |
| blocked | BLOCKED | I0909 | The production image is a generated projection of the build specification | 3 | p0 | 18 | |
| blocked | BLOCKED | I0910 | The release profile is chosen by measurement, not by folklore | 4 | p1 | 3 | |
| blocked | BLOCKED | I0911 | A source change does not rebuild the world, and the context stays small | 4 | p1 | 3 | |
| blocked | BLOCKED | I0912 | The image serves the site the canonical pipeline produced | 4 | p0 | 7 | |
| cancelled | CANCELLED | I0913 | The provider configuration is generated, and the cheap profile is declared | 3 | p0 | — | 9 |
| cancelled | CANCELLED | I0914 | One deployment core, one command, and a dry run that mutates nothing | 4 | p0 | 7 | |
| cancelled | CANCELLED | I0915 | Deployment joins the diagnostics that already exist | 5 | p0 | 2 | |
| blocked | BLOCKED | I0916 | The smoke suite is derived from the route registry, never written twice | 5 | p0 | 3 | |
| cancelled | CANCELLED | I0917 | A bad deployment can be undone deterministically | 5 | p1 | 3 | |
| cancelled | CANCELLED | I0918 | The bootstrap credential is used once and belongs to nothing | 2 | p0 | — | 3 |
| blocked | BLOCKED | I0919 | Nothing secret and nothing local leaves in the image | 4 | p0 | 2 | |
| blocked | BLOCKED | I0920 | The image's dependencies are known and its advisories are policy | 4 | p2 | 1 | |
| blocked | BLOCKED | I0921 | Size is measured first and budgeted second | 5 | p1 | 2 | |
| cancelled | CANCELLED | I0922 | The memory hypothesis is tested, not asserted | 6 | p0 | 3 | |
| blocked | BLOCKED | I0923 | Cold start and endpoint cost are benchmark targets like everything else | 6 | p1 | 1 | |
| cancelled | CANCELLED | I0924 | The decision is recorded where architecture decisions are recorded | 1 | p1 | — | 2 |
| blocked | BLOCKED | I0925 | Every deployment rule is a check that runs | 6 | p0 | 1 | |
| blocked | BLOCKED | I0926 | The deployment documentation is generated and reachable | 4 | p1 | 1 | |
| ready | READY | I0927 | The cockpit shows the deployment from the same data | 3 | p2 | — | 1 |
| blocked | BLOCKED | I0928 | A pull request cannot merge a deployment that would not work | 6 | p0 | 1 | |
| cancelled | CANCELLED | I0929 | Production deploys from CI with a token scoped to one application | 8 | p1 | 1 | |
| blocked | BLOCKED | I0930 | The real image runs under the real limits before anything is deployed | 5 | p0 | 6 | |
| cancelled | CANCELLED | I0931 | The application exists, one machine runs it, and the URL answers | 7 | p0 | 2 | |
| blocked | BLOCKED | I0932 | The milestone is accepted on its evidence | 9 | p0 | 0 |
Findings
| Level | Code | Message | Reproduce |
|---|---|---|---|
| WARN | scope_conflict | I0905: shares apps/majordomus-cli/src/capability/builtin/health.rs with I1011; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | I0927: shares apps/majordomus-cli/src/cockpit/pages.rs with I1010; they may not run concurrently | majordomus plan validate |