#3533 · the spawn log was lying about 5 agents

Two shell test harnesses ran the compiled hooks with CLAUDE_PROJECT_DIR pointed at the real repo, so every test run appended fixture rows (session_id: "test-123", one per agent in a loop) to the live .claude/logs/subagent-spawns.jsonl. Dormant agents read as healthy.

494
fixture rows in the current rotated log
5
effectively-dead agents masked as healthy
2
writers now honor ORK_TELEMETRY_DISABLE=1

Real spawns vs what the contaminated log showed

agentlog saidreal (lifetime)
genui-architect13-141
claude-design-orchestrator13-141
event-driven-architect13-141
demo-producer13-142
security-layer-auditor13-142

red = fixture rows, green = real spawns. Activation audits and prune decisions read this file.

The fix, at the writer

Why inlined in each writer, not in lib/common

The check lives inside subagent-validator.logSpawn and spawn-intent-logger directly. lib/common and analytics-buffer are wholesale-mocked in most unit tests, so an imported helper would vanish under the mock and the guard would silently not exist exactly where it is tested.