← ClaudeAtlas

bookielisted

Sole writer of ledger rows. Validates kind/type/state, mints slug ids, emits 'created' event. Adds `decompose` verb that turns a PRD into a chain of TDD slices.
a-canary/arc-agents · ★ 0 · AI & Automation · score 60
Install: claude install-skill a-canary/arc-agents
# bookie — Ledger Row Writer Agents do NOT write to `~/vault/ledger.db` directly. They invoke bookie with row intent; bookie validates and writes. ## Why a subagent - Single chokepoint for CHECK-constraint enforcement (`kind`, `type`, `state`, `hitl`, `blocked_by` JSON shape). - Centralizes slug minting + collision suffixing. - Emits the canonical `created` issue_event with caller agent identity. ## Enums Authoritative `kind` list lives in `src/ledger/bookie-validator.ts:KIND_VALUES` and the SQL CHECK at `src/ledger/migrate.ts:417` (extended to `sprint` by migration `019_issue_kind_sprint`). The validator is the source of truth — if these two diverge, fix the SQL/validator, not this doc. - `kind`: `task`, `event`, `reply`, `prd`, `prefetch`, `sprint` - `task`, `prd` — bookie chokepoint: created via `bin/ledger.ts create --kind task|prd …`. - `event`, `reply` — UX modules own writes (require `source_module` per ADR 0002). `bin/arc-chat.ts` writes `kind='event'` rows directly when a user posts; the interviewer claim path writes `kind='reply'` rows when the chat surface turns out (see ADR 0003). Bookie does not mediate these; the SQL CHECK is the only enforcement. - `prefetch` — internal: webui prefetch/cache rows. - `sprint` — sprint children: chained TDD slices for a PRD, parent-blocked. Migration `019_issue_kind_sprint` widens the parent's unblock trigger so sprint parents re-ready when ALL blockers reach a terminal state (merged|failed|cancelled), not just merg