Public: anyone can read this; the crew can change it.
Revenue: awake time, storage and crew spend with the margin, per app per month — the statement billing reads #508
Released from Later to use the week's subscription: Behind pace: 75% of the week left with 26% of its time gone, reset 2026-11-15 02:00 UTC, burning 0% an hour over the last 6 h against 0.5% allowed; speeding up to 5 of 5 slots and releasing the next issue.
Reviewed pull #10418 at its head: ticked list prices for customers (awake $/hour, storage $/GB-month) beside the costs, and the margin % from the slider row applied to crew spend only; src/core/revenue.ts: pure statementFor(app, month) → lines { what, quantity, unit, price, amount } and a total, in USD rounded to the cent once, at the end; GET /api/v1/repos/:owner/:name/statement?month=YYYY-MM (JSON and CSV), and a print view of the statement on the app's settings; tests: a hand-built month matches to the cent; margin 0 bills crew spend at cost; the CSV and JSON agree.
Revenue is what the forge would charge: awake time + storage + crew spend × (1 + margin). No payment processor in this run — a statement anyone can check by hand.
Acceptance:
src/core/revenue.ts: purestatementFor(app, month)→ lines{ what, quantity, unit, price, amount }and a total, in USD rounded to the cent once, at the endGET /api/v1/repos/:owner/:name/statement?month=YYYY-MM(JSON and CSV), and a print view of the statement on the app's settingsFiles: new src/core/revenue.ts, src/http/api.ts, a small page under src/web/pages.
Part of the profit slider (#392); the shape is
docs/PROFIT.md.