Skip to content

integration spine rollout

Spec: docs/superpowers/specs/2026-04-30-petrova-integration-spine-design.md Plan: 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.

  1. petrova-codes (this repo) — ships extended dashboard JSON. The new integrations field is populated for petrova-codes self-entry, undefined for the other 6 repos until they migrate.

  2. devarno-cloud/hubble — extend src/lib/petrova/snapshot-schema.ts: add IntegrationCellSchema and integrations: z.object({…}).optional() on StatusRowSchema. Verify against petrova-codes/contracts/fixtures/ snapshot-with-integrations.json in a new contract test.

  3. devarno-cloud/family-hub — extend src/lib/petrova/snapshot.ts identically. Update src/app/dashboard/petrova/page.tsx to render four dots per row when row.integrations is present, four greyed dots when absent.

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.

  • Step 3 rollback: revert family-hub schema change. The .optional() field means a snapshot containing integrations parses 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 (kahn-hq, stratt-hq) is one PR per repo:

  1. Operator runs petrova bootstrap --resume --phase 6 against the consumer repo working tree.
  2. Phase 6 produces <consumer>/.petrova/contract.yaml.
  3. Operator opens a PR on the consumer repo for the new file.
  4. After merge, operator computes sha256sum .petrova/contract.yaml | cut -c1-12 and opens a PR against petrova-codes/registry.yaml populating contract_sha and integrations_applicability for that slug.
  5. 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.