generated from coulomb/repo-seed
Add railiance01 hosting at 8.99 EUR/mo from March 2026
Expense records and virtual server catalog entry for railiance01, active from 2026-03 alongside existing domain and coulombcore costs.
This commit is contained in:
@@ -22,10 +22,10 @@ computes all totals programmatically (`ledger.py` → `economics.py`).
|
||||
| Pricing models | `data/pricing-models.json` |
|
||||
| Membership | `data/membership.json` |
|
||||
|
||||
**Current reality:** infrastructure from January 2025 — domains **€6.75/mo**
|
||||
(`coulomb.social` €3.75 + `coulomb.pro` €3.00) and coulombcore hosting
|
||||
**€13.99/mo** (total **€20.74/mo**). Sole member payments from November 2025.
|
||||
Customer cost-pass-through billing is not active.
|
||||
**Current reality:** infrastructure from January 2025 — domains **€6.75/mo**,
|
||||
coulombcore hosting **€13.99/mo** (from Jan 2025), railiance01 hosting
|
||||
**€8.99/mo** (from Mar 2026). Sole member payments from November 2025. Customer
|
||||
cost-pass-through billing is not active.
|
||||
|
||||
### Commands
|
||||
|
||||
|
||||
@@ -451,6 +451,16 @@
|
||||
"currency": "EUR",
|
||||
"source": "invoice"
|
||||
},
|
||||
{
|
||||
"id": "exp-hosting-railiance01-2026-03",
|
||||
"period": "2026-03",
|
||||
"vendor": "hosting.railiance01",
|
||||
"description": "railiance01 virtual server hosting",
|
||||
"cost_class": "infrastructure",
|
||||
"amount": "8.99",
|
||||
"currency": "EUR",
|
||||
"source": "invoice"
|
||||
},
|
||||
{
|
||||
"id": "exp-domain-social-2026-04",
|
||||
"period": "2026-04",
|
||||
@@ -481,6 +491,16 @@
|
||||
"currency": "EUR",
|
||||
"source": "invoice"
|
||||
},
|
||||
{
|
||||
"id": "exp-hosting-railiance01-2026-04",
|
||||
"period": "2026-04",
|
||||
"vendor": "hosting.railiance01",
|
||||
"description": "railiance01 virtual server hosting",
|
||||
"cost_class": "infrastructure",
|
||||
"amount": "8.99",
|
||||
"currency": "EUR",
|
||||
"source": "invoice"
|
||||
},
|
||||
{
|
||||
"id": "exp-domain-social-2026-05",
|
||||
"period": "2026-05",
|
||||
@@ -511,6 +531,16 @@
|
||||
"currency": "EUR",
|
||||
"source": "invoice"
|
||||
},
|
||||
{
|
||||
"id": "exp-hosting-railiance01-2026-05",
|
||||
"period": "2026-05",
|
||||
"vendor": "hosting.railiance01",
|
||||
"description": "railiance01 virtual server hosting",
|
||||
"cost_class": "infrastructure",
|
||||
"amount": "8.99",
|
||||
"currency": "EUR",
|
||||
"source": "invoice"
|
||||
},
|
||||
{
|
||||
"id": "exp-domain-social-2026-06",
|
||||
"period": "2026-06",
|
||||
@@ -540,6 +570,16 @@
|
||||
"amount": "13.99",
|
||||
"currency": "EUR",
|
||||
"source": "invoice"
|
||||
},
|
||||
{
|
||||
"id": "exp-hosting-railiance01-2026-06",
|
||||
"period": "2026-06",
|
||||
"vendor": "hosting.railiance01",
|
||||
"description": "railiance01 virtual server hosting",
|
||||
"cost_class": "infrastructure",
|
||||
"amount": "8.99",
|
||||
"currency": "EUR",
|
||||
"source": "invoice"
|
||||
}
|
||||
],
|
||||
"note": "Infrastructure expense ledger: domains and virtual server hosting. Totals computed by observatory/ledger.py."
|
||||
|
||||
@@ -7,8 +7,13 @@
|
||||
"monthly_eur": "13.99",
|
||||
"started": "2025-01",
|
||||
"description": "Virtual server hosting for coulombcore"
|
||||
},
|
||||
{
|
||||
"name": "railiance01",
|
||||
"monthly_eur": "8.99",
|
||||
"started": "2026-03",
|
||||
"description": "Virtual server hosting for railiance01"
|
||||
}
|
||||
],
|
||||
"monthly_total_eur": "13.99",
|
||||
"note": "Reference catalog. Monthly expense rows live in expense_records.json."
|
||||
}
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
> Platform costs accrue to the operator. Customer cost-pass-through billing is
|
||||
> **not active** in MVP — members pay subscription only. All totals are computed
|
||||
> programmatically from expense and payment record ledgers (54 expense
|
||||
> programmatically from expense and payment record ledgers (58 expense
|
||||
> records).
|
||||
|
||||
## Key Metrics (current period)
|
||||
@@ -15,13 +15,13 @@
|
||||
|--------|------:|
|
||||
| Active members | 1 |
|
||||
| Member payments (gross) | 8.99 EUR |
|
||||
| Infrastructure cost | 20.74 EUR |
|
||||
| Infrastructure cost | 29.73 EUR |
|
||||
| Payment processing cost | 0.38 EUR |
|
||||
| Total platform cost | 21.12 EUR |
|
||||
| Platform cost per member | 21.12 EUR |
|
||||
| Period gross margin | -12.13 EUR |
|
||||
| Period gross margin % | -134.9% |
|
||||
| Period net liquidity | -12.13 EUR (burning) |
|
||||
| Total platform cost | 30.11 EUR |
|
||||
| Platform cost per member | 30.11 EUR |
|
||||
| Period gross margin | -21.12 EUR |
|
||||
| Period gross margin % | -234.9% |
|
||||
| Period net liquidity | -21.12 EUR (burning) |
|
||||
|
||||
_Period net liquidity = net member payments − infrastructure cost (processing fees already netted from payments)._
|
||||
_Revenue source: manual_
|
||||
@@ -32,11 +32,11 @@ _Revenue source: manual_
|
||||
|--------|------:|
|
||||
| Initial budget | 1000.00 EUR |
|
||||
| Cumulative member payments (net) | 68.88 EUR |
|
||||
| Cumulative infrastructure cost | 373.32 EUR |
|
||||
| Cumulative infrastructure cost | 409.28 EUR |
|
||||
| Cumulative payment processing | 3.04 EUR |
|
||||
| Cumulative total platform cost | 376.36 EUR |
|
||||
| Cumulative net liquidity | -304.44 EUR (burning) |
|
||||
| Remaining budget | 695.56 EUR (within budget) |
|
||||
| Cumulative total platform cost | 412.32 EUR |
|
||||
| Cumulative net liquidity | -340.40 EUR (burning) |
|
||||
| Remaining budget | 659.60 EUR (within budget) |
|
||||
| Months tracked | 18 |
|
||||
|
||||
## Monthly History
|
||||
@@ -57,10 +57,10 @@ _Revenue source: manual_
|
||||
| 2025-12 | 1 | 8.99 | 20.74 | 0.38 | 21.12 | -12.13 |
|
||||
| 2026-01 | 1 | 8.99 | 20.74 | 0.38 | 21.12 | -12.13 |
|
||||
| 2026-02 | 1 | 8.99 | 20.74 | 0.38 | 21.12 | -12.13 |
|
||||
| 2026-03 | 1 | 8.99 | 20.74 | 0.38 | 21.12 | -12.13 |
|
||||
| 2026-04 | 1 | 8.99 | 20.74 | 0.38 | 21.12 | -12.13 |
|
||||
| 2026-05 | 1 | 8.99 | 20.74 | 0.38 | 21.12 | -12.13 |
|
||||
| 2026-06 | 1 | 8.99 | 20.74 | 0.38 | 21.12 | -12.13 |
|
||||
| 2026-03 | 1 | 8.99 | 29.73 | 0.38 | 30.11 | -21.12 |
|
||||
| 2026-04 | 1 | 8.99 | 29.73 | 0.38 | 30.11 | -21.12 |
|
||||
| 2026-05 | 1 | 8.99 | 29.73 | 0.38 | 30.11 | -21.12 |
|
||||
| 2026-06 | 1 | 8.99 | 29.73 | 0.38 | 30.11 | -21.12 |
|
||||
|
||||
## Pricing Model Registry
|
||||
|
||||
|
||||
@@ -30,7 +30,9 @@ def test_infrastructure_aggregated_from_domain_expense_records() -> None:
|
||||
totals = aggregate_infrastructure_by_period(expenses, fx)
|
||||
|
||||
assert totals["2025-01"] == Decimal("20.74")
|
||||
assert totals["2026-06"] == Decimal("20.74")
|
||||
assert totals["2026-02"] == Decimal("20.74")
|
||||
assert totals["2026-03"] == Decimal("29.73")
|
||||
assert totals["2026-06"] == Decimal("29.73")
|
||||
|
||||
|
||||
def test_monthly_ledger_starts_january_2025() -> None:
|
||||
@@ -43,7 +45,7 @@ def test_monthly_ledger_starts_january_2025() -> None:
|
||||
|
||||
assert march.infrastructure_cost == Decimal("20.74")
|
||||
assert march.payment_processing_cost == Decimal("0.00")
|
||||
assert june.infrastructure_cost == Decimal("20.74")
|
||||
assert june.infrastructure_cost == Decimal("29.73")
|
||||
assert june.payment_processing_cost == Decimal("0.38")
|
||||
assert june.gross_revenue == Decimal("8.99")
|
||||
|
||||
@@ -57,10 +59,10 @@ def test_build_snapshot_june_2026_domain_only_infrastructure() -> None:
|
||||
|
||||
snapshot = build_snapshot("2026-06", product, models, members, payments, ledger)
|
||||
|
||||
assert snapshot.monthly_infrastructure_cost == Decimal("20.74")
|
||||
assert snapshot.monthly_infrastructure_cost == Decimal("29.73")
|
||||
assert snapshot.monthly_payment_processing_cost == Decimal("0.38")
|
||||
assert snapshot.monthly_total_platform_cost == Decimal("21.12")
|
||||
assert snapshot.period_net_liquidity == Decimal("-12.13")
|
||||
assert snapshot.monthly_total_platform_cost == Decimal("30.11")
|
||||
assert snapshot.period_net_liquidity == Decimal("-21.12")
|
||||
assert snapshot.liquidity_status == "burning"
|
||||
|
||||
|
||||
@@ -71,12 +73,12 @@ def test_liquidity_summary_with_actual_domain_costs() -> None:
|
||||
|
||||
summary = build_liquidity_summary(budget, payments, ledger, "2026-06")
|
||||
|
||||
assert summary.cumulative_infrastructure_cost == Decimal("373.32")
|
||||
assert summary.cumulative_infrastructure_cost == Decimal("409.28")
|
||||
assert summary.cumulative_payment_processing_cost == Decimal("3.04")
|
||||
assert summary.cumulative_total_platform_cost == Decimal("376.36")
|
||||
assert summary.cumulative_total_platform_cost == Decimal("412.32")
|
||||
assert summary.cumulative_member_payments == Decimal("68.88")
|
||||
assert summary.cumulative_net_liquidity == Decimal("-304.44")
|
||||
assert summary.remaining_budget == Decimal("695.56")
|
||||
assert summary.cumulative_net_liquidity == Decimal("-340.40")
|
||||
assert summary.remaining_budget == Decimal("659.60")
|
||||
assert summary.liquidity_status == "burning"
|
||||
assert summary.months_tracked == 18
|
||||
|
||||
@@ -98,6 +100,6 @@ def test_dashboard_notes_expense_record_source() -> None:
|
||||
|
||||
report = generate_dashboard(DATA_DIR, "2026-06")
|
||||
assert "expense and payment record ledgers" in report
|
||||
assert "373.32" in report
|
||||
assert "695.56" in report
|
||||
assert "409.28" in report
|
||||
assert "659.60" in report
|
||||
assert "coulomb.social" not in report # dashboard shows aggregates, not domain names
|
||||
Reference in New Issue
Block a user