4.1 KiB
T05 Phase 0 Preflight Evidence — 2026-07-06
Workplan: CUST-WP-0054-T05
Parent runbook: docs/state-hub-railiance01-cutover-plan.md
no_secret_material_recorded: true
Checklist
| Step | Action | Result | Evidence |
|---|---|---|---|
| 0.1 | Baseline API totals | pass | See § API summary below |
| 0.2 | Per-table PG counts (coulombcore) | pass | See § Table counts below |
| 0.3 | Forgejo image pull (railiance01) | pass | main-f9f0091 + latest @ sha256:0b62f2d530cf7 |
| 0.4 | Manifest dry-run (railiance01) | pass | Server + client dry-run exit 0 |
| 0.5 | Storage / CNPG review | pass | local-path default; 75G free on /; CNPG healthy |
| 0.6 | Operator approval | pending | Required before Phase 2 freeze |
API summary (GET /state/summary @ 2026-07-06T16:06:15Z)
{
"topics": { "total": 14 },
"workstreams": { "total": 637, "active": 11, "finished": 582 },
"tasks": { "total": 3983, "todo": 88, "progress": 4, "done": 3696 },
"decisions": { "total": 79, "open": 1, "resolved": 76 }
}
Full artifact: captured at preflight run from http://127.0.0.1:8000/state/summary.
Table counts — coulombcore state-hub-db (production writer)
Queried via kubectl exec on databases/state-hub-db-1 as postgres:
| Table | Count | CUST-WP-0011-T07 reference |
|---|---|---|
workplans |
637 | was 633 at 2026-07-03 cutover |
tasks |
3983 | was 3964 |
progress_events |
8717 | was 8192 |
topics |
14 | was 14 |
token_events |
1936 | was 1933 |
managed_repos |
74 | — |
decisions |
79 | — |
Cutover gate: post-restore counts on railiance01 must match this table exactly.
Production deployment (coulombcore, source of dump)
| Item | Value |
|---|---|
| API image | gitea.coulomb.social/coulomb/state-hub:f2e042a |
| API pod | state-hub/state-hub-7d565cddf4-jnpfw Running |
| CNPG cluster | databases/state-hub-db — healthy, 11d |
| ClusterIP | 10.43.170.94:8000 |
| Workstation access | ops-bridge state-hub-primary → above Svc |
Target image (railiance01 deploy)
| Tag | Digest | Notes |
|---|---|---|
forgejo.coulomb.social/coulomb/state-hub:main-f9f0091 |
sha256:0b62f2d530cf7 |
CI build from tier-3 promotion |
forgejo.coulomb.social/coulomb/state-hub:latest |
same | Alias |
:f9f0091 |
not found | Use main-f9f0091 or latest in Helm values |
railiance01 platform readiness
| Check | Status |
|---|---|
CNPG operator (cnpg-system) |
Running |
| Existing CNPG clusters | forgejo-db, net-kingdom-pg healthy |
state-hub namespace |
Does not exist (expected — Phase 1 creates) |
state-hub-db on railiance01 |
Not deployed (expected) |
| StorageClass | local-path (default) |
| Node disk | 75G available on / (96G volume, 23% used) |
| Sweep hostname | 239.62.205.92.host.secureserver.net |
| Partial clone tree | /home/tegwick/activity-core, llm-connect, … |
Dry-run output summary
cd ~/state-hub
KUBECONFIG=~/.kube/config-hosteurope make railiance-state-hub-server-dry-run # exit 0
KUBECONFIG=~/.kube/config-hosteurope make railiance-state-hub-client-dry-run # exit 0
Server dry-run created (dry-run): state-hub-db-credentials, state-hub-db Cluster,
DB NetworkPolicies, state-hub Namespace, state-hub-env, ConfigMap, Service, Deployment.
Phase 1 readiness
Phase 0 is complete except operator approval (0.6). Phase 1 may proceed without approval (empty stack deploy). Phase 2 freeze/restore requires explicit approval.
Recommended Helm image pin for Phase 1
image:
repository: forgejo.coulomb.social/coulomb/state-hub
tag: "main-f9f0091"
Update state-hub/deploy/railiance/apps/helm/state-hub-values.yaml and promote
to railiance-apps before or during Phase 1.
Open items carried to Phase 1
- Create SOPS-backed
state-hub-db-credentialson railiance01 (platform) - Create
state-hub-envSecret withDATABASE_URLpointing at railiance01 CNPG rw svc - Confirm image pull secret if Forgejo registry requires auth from cluster (currently pulls anonymously)