locu.systems locu.systems/docs/spec/80_SERVICE_MANAGEMENT_PILOT.md
Version: 0.1 Status: Direction record and pilot plan. `spec` rung. Nothing below is implemented. Audience: Engineering, and whoever runs the first pilot Decided: 2026-09-14, by…

webhost.systems — Service management for agent businesses: direction and first pilot

SUPERSEDED BY A RULING, 2026-09-14 — the same day this was written, and the reasoning stands. Travis registered `locu.systems` and ruled that §6a of this document — locus hosting — is the direction, not a later phase. 90_LOCUS_HOSTING.md is the record. Phase one below is not being built: there is no weekly website health report, no customer zero, no billing connector. This document is banded rather than rewritten. Rewriting it would fabricate a design review nobody performed, and the argument in it — that the service package is the commercial object, that cancellation is a lifecycle rather than an invoice event, that a signed record proves issuance and not correctness — is why the ruling had something to rule on. Read §6a first; it became the direction. Read the rest as the case that was made against it.

Version: 0.1 Status: Direction record and pilot plan. `spec` rung. Nothing below is implemented. Audience: Engineering, and whoever runs the first pilot Decided: 2026-09-14, by Travis, in a planning conversation; written here the same day. Not yet entered in the root REVISION_REGISTER.md; that entry is the ruling, this file is the record.

What this supersedes, and what it keeps. The v1 specification set in this folder describes an agent deployment control plane whose unit is the agent. This record changes the unit to the service package a customer buys. It keeps, by reference, the parts of v1 that still apply: the normalized API envelope and idempotency rules (10_API_CONTRACTS.md), the Runtime Provider Interface as the shape of a runtime connector (20_RUNTIME_PROVIDER_INTERFACE.md), the secrets posture (40_SECURITY_SECRETS_COMPLIANCE.md), and the entitlement and limit-enforcement algorithms (50_OBSERVABILITY_BILLING_LIMITS.md). The data-layer half of v1 is superseded already; see the banner on README.md. Nothing in this record depends on the shared Supabase instance.

1) What WebHost.Systems is

Service management for agent businesses. An operator sells a recurring, agent-powered service to a customer, and WebHost.Systems connects the thing the customer bought to everything that has to be true for it to be delivered and paid for, across the hosting, runtime, model and billing systems the operator already uses:

purchased promise → permitted work → provider execution → delivery record → customer charge

Shorthand, for talking to hosting operators: "WHMCS for agents." WHMCS is a trademark of its owner; the phrase describes the shape, not an affiliation.

What it is not: a host. Compute for agents is a commodity sold by many vendors at nearly the same rate; running the agent is the provider's job, and this product does not compete for it. Nothing on this domain executes a customer's workload.

2) The central object: the service package

Every package describes:

FieldMeaning
PromiseWhat the customer receives, how often, in what form
RequirementsWhich providers, tools and credentials the service needs
LifecycleHow it is provisioned, updated, paused, resumed and retired
EconomicsPrice, included allowance, internal budget, overage rule
PermissionsWhich actions run without asking and which need approval
EvidenceWhat counts as delivery and how it is recorded

Two distinctions the object must preserve:

  1. Provider cost is not customer billing. A failed run costs the operator money and is not

billable to the customer. Both facts are kept.

  1. Cancellation is a lifecycle, not an invoice event. Cancelling means: stop new work, finish or

cancel queued work, revoke access, keep exports for the agreed period, then remove resources. An invoice being cancelled does none of that by itself.

3) The reusable product, and its first module

Reusable capabilityFirst implementation
Package definitionWeekly website health report
Service enrollmentA customer's selected public URLs
Scheduling and executionRun the defined checks on a schedule
Allowance and cost trackingAccount for checks, retries and delivery
Delivery recordStore the report and the delivery outcome
CancellationStop future scheduled work; apply the retention policy

Website checks are one package module. The product is the table's left column.

4) The first package: weekly website health report

