Skip to content

ROCKY ownership transfer (LORE+CAIRNET) and EVA introduction

Date: 2026-05-06 Status: closed Supersedes: docs/decisions/2026-05-01-lore-cairnet-wire-adoption.md Superseded-by: none — current

Sub-project E (merged 2026-05-01, commits 7965b0832c15a0) ratified applicability of a single bundled lore_cairnet integration across the seven governed repos and shipped a CLI probe + diagnostic verb, decision doc, runbook, and prompt (core/prompts/09-lore-cairnet-wire.md). The implementation was sound; the ownership model was not.

Effective 2026-05-06, the LORE+CAIRNET service bundle moves under a new top-level repo, rocky-hq, which owns the bundle as a single unit (LORE collections + CAIRNET agent emissions). Concurrently, a new sibling repo, eva-hq, joins the petrova line — both as a governed repo itself and as a new integration surface that other repos may consume in future.

This decision realigns the registry, schemas, CLI, and operator prompts with the new ownership and adds EVA as a first-class but-provisional integration. The strategic layer vocabulary is unchanged: AIRLOCK remains the auth layer, PEBBLE remains the MCP layer (handoffs to Traceo + SMO1), ARES remains the CI/CD layer.

  1. Rename lore_cairnetrocky wherever the integration name appears as an identifier (registry schema enum, contract schema enum, state schema enum, applicability blocks, CLI types/probe/verb names, tests, fixtures). Endpoints are unchanged — Pebble continues to front the LORE+CAIRNET service bundle. The rename signals ownership, not migration. Historical observations in state/<slug>.yaml/probe_history remain under their original lore_cairnet integration name; the state.schema.json probe_history.integration enum retains lore_cairnet as a legacy value for read-back compatibility.
  2. Introduce eva as a fifth integration key alongside ares, traceo, crumb, rocky. Its evidence shape is provisional (eva_service_id, optional eva_endpoint, registered_at) and will tighten in a subsequent decision once eva-hq publishes its consumption surface. Default applicability across existing repos is not_applicable until that surface is published; operators flip per repo as adoption proceeds.
  3. Add rocky-hq and eva-hq as governed repos in registry.yaml. Both declare <self>:not_applicable (a repo does not consume itself via the spine), with eva-hq flagged role=scaffold, profile=permissive until first decision-doc supersession (mirrors the traceo-mcp-server onboarding pattern).
  4. Preserve historical record (MR-7): the prior decision doc 2026-05-01-lore-cairnet-wire-adoption.md and its sibling runbook lore-cairnet-wire-rollout.md are left byte-identical. This document supersedes them.
  5. Submodule update: core/prompts/09-lore-cairnet-wire.md is renamed to 09-rocky-wire.md; a placeholder 10-eva-wire.md is added. Bumped via separate submodule commit per CLAUDE.md discipline.
  • Add an owner: metadata field per integration, keep lore_cairnet as the key — would future-proof for additional ownership transfers but introduces governance complexity for a single transfer. Rejected on YAGNI grounds; if a second transfer occurs, this decision can be revisited and the indirection added then.
  • Drop lore_cairnet outright; treat ROCKY as a fresh integration — cleaner schema diff but discards the sub-project E wire-up work (probe logic, evidence shape, applicability ratifications). The in-place rename preserves all of it 1:1.
  • Treat EVA as a governed repo only, no integration key — defers the schema change but means consumers cannot declare intent against EVA without a follow-up migration. Rejected: cheaper to add the provisional key now.

For code:

  • registry.schema.json enum: lore_cairnet removed, rocky + eva added.
  • contracts/contract.schema.json: integration_lore_cairnetintegration_rocky; new integration_eva (provisional shape).
  • contracts/state.schema.json: last_verified_at and current_status require rocky + eva; probe_history.integration enum retains lore_cairnet as legacy.
  • cli/src/probes/lore_cairnet.tscli/src/probes/rocky.ts; new stub cli/src/probes/eva.ts.
  • cli/src/verbs/lore_cairnet_status.tscli/src/verbs/rocky_status.ts; new stub cli/src/verbs/eva_status.ts.
  • CLI verb petrova lore-cairnet-statuspetrova rocky-status; new petrova eva-status (returns not_implemented).
  • Tests + fixtures renamed; eva blocks added.

For docs:

  • This decision doc supersedes 2026-05-01-lore-cairnet-wire-adoption.md.
  • New runbook docs/runbooks/rocky-eva-wire-rollout.md.
  • README integration vocabulary updated.

For in-flight phases:

  • Sub-project E rollout (Phase 1 serial: grace-hq → kahn-hq; Phase 2 pipelined: choco, stratt, devarno-cloud) continues under the new rocky name; per-repo decision docs and contract flips reference this doc going forward.

For invariants:

  • MR-7 upheld: prior decision doc and runbook untouched.
  • MR-3 upheld: new runbook is sibling to the prior, not a replacement.
  • MR-4 upheld: ISO date 2026-05-06.
  • MR-12 upheld: no template change in core/templates/ (rocky/eva are parent-registry concerns, not consumer template defaults).
  • No new MR proposed.
  • Sub-project E merge: commit 32c15a0 (PR #14, 2026-05-01).
  • Prior decision: docs/decisions/2026-05-01-lore-cairnet-wire-adoption.md.
  • Prior runbook: docs/runbooks/lore-cairnet-wire-rollout.md.
  • Layer invariants context: core/templates/META-RULES.md, 00-bootstrap.md.
  • Note: the string rocky previously appeared in registry.yaml notes for devarno-cloud (referencing the rocky/kalex external-gitignore directory, decision 0002-unclassified-dirs-disposition.md upstream). That usage is unrelated to this rocky-hq repo; flag for cleanup if it becomes ambiguous.
  • Subagent: petrova-control-plane (planning + edits, 2026-05-06)
  • Human: pending