2026-07-29 — Register consumer bhava-blue
rank: decision outranks: []
Section titled “rank: decision outranks: []”2026-07-29 — Register consumer bhava-blue
Section titled “2026-07-29 — Register consumer bhava-blue”Date: 2026-07-29 Status: proposed (awaiting human merge) Verb: none — hand-authored PR (see “Why not a verb” below) Slug: bhava-blue MR-compliance: MR-4, MR-7, MR-12, MR-17
Rationale
Section titled “Rationale”Registering bhava-blue/bhava-blue as petrova consumer bhava-blue — bhava-apex,
a private single-user practice tool (bhavana.blue apex + practice directory,
sati practice log, anicca reflection, bhava.blue redirect-only guardian).
The consumer side of the onboard is already on bhava-blue/bhava-blue@main
(commit 0a1271b): .petrova/contract.yaml, the six-file .petrova/playbook/
deposit (MR-17), and docs/decisions/2026-07-29-petrova-onboard.md. This
registry entry is the last step; until it merges, every petrova-act verb
against the slug fails REPO_NOT_IN_REGISTRY.
Source contract SHA: 5d6c7589ab8e49f81723b8cb8ae2abab4bde6ede
(shortened to 5d6c7589ab8e in registry) — git-blob-sha1 per
docs/decisions/2026-05-24-contract-sha-hash-method-fix-hermes.md, not
petrova doctor’s sha256.
Default branch: main.
The contract was validated against contracts/contract.schema.json before this
PR was composed; the post-mutation registry was validated against
registry.schema.json by addRepoEntry (the same code path
petrova_act_register_consumer uses), so the entry’s key order and field set
match what the verb would have produced.
Why the values are what they are
Section titled “Why the values are what they are”role: experimental— bhava-blue is a walking skeleton: three apps scaffolded, stub auth, sentinel DID, nothing deployed. Notscaffold(the bootstrap is done, code exists, contract tests run green), notproduction(nothing ships). Promotion is a laterrequest_review.profile: standard— the onboard prompt’s rule isstrictwhen branch protection carries required reviewers,standardfor a CI check alone,permissivefor neither.gh api repos/bhava-blue/bhava-blue/branches/main/protectionreturns HTTP 403 (“Upgrade to GitHub Pro or make this repository public”): private repo on a Free plan, so protection is unavailable, not merely unset. What does exist is.github/workflows/ci.ymlrunning on every push and PR.standardis the honest reading;strictwould encode a reviewer requirement the substrate cannot enforce.fleets_allowed: []— no fleet is wired. Humans andsystem:actors only, per the prompt’s “empty is safer than permissive” default.- all five integrations
not_applicable, review_by 2026-10-29 — the consumer’s north star forbids practice data leaving the system (itsTC-WELL-3/I-4), and every PETROVA integration is an egress or cross-project-ingestion surface. Recorded with reasons and a review date in the consumer’s.petrova/contract.yaml, not asserted here.
Why not a verb
Section titled “Why not a verb”petrova request_review petrova-codes --input … was run first, per
core/playbook/prompts/05-petrova-onboard.md Phase 5. Verbatim output:
request_review → failed 5e5629ac8ff4 ✗ FLEETS_ALLOWED_EMPTY petrova-codes has fleets_allowed:[] — no agent automation permitted. Set PETROVA_ALLOW_HUMAN_OVERRIDE=1 to override as human:<email>.That refusal is the control plane working as designed: petrova-codes is
profile: strict with fleets_allowed: [], so agent automation cannot write
to it. Rather than set the override, this PR takes the plain human route —
branch, commit, gh pr create — which is the same outcome the verb would have
reached (a PR awaiting human merge) without weakening the firewall.
petrova_act_register_consumer was also unsuitable independently: it hardcodes
role: "scaffold", and this repo is experimental.
Precedent for hand-authoring a registry PR with an ADR as the MR-7 paper
trail: docs/decisions/2026-05-24-contract-sha-hash-method-fix-hermes.md.
Change summary
Section titled “Change summary”registry.yaml > repos[bhava-blue] after this change:
- slug: bhava-blue url: https://github.com/bhava-blue/bhava-blue default_branch: main role: experimental profile: standard fleets_allowed: [] added: '2026-07-29' contract_sha: 5d6c7589ab8e integrations_applicability: ares: not_applicable traceo: not_applicable crumb: not_applicable rocky: not_applicable eva: not_applicable contract_committers: - humans notes: |- …see registry.yaml for the full note…No existing entry is modified. The diff is a 38-line append.
Consequences
Section titled “Consequences”petrova statuslistsbhava-blue;petrova diagnose/validateresolve it.sweep-statebegins tracking the slug and will comparecontract_shaagainst the live blob — a consumer-side contract edit without a matching registry bump surfaces ascontract_drift.- The consumer’s
M1.6milestone staysopenuntil this merges.
Sign-off
Section titled “Sign-off”Human merge required per MR-12 (control-plane firewall). No auto-merge.
- subagent: claude-opus-5 (bhava-blue task-9 implementer)
- human: alex@devarno.com