--- id: RFORGE-WP-0002 type: workplan title: "Publish Forgejo resource economics evidence" domain: financials repo: railiance-forge status: finished owner: codex topic_slug: railiance created: "2026-08-11" updated: "2026-08-22" related: - RESOURCE-WP-0003 - ADR-0008 state_hub_workstream_id: "ce3bcfc5-a9af-5459-9d5c-e44ea50e7b13" --- # RFORGE-WP-0002 — Forgejo resource economics evidence ## Goal Provide the workload-owned demand, utilization, operations, and allocation evidence for `resource:railiance:forgejo`, which supplies source and package infrastructure to Helix Forge and the wider federation. Origin: `RESOURCE-WP-0003-T04` delegated evidence gap. Measure the live Gitea-compatible Helm workload (`deployment/forgejo-gitea` on `reef-railiance`). Forgejo is the migration target, not a second live product. Keep the resource id `resource:railiance:forgejo`. This id uses the historical `RAILIANCE-WP-` prefix (collides with other ownership repos). New forge workplans use `FORGE-WP-`. Do not change this file's `id` or hub UUID. Do not add a public metrics or economics endpoint (ADR-0008). Collect in-cluster or via the operator tunnel. Existing public Forgejo HTTPS is a separate granted surface, not this plan. Do not treat `environment: production` in resource-control as ADR-0006 `production-approved`. ## T01 — Measure Forgejo demand and utilization ```task id: RFORGE-WP-0002-T01 status: done priority: high state_hub_task_id: "07b43be8-f1f8-5b0f-be52-3343e9ade2d7" ``` Record resource requests/limits and observed CPU/memory, repository and package storage use/growth, database storage, runner capacity/activity, backup volume, and material network traffic using stable units and timestamps. Done when resource-control can forecast capacity and identify saturation or idle capacity without accessing repository content or credentials. **Outcome (2026-08-22):** `make forge-observe REMOTE=railiance01` publishes a timestamped, versioned observation for deployment requests/limits and observed CPU/memory, PVC and database capacity, shared/runner storage usage, recovery posture, and unavailable axes. It reads neither repository contents nor Secret surfaces. ## T02 — Declare service objectives and operations labor ```task id: RFORGE-WP-0002-T02 status: done priority: high state_hub_task_id: "61531eba-5802-5ace-8822-1a5ad67ad44a" ``` Record availability, recovery, retention, and performance requirements plus setup and recurring operator activities. Separate forge, registry, runner, database, backup, upgrade, and incident labor where evidence permits. Done when total-cost and optimization cases can preserve the forge's service constraints and labor assumptions. **Outcome (2026-08-22):** the service-objective and labor evidence file names the availability, restore, retention, performance, operational, upgrade, and incident dimensions. Unknown targets and hours remain explicit nulls rather than invented estimates. ## T03 — Publish shared-consumer allocation evidence ```task id: RFORGE-WP-0002-T03 status: done priority: medium state_hub_task_id: "27612238-ec67-55f1-8f5e-0d1ad7bc6af8" ``` Define explainable candidate drivers for source, package, and runner use across Helix Forge, Coulomb, Railiance, and future tenants. Preserve shared overhead and unattributed residuals; do not implement customer billing. Done when a versioned driver report can feed resource-control allocation without making the forge repository authoritative for booked cost. **Outcome (2026-08-22):** `forge-raw-drivers-v1` proposes repository count, package bytes, and runner job minutes, preserves all current use as an unattributed residual, and assigns method selection to `resource-control`. ## Acceptance - [x] Demand and utilization include storage, compute, runner, and backup axes. - [x] Service objectives and labor assumptions are explicit. - [x] Shared allocation evidence exposes residuals and provenance. ## Completion evidence - `python3 -m unittest discover -s tests -p 'test_*.py' -v`: 1 test passed. - Live read-only capture: `docs/evidence/resource-railiance-forgejo/observations/20260822T102256Z.json`. - Current observation records 2,377,375,744 forge data bytes, 247,693,312 runner data bytes, healthy single-instance CNPG state, continuous archiving, and no Forge database Backup/ScheduledBackup or restore-drill evidence.