Skip to content

Decision: adopt CRUMB wiring + ratify applicability for 2 repos (conservative)


date: 2026-05-01 status: proposed title: Adopt CRUMB wiring as a PETROVA artefact and ratify governance applicability (conservative) supersedes: []

Section titled “date: 2026-05-01 status: proposed title: Adopt CRUMB wiring as a PETROVA artefact and ratify governance applicability (conservative) supersedes: []”

Decision: adopt CRUMB wiring + ratify applicability for 2 repos (conservative)

Section titled “Decision: adopt CRUMB wiring + ratify applicability for 2 repos (conservative)”

Sub-project A (PR #8) reserved the crumb slot and shipped a stub. Sub-projects B (PRs #9, #10) and C (PR #12) ratified the four-block pattern: real probe + reusable validator verb + adoption prompt + applicability runbook. Sub-project D applies the same pattern to CRUMB. Spec at docs/superpowers/specs/2026-05-01-petrova-crumb-spec.md.

CRUMB state (per spec §1.3): public Astro/Starlight site at https://github.com/devarno-cloud/crumb with ~150 cards under src/content/cards/<id>.md (flat namespace; <project>-<NNN>[-<slug>] ID prefixes). 18-field Zod-validated frontmatter. No HTTP API; probe uses gh api (mirror ARES).

Per spec §1.2, conservative applicability:

Slugcrumb
petrova-hqnot_applicable (canary)
traceo-mcp-servernot_applicable (build infra)
kahn-hqnot_applicable, review_by 2026-08-01
stratt-hqrequired (10 stratt-* cards exist)
choco-hqnot_applicable, review_by 2026-08-01
devarno-cloudnot_applicable, review_by 2026-08-01
grace-hqrequired (1 grace-* card exists)

Five things, atomically in this PR:

  1. Real crumb probe. cli/src/probes/crumb.ts is replaced with a read-only probe that shells out to gh api repos/devarno-cloud/crumb/git/trees/HEAD?recursive=true + gh api repos/.../commits?path=src/content/cards. Three checks (tree+match, count, freshness); four outcomes. Read-only per MR-13/14.

  2. New CLI verb petrova crumb-validate <glob>. Backed by a vendored AJV JSON Schema at cli/src/schemas/crumb-flashcard.schema.json (hand-translated from CRUMB’s Zod). Reused by both probe and consumer-repo CI when CRUMB grows a workflow.

  3. Schema downgrade. content_path from per-slug-directory regex ^src/content/cards/.+/$ to glob ^src/content/cards/.+\\.md$. New optional project_prefix evidence field. Justified by spec §D-4 (operational reality over aspirational shape — same pattern as sub-project C’s ariel:// downgrade).

  4. Adopt core/prompts/08-crumb-wire.md. Phase 0 preflight + 6 gated phases (audit, schema check, author cards, local validate, cross-repo gate, contract flip). Mirrors 06-ares-wire.md and 07-traceo-wire.md patterns.

  5. Governance applicability. Conservative — only repos with cards today are required (stratt-hq, grace-hq). The 3 production/experimental repos with no cards (kahn-hq, choco-hq, devarno-cloud) are not_applicable with review_by 2026-08-01 (re-ratified via separate dated decision doc when cards exist). Canary + build-infra repos stay not_applicable permanently.

The 2 actual wirings (per-slug card authoring + consumer-repo decision docs) are NOT performed by this PR. Each is a separate operator-driven event sequenced per docs/runbooks/crumb-wire-rollout.md.

  • Per-slug subdirectories in CRUMB. Reorganise devarno-cloud/crumb:src/content/cards/ into <slug>/<id>.md. Rejected: mutates a 150-card downstream repo for petrova’s convenience; CRUMB’s existing flat-namespace + ID-prefix convention is load-bearing in flashcardSchema.id. Schema downgrade is the right move.
  • Aggressive applicability (5 required like sub-project C). Rejected: CRUMB cards are a content product, not a property of every governed repo. Declaring kahn-hq/choco-hq/devarno-cloud required when they have zero cards would set up pending → unreachable probe noise on the dashboard for months. Conservative + review_by 2026-08-01 is operationally honest.
  • Bundle the 2 wirings into this PR. Rejected: same logic as B and C — single merge would mutate cross-org production state (CRUMB-side card PRs across the fleet). MR-7 says wirings are operator-gated.

For code:

  • crumbProbe becomes load-bearing; petrova doctor --slug=stratt-hq and --slug=grace-hq report based on real CRUMB state.
  • The probe shells out to gh api via existing ProbeContext.gh plumbing (no new HTTP runner needed for crumb).
  • The vendored schema’s _source.upstream_commit field is checked against CRUMB’s HEAD on schema-bump decision docs.

For docs:

  • New: core/prompts/08-crumb-wire.md (in the core/prompts submodule).
  • New: docs/runbooks/crumb-wire-rollout.md.
  • New: docs/superpowers/specs/2026-05-01-petrova-crumb-spec.md.
  • New: docs/superpowers/plans/2026-05-01-petrova-crumb-plan.md.

For invariants:

  • No new MRs. MR-12 (CLAUDE.md as projection) is reinforced by the vendored schema’s _source provenance pattern.
  • _source block in vendored schemas is a new convention — documented inline; future schema syncs follow the same pattern.
  • Spec: docs/superpowers/specs/2026-05-01-petrova-crumb-spec.md
  • Plan: docs/superpowers/plans/2026-05-01-petrova-crumb-plan.md
  • Runbook: docs/runbooks/crumb-wire-rollout.md
  • Sub-project C decision: docs/decisions/2026-05-01-traceo-wire-adoption.md
  • Sub-project B decision: docs/decisions/2026-05-01-ares-wire-adoption.md
  • CRUMB upstream: https://github.com/devarno-cloud/crumb

Tick all four boxes before flipping status: proposed → status: ratified and merging:

  • §1.2 of the spec: confirm the 7-row applicability table (2 required + 5 not_applicable; 3 carry implicit review_by 2026-08-01 documented in registry notes).
  • cli/src/schemas/crumb-flashcard.schema.json._source.upstream_commit matches a current commit on devarno-cloud/crumb:main.
  • core/prompts/08-crumb-wire.md: confirm no operator-private content; placeholder tokens only.
  • docs/runbooks/crumb-wire-rollout.md: accept the wave ordering (grace-hq first, stratt-hq second; gate review after).
  • Subagent: writing-plans (sub-project D implementer)
  • Human: <> (<>)