Read-only, on purpose. Every check runs against public URLs. The package holds no customer credentials, changes nothing on a customer's site, and needs no recovery procedure. Maintenance that changes a website is a later package, and it waits until permissions and recovery are proved.

Checks (deterministic; the report is templated; a model-written explanation is added only where it improves the report enough to justify its cost):

  • reachability and response time, from more than one location

  • certificate validity and expiry

  • DNS records as they currently resolve

  • broken links on the pages the customer named

  • what changed since the previous run

Allowance. A fixed number of URLs and checks per week, stated in the package. A run that would exceed it stops and says so in the report. Overage is a separate line, never silent.

Evidence standard. Promise repeatable checks, not identical results: a site changes over time and behaves differently by location, and re-running a check tomorrow cannot prove what happened yesterday. So each report preserves

  • the observation time,

  • the check version,

  • the relevant response data,

  • the calculation or rule that produced each conclusion.

A customer can inspect how a conclusion was reached and run the same check again to see the current state. A signed record proves who issued it and that it has not changed since; it does not prove the work was correct, and no report may imply that a signature does.

Confidentiality scope. Public URLs do not make the customer relationship public. Customer emails, purchased services, payment references, and the association between a customer and a website are private, and a single operator can serve several customers. Customer records stay private. Only deliberately selected statistics of our own operation are published. A file ledger still needs access control, backups and a retention policy, stated before customer zero.

Runtime. Scheduled checks run on Cloudflare Workers cron triggers — the portfolio's ruled provider, on its free tier — with the RPI as the connector's shape. Nothing else is chosen.

Billing. The first billing connection is the simplest one that reports a purchase: Stripe Checkout with a webhook, or a free open-source billing panel. WHMCS is the second connector, added when an operator who uses it pilots; its module verbs (create, suspend, unsuspend, terminate, change package, renew, usage update) are the lifecycle vocabulary the connector port is designed against, and a WHMCS development license requires a paid WHMCS license first.

5) The pilot, in order

  1. Customer zero. One complete reporting cycle against our own sites. Record execution costs,

retries, false alarms, delivery failures and human intervention time. This establishes that the pipeline works and gives a first cost measurement. It is a baseline, not a pricing study: one cycle cannot show support cost, unusual failures or willingness to pay.

  1. A small paid pilot. The same package offered to a few paying customers at an explicit

introductory price, over the simplest billing connection. Paid renewals are what establish commercial value.

  1. The next integration is whatever the first external operator needs.

The acceptance test the pilot must pass

  1. An existing billing system reports a purchase.

  2. WebHost.Systems provisions or assigns the service.

  3. An external runtime performs the scheduled work.

  4. The system records completion, failures and attributable costs.

  5. The customer receives a useful report.

  6. Cancellation stops future work and follows the retention policy.

6) The public page, and the survivor

The marketing page at / is generated from records/surface.json and is gated. It states the direction, the first package, the acceptance test, what is in the tree at which rung, and what is not built. It claims no rung the portfolio nav has not recorded.

A public page for the first operator — spend, deliveries, revenue, human interventions — is a view generated from the operating records, not a separate product. It is built after customer zero has produced records to view, and it publishes only selected statistics.

6a) Phase two — loci as the metered unit, and the console prototype

Status: a drawing, gated on things that do not exist. Nothing below is scheduled.

Phase one sells a service package and runs its work on whatever runtime the operator already has. Phase two makes the runtime ours: the thing a customer buys is a locus — the ComputeDriven unit that carries state, its granted authority, and continuity across restarts — and the thing they are metered on is admitted transitions, the steps the world actually took. The machine underneath is a carrier: rented, replaceable, and never the customer's identity.

The vocabulary is not invented here. Each word has a published pattern, and the console links them: active-locus, locus-is-not-its-carrier, identity-is-a-seal, progress-over-utilization, carrier-confinement, carrier-multiplexing, progress-aware-placement.

