Integration Wire Prompts: ARES, Traceo, CRUMB, Rocky, Eva
petrova intermediate 9 min read
ELI5
Five plug-shaped prompts. Each one walks an agent through plugging a single consumer repo into one shared service (CI dashboard, traceability, flashcards, knowledge graph, prompt catalog). They all start the same way (ask Petrova “is this already plugged in?”) and end the same way (flip the consumer’s .petrova/contract.yaml to wired with evidence).
Technical Deep Dive
The five prompts and their target surfaces
core/prompts/06-ares-wire.md … 10-eva-wire.md are the integration wire-up missions. Each is paste-into-Claude-Code at the consumer repo’s root (not petrova-hq). They share a uniform shape: Phase 0 preflight → numbered tasksets gated by explicit GO TASKSET N operator authorisation → contract flip on the consumer side.
flowchart TD consumer["consumer repo<br/>(.petrova/contract.yaml)"] --> wire{"which surface?"} wire -->|CI rows| ares["06-ares-wire.md<br/>cicd.devarno.cloud"] wire -->|VTM + mermaid| traceo["07-traceo-wire.md<br/>Traceo + Ariel"] wire -->|knowledge cards| crumb["08-crumb-wire.md<br/>CRUMB content/cards/"] wire -->|LORE+CAIRNET| rocky["09-rocky-wire.md<br/>Pebble gateway"] wire -->|prompt catalog| eva["10-eva-wire.md<br/>placeholder, surface pending"] ares --> flip["contract flip:<br/>integrations.<surface>.status = wired"] traceo --> flip crumb --> flip rocky --> flip eva -.placeholder.-> notapp["integrations_applicability.eva = not_applicable"]Uniform taskset ladder
Every non-placeholder wire prompt declares a Taskset 0 — Petrova-aware preflight that runs unconditionally and then halts at every subsequent taskset for explicit GO TASKSET N. The shared shape:
| Taskset | Verb | Side effect |
|---|---|---|
| 0 | petrova doctor --slug=$SLUG | Read-only. If <surface>.current_status == ok AND contract reads status: wired, the mission is a no-op exit. If the slug is missing from registry.yaml route to 05-petrova-onboard.md. If integrations_applicability.<surface> is not required, halt and ask. |
| 1 | Audit (read-only) | Emit docs/findings/<YYYYMMDD-HHMM>-<surface>-wire-audit.md. Flag default-branch surprises, existing partial wiring, secret catalog. |
| 2..N-2 | Mission-specific | ARES: ecosystem registration → CI hubble-notify → org webhook (high-risk gate) → smoke. Traceo: Ariel install → baseline registration → VTM authoring → CI mermaid validation. CRUMB: schema check → author cards → local validate → cross-repo gate. Rocky: token verify → register LORE collection → register CAIRNET agent → cross-repo emission gate. |
| N-1 | Cross-repo / smoke | Wait for the first observable artefact (CI run row, baseline VTM, card render, LORE emission). |
| N | Contract flip | Consumer-side PR setting .petrova/contract.yaml.integrations.<surface>.status: wired with the surface’s required evidence fields populated. |
Phase 0 preflight is the load-bearing handshake
sequenceDiagram autonumber participant Op as Operator participant Agent as Wire Agent participant Petrova as petrova-hq (registry+state) participant Consumer as consumer .petrova/contract.yaml Op->>Agent: paste prompt 06..10 Agent->>Consumer: read SLUG from contract.yaml Agent->>Petrova: petrova doctor --slug=$SLUG Petrova-->>Agent: state/<slug>.yaml current_status + applicability alt already wired (status==ok && contract.wired) Agent-->>Op: no-op exit else slug not in registry Agent-->>Op: halt, route to 05-petrova-onboard.md else applicability != required Agent-->>Op: halt, ask whether registry should be updated else Agent->>Op: emit taskset ladder, await GO TASKSET 1 endPer-surface evidence shape
The contract-flip taskset writes integration-specific evidence into .petrova/contract.yaml.integrations.<surface>.evidence. The shapes are pinned in petrova-hq/contracts/bootstrap-questions.yaml (generated from contract.schema.json per MR-15):
- ares.evidence —
org_or_repo_scope(required enum), optionalorg_webhook_id,ingest_endpoint,branches_aggregated[]. - traceo.evidence —
baseline_id(required),vtm_path(required), optionaltraceo_endpoint,mermaid_validated*. - crumb.evidence —
content_path(required),card_count(required), optionalproject_prefix,last_generated_at,generator_id. - rocky.evidence —
lore_collection_slug(required),cairnet_agent_id(required), optional Pebble endpoint + emission budgets. - eva.evidence —
eva_service_id(required) — provisional shape, pending sub-project G.2 ratification.
EVA is a placeholder
10-eva-wire.md is a 29-line skeleton. eva-hq has not yet published its consumption surface (eva_service_id allocation, endpoint shape, evidence schema). Until then, every consumer declares eva: not_applicable in integrations_applicability; running the prompt is forbidden. The skeleton names the gap explicitly: “if a repo lists eva: required, that is a bug — file a finding and revert”.
Cross-fleet hygiene
All wire prompts share invariants: never echo secrets (pipe Railway vars into gh api in a single shell expression, mask with -f config[secret]="$VAR"); never push to main (every change lands via PR); idempotent re-runs (registry + webhook state checked before re-creating); discoverable rollback tags (Railway env vars prefixed by surface; webhooks carry (managed-by: <SURFACE>-WIRE v2.0-petrova) in the description).
Key Terms
- Taskset 0 / Petrova-aware preflight — gate-free read-only handshake that decides no-op / halt / proceed before any taskset lock-in.
- Contract flip — the final taskset’s consumer-side PR that sets
.integrations.<surface>.status: wiredwith evidence fields, the moment the nextpetrova doctorsweep observes the wiring. - integrations_applicability — per-repo declaration in
registry.yaml(required/not_applicable/ etc.) that gates whether the wire prompt is allowed to run for that repo at all. - Airlock constraint — the secret-hygiene rule: secrets pipe from source to sink in one shell expression, never echoed to a transcript, never committed.
Q&A
Q: What is the canonical first taskset every wire prompt runs, and why is it gate-free?
A: Taskset 0 (Petrova-aware preflight) runs unconditionally without GO TASKSET 0 because it is read-only — petrova doctor --slug=$SLUG plus a registry.yaml lookup. Its job is to prevent gated work: if the surface is already wired, the mission exits as a no-op; if the slug is missing or applicability is not required, the agent halts and asks the operator before any state mutation.
Q: Which wire-up prompt is currently a placeholder and what flag must consumer contracts carry until it is filled in?
A: 10-eva-wire.md is a 29-line skeleton (eva-hq surface still pending sub-project G.2 ratification). Until it ships, every consumer’s integrations_applicability.eva must be not_applicable; declaring required is explicitly called out as a bug to file as a finding.
Q: What contract field flips at the final taskset of every wire prompt, and what evidence-shape does each integration require?
A: The final taskset opens a consumer-side PR setting .petrova/contract.yaml.integrations.<surface>.status: wired with surface-specific evidence: org_or_repo_scope for ares; baseline_id + vtm_path for traceo; content_path + card_count for crumb; lore_collection_slug + cairnet_agent_id for rocky; eva_service_id (provisional) for eva. The schema is enforced by contract.schema.json and exposed as bootstrap questions per MR-15.
Examples
A repo traceo-cat declares traceo: required in integrations_applicability. The operator opens it in Claude Code and pastes core/prompts/07-traceo-wire.md. Phase 0 calls petrova doctor --slug=traceo-cat — current state shows traceo: pending. The agent emits the audit, awaits GO TASKSET 2, installs Ariel, registers a baseline (gated authorisation), authors the VTM, wires CI mermaid validation, runs end-to-end smoke, and finally opens a PR setting .petrova/contract.yaml.integrations.traceo.status: wired with baseline_id, vtm_path, and mermaid_validated: true. The next 07:00 UTC fleet-snapshot observes traceo: ok and the CASA dashboard’s traceo column lights green for traceo-cat.
neighbors on the map
- Prompt Artefact Directory Layout scaffolding a new prompt under prompts/
- Skill Export Pipeline exporting a ready prompt as an Anthropic skill
- NATS Subject Taxonomy wiring a new consumer to the right stream
- AuditTrail & Selective Disclosure implementing a compliance export that must only reveal disclosed audit entries
- Rocky Superproject Topology onboarding a new submodule into rocky-hq