- Add gov-portals-runtime.v1.json + schema; jq gate in validate-config-files - Python: parity-deploy-targets, parity-operational-template (IP strict, hostname WARN), parity-gov-portals-runtime; validate-vm-routing-parity.sh wrapper - check-gov-portal-workflow-canonical-strings.sh for monorepo Pattern A - PORTAL_WORKFLOW_PARITY.md; template headers; repos README; operator checklist secrets - report-gitea-cd-parity runs full VM routing parity; task doc marked complete - GOV_PORTALS_XOM_DEV + GITEA_GOV + MASTER_INDEX + matrix doc cross-links Co-authored-by: Cursor <cursoragent@cursor.com>
Gitea / Phoenix non-blockchain VM routing matrix
Machine-readable coverage of cluster guests that are not Besu-fleet nodes (see besu-vmid-exclusions.v1.json) for Gitea Actions + Phoenix deploy alignment.
| File | Purpose |
|---|---|
besu-vmid-exclusions.v1.json |
Hostname rules marking Besu validators/sentries/RPC (excluded from matrix closure). |
non-blockchain-vm-routing-matrix.v1.json |
One row per in-scope running guest from the last committed reports/status/live_inventory.json snapshot. |
non-blockchain-vm-routing-matrix.v1.schema.json |
JSON Schema for the matrix file. |
gov-portals-runtime.v1.json |
CT 7804 xom-dev: ports 3001–3004, Gitea repos, Phoenix target names, pnpm filters (kept in sync with deploy-targets + monorepo CI). |
gov-portals-runtime.v1.schema.json |
JSON Schema for the runtime file. |
Regenerate after inventory export
From repo root (LAN / operator host with live_inventory.json refreshed):
python3 scripts/lib/non_blockchain_vm_routing_matrix.py generate \
--inventory reports/status/live_inventory.json \
--exclusions config/gitea-phoenix/besu-vmid-exclusions.v1.json \
--out config/gitea-phoenix/non-blockchain-vm-routing-matrix.v1.json
Then hand-fill gitea_repos, deploy_target, workflow_glob, and health_url for Phoenix-backed services; use allowed_missing only with an explicit reason for intentional gaps. When 7804 portal list changes, update gov-portals-runtime.v1.json in the same change set.
Validate (inventory + parity gates)
bash scripts/verify/validate-vm-routing-parity.sh
Subcommands (see scripts/lib/non_blockchain_vm_routing_matrix.py):
validate— inventory closure vs matrixparity-deploy-targets— each Phoenix deploy target’srepoappears on the matrix row for its VMID (health URL match for single-repo rows)parity-operational-template— IPv4 alignment vsconfig/proxmox-operational-template.json(hostname drift warns only; NPMplus 10233 dual-homed.166/.167documented)parity-gov-portals-runtime— matrix 7804gitea_reposequals runtime portal list
Gov portal workflow dedupe
Canonical doc: ../gitea-workflow-templates/PORTAL_WORKFLOW_PARITY.md. Optional drift check when the monorepo clone exists:
bash scripts/verify/check-gov-portal-workflow-canonical-strings.sh
# or: GOV_PORTALS_MONOREPO_ROOT=/path/to/gov-portals-monorepo bash ...
Task narrative: docs/04-configuration/GITEA_PHOENIX_NON_BLOCKCHAIN_VM_ROUTING_CLEANUP_TASK.md.