ContriveAtlas
neostory-schema-set/23snapshot fbc2880cde7d
Open Observatory

Operations · Hosted environments

One control plane provisions, names, renews and reclaims every tenant environment

The hosted-environments platform as it runs: a browser surface, one control plane and one private provisioner in a pinned Fly organization, two shared storage parents, and the per-tenant environments, shared data tiers, real hostnames and credentials they produce. Everything here is observed on the live deployment between 2026-09-13 and 2026-10-05; the dated narrative and every finding are in docs/delegation/deploy-and-renewal-results-2026-09-18.md.

Operations · Engineering · Business · Partners
DeclaredImplementedObservedPlanned
neostory-schema-set/23snapshot fbc2880cde7d

Operations · Hosted environments

One control plane provisions, names, renews and reclaims every tenant environment

The hosted-environments platform as it runs: a browser surface, one control plane and one private provisioner in a pinned Fly organization, two shared storage parents, and the per-tenant environments, shared data tiers, real hostnames and credentials they produce. Everything here is observed on the live deployment between 2026-09-13 and 2026-10-05; the dated narrative and every finding are in docs/delegation/deploy-and-renewal-results-2026-09-18.md.

Operations · Engineering · Business · Partners14 nodes · 16 directed relationships

What this view establishes

The architectural commitments

  1. The hosted platform is one live control plane and one private provisioner in a pinned Fly organization, operated from a browser: every tenant environment is planned, created, duplicated, restored, retired, abandoned and reclaimed through routes that validate their own contracts in both directions.
  2. Authority is short-lived and the deployment renews its own: a root credential on the control volume fathers every 168-hour lease and parent token by attenuation, an hourly tick rotates each due tenant in expiry order, and the laptop keeps one quarterly mint and an operator's resume of the two fence states a deployment will not resume for itself.
  3. A shared data tier is the only place two environments share data, and it says so: members of one tier share its database, approval list, identity table and token table, while a member owns no storage, carries no backup and can hold no public name.
  4. Reclamation is not recovery. Nothing re-enters a failed dispatch: five verbs fence the journals, revoke routing first, observe every provider reference and tombstone only when all are absent -- and a durable retire keeps its data for the owner's seven days before the sweep takes it.

Layered platform stack

01
02

Operating surface

consoleobserved

Deployment console

One screen: environments grouped by project and domain, an authority fold, an admit-project form, a needs-attention banner, shared data tiers per project, and a detail aside whose buttons plan, create, duplicate, restore into a new environment, retire, abandon and expire a backup. It accepts no browser bearer and derives no URL; every link comes from the validated projection.

proxyobserved

The Explorer's proxy

The hosted web role is this repository's Explorer image. It serves /deployments and proxies an exact allow-list of control-plane routes as the signed-in session, validating each against the contract version that route answers. Validating the wrong version is a 503 the moment control answers a newer one (finding 69).

02
06

The deployment itself

controlobserved

The control plane

One Machine in the managed Fly organization, on a durable volume, serving about twenty-five routes in eight families: environments, operations, records-v2, tenants, releases, admissions, authority and tiers. It holds the role store, the provider journal, the parent token map, the root credential and the zone token. Recovery is not routed.

contractsdeclared

Validated wire contracts

Request bodies and emitted projections are checked both ways. deployment-control-v1 is frozen; the hosted projection grows one additive version at a time (v9 carries tiers), and operator, authority v2, reclamation, duplicate and tenant-admin each declare their own refusal words so a refusal a provider produced never reaches a browser as a sentence.

provisionerobserved

The private provisioner

A second Machine with no public listener, UI or MCP route, reached over a mutually authenticated private channel. It holds the short-lived organization lease, re-derives every specification it is handed, and mints each child credential by attenuation. An image that cannot decode a specification shape says so: provisionerSpecUnrecognized, 409.

sweepsobserved

Four sweeps in the service

Daemon threads inside the process that holds the journal, each with an interval from the composition: reclamation (hourly), hostname confirmation (every minute), the certificate pass (every six hours) and renewal (hourly). A receipt is written only when a tick did work or went wrong, and nothing raised escapes a tick.

renewalobserved

The deployment renews itself

Hosted authority is short-lived by design: a 168-hour window, due at half of it. A long-lived root credential on the control volume fathers every lease and parent token by client-side attenuation; control writes its own files in place and restarts only the provisioner. The laptop keeps the quarterly mint and an operator's resume.

reclamationobserved

Reclamation and retention

Five verbs let an allocation go without ever retrying it: reclaim, reclaimFailedDelete, reclaimUnjournalledDelete, reclaimUnjournalledCreate and expireRetained. Each fences the journals, revokes routing first, observes every reference and tombstones only on all-absent. A durable retire keeps its database, bucket and backup prefix for seven days.

