2026-05-08 — Onboard smo1-io (meta + 8 sub-repos) to the petrova line
Status: proposed (this PR)
Author: alex@devarno.com (operator), bootstrapped via Claude Code
Decides for: petrova-hq registry; smo1-io family governance posture
Plan reference: smo1-io operator’s plug-into-the-eva-resilient-pike plan, Phase C
Context
Section titled “Context”smo1-io is a link-shortener SaaS platform with a personality layer
(pawprintz / treatz / niblz scoring; six-status link taxonomy; Airlock
OIDC; ≤100ms p99 redirect at the edge). The org hosts a meta-repo
plus eight sub-repos, all bootstrapped on 2026-04-28 with
petrova-shaped scaffolding (north-star, decisions/, MILESTONES,
AGENTS.xml, META-RULES) but never enrolled in the petrova
registry — no governance loop, no MR-audit, no drift-check, no
integration with the broader devarno-cloud control plane.
EVA published eva.consumption.v1 as a ratified contract on
2026-05-08 (eva-hq decision + petrova-hq PR #29 schema swap). That
unblocked smo1-io as the first new consumer to onboard against the
v1 contract — sub-repos can now declare real integration_eva
blocks instead of falling back to legacy not_applicable.
This onboarding lands the smo1-io family in registry.yaml so the
petrova CLI / aggregator / dashboard can govern it uniformly. The
nine consumer-side .petrova/contract.yaml + profile.yaml files
have already been written and schema-validated (Phase A + B of the
plan); their contract_sha values are pinned in the registry
entries below.
Decision
Section titled “Decision”Add nine entries to petrova-hq/registry.yaml:
| Slug | Role | Profile | Rationale |
|---|---|---|---|
smo1-io | control-plane | strict | Meta-repo. All integrations NA at this tier. Mirrors petrova-hq / eva-hq / rocky-hq / skyflow-hq posture. |
smo1-io-purr-api | production | standard | Go API. Source of truth for scoring (I-4). Coverage ≥70%. |
smo1-io-meow-web | production | standard | Next.js dashboard. Airlock OIDC client. Six-status taxonomy display. |
smo1-io-whiskers-landing | production | standard | Marketing site. Coverage ≥60%. |
smo1-io-zoomies-edge | production | strict | Cloudflare Worker. Carries flagship latency invariant I-2 (≤100ms p99). Strict because edge regressions are production-impacting and irreversible. |
smo1-io-catnip-packages | production | standard | Shared TS packages. Coverage ≥75%. |
smo1-io-litter-box | production | permissive | Local dev infra. All integrations NA. Permissive because no production traffic and no track record needed. |
smo1-io-terraform-infrastructure | production | strict | IaC. Strict because terraform applies are irreversible. |
smo1-io-service-template | scaffold | permissive | Go microservice cookie-cutter. All integrations NA. |
fleets_allowed: [] for all nine — no agent-fleet automation against
smo1-io repos at onboarding time. Verbs requiring a fleet identity
(request_merge_when_green) will be refused; open_decision /
verify_round / request_review remain available for human-fleet
invocation.
integrations_applicability per the table in registry.yaml. EVA is
required for the 6 sub-repos that ship code or IaC affecting
production (purr-api, meow-web, whiskers-landing, zoomies-edge,
catnip-packages, terraform-infrastructure); not_applicable for
meta + litter-box + service-template. EVA status in each
contract.yaml is currently pending — it flips to wired in Phase D
of the smo1-io plan, after evidence pointers (events workflow,
prompts manifest) land and verify_round passes.
contract_sha values pinned (12-char git hash-object prefix):
| Slug | contract_sha |
|---|---|
smo1-io | f09488e48743 |
smo1-io-purr-api | 5f93ec0c471a |
smo1-io-meow-web | e6c1ebef3784 |
smo1-io-whiskers-landing | c001176a2a23 |
smo1-io-zoomies-edge | 3ea6ceb58897 |
smo1-io-catnip-packages | 7c7792e7c75d |
smo1-io-litter-box | 85ea23638234 |
smo1-io-terraform-infrastructure | 1d2d81c3dfb8 |
smo1-io-service-template | 847f0bdc0715 |
Bump updated: to keep 2026-05-08 (same date as skyflow onboarding
earlier today; comment updated to mention both).
Consequences
Section titled “Consequences”- The petrova CLI (
petrova status,petrova diagnose <slug>,petrova validate <repo>) resolves smo1-io family entries once this PR merges. Currentlypetrova validateerrors withREPO_NOT_IN_REGISTRYon all nine — that is the trigger. - Phase D of the smo1-io plan (EVA wiring) becomes executable after
merge:
eva-emitcomposite action wires per repo,prompts/catalog seeds for purr-api + meow-web, thenverify_roundflips EVA surfaces frompendingtowired. - Phase E of the plan (V1-ALPHA delivery: 8 dev phases mapped to
MILESTONES.mdM1.1..M5.x) becomes petrova-managed phases — each getsstart_phase/close_phase/verify_rounddecisions and EVA run events automatically once Phase D wiring lands. - AGENTS.xml gap on 8 of 9 sub-repos (only the meta-repo has one) is
surfaced in each sub-repo’s bootstrap decision doc as a follow-up.
Sub-repo AGENTS.xml is not strictly required pre-Phase-D but should
exist before
verify_roundcan pass. - terraform-infrastructure was sparse at onboarding (no north-star, no MILESTONES) — its bootstrap decision tracks the scaffolding gap.
Validation
Section titled “Validation”cd ~/code/workspace/petrova-hq/cli && node --input-type=module -e "import {Ajv2020} from 'ajv/dist/2020.js';import addFormats from 'ajv-formats';import fs from 'fs'; import yaml from 'js-yaml';const s = JSON.parse(fs.readFileSync('../registry.schema.json','utf8'));const ajv = new Ajv2020({strict:false, allErrors:true});addFormats.default(ajv);const v = ajv.compile(s);const d = yaml.load(fs.readFileSync('../registry.yaml','utf8'));console.log(v(d) ? 'VALID' : JSON.stringify(v.errors,null,2));"Result: VALID.
Per-repo contract validation evidence lives in each sub-repo’s
docs/decisions/2026-05-08-petrova-bootstrap.md.
Out of scope
Section titled “Out of scope”- Changes to
~/code/workspace/devarno-cloud/airlock(operator-only). - Schema edits to
petrova-hqoreva-hq. - EVA wiring (Phase D of the smo1-io plan; runs after this PR merges).
- Lowering coverage thresholds in any smo1-io repo.
Supersedes
Section titled “Supersedes”None.