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
I0901
The deployment description is a kind of the layer, not a provider file
Where it stands
devtask.issue- Readiness
- complete completion is recorded and every required evidence token is present
- Status
- DONE
- Can start
- not now
- Milestone
- Milestone status
- ACTIVE
- Wave
0- Waiting on
- none
- Holds back
- Behind it in all
31- Evidence
4of4
Moves
plan.transitionWhat it is
- Objective
- Register `deployment` as a kind of the AI layer — allowed keys, schema, directory contract — and describe this repository's own deployment as one object under .ai/repo/deployments/, so that every later projection reads one file and no provider file is ever authoritative.
- Why
- A Dockerfile and a fly.toml written by hand would restate the port, the routes, the resources and the build inputs that the repository already knows. The layer already has a mechanism for canonical facts: a kind, its allowed keys, its schema and its directory contract. Deployment is a kind, and everything downstream is a projection.
- Now
- The kind exists on the trunk: share/kinds.yaml declares deployment against the schema majordomus.deployment/v1, share/allow/deployment.txt closes its keys and is generated from that schema, and .ai/repo/deployments/majordomus.yaml describes this repository's own deployment beside the directory's README. The work reached master with feature/deployment-core and nothing was ever recorded against this issue, so the milestone reads PLANNED 0/32 while its first artifacts are on the trunk. Measured on master 6042f4286, 2026-09-10; not marked complete here because this issue's own validation (bash test/run.sh, bin/majordomus doctor) has not been rerun against that tree.
- Wanted
- A deployment object is indexed, readable through the same object surface as every other kind, closed by an allow file, described by a schema, and living in a directory that carries its own context document.
- Done when
- unknown: the record declares no `completion`
- Risk
- A schema written for one deployment becomes either a Kubernetes-grade abstraction nobody needs or a Fly file with a different extension. It has to be generic where a second provider would plausibly reuse it and concrete everywhere else.
Acceptance
- The object states the generic deployment facts — application identity, package and binary, listen port, health and readiness routes, resources, machine count, region, autostart and autostop, build inputs, budgets — and keeps provider-specific facts in a named provider block rather than mixed through the generic ones
- Keys are closed by share/allow/deployment.txt and an unknown key is refused
- The directory carries a context README that says what is authoritative, what is generated and how to regenerate it, per ADR 0011
- The object is listed and read through the existing object surface with no code that special-cases it
- No secret value or credential name appears in the object
- Validation
bash test/run.shbin/majordomus doctor- Evidence required
kind_registeredkeys_closeddirectory_contractobject_indexed- Evidence present
kind_registeredobject_indexedkeys_closeddirectory_contract
Scope
- Touches
.ai/repo/deploymentsshare/kinds.yamlshare/allow/deployment.txtshare/schemas- Not
Any provider artifact; this issue writes no Dockerfile and no fly.tomlAny Rust; the typed model is I0902Any secret value, credential name or token- Depends on
- none
- Priority
- p0
- Profile
- deep-work
- Parallel safe
- true
- Owner
- unknown: the record declares no `owner`
The work so far
- Branches
- none
- Merged
- none
- Commits
0- Trunk
- master
- Sessions
- none
- Created
- 2026-09-06
- Updated
- 2026-10-04T10:00:11Z
- Started
- 2026-10-04T09:55:21Z
- Verified
- 2026-10-04T09:59:52Z
- Completed
- 2026-10-04T10:00:11Z
Synchronisation
- Adapter
scripts/github-sync- Repository
- unknown: the derived plan's header carries no repository
- External issue
- unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it
- State there
- unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it
Findings
Nothing is wrong with these records.