03
06

What a tenant gets

parentsobserved

Two shared parents

One PostgreSQL Machine and one MinIO Machine per deployment, pinned to exact manifests that are mirrored into the deployment's own registry, because a parent whose image exists only upstream is a parent somebody else can delete. No parent is ever deleted; a parent is observed by shape and accepted on its pin or an operator-named successor.

childobserved

A child environment

An immutable server-owned specification binds environment, authority, tenant, stage, parent ownership, release and image digests and six exact resources, seven where a deployment carries an identity provider. Its gateway and web Machines are its own; its database, role, bucket, user and policy are named from its uuid in derivations the tests hold against each other.

tierobserved

A shared data tier

The one deliberate exception to one-environment-one-database: a named, durable database and bucket under a project that admitted members attach to, with its own journal rows and four resources. A member brings its own login and object key and owns no storage; members share the approval list, the identity table and the token table. A tier retires only with no member left. Built but not yet deployed (applications charter part 2c): a tier made on a deployment holding the vault and a worker adapter also carries a fifth resource, its worker Machine (ns-t-<hex>-wk, no services, its token a vault-held Fly secret whose digest members carry), allocated on the first member that can serve it, pointed at the newest, stopped with none, destroyed first on retire; the four-kind tuple stays valid for every earlier tier.

namesobserved

Real hostnames and certificates

A durable environment can answer on two bare hosts under one zone: DNS-only CNAMEs to its Fly names, an _acme-challenge CNAME written to the target the certificate object states, and Fly certificates issued and removed by the control plane over the provider's GraphQL API. A confirmed name's certificates are observed on a slower pass and alerted.

identityobserved

Sign-in, per child

One hosted account authority is carried into every child: the control plane owns one Auth0 application's callback list and adds exactly one URL on create and removes exactly one on retire, as a journalled resource kind of its own. Identity is shared; data is per deployment.

bindingimplemented

The binding a child boots on

A release carries a runtime closure and an application manifest; a child receives a closed binding whose keys the gateway's own closure must admit (access_policy, hostname, restore, tier, bootstrap_admin). Three separately shipped key sets must agree, so a new key costs a gateway image and a release -- findings 62 and 73 are each one of those. From bootstrap_admin on, a release declares the optional keys its image admits (childSpecExtensions) and control emits one only to a release that declares it.

Connections and evidence

Open the 16-relationship source key

Numbers set an explanatory reading order. They do not measure runtime timing.

  1. 01

    Deployment consoleThe Explorer's proxy

    same-origin, no browser bearer

    observed
  2. 02

    The Explorer's proxyThe control plane

    allow-listed routes as the session

    observed
  3. 03

    The control planeValidated wire contracts

    every body and projection validated

    declared
  4. 04

    The control planeThe private provisioner

    registers a child privately

    observed
  5. 05

    The control planeFour sweeps in the service

    ticks from its own composition

    observed
  6. 06

    Four sweeps in the serviceThe deployment renews itself

    hourly: is any tenant due

    observed
  7. 07

    Four sweeps in the serviceReclamation and retention

    due deletes, expired copies, retained tiers

    observed
  8. 08

    The deployment renews itselfThe private provisioner

    attenuated lease, one Machine update

    observed
  9. 09

    The control planeA child environment

    journalled steps, exact resources

    observed
  10. 10

    A child environmentTwo shared parents

    its own database, bucket and policy

    observed
  11. 11

    A shared data tierTwo shared parents

    the tier owns the database and bucket

    observed
  12. 12

    A child environmentA shared data tier

    a member binds instead of provisioning

    observed
  13. 13

    The control planeReal hostnames and certificates

    a CNAME, then a certificate

    observed
  14. 14

    The control planeSign-in, per child

    one callback added, one removed

    observed
  15. 15

    A child environmentThe binding a child boots on

    a composition read once at boot

    implemented
  16. 16

    Reclamation and retentionA child environment

    observed absent, then tombstoned

    observed

Connections and evidence

16 directed, source-backed relationships

