Add coulombcore hosting expense at 13.99 EUR/mo from Jan 2025

One hosting expense record per month alongside domain rows. Update
infrastructure catalog, tests, and dashboard for 20.74 EUR/mo total
infrastructure.
This commit is contained in:
2026-06-22 02:20:28 +02:00
parent 86ce511764
commit fc2324692c
5 changed files with 273 additions and 157 deletions

View File

@@ -23,9 +23,9 @@ computes all totals programmatically (`ledger.py` → `economics.py`).
| Membership | `data/membership.json` | | Membership | `data/membership.json` |
**Current reality:** infrastructure from January 2025 — domains **€6.75/mo** **Current reality:** infrastructure from January 2025 — domains **€6.75/mo**
(`coulomb.social` €3.75 + `coulomb.pro` €3.00, per registrar invoices). Virtual (`coulomb.social` €3.75 + `coulomb.pro` €3.00) and coulombcore hosting
server records pending. Sole member payments from November 2025. Customer **€13.99/mo** (total **€20.74/mo**). Sole member payments from November 2025.
cost-pass-through billing is not active. Customer cost-pass-through billing is not active.
### Commands ### Commands

View File

@@ -9,9 +9,7 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.75", "amount": "3.75",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30",
"annual_total_eur": "45.00"
}, },
{ {
"id": "exp-domain-pro-2025-01", "id": "exp-domain-pro-2025-01",
@@ -21,9 +19,17 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.00", "amount": "3.00",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30", },
"annual_total_eur": "36.00" {
"id": "exp-hosting-coulombcore-2025-01",
"period": "2025-01",
"vendor": "hosting.coulombcore",
"description": "coulombcore virtual server hosting",
"cost_class": "infrastructure",
"amount": "13.99",
"currency": "EUR",
"source": "invoice"
}, },
{ {
"id": "exp-domain-social-2025-02", "id": "exp-domain-social-2025-02",
@@ -33,9 +39,7 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.75", "amount": "3.75",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30",
"annual_total_eur": "45.00"
}, },
{ {
"id": "exp-domain-pro-2025-02", "id": "exp-domain-pro-2025-02",
@@ -45,9 +49,17 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.00", "amount": "3.00",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30", },
"annual_total_eur": "36.00" {
"id": "exp-hosting-coulombcore-2025-02",
"period": "2025-02",
"vendor": "hosting.coulombcore",
"description": "coulombcore virtual server hosting",
"cost_class": "infrastructure",
"amount": "13.99",
"currency": "EUR",
"source": "invoice"
}, },
{ {
"id": "exp-domain-social-2025-03", "id": "exp-domain-social-2025-03",
@@ -57,9 +69,7 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.75", "amount": "3.75",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30",
"annual_total_eur": "45.00"
}, },
{ {
"id": "exp-domain-pro-2025-03", "id": "exp-domain-pro-2025-03",
@@ -69,9 +79,17 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.00", "amount": "3.00",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30", },
"annual_total_eur": "36.00" {
"id": "exp-hosting-coulombcore-2025-03",
"period": "2025-03",
"vendor": "hosting.coulombcore",
"description": "coulombcore virtual server hosting",
"cost_class": "infrastructure",
"amount": "13.99",
"currency": "EUR",
"source": "invoice"
}, },
{ {
"id": "exp-domain-social-2025-04", "id": "exp-domain-social-2025-04",
@@ -81,9 +99,7 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.75", "amount": "3.75",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30",
"annual_total_eur": "45.00"
}, },
{ {
"id": "exp-domain-pro-2025-04", "id": "exp-domain-pro-2025-04",
@@ -93,9 +109,17 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.00", "amount": "3.00",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30", },
"annual_total_eur": "36.00" {
"id": "exp-hosting-coulombcore-2025-04",
"period": "2025-04",
"vendor": "hosting.coulombcore",
"description": "coulombcore virtual server hosting",
"cost_class": "infrastructure",
"amount": "13.99",
"currency": "EUR",
"source": "invoice"
}, },
{ {
"id": "exp-domain-social-2025-05", "id": "exp-domain-social-2025-05",
@@ -105,9 +129,7 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.75", "amount": "3.75",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30",
"annual_total_eur": "45.00"
}, },
{ {
"id": "exp-domain-pro-2025-05", "id": "exp-domain-pro-2025-05",
@@ -117,9 +139,17 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.00", "amount": "3.00",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30", },
"annual_total_eur": "36.00" {
"id": "exp-hosting-coulombcore-2025-05",
"period": "2025-05",
"vendor": "hosting.coulombcore",
"description": "coulombcore virtual server hosting",
"cost_class": "infrastructure",
"amount": "13.99",
"currency": "EUR",
"source": "invoice"
}, },
{ {
"id": "exp-domain-social-2025-06", "id": "exp-domain-social-2025-06",
@@ -129,9 +159,7 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.75", "amount": "3.75",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30",
"annual_total_eur": "45.00"
}, },
{ {
"id": "exp-domain-pro-2025-06", "id": "exp-domain-pro-2025-06",
@@ -141,9 +169,17 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.00", "amount": "3.00",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30", },
"annual_total_eur": "36.00" {
"id": "exp-hosting-coulombcore-2025-06",
"period": "2025-06",
"vendor": "hosting.coulombcore",
"description": "coulombcore virtual server hosting",
"cost_class": "infrastructure",
"amount": "13.99",
"currency": "EUR",
"source": "invoice"
}, },
{ {
"id": "exp-domain-social-2025-07", "id": "exp-domain-social-2025-07",
@@ -153,9 +189,7 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.75", "amount": "3.75",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30",
"annual_total_eur": "45.00"
}, },
{ {
"id": "exp-domain-pro-2025-07", "id": "exp-domain-pro-2025-07",
@@ -165,9 +199,17 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.00", "amount": "3.00",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30", },
"annual_total_eur": "36.00" {
"id": "exp-hosting-coulombcore-2025-07",
"period": "2025-07",
"vendor": "hosting.coulombcore",
"description": "coulombcore virtual server hosting",
"cost_class": "infrastructure",
"amount": "13.99",
"currency": "EUR",
"source": "invoice"
}, },
{ {
"id": "exp-domain-social-2025-08", "id": "exp-domain-social-2025-08",
@@ -177,9 +219,7 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.75", "amount": "3.75",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30",
"annual_total_eur": "45.00"
}, },
{ {
"id": "exp-domain-pro-2025-08", "id": "exp-domain-pro-2025-08",
@@ -189,9 +229,17 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.00", "amount": "3.00",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30", },
"annual_total_eur": "36.00" {
"id": "exp-hosting-coulombcore-2025-08",
"period": "2025-08",
"vendor": "hosting.coulombcore",
"description": "coulombcore virtual server hosting",
"cost_class": "infrastructure",
"amount": "13.99",
"currency": "EUR",
"source": "invoice"
}, },
{ {
"id": "exp-domain-social-2025-09", "id": "exp-domain-social-2025-09",
@@ -201,9 +249,7 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.75", "amount": "3.75",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30",
"annual_total_eur": "45.00"
}, },
{ {
"id": "exp-domain-pro-2025-09", "id": "exp-domain-pro-2025-09",
@@ -213,9 +259,17 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.00", "amount": "3.00",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30", },
"annual_total_eur": "36.00" {
"id": "exp-hosting-coulombcore-2025-09",
"period": "2025-09",
"vendor": "hosting.coulombcore",
"description": "coulombcore virtual server hosting",
"cost_class": "infrastructure",
"amount": "13.99",
"currency": "EUR",
"source": "invoice"
}, },
{ {
"id": "exp-domain-social-2025-10", "id": "exp-domain-social-2025-10",
@@ -225,9 +279,7 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.75", "amount": "3.75",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30",
"annual_total_eur": "45.00"
}, },
{ {
"id": "exp-domain-pro-2025-10", "id": "exp-domain-pro-2025-10",
@@ -237,9 +289,17 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.00", "amount": "3.00",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30", },
"annual_total_eur": "36.00" {
"id": "exp-hosting-coulombcore-2025-10",
"period": "2025-10",
"vendor": "hosting.coulombcore",
"description": "coulombcore virtual server hosting",
"cost_class": "infrastructure",
"amount": "13.99",
"currency": "EUR",
"source": "invoice"
}, },
{ {
"id": "exp-domain-social-2025-11", "id": "exp-domain-social-2025-11",
@@ -249,9 +309,7 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.75", "amount": "3.75",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30",
"annual_total_eur": "45.00"
}, },
{ {
"id": "exp-domain-pro-2025-11", "id": "exp-domain-pro-2025-11",
@@ -261,9 +319,17 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.00", "amount": "3.00",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30", },
"annual_total_eur": "36.00" {
"id": "exp-hosting-coulombcore-2025-11",
"period": "2025-11",
"vendor": "hosting.coulombcore",
"description": "coulombcore virtual server hosting",
"cost_class": "infrastructure",
"amount": "13.99",
"currency": "EUR",
"source": "invoice"
}, },
{ {
"id": "exp-domain-social-2025-12", "id": "exp-domain-social-2025-12",
@@ -273,9 +339,7 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.75", "amount": "3.75",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30",
"annual_total_eur": "45.00"
}, },
{ {
"id": "exp-domain-pro-2025-12", "id": "exp-domain-pro-2025-12",
@@ -285,9 +349,17 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.00", "amount": "3.00",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30", },
"annual_total_eur": "36.00" {
"id": "exp-hosting-coulombcore-2025-12",
"period": "2025-12",
"vendor": "hosting.coulombcore",
"description": "coulombcore virtual server hosting",
"cost_class": "infrastructure",
"amount": "13.99",
"currency": "EUR",
"source": "invoice"
}, },
{ {
"id": "exp-domain-social-2026-01", "id": "exp-domain-social-2026-01",
@@ -297,9 +369,7 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.75", "amount": "3.75",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30",
"annual_total_eur": "45.00"
}, },
{ {
"id": "exp-domain-pro-2026-01", "id": "exp-domain-pro-2026-01",
@@ -309,9 +379,17 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.00", "amount": "3.00",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30", },
"annual_total_eur": "36.00" {
"id": "exp-hosting-coulombcore-2026-01",
"period": "2026-01",
"vendor": "hosting.coulombcore",
"description": "coulombcore virtual server hosting",
"cost_class": "infrastructure",
"amount": "13.99",
"currency": "EUR",
"source": "invoice"
}, },
{ {
"id": "exp-domain-social-2026-02", "id": "exp-domain-social-2026-02",
@@ -321,9 +399,7 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.75", "amount": "3.75",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30",
"annual_total_eur": "45.00"
}, },
{ {
"id": "exp-domain-pro-2026-02", "id": "exp-domain-pro-2026-02",
@@ -333,9 +409,17 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.00", "amount": "3.00",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30", },
"annual_total_eur": "36.00" {
"id": "exp-hosting-coulombcore-2026-02",
"period": "2026-02",
"vendor": "hosting.coulombcore",
"description": "coulombcore virtual server hosting",
"cost_class": "infrastructure",
"amount": "13.99",
"currency": "EUR",
"source": "invoice"
}, },
{ {
"id": "exp-domain-social-2026-03", "id": "exp-domain-social-2026-03",
@@ -345,9 +429,7 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.75", "amount": "3.75",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30",
"annual_total_eur": "45.00"
}, },
{ {
"id": "exp-domain-pro-2026-03", "id": "exp-domain-pro-2026-03",
@@ -357,9 +439,17 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.00", "amount": "3.00",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30", },
"annual_total_eur": "36.00" {
"id": "exp-hosting-coulombcore-2026-03",
"period": "2026-03",
"vendor": "hosting.coulombcore",
"description": "coulombcore virtual server hosting",
"cost_class": "infrastructure",
"amount": "13.99",
"currency": "EUR",
"source": "invoice"
}, },
{ {
"id": "exp-domain-social-2026-04", "id": "exp-domain-social-2026-04",
@@ -369,9 +459,7 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.75", "amount": "3.75",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30",
"annual_total_eur": "45.00"
}, },
{ {
"id": "exp-domain-pro-2026-04", "id": "exp-domain-pro-2026-04",
@@ -381,9 +469,17 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.00", "amount": "3.00",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30", },
"annual_total_eur": "36.00" {
"id": "exp-hosting-coulombcore-2026-04",
"period": "2026-04",
"vendor": "hosting.coulombcore",
"description": "coulombcore virtual server hosting",
"cost_class": "infrastructure",
"amount": "13.99",
"currency": "EUR",
"source": "invoice"
}, },
{ {
"id": "exp-domain-social-2026-05", "id": "exp-domain-social-2026-05",
@@ -393,9 +489,7 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.75", "amount": "3.75",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30",
"annual_total_eur": "45.00"
}, },
{ {
"id": "exp-domain-pro-2026-05", "id": "exp-domain-pro-2026-05",
@@ -405,9 +499,17 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.00", "amount": "3.00",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30", },
"annual_total_eur": "36.00" {
"id": "exp-hosting-coulombcore-2026-05",
"period": "2026-05",
"vendor": "hosting.coulombcore",
"description": "coulombcore virtual server hosting",
"cost_class": "infrastructure",
"amount": "13.99",
"currency": "EUR",
"source": "invoice"
}, },
{ {
"id": "exp-domain-social-2026-06", "id": "exp-domain-social-2026-06",
@@ -417,9 +519,7 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.75", "amount": "3.75",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30",
"annual_total_eur": "45.00"
}, },
{ {
"id": "exp-domain-pro-2026-06", "id": "exp-domain-pro-2026-06",
@@ -429,10 +529,18 @@
"cost_class": "infrastructure", "cost_class": "infrastructure",
"amount": "3.00", "amount": "3.00",
"currency": "EUR", "currency": "EUR",
"source": "invoice", "source": "invoice"
"billing_term": "2026-01-31/2027-01-30", },
"annual_total_eur": "36.00" {
"id": "exp-hosting-coulombcore-2026-06",
"period": "2026-06",
"vendor": "hosting.coulombcore",
"description": "coulombcore virtual server hosting",
"cost_class": "infrastructure",
"amount": "13.99",
"currency": "EUR",
"source": "invoice"
} }
], ],
"note": "Infrastructure expense ledger: domains and virtual servers. Totals computed by observatory/ledger.py. Virtual server records to be added when invoice data is available." "note": "Infrastructure expense ledger: domains and virtual server hosting. Totals computed by observatory/ledger.py."
} }

