coulomb-social/docs/resource-evidence/demand-forecast-2026-08.md
tegwick c521adc2f9 Publish CSOC-WP-0005 resource demand and cost evidence
Add low/base/high demand forecasts, service objectives with timestamped
observations, and workload operations labor for resource:tenant:coulomb:coulomb-social.
2026-08-12 11:07:03 +02:00

3.6 KiB
Raw Blame History

Workload demand forecast — coulomb-social (2026-08)

Field Value
Resource resource:tenant:coulomb:coulomb-social
Workplan CSOC-WP-0005-T01
Forecast version csoc-demand-2026-08-v1
Created 2026-08-12T09:03:47Z
Machine record demand-forecast-2026-08.json

Scope

Demand for this production instance (Coulomb reference tenant on Railiance). Deployment shape is instance-per-client (DR-1 C): future external customers are separate instances and separate resource ids — they are not folded into the high scenario.

Case What it models
low Current parallel-host posture: few operators, Bubble still full product on apex
base Coulomb community day-to-day on the rebuild (still one tenant)
high Full Bubble-parity load on this Coulomb instance (HA-ish replicas/resources)

Proxies (stable units)

Proxy Unit Notes
active_tenants count Expected 1 for this instance
active_members MAU-ish Member count App-owned
http_requests_per_month count App Service ingress
oidc_logins_per_month count Successful app logins
background_jobs_per_month count 0 until workers exist
app_database_gb GB logical coulomb_social_db on apps-pg
stored_media_gb GB App-owned binaries only
forgejo_content_gb_bound GB Attribution for space markdown on shared Forgejo
ingress_gb / egress_gb GB/month App path only
cpu/memory request·limit mCPU / Mi Declared K8s requirements
operator_hours_per_month hours Workload labor (T03)

Scenario table (monthly)

Proxy low base high
active_tenants 1 1 1
active_members 5 50 500
http_requests 5000 150000 2000000
oidc_logins 80 1500 20000
background_jobs 0 0 5000
app_database_gb 0.1 1 10
DB growth %/mo 5 10 15
stored_media_gb 0 2 50
forgejo_content_gb_bound 0.01 0.5 20
ingress_gb 0.5 5 40
egress_gb 1 15 120
cpu request (m) 100 200 500
mem request (Mi) 256 512 1024
replicas 1 1 2
operator h/mo 2 4 8
labor €/mo @ €60/h 120 240 480

Infrastructure EUR is not invented here. Cost joins should treat infrastructure as an allocated share of cluster, apps-pg, ingress, and identity platform once those owners and fin-hub supply figures.

Capacity floor (current deploy declaration)

From railiance-apps chart defaults (production values do not override resources as of 2026-08):

Dimension Value
replicas 1
cpu request / limit 100m / 1000m
memory request / limit 256Mi / 1Gi
media PV disabled
Image tag (values) 7fcd0cf (railiance-apps helm values; may lag git HEAD)

How resource-control should use this

  1. Pick scenario band from observed MAU / requests (or default low until Bubble migration starts).
  2. Feed proxies into monthly forecast/actual control (null infrastructure until platform prices exist).
  3. Attribute Forgejo-bound content via forgejo_content_gb_bound without double-counting storage in the app resource.
  4. Recalibrate after three comparable months (MAPE on members, requests, DB GB, labor hours).

Assumptions and falsifiability

See JSON assumptions array. Primary falsifiers after each calendar month:

  • measured active_members outside the active scenario band by >2×
  • app_database_gb growth vs declared growth %
  • operator hours vs T03 labor log