Skip to content

I0931 — The application exists, one machine runs it, and the URL answers

Create or resolve the production application, deploy the cheap profile without accidental redundancy, verify the machine inventory and the resources against the declared policy, run the route-derived smoke suite against the public URL, and write the deployment report.

BLOCKED wave 7 · p0 · deep-work profile · runs alone

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 I0913, I0914, I0916, I0917, I0918, I0922, I0930 are done. The status is derived from that, not declared.

Objective

Create or resolve the production application, deploy the cheap profile without accidental redundancy, verify the machine inventory and the resources against the declared policy, run the route-derived smoke suite against the public URL, and write the deployment report.

Why

Everything before this is preparation. A deployment that has never run is a hypothesis, and an exit code from a deploy command is not evidence that anything is being served.

Current state

No application exists at any provider.

Desired state

One application, one machine, the declared resources, the declared region, a public HTTPS URL that answers, a smoke suite that passes against it, and a machine-readable report of what was deployed.

Scope

  • .ai/repo/deployments

Out of scope

  • Creating a new application on any subsequent deploy
  • Mutating or deleting any unrelated application
  • Accepting a deploy command's exit code as verification

Dependencies

What waits on this

Acceptance criteria

  • The authenticated identity and organisation are inspected before anything is created, and an existing intended application is reused rather than duplicated
  • The application name is deterministic, and a global collision produces a stable derived name rather than an interactive dead end
  • The first deployment does not create redundant machines, and the inventory is inspected from machine-readable output rather than assumed
  • The machine count, CPU class, memory, region, autostart, autostop and minimum running are asserted against the declared cheap profile after the deployment
  • The public URL answers over HTTPS, redirects behave as intended, and static assets load
  • The route-derived smoke suite passes against the public URL, including the websocket, MCP and API surfaces that are served
  • A machine-readable deployment report records the application, the URL, the revision, the image, the region, the resources, the measured sizes and the smoke result, following the repository's artifact conventions

Validation

  • majordomus deploy
  • majordomus deploy status
  • majordomus deploy doctor

Evidence required

  • app_created
  • single_machine
  • remote_smoke
  • deployment_report

Evidence

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

Risk

This is the issue that spends money and touches a real account. It runs once the container evidence is in, and the inventory assertion is what keeps a mistake from billing indefinitely.

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