integration spine rollout
Integration Spine Rollout Runbook
Section titled “Integration Spine Rollout Runbook”Spec:
docs/superpowers/specs/2026-04-30-petrova-integration-spine-design.mdPlan:docs/superpowers/plans/2026-04-30-petrova-integration-spine-plan.md
Sequencing across three repos (lockstep order)
Section titled “Sequencing across three repos (lockstep order)”The integrations: field in StatusRowSchema is optional to permit rolling
deployment. Order is load-bearing: reversing it breaks the live dashboard.
-
petrova-codes (this repo) — ships extended dashboard JSON. The new
integrationsfield is populated for petrova-codes self-entry, undefined for the other 6 repos until they migrate. -
devarno-cloud/hubble — extend
src/lib/petrova/snapshot-schema.ts: addIntegrationCellSchemaandintegrations: z.object({…}).optional()onStatusRowSchema. Verify againstpetrova-codes/contracts/fixtures/ snapshot-with-integrations.jsonin a new contract test. -
devarno-cloud/family-hub — extend
src/lib/petrova/snapshot.tsidentically. Updatesrc/app/dashboard/petrova/page.tsxto render four dots per row whenrow.integrationsis present, four greyed dots when absent.
Validation between hops
Section titled “Validation between hops”After step 2: hit the deployed hubble endpoint with the fixture; confirm
HTTP 200 and round-trip preservation of integrations.
After step 3: load https://casa.devarno.cloud/dashboard/petrova and confirm
petrova-codes row renders four n/a indicators.
Rollback
Section titled “Rollback”- Step 3 rollback: revert family-hub schema change. The
.optional()field means a snapshot containingintegrationsparses cleanly even after the revert; the field is just unused. - Step 2 rollback: same — hubble strict shape is reverted; petrova CLI continues emitting the field harmlessly.
- Step 1 rollback: revert this branch on petrova-codes.
Tier 2+ migration cadence
Section titled “Tier 2+ migration cadence”Tier 2 (kahn-hq, stratt-hq) is one PR per repo:
- Operator runs
petrova bootstrap --resume --phase 6against the consumer repo working tree. - Phase 6 produces
<consumer>/.petrova/contract.yaml. - Operator opens a PR on the consumer repo for the new file.
- After merge, operator computes
sha256sum .petrova/contract.yaml | cut -c1-12and opens a PR againstpetrova-codes/registry.yamlpopulatingcontract_shaandintegrations_applicabilityfor that slug. - Next fleet-snapshot cron picks up the new state automatically.
Do not proceed to Tier N+1 until Tier N’s CASA dots have been green for 7 days.