---
model: claude-fable-5[1m]
service: claude
timestamp: 2026-06-10T17:33:09Z
git_ref: datad_service
diff_cmd: git log -1 -p --follow -- ai/prompt-io/claude/20260610T173309Z_f15f8178_prompt_io.md
---

NOTE: diff-ref mode entry; the AI output here is the
committed doc itself (a design plan, not code) so no
verbatim copy is duplicated:

> `git log -1 -p --follow -- ai/claude-code/plans/datad_service.md`

## Implementation deviation log

Where the landed 7-commit series differs from the plan
as written (recorded for reviewer transparency; the
plan doc is committed unmodified):

1. Commit ordering: the `pytest` config-dir isolation
   fix lands BEFORE the `tractor`-API drift port. The
   plan's stage gates assumed a runnable+isolated test
   baseline; per-commit gating exposed that without
   isolation the paper-EMS test reads the user's real
   (polluted) `account.kraken.paper.toml` and reddens.
2. The plan's "stage 0: full pytest green" gate
   required first repairing pre-existing branch
   breakage vs `tractor` git `main` (boot
   `AttributeError`, stale discovery/exc/position
   APIs) — that repair became its own commit
   ("Port service+tests to latest `tractor` APIs")
   rather than plan-stage work.
3. Stage-4 fail-fast placement: the plan said
   `broker_init()` raises on brokerd-ep-less backends;
   implementation moved the raise to `spawn_brokerd()`
   since `piker ledger` calls `broker_init()` directly
   even for paper accounts on datad-only backends.
4. `brokers/_daemon.py` change grouping: the
   import-cleanup hunks (`exceptiongroup`, `_FeedsBus`
   type-only import) landed with the caps-sec slim
   commit instead of the fixture-slim commit, keeping
   each intermediate tree import-clean without
   sub-hunk surgery.

Also of record: the plan's "Verification" matrix was
executed as written (per-suite gates each stage, the
headless datad-feed smoke, the kucoin fail-fast unit
check); the known pre-existing ~50% second-runtime-boot
test wedge was characterized and excluded as a
regression via revert-testing.