Numbers set an explanatory reading order. They do not measure runtime timing.

  1. 01

    Deployment consoleThe Explorer's proxy

    same-origin, no browser bearer

    observed
  2. 02

    The Explorer's proxyThe control plane

    allow-listed routes as the session

    observed
  3. 03

    The control planeValidated wire contracts

    every body and projection validated

    declared
  4. 04

    The control planeThe private provisioner

    registers a child privately

    observed
  5. 05

    The control planeFour sweeps in the service

    ticks from its own composition

    observed
  6. 06

    Four sweeps in the serviceThe deployment renews itself

    hourly: is any tenant due

    observed
  7. 07

    Four sweeps in the serviceReclamation and retention

    due deletes, expired copies, retained tiers

    observed
  8. 08

    The deployment renews itselfThe private provisioner

    attenuated lease, one Machine update

    observed
  9. 09

    The control planeA child environment

    journalled steps, exact resources

    observed
  10. 10

    A child environmentTwo shared parents

    its own database, bucket and policy

    observed
  11. 11

    A shared data tierTwo shared parents

    the tier owns the database and bucket

    observed
  12. 12

    A child environmentA shared data tier

    a member binds instead of provisioning

    observed
  13. 13

    The control planeReal hostnames and certificates

    a CNAME, then a certificate

    observed
  14. 14

    The control planeSign-in, per child

    one callback added, one removed

    observed
  15. 15

    A child environmentThe binding a child boots on

    a composition read once at boot

    implemented
  16. 16

    Reclamation and retentionA child environment

    observed absent, then tombstoned

    observed

What this view establishes

The architectural commitments

  1. The hosted platform is one live control plane and one private provisioner in a pinned Fly organization, operated from a browser: every tenant environment is planned, created, duplicated, restored, retired, abandoned and reclaimed through routes that validate their own contracts in both directions.
  2. Authority is short-lived and the deployment renews its own: a root credential on the control volume fathers every 168-hour lease and parent token by attenuation, an hourly tick rotates each due tenant in expiry order, and the laptop keeps one quarterly mint and an operator's resume of the two fence states a deployment will not resume for itself.
  3. A shared data tier is the only place two environments share data, and it says so: members of one tier share its database, approval list, identity table and token table, while a member owns no storage, carries no backup and can hold no public name.
  4. Reclamation is not recovery. Nothing re-enters a failed dispatch: five verbs fence the journals, revoke routing first, observe every provider reference and tombstone only when all are absent -- and a durable retire keeps its data for the owner's seven days before the sweep takes it.
48 repository sources behind this view
  • Explorer/README.md
  • Explorer/app/lib/deploymentControl.server.ts
  • docs/delegation/durable-reclamation-charter-2026-09-29.md
  • docs/delegation/renewal-on-the-deployment-charter-2026-10-02.md
  • docs/delegation/shared-runtime-tiers-charter-2026-10-05.md
  • platform/contracts/deployment-control-authority-v2.json
  • platform/contracts/deployment-control-hosted-read-v9.json
  • platform/contracts/deployment-control-operator-v1.json
  • platform/contracts/deployment-control-reclamation-v1.json
  • platform/contracts/deployment-control-tenant-admin-v1.json
  • platform/contracts/deployment-control-v1.json
  • platform/control-plane/README.md
  • platform/control-plane/control_plane.py
  • platform/control-plane/hosted-child-spec-limitations.md
  • platform/control-plane/hosted_alerts.py
  • platform/control-plane/hosted_allocation_reaper.py
  • platform/control-plane/hosted_auth0_management.py
  • platform/control-plane/hosted_authority_window.py
  • platform/control-plane/hosted_certificates.py
  • platform/control-plane/hosted_child_provider.py
  • platform/control-plane/hosted_child_spec.py
  • platform/control-plane/hosted_cloudflare_dns.py
  • platform/control-plane/hosted_control_rotation.py
  • platform/control-plane/hosted_hostname_effects.py
  • platform/control-plane/hosted_identity_callbacks.py
  • platform/control-plane/hosted_identity_provider.py
  • platform/control-plane/hosted_lifecycle_service.py
  • platform/control-plane/hosted_operator_service.py
  • platform/control-plane/hosted_parent_observer.py
  • platform/control-plane/hosted_provisioner_credential.py
  • platform/control-plane/hosted_provisioner_rpc.py
  • platform/control-plane/hosted_provisioner_service.py
  • platform/control-plane/hosted_restore_effects.py
  • platform/control-plane/hosted_root_attenuation.py
  • platform/control-plane/hosted_root_credential.py
  • platform/control-plane/hosted_storage_effects.py
  • platform/control-plane/hosted_tier_effects.py
  • platform/control-plane/hosted_tier_journal.py
  • platform/control-plane/hosted_tier_provider.py
  • platform/control-plane/hosted_tier_spec.py
  • platform/deployment-console/README.md
  • platform/deployment-console/src/app.js
  • platform/deployment-console/src/client.js
  • platform/hosted-pilot/lifecycle/README.md
  • platform/hosted-pilot/lifecycle/disposable_parents.py
  • platform/hosted-pilot/runtime-closures/application-manifest.json
  • platform/hosted-pilot/runtime-closures/build_context.py
  • platform/hosted-pilot/runtime-closures/hosted_child_binding.py