Decision: ratify MR-16 and add MR-17 to META-RULES.md
date: 2026-05-13 status: accepted title: Ratify MR-16 (catalogue realism) and add MR-17 (playbook physically present) supersedes: [] outranks:
- docs/north-star/intent.md
Decision: ratify MR-16 and add MR-17 to META-RULES.md
Section titled “Decision: ratify MR-16 and add MR-17 to META-RULES.md”Context
Section titled “Context”Two gaps surfaced between code state and meta-rules prose:
-
MR-16 has been live in code since Baseline v3 (
host/src/sources/audit.ts:auditMr16) but was never written intocore/templates/META-RULES.md. The audit fetches the eva-hq prompt catalogue at run-time and verifies everykind: verb-wrapperprompt names a verb that exists inpetrova-codes/spec/verbs/. The prose entry needs to catch up with the implementation. -
MR-17 is new. On 2026-05-13 an operator ran
petrova-bootstrapagainstasgard-codes(a registered but bare-bones consumer). The EVA harness served the prompt with its{{meta_rules_path}}/{{mr_preamble_path}}/{{progress_signal_path}}/{{petrova_body_path}}references unresolved, because those files don’t exist in a fresh consumer repo. This surfaced a missing Step 0 in the bare-bones-to-baselined journey: the playbook must be physically deposited in the consumer before any bootstrap prompt can resolve its references.
The petrova_install_playbook verb (petrova-codes#86, merged 2026-05-13) closes the mechanical gap. MR-17 codifies the audit signal that goes with it: if a consumer at role: production or experimental lacks .petrova/playbook/META-RULES.md, the install verb hasn’t run and Step 0 of the journey is incomplete.
Decision
Section titled “Decision”Add two meta-rules to core/templates/META-RULES.md, bumping version 1.1 → 1.2:
- MR-16 — The catalogue is realistic. Every prompt in
eva-hq/prompts/markedkind: verb-wrappermust name averb:that exists inpetrova-codes/spec/verbs/*.schema.json. Verbs without a wrapper prompt are softer drift (warn). Wrappers pointing at phantom verbs arefail. (Codifies live behaviour, no new code.) - MR-17 — The playbook is physically present. A consumer repo at
role: productionorexperimentalmust carry.petrova/playbook/META-RULES.md(and the rest of the playbook deposit) under its default branch. Enforced byauditMr17inhost/src/sources/audit.ts. Skip for non-product roles.
Consequences
Section titled “Consequences”- META-RULES.md version bumps 1.1 → 1.2 with changelog entry.
auditMr17lands in petrova-codes (paired PR).- The
/console/governancegrid gains two new columns. MR-16 already has data (it’s been computing in the background); MR-17 will populate on the next sweep after deploy. - Baseline v4 declaration requires
MR-1 … MR-17allpass/skip(no fails). The 3 currently-product-role repos (petrova-codes,eva-hq,traceo-mcp-server) will fail MR-17 on first audit until the install verb runs against each. - The handbook at
~/Documents/base-vault/handbooks/eva-petrova-handbook.mdalready lists MR-17 — this ADR is what makes it real in the canonical playbook.
Alternatives considered
Section titled “Alternatives considered”- Inline MR-16 as MR-1 sub-clause (rejected: catalogue-realism is a distinct concern from the rank-graph DAG; cross-references would be lossy).
- Treat install-playbook as MR-14’s concern (rejected: MR-14 is “onboarding-complete” —
.petrova/contract.yamlexists. The playbook is a strictly earlier signal; collapsing them hides the Step 0 vs. Step 4 distinction the journey makes load-bearing). - Defer MR-17 to a later baseline (rejected: the install-playbook verb shipped today and MR-17 is its audit counterpart; shipping the verb without the rule means the audit is silent on the very gap that motivated the verb).
References
Section titled “References”- Verb implementation:
cli/src/verbs/petrova_install_playbook.ts(petrova-codes#86) - Audit implementation:
host/src/sources/audit.ts:auditMr17(paired PR) - Baseline v3 ADR:
docs/decisions/2026-05-13-petrova-baseline-v3.md - Handbook:
~/Documents/base-vault/handbooks/eva-petrova-handbook.md(sections 1, 3, 5) - Original incident: operator ran
petrova-bootstrapagainstasgard-codes, harness served raw{{...}}placeholders (2026-05-13 session log)