View File

@@ -1,6 +1,14 @@
{ {
"version": 1, "version": 1,
"currency": "EUR", "currency": "EUR",
"servers": [], "servers": [
"note": "Virtual server expense records pending actual invoice data. Add entries here and mirror monthly rows in expense_records.json when available." {
"name": "coulombcore",
"monthly_eur": "13.99",
"started": "2025-01",
"description": "Virtual server hosting for coulombcore"
}
],
"monthly_total_eur": "13.99",
"note": "Reference catalog. Monthly expense rows live in expense_records.json."
} }

View File

@@ -6,7 +6,7 @@
> Platform costs accrue to the operator. Customer cost-pass-through billing is > Platform costs accrue to the operator. Customer cost-pass-through billing is
> **not active** in MVP — members pay subscription only. All totals are computed > **not active** in MVP — members pay subscription only. All totals are computed
> programmatically from expense and payment record ledgers (36 expense > programmatically from expense and payment record ledgers (54 expense
> records). > records).
## Key Metrics (current period) ## Key Metrics (current period)
@@ -15,13 +15,13 @@
|--------|------:| |--------|------:|
| Active members | 1 | | Active members | 1 |
| Member payments (gross) | 8.99 EUR | | Member payments (gross) | 8.99 EUR |
| Infrastructure cost | 6.75 EUR | | Infrastructure cost | 20.74 EUR |
| Payment processing cost | 0.38 EUR | | Payment processing cost | 0.38 EUR |
| Total platform cost | 7.13 EUR | | Total platform cost | 21.12 EUR |
| Platform cost per member | 7.13 EUR | | Platform cost per member | 21.12 EUR |
| Period gross margin | 1.86 EUR | | Period gross margin | -12.13 EUR |
| Period gross margin % | 20.7% | | Period gross margin % | -134.9% |
| Period net liquidity | 1.86 EUR (generating) | | Period net liquidity | -12.13 EUR (burning) |
_Period net liquidity = net member payments infrastructure cost (processing fees already netted from payments)._ _Period net liquidity = net member payments infrastructure cost (processing fees already netted from payments)._
_Revenue source: manual_ _Revenue source: manual_
@@ -32,35 +32,35 @@ _Revenue source: manual_
|--------|------:| |--------|------:|
| Initial budget | 1000.00 EUR | | Initial budget | 1000.00 EUR |
| Cumulative member payments (net) | 68.88 EUR | | Cumulative member payments (net) | 68.88 EUR |
| Cumulative infrastructure cost | 121.50 EUR | | Cumulative infrastructure cost | 373.32 EUR |
| Cumulative payment processing | 3.04 EUR | | Cumulative payment processing | 3.04 EUR |
| Cumulative total platform cost | 124.54 EUR | | Cumulative total platform cost | 376.36 EUR |
| Cumulative net liquidity | -52.62 EUR (burning) | | Cumulative net liquidity | -304.44 EUR (burning) |
| Remaining budget | 947.38 EUR (within budget) | | Remaining budget | 695.56 EUR (within budget) |
| Months tracked | 18 | | Months tracked | 18 |
## Monthly History ## Monthly History
| Period | Members | Gross revenue | Infrastructure | Processing | Total platform | Net liquidity | | Period | Members | Gross revenue | Infrastructure | Processing | Total platform | Net liquidity |
|--------|--------:|--------------:|---------------:|-----------:|---------------:|--------------:| |--------|--------:|--------------:|---------------:|-----------:|---------------:|--------------:|
| 2025-01 | 0 | 0.00 | 6.75 | 0.00 | 6.75 | -6.75 | | 2025-01 | 0 | 0.00 | 20.74 | 0.00 | 20.74 | -20.74 |
| 2025-02 | 0 | 0.00 | 6.75 | 0.00 | 6.75 | -6.75 | | 2025-02 | 0 | 0.00 | 20.74 | 0.00 | 20.74 | -20.74 |
| 2025-03 | 0 | 0.00 | 6.75 | 0.00 | 6.75 | -6.75 | | 2025-03 | 0 | 0.00 | 20.74 | 0.00 | 20.74 | -20.74 |
| 2025-04 | 0 | 0.00 | 6.75 | 0.00 | 6.75 | -6.75 | | 2025-04 | 0 | 0.00 | 20.74 | 0.00 | 20.74 | -20.74 |
| 2025-05 | 0 | 0.00 | 6.75 | 0.00 | 6.75 | -6.75 | | 2025-05 | 0 | 0.00 | 20.74 | 0.00 | 20.74 | -20.74 |
| 2025-06 | 0 | 0.00 | 6.75 | 0.00 | 6.75 | -6.75 | | 2025-06 | 0 | 0.00 | 20.74 | 0.00 | 20.74 | -20.74 |
| 2025-07 | 0 | 0.00 | 6.75 | 0.00 | 6.75 | -6.75 | | 2025-07 | 0 | 0.00 | 20.74 | 0.00 | 20.74 | -20.74 |
| 2025-08 | 0 | 0.00 | 6.75 | 0.00 | 6.75 | -6.75 | | 2025-08 | 0 | 0.00 | 20.74 | 0.00 | 20.74 | -20.74 |
| 2025-09 | 0 | 0.00 | 6.75 | 0.00 | 6.75 | -6.75 | | 2025-09 | 0 | 0.00 | 20.74 | 0.00 | 20.74 | -20.74 |
| 2025-10 | 0 | 0.00 | 6.75 | 0.00 | 6.75 | -6.75 | | 2025-10 | 0 | 0.00 | 20.74 | 0.00 | 20.74 | -20.74 |
| 2025-11 | 1 | 8.99 | 6.75 | 0.38 | 7.13 | 1.86 | | 2025-11 | 1 | 8.99 | 20.74 | 0.38 | 21.12 | -12.13 |
| 2025-12 | 1 | 8.99 | 6.75 | 0.38 | 7.13 | 1.86 | | 2025-12 | 1 | 8.99 | 20.74 | 0.38 | 21.12 | -12.13 |
| 2026-01 | 1 | 8.99 | 6.75 | 0.38 | 7.13 | 1.86 | | 2026-01 | 1 | 8.99 | 20.74 | 0.38 | 21.12 | -12.13 |
| 2026-02 | 1 | 8.99 | 6.75 | 0.38 | 7.13 | 1.86 | | 2026-02 | 1 | 8.99 | 20.74 | 0.38 | 21.12 | -12.13 |
| 2026-03 | 1 | 8.99 | 6.75 | 0.38 | 7.13 | 1.86 | | 2026-03 | 1 | 8.99 | 20.74 | 0.38 | 21.12 | -12.13 |
| 2026-04 | 1 | 8.99 | 6.75 | 0.38 | 7.13 | 1.86 | | 2026-04 | 1 | 8.99 | 20.74 | 0.38 | 21.12 | -12.13 |
| 2026-05 | 1 | 8.99 | 6.75 | 0.38 | 7.13 | 1.86 | | 2026-05 | 1 | 8.99 | 20.74 | 0.38 | 21.12 | -12.13 |
| 2026-06 | 1 | 8.99 | 6.75 | 0.38 | 7.13 | 1.86 | | 2026-06 | 1 | 8.99 | 20.74 | 0.38 | 21.12 | -12.13 |
## Pricing Model Registry ## Pricing Model Registry

