Found during the post-#253 roadmap/doc reconciliation on 2026-08-21.
#253 fixed the primary public story, but two canonical/public surfaces still contain pre-current architecture material.
CLAUDE.md — canonical and therefore highest risk
The top architecture section still says the robot "uses a voice loop (Claude / Codex / Ollama)" and later documents:
Three backends, same pxh.voice_loop core
bin/run-voice-loop-claude | bin/claude-voice-bridge
CODEX_CHAT_CMD subprocess routing
claude-voice-bridge was deleted during the resident-only migration. This is not harmless historical prose: every coding agent is instructed to treat CLAUDE.md as the canonical constitution.
Acceptance:
- current overview describes one resident
spark-brain, M5 routes, local perception and deterministic authority;
- no deleted cold-Claude bridge is presented as runnable architecture;
- historical voice-loop details either move to an explicitly dated fossil or are deleted;
- retain genuinely load-bearing operational invariants (arecord, GPIO/audio/health/etc.) rather than replacing the file with vague prose;
- add a structural test rejecting known fossil strings from the current/canonical sections.
Homepage — secondary explanatory sections lag #253
site/index.html's hero/current architecture is good, but the older "How SPARK's Brain Works" / FAQ content still includes framing such as:
- "four things running at the same time" / eyes-and-neck "always moving";
- "Brain — always thinking";
- "inner monologue" in the monitoring FAQ;
- the fridge FAQ still explains the inference as "Claude — the LLM generating the inner thoughts" even though routine reflection is now M5;
- the old roadmap remains hardcoded in static HTML (the current roadmap PR replaces the rendered roadmap via
site/js/init.js; static fallback should eventually be reconciled rather than carrying two truths).
Acceptance:
- supporting brain/FAQ copy matches current local perception → M5 → selective resident Claude → deterministic policy architecture;
- do not pretend optional/deferred reflection is continuously "always thinking";
- generic model-generated reflection should not be attributed specifically to Claude when M5 owns routine reflection;
- static roadmap source and rendered roadmap converge on one current truth;
- preserve accurate child-friendly explanations and provenance material;
- current public story tests pin these claims.
Scope
Docs/site only unless verification proves a code claim itself is wrong. Do not redesign the site. Prefer deletion and concise canonical truth over adding caveats.
Found during the post-#253 roadmap/doc reconciliation on 2026-08-21.
#253 fixed the primary public story, but two canonical/public surfaces still contain pre-current architecture material.
CLAUDE.md — canonical and therefore highest risk
The top architecture section still says the robot "uses a voice loop (Claude / Codex / Ollama)" and later documents:
Three backends, same pxh.voice_loop corebin/run-voice-loop-claude | bin/claude-voice-bridgeCODEX_CHAT_CMDsubprocess routingclaude-voice-bridgewas deleted during the resident-only migration. This is not harmless historical prose: every coding agent is instructed to treat CLAUDE.md as the canonical constitution.Acceptance:
spark-brain, M5 routes, local perception and deterministic authority;Homepage — secondary explanatory sections lag #253
site/index.html's hero/current architecture is good, but the older "How SPARK's Brain Works" / FAQ content still includes framing such as:site/js/init.js; static fallback should eventually be reconciled rather than carrying two truths).Acceptance:
Scope
Docs/site only unless verification proves a code claim itself is wrong. Do not redesign the site. Prefer deletion and concise canonical truth over adding caveats.