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.

BLOCKED wave 3 · 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 I0902, I0903 are done. The status is derived from that, not declared.

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

No fly.toml exists. No region, resource envelope or cost profile is stated anywhere.

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.

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.