Skip to content

I3822 — A deployment that names a provider is observed at its own URL, and is active only while it serves master

served.observe defaults its url to the deployment object's provider.url and its identity to the object's health.liveness route when --deployment names an object with a provider; the publishing workflow observes after every push; the object's status moves from declared to active only on an observation that judged it serving master, and a stale or unreachable observation is a finding. ADR 0219 decision 5.

BLOCKED wave 2 · p1 · implementation profile · runs alone

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

Blocked. This issue cannot start until I3821 is done. The status is derived from that, not declared.

Objective

served.observe defaults its url to the deployment object's provider.url and its identity to the object's health.liveness route when --deployment names an object with a provider; the publishing workflow observes after every push; the object's status moves from declared to active only on an observation that judged it serving master, and a stale or unreachable observation is a finding. ADR 0219 decision 5.

Why

Today served.observe defaults to the Pages site and build.json; nothing ties an observation to the deployment object, so the hosted application's currency cannot be judged and its status is a hand-set word.

Current state

served.observe takes --url or falls back to site/config.toml's base_url with identity build.json; /api/v1/live already answers commit and dirty; the object's status is declared.

Desired state

majordomus served observe --deployment majordomus reads provider.url and health.liveness, judges the answer against master by containment and records it; case 3822 serves a fixture liveness answer and proves served, stale and unreachable verdicts; the status is set to active by a recorded observation, not by hand.

Scope

  • apps/majordomus-cli/src/served.rs
  • apps/majordomus-cli/src/capability/builtin/served.rs
  • .ai/repo/deployments
  • test/cases/3822_a_provider_deployment_is_observed_at_its_url.sh
  • .ai/repo/project/issues/I3822.yaml

Dependencies

What waits on this

Acceptance criteria

  • An object with a provider is observed at its url and liveness route without --url
  • A deployment answering master is served, one answering an older commit is stale, one not answering is unreachable
  • The status is active only while the newest observation is served

Validation

  • env -u MAJORDOMUS_SHARE -u MAJORDOMUS_HTTP_HOST -u MJ_ROOT bash test/run.sh 3822_a_provider_deployment_is_observed_at_its_url

Evidence required

  • observed_at_provider_url

Evidence

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

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

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