carlos / platform Public

pricing: round-three corrections; the review cycle converges

Round three raised no new substantive findings and judged the spec
sound enough to write an implementation plan against, with every
arithmetic table reproducing from the code's own anchors before
rounding.

Three corrections it did catch: the arithmetic section's introductory
sentence still omitted Stripe Tax even though the table included it,
the requests_1k mismatch was described as fixable independently when
build step 6 now owns it, and Business's band-D discounted margin was
computed against the old 50k write inclusion. It is 57.1%, not 52.7%.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Paul Campbell pushed by paul@keymail.dev 4c3000c43857167ff3112ee2c2b2f330696907db parent 1bd3f19
2 files changed, +56 −14
  • docs/superpowers/specs/2026-09-07-carloku-pricing-plans-design.md +21 −14
  • docs/superpowers/specs/CODEX-FINDINGS-carloku-pricing-round3.md +35 −0

CI passed — run details

diff --git a/docs/superpowers/specs/2026-09-07-carloku-pricing-plans-design.md b/docs/superpowers/specs/2026-09-07-carloku-pricing-plans-design.md
index e61600d98..f3bd48a87 100644
--- a/docs/superpowers/specs/2026-09-07-carloku-pricing-plans-design.md
+++ b/docs/superpowers/specs/2026-09-07-carloku-pricing-plans-design.md
@@ -4,12 +4,17 @@
**Status:** Approved direction (Paul, 2026-09-07, in conversation), revised
after an independent review by GPT-6 via codex. Every number is an anchor
that lives in a plans JSON or a scenario, never in code.
-**Second reader:** `CODEX-FINDINGS-carloku-pricing.md`, committed unedited
-against `1dc2494`. Fourteen findings, seven P1, all seven code citations
-independently verified. Accepted findings are marked **(codex N)** below.
-Its verdict on the first draft was that the commercial model was sound and
-**the billing mechanism was not ready to implement** — the revision is mostly
-about that gap.
+**Second reader:** three rounds by GPT-6 via codex, findings committed
+unedited as `CODEX-FINDINGS-carloku-pricing.md` (round 1, against `1dc2494`:
+14 findings, 7 P1), `-round2.md` (`4d545db`: 12 addressed, 2 partial, 4 new)
+and `-round3.md` (`1bd3f19`: **no new substantive findings**). Every code
+citation across all rounds was independently verified and held. Accepted
+findings are marked **(codex N)** below; none were declined.
+
+Round one's verdict on the first draft was that the commercial model was
+sound and **the billing mechanism was not ready to implement**. Round three's
+is that the spec is now sound enough to write an implementation plan against,
+with every arithmetic table reproducing from the code's own anchors.
**Grounding:** the live unit-economics instrument
(`2026-08-11-unit-economics-design.md`, deleted from the tree in the
open-source redaction pass `2adc71f`, recoverable with `git show`), the
@@ -112,8 +117,9 @@ how many people use the apps you deploy.
### The arithmetic, checked
-At the ten-member minimum for the team plans. Stripe is 1.5% card + **0.7%
-Billing** + €0.25 (codex 12 — the earlier draft omitted the Billing fee).
+At the ten-member minimum for the team plans. Stripe on a subscription is
+1.5% card + **0.7% Billing** + **0.5% Tax** + €0.25 (codex 12 — the first
+draft counted card processing alone).
| Plan | Gross/yr | Net after Stripe | Cost/yr | Margin | Inclusions as % of price | Break-even storage |
| --- | --- | --- | --- | --- | --- | --- |
@@ -186,8 +192,9 @@ exclusively from edge HTTP request counts
(`internal/console/economicspass.go:407`) yet priced at an S3 request rate
(`compute.go:102`, default €0.0046 from `scenario.go:145`, and the console
even labels it `$s3requests`). That mismatch is a live bug in the modelling
-instrument, not just a spec problem, and should be fixed or renamed
-independently of this work.
+instrument, not just a spec problem, and **build step 6 owns fixing it** —
+the cost consumers must stop pricing edge HTTP requests at an S3 rate at the
+same time as they learn the two new meters.
## The affordability index
@@ -258,10 +265,10 @@ printed on the pricing page. No form, no email, no proof. Renewals keep it.
**Price only — inclusions are not halved.** This is the giveaway, and halving
what someone receives would defeat its purpose. Margin falls to **53–59%**
depending on plan and band — Personal 57.4% at band A and 53.6% at band D,
-Community 59.0% and 57.1%, Business 57.3% and 52.7% (codex round 2, which
-caught the earlier range being stale after the inclusion changes). Every
-combination stays comfortably profitable, which is what makes the offer
-sustainable rather than performative.
+Community 59.0% and 57.1%, Business 57.3% and 57.1% (codex rounds 2 and 3;
+the band-D Business figure was computed against the old 50k write inclusion
+and is corrected here). Every combination stays comfortably profitable, which
+is what makes the offer sustainable rather than performative.
It stacks with the affordability index because the index is a Price and the
code is the session's one coupon slot.
diff --git a/docs/superpowers/specs/CODEX-FINDINGS-carloku-pricing-round3.md b/docs/superpowers/specs/CODEX-FINDINGS-carloku-pricing-round3.md
new file mode 100644
index 000000000..96adae7a2
--- /dev/null
+++ b/docs/superpowers/specs/CODEX-FINDINGS-carloku-pricing-round3.md
@@ -0,0 +1,35 @@
+## 1. Disposition table
+
+Reviewed **`1bd3f19`**. **Five ADDRESSED, one PARTIAL**, judged at design-spec level.
+
+| Finding | Disposition | Revised-text evidence / remaining correction |
+|---|---|---|
+| Round-one #12: Stripe fees | **ADDRESSED** | Cost inputs include Billing, Tax and standalone Invoicing fees, consistent with [Stripe Ireland pricing](https://stripe.com/ie/pricing). The main table includes Tax correctly. Its introductory sentence at spec:115–116 still omits Tax; update that sentence. |
+| Round-one #13: fifth bound and country margins | **ADDRESSED** | Business now costs **19.9728%** of gross, below 20%. The affordability section explicitly acknowledges fixed-fee margin drift. |
+| Round-two #1: retrospective entitlement changes | **ADDRESSED** | Spec:481–493 requires effective-dated quantity and terms assignments, prorated within-month allowances, and a billing snapshot bound to historical entitlements. This supplies the history absent from today’s [Statement structure](/home/paulca/amadan.net/carlos/platform/.claude/worktrees/pricing-plans-spec/internal/usage/statement.go:19). |
+| Round-two #2: cost-consumer migration | **ADDRESSED** | Build step 6 explicitly migrates both [Go](/home/paulca/amadan.net/carlos/platform/.claude/worktrees/pricing-plans-spec/internal/economics/compute.go:100) and [JavaScript](/home/paulca/amadan.net/carlos/platform/.claude/worktrees/pricing-plans-spec/internal/console/templates/economics.html:662), including removal of fictional S3 costs for edge requests. Delete the earlier “independently of this work” wording to match that assignment. |
+| Round-two #3: durability example | **ADDRESSED** | The workload is now explicitly 1M writes/month across the account. Subtracting its pooled 300k inclusion gives **€193.20/year overage**, against **€55.20/year replication cost**. |
+| Round-two #4: discounted margins | **PARTIAL** | Five of six stated plan/band examples reproduce. **Business band D is 57.1%, not 52.7%**, at [spec:261](/home/paulca/amadan.net/carlos/platform/.claude/worktrees/pricing-plans-spec/docs/superpowers/specs/2026-09-07-carloku-pricing-plans-design.md:261). The overall 53–59% range holds. |
+
+## 2. New findings only
+
+**No new substantive findings. The spec is sound enough to write an implementation plan against.** The remaining arithmetic and wording corrections above do not require another design round.
+
+Every arithmetic table reproduces using the **exact code anchors before rounding**, from [scenario.go:141](/home/paulca/amadan.net/carlos/platform/.claude/worktrees/pricing-plans-spec/internal/economics/scenario.go:141), USD→EUR 0.92, the €0.002 awake-hour anchor, and subscription fees of 2.7% + €0.25. Margin is `(gross − fees − cost) / gross`.
+
+| Plan | Net/year | Inclusion cost/year | Margin | Cost/gross | Residual storage break-even |
+|---|---:|---:|---:|---:|---:|
+| Personal | €23.102 | €4.53504 | 77.3623% | 18.8960% | 75.1213 GB |
+| Community, 10 | €48.400 | €9.32400 | 78.1520% | 18.6480% | 158.8910 GB |
+| Business, 10 | €486.250 | €99.86400 | 77.2772% | 19.9728% | 1,571.6840 GB |
+
+The other tables and worked quantities check as follows:
+
+- **Cost inputs and overage rates:** reproduce after presentation rounding. Exact storage cost is €0.02116; ×5 is €0.1058, displayed as €0.106. All five overage rows reproduce.
+- **Price book:** team minimums reproduce as €50 and €500/year. Monthly pooled inclusions produce the annual costs above.
+- **Durability sensitivity:** annual costs are €83.304 / €99.864 / €138.504 / €248.904 / €635.304. Corresponding margins are 80.5892% / 77.2772% / 69.5492% / 47.4692% / −29.8108%. Every displayed row reproduces; break-even is **729,975 writes/member/month**.
+- **Affordability table:** Personal’s A/B/C/D margins are **77.3623% / 77.0151% / 76.3207% / 75.4278%**. Prices and costs also reproduce.
+- **Discount examples:** A→D margins are Personal **57.4247%→53.5556%**, Community **59.0040%→57.1469%**, Business **57.2544%→57.0687%**. Only the already-listed Business D figure fails.
+- **Free:** full-cap annual cost is **€3.45708**; €2,400/year funds **694.23 accounts**, supporting “roughly 690.”
+
+The collection, closure, ownership, entitlement-history and durable billing-record requirements now identify the necessary mechanisms and assign their work. Their implementation details belong in the plan. No files changed.
\ No newline at end of file