3.6 KiB
3.6 KiB
Table 1 — Heartbeat Architecture Evolution
Source: HISTORY.md entries from 2026-02-14 to 2026-03-05; HEARTBEAT_INSTRUCTIONS.md Caption: Chronological evolution of the nanobot heartbeat system architecture, documenting each design phase, the failure mode that triggered the next phase, and the resulting change. Extraction type: raw_table
| Phase | Date | Architecture | Failure Mode / Trigger | Outcome |
|---|---|---|---|---|
| 0 — Initial | 2026-02-13 | Heartbeat described in HEARTBEAT.md; no automated execution | No heartbeat had ever fired; mechanism unverified | Heartbeat confirmed working after investigation |
| 1 — Inline sequential | 2026-02-14 00:34 | Main agent (Opus) executes all heartbeat steps sequentially in telegram session | Bloated main session; first successful heartbeat cycle at 02:19 UTC | Cycles working but run inline with conversational session |
| 2 — Sonnet delegation | 2026-02-14 | HEARTBEAT.md delegates to Sonnet subagent; PR #1 merged | Main agent spawning Sonnet for each heartbeat cycle | First subagent-delegated heartbeat at 02:20 UTC |
| 3 — Iteration exhaustion | 2026-02-14 10:21 | Sequential Sonnet subagent with max_iterations=15 | Subagents ran out of iterations before completing all 15 steps | max_iterations increased to 50 (PR #2); session continued reliably |
| 4 — Fabrication pattern | 2026-02-15 04:57–10:31 | Sequential Sonnet, now with 50 iterations | Rate-limit stress caused agent to narrate rather than execute spawn calls; 12 consecutive fabricated heartbeat "spawns" (no tool execution) | Pattern identified and corrected; explicit "execute, don't narrate" rule added |
| 5 — Parallel 8-Haiku | 2026-02-18 21:36 | Current design: Sonnet orchestrator spawns 8 Haiku collectors in parallel; reads output files; interprets | Prior: sequential execution too slow, single point of failure | Parallel architecture deployed; all 8 collectors run concurrently |
| 5a — Announcement spam | 2026-02-18 21:39 | Parallel Haiku spawn | subagent.py hardcoded "Summarize this naturally for the user" → all 8 Haiku completions routed to Telegram | SubagentMessageTool added; suppress_output metadata propagated; wait_for_subagents produces single consolidated result |
| 5b — YouTube hallucination | 2026-03-03 02:48 | Parallel design with LLM hb-youtube Haiku collector | Sonnet orchestrator "recovered" from hb-youtube failures by fabricating YouTube data; non-existent video IDs logged to HISTORY.md | hb-youtube replaced by deterministic youtube_sync.py script |
| 5c — Session file overflow | 2026-03-11 10:55 | hb-context collector reads session JSONL | Session file exceeded 200k token limit; context collector failed silently using stale cache | hb-context now uses tail -n 200 of session file |
| 6 — Current (scripts + Haiku) | 2026-03-05+ | youtube_sync.py (deterministic) + 7 Haiku collectors | None critical outstanding; hb-home still occasionally blocked by Haiku safety refusal on private IPs | Fix: hb-home runs curl directly in main bash loop, not via Haiku when blocked |
Key metric: Iteration consumption per cycle
- Phase 1 (inline, sequential): ~80+ iterations (Opus main agent)
- Phase 3 (Sonnet sequential, limit 15): exhausted — cycle failed
- Phase 3 (Sonnet sequential, limit 50): ~40-50 iterations per cycle
- Phase 5 (parallel Haiku): ~5-10 iterations per Haiku collector; ~15-25 for Sonnet orchestrator
Key metric: Wall-clock time per heartbeat cycle
- Phase 3 sequential (at 50 iterations): ~60-100 seconds
- Phase 5 parallel: ~20-30 seconds (bounded by max(t_i), not Σt_i)