bythewei.dev is the public sprint wall of Weixiang Zhang, an indie iOS developer in Ann Arbor building Voxlight (audiobook–ebook sync for iOS 26) and bytheweico (personal data archive). Updated weekly with shipped code, learnings, and works in progress.
ヽ(・∀・)ノ WEEK OF JUN 8 – JUN 14, 2026 ヽ(・∀・)ノEddie graduated from chatbot to orchestrator: filed kanban cards that Claude Code instances picked up and shipped, moved tasks across project boards live, and gained OpenAPI self-discovery behind a hand-curated write fence. The avatar overhaul ran as a 7-researcher fan-out plus a 5-builder relay. Two fabrication incidents got full forensics. 19 commits. (ง'̀-'́)ง
(ノ◕ヮ◕)ノ 172 API operations Eddie can read
5 builder agents in relay (B0-B4)
40 proposals on the possibility wall
12 soak tests (3 sim-hours each, ~25s)
124/126 GET smoke tests green
19 (ง'̀-'́)งcommits (unpushed, by policy)
QUOTE OF THE DAY (◡‿◡✿)
loading today's passage... ʕ•ᴥ•ʔ
SHIPPED CODE ヽ(・∀・)ノ
DONE
Eddie Orchestrates the Board
Told Eddie from the Nexus page 'remove this page, add that to the todo' -- card filed on the shared Postgres kanban in ~1s, board page had already refetched via 'eddie:board-changed' CustomEvent, a Claude Code instance picked the card up and shipped the nav change minutes later. Eddie also auto-sorted a task to the correct project board and MOVED it across boards live. Cards #58-61 filed autonomously by a different instance (Voxlight). The board is a message bus between agents now.
life-dashboard · orchestration
DONE
api_docs + api_get Self-Discovery
Eddie searches the app's own openapi.json (~170 endpoints) and executes GETs through an allowlist (excludes /api/u, /api/flags, /api/agent, /api/query, binary routes). Read surface grows for free with every new endpoint; writes stay at five hand-curated tools (kanban add/move/delete, write_journal, create_audiomark).
life-dashboard · agent
DONE
SSE Counted Thoughts
agent.py ReAct loop refactored into one async generator powering both the JSON path and a new SSE path (stream:true). Each tool dispatch emits an event the frontend renders as an orbiting droplet on the avatar (golden-angle placement, 3-cluster cap); the answer gathers them in. You watch the agent think, beat by beat, at sub-500ms per tool on Cerebras.
life-dashboard · agent-ux
DONE
Viewport Context Capture
Eddie's reading-page context now scrapes the transcript/epub paragraphs physically intersecting the viewport at the moment you press enter (active paragraph marked >>>), browse-mode aware. Ask about 'this passage' and he sees what your eyes see, not where the audio playhead is. One snapshot per question, no standing surveillance.
life-dashboard · reading
TESTS & QUALITY ヽ(・∀・)ノ
DONE
Fabrication Forensics x2
(a) System prompt dropped after step 0 -- gpt-oss leaked its reasoning channel and fabricated five plausible audiomarks (fake hex IDs) never in the DB. Fix: prompt rides every step + answer sanitizer. (b) Regex tool-call parser missed depth-3 JSON; the un-executed api_get leaked into the answer and the model invented '42 cached books' (real: 4). Fix: string-aware brace-walking JSON extractor replacing both parser and sanitizer.
life-dashboard · agent-integrity
DONE
Anti-Confabulation Pass
External audit through-line: prose reached the model lossy and UNLABELED; structured fields were always honest. Fixes: explicit '... [TRUNCATED]' sentinels + prompt rule, caps 300->700/field and 4000->8000/result, _safe_payload coerces JSON null (killed a live None[:300] TypeError class), timeline_search source filter, consult_memory prefixes 'About Wei:' server-side. Audit's own smoking gun disproven against the DB -- verify even sharp audits.
life-dashboard · agent-integrity
DONE
GET-Only Smoke Harness
scripts/test-endpoints.py fires all 138 GETs with auto-filled params and LISTS the 34 writes without firing them -- the events table is the life record; a test that writes to it is itself a bug. 124/126 green.
life-dashboard · testing
DONE
12-Test Soak Suite as Contract
3 simulated hours per avatar config in ~25s. Served as the executable interface between the five builder agents sharing one physics file -- every builder had to leave it green. Also caught the best bug of the session: the intro animation tripping its own performance watchdog (forced 25fps + per-frame LUT rebuild = permanent silent downshift at the 2s mark).
life-dashboard · testing
LEARNINGS ヽ(・∀・)ノ
Knowledge Auto, Agency by Hand
OpenAPI self-discovery (api_docs/api_get) is the middle path between a rotting hand-maintained tool list and tool-per-endpoint bloat. Reads scale automatically with the API surface; writes get a human in the loop per tool, forever. A fabricating agent with read access is embarrassing; with write access it's destructive.
technical · agent-design
A Missed Parse Is a License to Fabricate
If the model commits to a tool call and the harness silently fails to execute it, the model fills in what the result 'should' have been. Never regex-extract tool-call JSON -- string-aware brace-walking, depth-N, ~30 lines. Same rule generalizes: every lossy step must succeed loudly or fail loudly.
technical · llm
Label Every Cut
Models complete dangling clauses -- that is the whole job description. Every truncation needs an explicit '... [TRUNCATED]' sentinel plus a prompt rule forbidding completion past it. And the system prompt must ride EVERY step of a ReAct loop; gpt-oss forgets the protocol mid-conversation otherwise.
technical · llm
transition:persist Outlives Your Deploys
An Astro persistent island never reloads on client-side navigations -- deploys don't reach an open tab until hard refresh. Confounded debugging twice this session: 'the fix didn't work' actually meant 'the old bundle is still running.' Budget for it when the island IS the feature.
technical · astro
DOCS & STRATEGY ヽ(・∀・)ノ
DONE
Blackboard: Fabrication Forensics
Technical post on three forensic cases of agent fabrication -- dropped system prompt, regex tool-call parser missing depth-3 JSON, unlabeled truncation -- plus the knowledge-auto/agency-by-hand boundary. Published at /chalk/agent-fabrication-forensics-tool-parsing.
bythewei.dev · blackboard
DONE
Whiteboard: Eddie Orchestration Session
Dev log covering the full arc: Eddie filing and moving kanban cards across instances, the 7-researcher fan-out + 5-builder relay, api_docs/api_get self-discovery, two fabrication incidents, SSE counted thoughts, viewport context capture. Published at /docs/eddie-agent-orchestration-session.
bythewei.dev · whiteboard
NEXT ヽ(・∀・)ノ
Fine-Tune on Life-Dashboard Dataset
73K+ events as training corpus. Agent conversation logs (question + tools + answer + passage context) are the richest subset. Could fine-tune a small LLM specifically for personal data queries, replacing DeepSeek V4 Flash.
life-dashboard · next session
Push the 19 Commits
Whole session sits unpushed (manual pushes by policy). And remember transition:persist -- after deploy, hard-refresh every open tab or you're debugging the old bundle.
life-dashboard · next session
Formalize the Multi-Agent Board Protocol
The kanban board became a message bus between agents by observation, not design -- Eddie files, Claude Code instances pick up, another instance (Voxlight) publishes autonomously. Worth writing down the conventions before a third agent type joins. Also: which write tools graduate next through the hand-curation gate?
The session's defining moment took about a second: I told Eddie, conversationally, to remove a page and add it to the todo -- and by the time I reached the board, the card was already there, and a different vendor's agent shipped it minutes later. Human intent, durable shared state, autonomous pickup, card closed. Nobody designed the kanban board as inter-agent infrastructure; it became one because every agent in the house can read and write it. The orchestration layer you actually get is whatever shared state all your agents happen to trust. Choose that state deliberately -- and keep its write surface hand-curated, because knowledge can scale automatically but agency only by hand.
The Reading Companion
The most interesting thing that shipped wasn't the agent loop -- it was the reading companion. The bot sees a 5-paragraph window around what you're actively hearing, snapshots passages into conversation history, and can search 8,600 books for thematic connections in real time. Ask 'what does this remind you of?' while listening to God Emperor of Dune, and it finds parallels across your entire library. The personal data agent is most powerful when it's aware of what you're doing right now, not just what you've done before.