--- 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: "72f935a5-d921-48a4-96e4-2365556c7374" --- # 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: "7048e354-0844-4f6c-aeaa-acf188b04ce2" ``` 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: "643c2393-2ee5-4264-972c-04c3b358dc86" ``` 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: "498cc0c7-ba07-4e7f-a0ef-2e6b34bef04c" ``` 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.