What it is
specs/DESIGN.md still carries the pre-hosted-voice positioning: "A
fully-local companion radio … with Claude as its brain" (line 42), "Fully
local, open-source, non-commercial" (line 91), and "The only two network
hops: ① Claude brain inference; ② the music stream" (line 92). Shipped
reality has three network calls — the hosted fish-speech/fish.audio voice is
the third — and specs/spec02/02-voice-provider.md line 30 already records
that relaxation explicitly ("This deliberately relaxes master DESIGN's
'only two network hops'…"). The brain is likewise a swappable seam
(claude-agent-sdk today; #89 records the Codex SDK direction), so "Claude as
its brain" overcommits.
PR #103 moved every outward surface — docs/index.html, README.md, and
the GitHub repo About — to the honest wording: local-first, three
network calls (brain inference / music stream / hosted voice until a local
TTS lands), an agent for a brain. The master spec is now the only
document telling the old story. Doc-only drift; no runtime behavior
involved.
Spec
specs/DESIGN.md §"one-line definition" (line 42) and the product-values
list (lines 91–92); the recorded relaxation lives in
specs/spec02/02-voice-provider.md (line 30).
Done when
DESIGN.md's definition and values sections say local-first / three network
hops (naming the hosted voice as the temporary third, local TTS as the
recorded want) and frame the brain as a swappable agent seam rather than
hardcoding Claude — matching README/homepage/About. Closes on that edit
landing; a follow-up grep for fully.local|two network hops|Claude as its brain over specs/DESIGN.md returning nothing is the mechanical check.
What it is
specs/DESIGN.mdstill carries the pre-hosted-voice positioning: "Afully-local companion radio … with Claude as its brain" (line 42), "Fully
local, open-source, non-commercial" (line 91), and "The only two network
hops: ① Claude brain inference; ② the music stream" (line 92). Shipped
reality has three network calls — the hosted fish-speech/fish.audio voice is
the third — and
specs/spec02/02-voice-provider.mdline 30 already recordsthat relaxation explicitly ("This deliberately relaxes master DESIGN's
'only two network hops'…"). The brain is likewise a swappable seam
(claude-agent-sdk today; #89 records the Codex SDK direction), so "Claude as
its brain" overcommits.
PR #103 moved every outward surface —
docs/index.html,README.md, andthe GitHub repo About — to the honest wording: local-first, three
network calls (brain inference / music stream / hosted voice until a local
TTS lands), an agent for a brain. The master spec is now the only
document telling the old story. Doc-only drift; no runtime behavior
involved.
Spec
specs/DESIGN.md§"one-line definition" (line 42) and the product-valueslist (lines 91–92); the recorded relaxation lives in
specs/spec02/02-voice-provider.md(line 30).Done when
DESIGN.md's definition and values sections say local-first / three network
hops (naming the hosted voice as the temporary third, local TTS as the
recorded want) and frame the brain as a swappable agent seam rather than
hardcoding Claude — matching README/homepage/About. Closes on that edit
landing; a follow-up grep for
fully.local|two network hops|Claude as its brainoverspecs/DESIGN.mdreturning nothing is the mechanical check.