Skip to content

I0913 — The provider configuration is generated, and the cheap profile is declared

Generate the Fly configuration from the canonical object — application, region, port, resources, autostart and autostop, health check, concurrency — and declare the cheap cost profile as data that a reader and a check can both see.

CANCELLED wave 3 · p0 · implementation profile · parallel safe

Part of fly-deployment — The container image is a projection of the repository model, and its smoke is its evidence.

Objective

Generate the Fly configuration from the canonical object — application, region, port, resources, autostart and autostop, health check, concurrency — and declare the cheap cost profile as data that a reader and a check can both see.

Why

fly.toml at the repository root is excellent for a developer and unacceptable as a second source of truth. Generating it keeps the ergonomics and removes the drift; declaring the cost profile makes an expensive change deliberate and visible in review.

Current state

Fly.io is not a target (owner order, 2026-10-12: Fly.io is disconnected; what ships is the release binaries, GitHub Pages and the GHCR image). fly.toml is no longer generated and is not in the tree; the deployment object carries no provider block and deployment/v1 refuses one. Nothing this issue asks for exists or is wanted any more; closing it is the owner's act. Before 2026-10-12 fly.toml was generated from .ai/repo/deployments/majordomus.yaml by majordomus generate deployment (measured on master 6042f4286, 2026-09-10). Measured on 722228ef3c, 2026-10-12.

Desired state

fly.toml is generated, marked as generated with its source and regeneration command, validated by the provider's own validator, and every value in it traces to the canonical object.

Scope

  • fly.toml
  • apps/majordomus-cli/src/deploy/fly.rs

Out of scope

  • A second configuration file for a high-availability profile
  • Any volume, extra service or extra address that the deployment does not require
  • Any secret value

Dependencies

What waits on this

Acceptance criteria

  • Every value in the generated configuration traces to the canonical object, and changing the object changes the configuration on regeneration
  • The generated file carries a header naming its source and its regeneration command without invalidating the format
  • The region is chosen deliberately for the intended audience and persisted in the canonical object rather than hardcoded in the projection
  • The cheap profile — one machine, shared CPU, the declared memory, minimum running zero, autostart on, autostop enabled, one region, no volume — is declared as data and asserted by a check
  • A service health check points at the canonical route with a startup grace period taken from the measured cold start
  • Concurrency limits follow the measured behaviour of the server rather than an arbitrary number
  • The provider's own configuration validator accepts the generated file

Validation

  • majordomus generate --check
  • fly config validate

Evidence required

  • generated_flytoml
  • region_from_spec
  • cheap_profile
  • fly_config_validate

Evidence

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

Risk

The high-availability profile invites a second configuration file. It must be a derived override of the same base or documented prose, never a parallel file to maintain.

Completion report

Cancelled 2026-10-14 on master e28daccd9b: its whole outcome is a generated fly.toml validated by `fly config validate`, and fly.toml has left the tree. The owner disconnected Fly.io on 2026-10-12; this repository deploys release binaries, the GHCR image and GitHub Pages (commit 9af3fa65a4 removed fly.toml).

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

Searches the titles and descriptions of every page this site publishes.