← Ledger

0002 — Rename SS-08 FLEET → HEARTH; commit Phase-3 RALPH to KAHN's transitions schema

Context

docs/decisions/0001-redesign-bootstrap.md and docs/specs/2026-05-02-rocky-system-redesign.md named Rocky's per-workspace CAIRNET+LORE provisioner subsystem SS-08 FLEET. A scan of ~/code/workspace/kahn-hq (KAHN — the operator's agent-fleet observability product) surfaced two collisions and one synergy:

  1. Namespace collision on "fleet". KAHN's PRODUCT.md declares it "an agent-fleet observability tool"; KAHN ships backend/kahn/fleet.py. Two products in the same workspace using the same word for different things would create permanent operator confusion (which "Rocky FLEET" — the provisioner, or the KAHN observability surface Rocky reports into?).
  2. RALPH conceptual collision. KAHN's docs/KAHNxKILN.md describes RALPH as "the iterative refinement loop in KAHN" that "retries convergence-failed nodes". Rocky's SS-07 RALPH is a sequential prompt-queue with plan/judge/execute/audit/merge per prompt. Same name, adjacent problems, different architectures. Not addressed by this decision — flagged for post-Phase-3 evaluation; the architectures are different enough that premature unification would be over-engineering.
  3. Schema duplication risk. KAHN already ships a vendored producer→consumer contract at kahn-hq/contracts/: transitions.schema.json, graph.schema.json, and a stdlib-only kahn_emit.py (additive-compatible; sister repos vendor it per contracts/README.md). Rocky's RALPH was designing a bespoke run.jsonl event format that would have been a strictly-coarser duplicate of KAHN's Status × Outcome semantics.

Decision

Two coupled changes:

  1. Rename SS-08 from FLEET to HEARTH across all governance documents (spec, plan, CLAUDE.md, MILESTONES, README, registry schema/yaml, conventions, decisions index). HEARTH pairs metaphorically with CAIRNET (stone marker) and LORE (campfire knowledge): HEARTH is where the per-workspace knowledge stack lives. Functionally identical to the previously specced FLEET — tiered driver-based provisioner of 1×CAIRNET + 1×LORE per workspace. Decision 0001's body is preserved (append-only convention, MR-7); this decision records the supersession.

  2. Commit Phase 3 (lift-ralph) to KAHN's transitions schema as Rocky RALPH's on-disk event format. Vendor kahn-hq/contracts/kahn_emit.py into ralph/ per KAHN's recommended consumption path. Each Rocky run becomes one KAHN run; each prompt becomes a KAHN node; plan/execute/audit are node attempts; Rocky's deviation severity maps onto KAHN's Outcome enum (clean | clean_with_flake | partial | stuck | catastrophic). Rocky's deviation-detection metadata rides as KAHN's documented "unknown fields pass through" extension.

Consequences

References