Skip to content

2026-05-14 — META-RULES authoring migrates into eva-hq


2026-05-14 — META-RULES authoring migrates into eva-hq

Section titled “2026-05-14 — META-RULES authoring migrates into eva-hq”

Date: 2026-05-14 Status: ratified Supersedes: none Successor: none

META-RULES.md was authored in the petrova-codes/templates submodule and re-vendored manually into core/playbook/META-RULES.md here. The locked-strategy decision (2026-05-14 — prompt-service architecture) established that eva-hq authors, petrova.host serves, consumers carry only the boot kit. META-RULES was the last load-bearing content still authored outside eva-hq.

CLAUDE.md acknowledged the gap as an open follow-up; the manual re-vendor step had already caused two short-lived drift incidents between the templates-submodule copy and the in-tree mirror.

Move authoring of META-RULES.md into eva-hq/prompts/_shared/petrova/META-RULES.md. Extend the existing sync-playbook-from-eva.yml workflow to mirror it into core/playbook/META-RULES.md. Mark the core/templates/META-RULES.md copy as a backwards-compat downstream pointer, to be removed in templates@v2.0.

The migration plan is at docs/superpowers/specs/2026-05-14-meta-rules-migration-to-eva-hq-design.md.

Five-step plan executed 2026-05-14:

  1. eva-hq: eva-hq@838d1b5 added prompts/_shared/petrova/META-RULES.md byte-identical to the templates-submodule copy.
  2. petrova-codes: PR #108 extended sync-playbook-from-eva.yml to mirror META-RULES. Workflow ran clean; no drift PR opened because the eva-hq copy matched the existing in-tree vendoring.
  3. templates submodule: petrova-codes/templates#4 added a deprecation header at the top of META-RULES.md pointing at eva-hq. #5 updated shared/meta-rules.md similarly.
  4. petrova-codes: this PR — CLAUDE.md “Where the playbook actually lives” table updated; core/playbook/README.md source-of-truth paragraph updated; submodule pointer bumped from 48e9bfb to 2cd03c1; this decision doc.
  5. verification: bash scripts/check-meta-rules-mirror.sh returns MIRROR_CHECK: ok against the live tree.

For code: workflow mirror gains one file; submodule pointer bumps. No app code touched.

For docs: META-RULES editors update eva-hq going forward. The petrova-codes mirror is downstream; do not edit core/playbook/META-RULES.md directly — it will be overwritten on the next 6-hourly sync. The core/templates/META-RULES.md copy is downstream-of-downstream; same.

For invariants: strengthens MR-7 (decision docs append-only) by centralising the authoring source. Body of every MR-N is unchanged across the migration commit.

For consumers: petrova_install_playbook continues to read core/playbook/META-RULES.md; the file is byte-identical so installed playbooks pick up the new source on next install/refresh without behavior change.

  • Leave it where it is. Status quo. Rejected: the locked-strategy decision (2026-05-14) makes the templates-submodule home a known violation; deferring just accumulates corrections in CLAUDE.md.
  • Move all of core/templates/ into eva-hq. Bigger Project C item. Templates aren’t load-bearing the way META-RULES is; move them separately when the eva-hq prompt service matures.
  • Author in petrova-codes directly. Inverts the layering — the consumer (petrova-codes is the control plane consumer of eva-hq prompts) authoring source-of-truth is what we’re moving away from.
  • Plan: docs/superpowers/specs/2026-05-14-meta-rules-migration-to-eva-hq-design.md
  • Locked-strategy decision: CLAUDE.md § “Where the playbook actually lives — locked strategy”
  • Mirror verification script: scripts/check-meta-rules-mirror.sh
  • TASKSET 5b spec (where this work was listed as a Project C follow-up): docs/superpowers/specs/2026-05-14-taskset-5b-registry-write-verbs-design.md