Publish Forge resource economics evidence
Assistant: codex Assistant-Model: gpt-5.6-sol Assistant-Session: 01a02669-87ee-7a31-b111-edc95a16e0fa
This commit is contained in:
parent
a0f4c493a3
commit
35dbe4dd42
12 changed files with 632 additions and 30 deletions
|
|
@ -0,0 +1,20 @@
|
|||
schema_version: railiance.forge-allocation-drivers.v1
|
||||
resource_id: resource:railiance:forgejo
|
||||
method_version: forge-raw-drivers-v1
|
||||
candidate_drivers:
|
||||
- repository_count
|
||||
- package_bytes
|
||||
- runner_job_minutes
|
||||
consumer_groups:
|
||||
- helix-forge
|
||||
- coulomb-social
|
||||
- railiance
|
||||
selected_driver: null
|
||||
attributed: []
|
||||
residual:
|
||||
share: 1.0
|
||||
reason: current read-only surfaces do not bind repository, package, and runner usage to those consumer groups
|
||||
selection_owner: resource-control
|
||||
provenance:
|
||||
- Kubernetes deployment, PVC, CNPG, runner, and storage observations
|
||||
- Forgejo aggregate API evidence when an approved read-only route becomes available
|
||||
|
|
@ -0,0 +1,115 @@
|
|||
{
|
||||
"schema_version": "railiance.forge-resource-observation.v1",
|
||||
"record_type": "usage_observation",
|
||||
"resource_id": "resource:railiance:forgejo",
|
||||
"source": "railiance-forge",
|
||||
"workplan_id": "RFORGE-WP-0002",
|
||||
"reef": "reef-railiance",
|
||||
"captured_at": "2026-08-22T10:22:56Z",
|
||||
"capacity": {
|
||||
"deployments": [
|
||||
{
|
||||
"name": "forgejo-gitea",
|
||||
"desired_replicas": 1,
|
||||
"available_replicas": 1,
|
||||
"requests": {
|
||||
"cpu_millicores": 0,
|
||||
"memory_bytes": 0
|
||||
},
|
||||
"limits": {
|
||||
"cpu_millicores": 0,
|
||||
"memory_bytes": 0
|
||||
},
|
||||
"observed": {
|
||||
"cpu_millicores": 115,
|
||||
"memory_bytes": 629145600
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "forgejo-runner",
|
||||
"desired_replicas": 1,
|
||||
"available_replicas": 1,
|
||||
"requests": {
|
||||
"cpu_millicores": 0,
|
||||
"memory_bytes": 0
|
||||
},
|
||||
"limits": {
|
||||
"cpu_millicores": 0,
|
||||
"memory_bytes": 0
|
||||
},
|
||||
"observed": {
|
||||
"cpu_millicores": 3,
|
||||
"memory_bytes": 563085312
|
||||
}
|
||||
}
|
||||
],
|
||||
"persistent_volumes": [
|
||||
{
|
||||
"name": "forgejo-runner-data",
|
||||
"storage_class": "local-path",
|
||||
"requested_bytes": 5368709120,
|
||||
"phase": "Bound"
|
||||
},
|
||||
{
|
||||
"name": "gitea-shared-storage",
|
||||
"storage_class": "local-path",
|
||||
"requested_bytes": 10737418240,
|
||||
"phase": "Bound"
|
||||
}
|
||||
],
|
||||
"pvc_requested_bytes": 16106127360,
|
||||
"forge_data_used_bytes": 2377375744,
|
||||
"runner_data_used_bytes": 247693312,
|
||||
"database": {
|
||||
"instances": 1,
|
||||
"ready_instances": 1,
|
||||
"storage_requested_bytes": 10737418240,
|
||||
"phase": "Cluster in healthy state"
|
||||
}
|
||||
},
|
||||
"recovery": {
|
||||
"database_continuous_archiving": true,
|
||||
"database_backups_seen": 0,
|
||||
"database_backups_completed": 0,
|
||||
"shared_storage_restore_drill": false,
|
||||
"runner_restore_drill": false
|
||||
},
|
||||
"allocation": {
|
||||
"method_version": "forge-raw-drivers-v1",
|
||||
"candidate_drivers": [
|
||||
"repository_count",
|
||||
"package_bytes",
|
||||
"runner_job_minutes"
|
||||
],
|
||||
"consumer_groups": [
|
||||
"helix-forge",
|
||||
"coulomb-social",
|
||||
"railiance"
|
||||
],
|
||||
"attributed": [],
|
||||
"residual": {
|
||||
"forge_data_used_bytes": 2377375744,
|
||||
"reason": "consumer attribution source is not yet available"
|
||||
},
|
||||
"selection_owner": "resource-control"
|
||||
},
|
||||
"measurement_gaps": [
|
||||
"forgejo-db has no Backup or ScheduledBackup evidence",
|
||||
"material network traffic is unavailable",
|
||||
"repository and package usage are not yet attributable to named consumers",
|
||||
"runner job counts and durations are unavailable from the current read-only surface"
|
||||
],
|
||||
"provenance": {
|
||||
"commands": [
|
||||
"kubectl get deploy -n forgejo -o json",
|
||||
"kubectl get pvc -n forgejo -o json",
|
||||
"kubectl top pods -n forgejo --no-headers",
|
||||
"kubectl get cluster forgejo-db -n databases -o json",
|
||||
"kubectl get backup,scheduledbackup -n databases -o json",
|
||||
"kubectl exec deploy/forgejo-gitea -- du -sk /data",
|
||||
"kubectl exec deploy/forgejo-runner -- du -sk /data"
|
||||
],
|
||||
"repository_contents_read": false,
|
||||
"secret_surfaces_read": false
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,115 @@
|
|||
{
|
||||
"schema_version": "railiance.forge-resource-observation.v1",
|
||||
"record_type": "usage_observation",
|
||||
"resource_id": "resource:railiance:forgejo",
|
||||
"source": "railiance-forge",
|
||||
"workplan_id": "RFORGE-WP-0002",
|
||||
"reef": "reef-railiance",
|
||||
"captured_at": "2026-08-22T10:22:56Z",
|
||||
"capacity": {
|
||||
"deployments": [
|
||||
{
|
||||
"name": "forgejo-gitea",
|
||||
"desired_replicas": 1,
|
||||
"available_replicas": 1,
|
||||
"requests": {
|
||||
"cpu_millicores": 0,
|
||||
"memory_bytes": 0
|
||||
},
|
||||
"limits": {
|
||||
"cpu_millicores": 0,
|
||||
"memory_bytes": 0
|
||||
},
|
||||
"observed": {
|
||||
"cpu_millicores": 115,
|
||||
"memory_bytes": 629145600
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "forgejo-runner",
|
||||
"desired_replicas": 1,
|
||||
"available_replicas": 1,
|
||||
"requests": {
|
||||
"cpu_millicores": 0,
|
||||
"memory_bytes": 0
|
||||
},
|
||||
"limits": {
|
||||
"cpu_millicores": 0,
|
||||
"memory_bytes": 0
|
||||
},
|
||||
"observed": {
|
||||
"cpu_millicores": 3,
|
||||
"memory_bytes": 563085312
|
||||
}
|
||||
}
|
||||
],
|
||||
"persistent_volumes": [
|
||||
{
|
||||
"name": "forgejo-runner-data",
|
||||
"storage_class": "local-path",
|
||||
"requested_bytes": 5368709120,
|
||||
"phase": "Bound"
|
||||
},
|
||||
{
|
||||
"name": "gitea-shared-storage",
|
||||
"storage_class": "local-path",
|
||||
"requested_bytes": 10737418240,
|
||||
"phase": "Bound"
|
||||
}
|
||||
],
|
||||
"pvc_requested_bytes": 16106127360,
|
||||
"forge_data_used_bytes": 2377375744,
|
||||
"runner_data_used_bytes": 247693312,
|
||||
"database": {
|
||||
"instances": 1,
|
||||
"ready_instances": 1,
|
||||
"storage_requested_bytes": 10737418240,
|
||||
"phase": "Cluster in healthy state"
|
||||
}
|
||||
},
|
||||
"recovery": {
|
||||
"database_continuous_archiving": true,
|
||||
"database_backups_seen": 0,
|
||||
"database_backups_completed": 0,
|
||||
"shared_storage_restore_drill": false,
|
||||
"runner_restore_drill": false
|
||||
},
|
||||
"allocation": {
|
||||
"method_version": "forge-raw-drivers-v1",
|
||||
"candidate_drivers": [
|
||||
"repository_count",
|
||||
"package_bytes",
|
||||
"runner_job_minutes"
|
||||
],
|
||||
"consumer_groups": [
|
||||
"helix-forge",
|
||||
"coulomb-social",
|
||||
"railiance"
|
||||
],
|
||||
"attributed": [],
|
||||
"residual": {
|
||||
"forge_data_used_bytes": 2377375744,
|
||||
"reason": "consumer attribution source is not yet available"
|
||||
},
|
||||
"selection_owner": "resource-control"
|
||||
},
|
||||
"measurement_gaps": [
|
||||
"forgejo-db has no Backup or ScheduledBackup evidence",
|
||||
"material network traffic is unavailable",
|
||||
"repository and package usage are not yet attributable to named consumers",
|
||||
"runner job counts and durations are unavailable from the current read-only surface"
|
||||
],
|
||||
"provenance": {
|
||||
"commands": [
|
||||
"kubectl get deploy -n forgejo -o json",
|
||||
"kubectl get pvc -n forgejo -o json",
|
||||
"kubectl top pods -n forgejo --no-headers",
|
||||
"kubectl get cluster forgejo-db -n databases -o json",
|
||||
"kubectl get backup,scheduledbackup -n databases -o json",
|
||||
"kubectl exec deploy/forgejo-gitea -- du -sk /data",
|
||||
"kubectl exec deploy/forgejo-runner -- du -sk /data"
|
||||
],
|
||||
"repository_contents_read": false,
|
||||
"secret_surfaces_read": false
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
schema_version: railiance.forge-service-objectives.v1
|
||||
resource_id: resource:railiance:forgejo
|
||||
workplan_id: RFORGE-WP-0002
|
||||
service_objectives:
|
||||
availability:
|
||||
objective: web, Git SSH, OCI, package, and runner readiness checks pass at each observation
|
||||
percentage_target: null
|
||||
measurement_gap: no approved monthly availability SLO or continuous evidence plane
|
||||
recovery:
|
||||
rpo: null
|
||||
rto: null
|
||||
requirement: isolated restore must prove clone, login, package pull, and runner re-registration before production trust
|
||||
retention:
|
||||
policy: null
|
||||
requirement: cleanup must preserve referenced release artifacts and evidence
|
||||
performance:
|
||||
objective: null
|
||||
measurement_gap: no approved latency or throughput target
|
||||
operations_labor:
|
||||
basis: activities declared; hours remain unknown until time records exist
|
||||
activities:
|
||||
- forge and registry health review
|
||||
- runner health and label review
|
||||
- storage growth and retention review
|
||||
- database and shared-storage backup review
|
||||
- upgrade and migration rehearsal
|
||||
- incident response and restore drill
|
||||
setup_hours: null
|
||||
recurring_hours_per_month: null
|
||||
measurement_gap: no attributable time records
|
||||
cost_owner: resource-control/fin-hub
|
||||
18
docs/forge-resource-evidence.md
Normal file
18
docs/forge-resource-evidence.md
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
# Forge resource evidence
|
||||
|
||||
Run `make forge-observe REMOTE=railiance01` to capture a timestamped,
|
||||
non-secret observation for `resource:railiance:forgejo`. The collector reads
|
||||
Kubernetes deployment, metrics, PVC, CNPG, backup-resource, and aggregate
|
||||
`du` surfaces. It does not read repositories, packages, Secrets, or pod
|
||||
environments.
|
||||
|
||||
The observation separates requested/limited compute from observed usage,
|
||||
records storage and recovery posture, and preserves unavailable dimensions as
|
||||
measurement gaps. The companion YAML files define service/labor assumptions
|
||||
and candidate allocation drivers. Unknown targets, labor, consumer
|
||||
attribution, and booked cost stay unknown; `resource-control` owns allocation
|
||||
method selection and `fin-hub` owns financial reconciliation.
|
||||
|
||||
The current capture also makes the recovery gap explicit: CNPG reports
|
||||
continuous archiving, but no `Backup` or `ScheduledBackup` resource exists for
|
||||
`forgejo-db`, and shared-storage/runner restore drills have not been evidenced.
|
||||
Loading…
Add table
Add a link
Reference in a new issue