Why it is worth drawing now. Every host in the survey of 2026-09-13 bills utilization or vCPU-hours. Billing admitted transitions instead is a claim about what the customer's money buys, and it is one this portfolio has spent a year building the machinery to make good on. It is also the only reading of this domain under which the portfolio nav's word for it — the runtime layer — is literally true.

`/console/` is that drawing. A working prototype of the operator console and the client portal, served from this repository, marked a prototype in a banner that cannot be dismissed, running against a seeded sample fleet in the visitor's own browser. It connects to nothing. Four things in it are worth keeping whatever ships first, and phase one should adopt them:

Taken from the prototypeWhy
The two meters, side by sideUtilization and progress are different facts and the page must not let them be confused
The interventions logEvery attempt carries the worker, the generation and the evidence it acted on
Three outcomes, one of them lockedAPPLIED / REFUSED / INDETERMINATE, and an indeterminate is written once and never rewritten
The refusal that names the fieldBelow sufficiency, do not start it, and say which check failed
The seal before and after a rehomeThe identity claim, shown rather than asserted

What phase two is gated on

  1. A runtime that admits transitions in production, and counts them. Today that is a

specification: the enforcement kernel is a spec under review with no admitted implementation, and the measured floor is a kernellet, not a hosted service. Until something counts admitted transitions under load, the unit on the invoice does not exist.

  1. A calibrated price. The kernellet's measured cost per transition is a few hundred cycles, so

a million transitions is a fraction of a second of one core. Every figure in the prototype is a placeholder and stays one until a running kernel gives a real number.

  1. Carriers that respect the cloud rulings. Cloudflare for everything with Fly keeping only

Keycloak was ruled 2026-08-15, and Hetzner is already named as hosted capacity. So the carriers the prototype shows are Cloudflare, Hetzner, and the customer's own machine — a T&R box in their own building is a carrier like any other. Any other provider needs the ruling revisited first.

  1. A customer. Locus hosting is bought by someone building on ComputeDriven, and today that is

nobody outside this tree. Phase one's operator is the first candidate.

What it does not change

Phase one does not wait for any of this. The service package stays the commercial object; a locus becomes one more thing a package's provider execution station can name, alongside a Cloudflare cron trigger and whatever the first external operator already runs. The prototype's pricing table has four plans and a favoured tier for a product with no customers; the pilot's rule stands — one package, customer zero, then an introductory price.

7) Non-goals

  • Being a host, or a sandbox, or a runtime.

  • Positioning by asserting what competitors lack. The product wins by making cross-provider service

operations easier; a competitor's feature list is not a claim this project verifies or publishes.

  • A customer-facing agent that changes websites, in the first package.

  • Unlimited customisation inside a subscription.

  • Shipping the phase-two console as anything but a prototype until §6a's four gates are cleared.

8) Open items

#ItemOwner
1Enter this direction in REVISION_REGISTER.md as a rulingTravis
2The portfolio nav records rung: null for this surface; a rung for the plan (spec) is lane N's to recordlane N
3The introductory price for the paid pilotTravis, after customer zero's cost record exists
4Where the first ledger lives (a signed file ledger is sufficient for one operator) and its access, backup and retention policybefore customer zero
5The first operator's name and public identityTravis
6The nav's tagline for this surface still reads "Hosting + Supabase dashboard"lane N
7Whether phase two is this domain's direction or a separate surface, and whether the nav's runtime layer word should follow itTravis
8A calibrated cost per admitted transition, measured on a running kernel, before any figure in /console/ is repeated anywhereafter the kernel admits transitions under load

9) How this record moves the surface

spec names a written specification. This file is one, so the rung the surface may claim is spec — once the nav records it. in_tree needs the package module in code with a test suite. live_local needs customer zero's cycle run on a developer machine with its costs recorded. live_deployed needs the same cycle run on the ruled runtime and a report delivered to a paying customer. Nothing above spec is available until the acceptance test in 5) is run.

Open in the interactive atlas