carlos / platform Public

business model: device-tag grammar ruling, pool proration, v2 build status

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Paul Campbell 34b0ad8844a6f552f9f52bbfa62132db5fb4796c parent 5c45c2e
1 file changed, +19 −16
  • docs/superpowers/specs/2026-08-13-carloku-business-model-design.md +19 −16
diff --git a/docs/superpowers/specs/2026-08-13-carloku-business-model-design.md b/docs/superpowers/specs/2026-08-13-carloku-business-model-design.md
index 3c62abb13..6b93effac 100644
--- a/docs/superpowers/specs/2026-08-13-carloku-business-model-design.md
+++ b/docs/superpowers/specs/2026-08-13-carloku-business-model-design.md
@@ -51,6 +51,8 @@ Mechanism (Paul's Eleven-conversations design, made concrete):
- The bootstrap top-up is set by hand monthly during the kickstart phase;
starting anchor **$200/month** (~2× the entire flagship fleet's current
all-in cost, so genuinely generous).
+ The top-up accrues per-day against each day's own month length (Σ TopupUSD/daysInMonth(d)),
+ so month-to-date and closed-month ledgers both read honestly.
- Free-pool accounts draw from the pool at **cost** — the economics
dashboard's per-account cost-to-us figure (allocated box share + direct
meters) IS the draw. The pool report is arithmetic over numbers the
@@ -71,10 +73,12 @@ commons, which is a story we can tell.
- **Box-months from presence**: a fleet box's metrics reporting into the
deployment bucket is its billable presence; box-months prorate by
metered hours (attach mid-month = half a month; honest by default).
-- **Device class is a tag**: `class=server` (default when untagged) or
- `class=device`, set via `carlos fleets tag-box` by the customer.
- Trust-first: a mis-tagged box is visible in its own metrics; auditing
- is a later policy question, not launch machinery.
+- **Device class is a tag**: the tag grammar has no `=`; device class =
+ literal `device` tag present in the box's comma-list (registry
+ `ValidBoxTags` grammar), server class otherwise. Set via `carlos fleets
+ tag-box` by the customer. Trust-first: a mis-tagged box is visible in
+ its own metrics; auditing is a later policy question, not launch
+ machinery.
- **Relay is the billing boundary for traffic**: tunnel-relayed traffic
flows through our edge and is already metered (`usage/edge/*`) —
billable past the allowance. Direct-served traffic is invisible to us,
@@ -177,19 +181,18 @@ shapes — saved as scenarios `ladder-launch` (bootstrap-generous pool
assumptions) and `ladder-lean` (10%-of-revenue pool only) on the flagship
console.
-**Needs a small build (follow-up spec, rides existing machinery):**
+**Built in economics-v2 plan (2026-08-15, this branch):**
-1. `fleet_box_hours` meter (+ device-class split) derived in the
- statements pass from fleet-labelled metrics presence, attributed to
- the owning account.
-2. `box_month_usd` (server/device pair) in the rate sheet; fleet volume
- break as a knob.
+1. `fleet_box_hours_server` and `fleet_box_hours_device` meters (device-class split)
+ derived in the statements pass from fleet-labelled metrics presence,
+ attributed to the owning account.
+2. `box_month_server_usd` and `box_month_device_usd` in the rate sheet;
+ `mem_gb_hour_usd` overage axis; fleet volume break as a knob.
3. Pool ledger line on `/fleet/economics`:
`pool = 10% × revenue + top-up · draw = Σ free-pool accounts' cost ·
headroom`, with the top-up and percentage as scenario knobs.
-4. An account-tier marker (try/pool/hosted/fleet/dedicated) so the
- dashboard can group accounts by rung — a console-store column or
- bucket manifest, decided in that spec.
+4. Account-tier marker (try/pool/hosted/fleet/dedicated) as a console-store
+ column and operator door, so the dashboard can group accounts by rung.
**Explicitly out of scope here:** payments and invoicing (the
unit-economics spec's phase-2 stance holds: statements × promoted
@@ -198,9 +201,9 @@ work, own spec); the carloku.com pricing page (follows this doc).
## Follow-ups recorded
-- Fleet metering + pool ledger spec (items 1–4 above), plus a
- `mem_gb_hour` overage price axis and per-tenant S3-request metering
- (the litestream guard).
+- Durability machinery spec: per-app/instance litestream sync-interval config,
+ the hibernate-flush guarantee as a tested invariant, and per-tenant S3-request
+ metering (the litestream guard and a revenue axis).
- Control-plane polling efficiency: ~$1/box/month of 2 s heartbeat GETs
is the platform's own S3-cost floor — a poll-interval/long-poll lever
worth a look before the fleet is 50 boxes.