View File

@@ -29,8 +29,8 @@ def test_infrastructure_aggregated_from_domain_expense_records() -> None:
fx = load_fx_rates(DATA_DIR) fx = load_fx_rates(DATA_DIR)
totals = aggregate_infrastructure_by_period(expenses, fx) totals = aggregate_infrastructure_by_period(expenses, fx)
assert totals["2025-01"] == Decimal("6.75") assert totals["2025-01"] == Decimal("20.74")
assert totals["2026-06"] == Decimal("6.75") assert totals["2026-06"] == Decimal("20.74")
def test_monthly_ledger_starts_january_2025() -> None: def test_monthly_ledger_starts_january_2025() -> None:
@@ -41,9 +41,9 @@ def test_monthly_ledger_starts_january_2025() -> None:
march = next(row for row in ledger if row.period == "2025-03") march = next(row for row in ledger if row.period == "2025-03")
june = next(row for row in ledger if row.period == "2026-06") june = next(row for row in ledger if row.period == "2026-06")
assert march.infrastructure_cost == Decimal("6.75") assert march.infrastructure_cost == Decimal("20.74")
assert march.payment_processing_cost == Decimal("0.00") assert march.payment_processing_cost == Decimal("0.00")
assert june.infrastructure_cost == Decimal("6.75") assert june.infrastructure_cost == Decimal("20.74")
assert june.payment_processing_cost == Decimal("0.38") assert june.payment_processing_cost == Decimal("0.38")
assert june.gross_revenue == Decimal("8.99") assert june.gross_revenue == Decimal("8.99")
@@ -57,11 +57,11 @@ def test_build_snapshot_june_2026_domain_only_infrastructure() -> None:
snapshot = build_snapshot("2026-06", product, models, members, payments, ledger) snapshot = build_snapshot("2026-06", product, models, members, payments, ledger)
assert snapshot.monthly_infrastructure_cost == Decimal("6.75") assert snapshot.monthly_infrastructure_cost == Decimal("20.74")
assert snapshot.monthly_payment_processing_cost == Decimal("0.38") assert snapshot.monthly_payment_processing_cost == Decimal("0.38")
assert snapshot.monthly_total_platform_cost == Decimal("7.13") assert snapshot.monthly_total_platform_cost == Decimal("21.12")
assert snapshot.period_net_liquidity == Decimal("1.86") assert snapshot.period_net_liquidity == Decimal("-12.13")
assert snapshot.liquidity_status == "generating" assert snapshot.liquidity_status == "burning"
def test_liquidity_summary_with_actual_domain_costs() -> None: def test_liquidity_summary_with_actual_domain_costs() -> None:
@@ -71,12 +71,12 @@ def test_liquidity_summary_with_actual_domain_costs() -> None:
summary = build_liquidity_summary(budget, payments, ledger, "2026-06") summary = build_liquidity_summary(budget, payments, ledger, "2026-06")
assert summary.cumulative_infrastructure_cost == Decimal("121.50") assert summary.cumulative_infrastructure_cost == Decimal("373.32")
assert summary.cumulative_payment_processing_cost == Decimal("3.04") assert summary.cumulative_payment_processing_cost == Decimal("3.04")
assert summary.cumulative_total_platform_cost == Decimal("124.54") assert summary.cumulative_total_platform_cost == Decimal("376.36")
assert summary.cumulative_member_payments == Decimal("68.88") assert summary.cumulative_member_payments == Decimal("68.88")
assert summary.cumulative_net_liquidity == Decimal("-52.62") assert summary.cumulative_net_liquidity == Decimal("-304.44")
assert summary.remaining_budget == Decimal("947.38") assert summary.remaining_budget == Decimal("695.56")
assert summary.liquidity_status == "burning" assert summary.liquidity_status == "burning"
assert summary.months_tracked == 18 assert summary.months_tracked == 18
@@ -98,6 +98,6 @@ def test_dashboard_notes_expense_record_source() -> None:
report = generate_dashboard(DATA_DIR, "2026-06") report = generate_dashboard(DATA_DIR, "2026-06")
assert "expense and payment record ledgers" in report assert "expense and payment record ledgers" in report
assert "121.50" in report assert "373.32" in report
assert "947.38" in report assert "695.56" in report
assert "coulomb.social" not in report # dashboard shows aggregates, not domain names assert "coulomb.social" not in report # dashboard shows aggregates, not domain names