Files
rutster/docs/superpowers
opencode controller 2883ac4fb4 plan(slice-3): OpenAI Realtime brain implementation plan (spec §1.1)
11-task TDD plan; mirrors slice-2/slice-1's plan shape (header,
global constraints extracted verbatim from spec §1.1, file-structure
delta on slice-2, task-to-file mapping, per-task TDD steps with
failing-test-first / verify red / implement / verify green / commit).

Tasks:
1.  Workspace deps + rutster-brain-realtime crate skeleton.
2.  Tap protocol additive v1 extensions (speech_started/stopped,
    function_call, function_call_output, tools.update) - 6 TDD tests.
3.  API-key loader (env var + file-path override) - 5 TDD tests.
4.  Translator (tap <-> OpenAI Realtime event mapping) - 8 TDD tests
    incl. the S4 turn-ownership assertion.
5.  OpenAI wss client pump (session.update with turn_detection: null
    on handshake, select! over tap input + OpenAI input).
6.  Tool trait + registry + HangupTool (FOB-boundary dispatch) - 5 TDD
    tests.
7.  TapClient function_call arms + TapConn extension (side-channel
    mpsc pair; the seam test preserved - TapEngine's structure
    unchanged, only new mpsc halflings threaded through).
8.  session_map tool-call side-channel drain (the FOB dispatch
    becomes end-to-end live; drive_all_sessions mirrors slice-2's
    flush_rx drain pattern).
9.  Brain binary (ws server on :8082 + OpenAI client glue;
    --features=mock uses run_mock_brain stub for now).
10. MockRealtimeBrain + integration test (no real OpenAI creds).
11. Python reference brain + LEARNING.md + README dev loop.

Spec self-review: every spec section mapped to a task; no TBD
placeholders; type consistency verified (FunctionCallEvent,
ToolResult, Tool, ToolRegistry, HangupTool, run_mock_brain,
load_api_key, TranslateError, OpenAiClientError, and the 6
translator fn names all appear consistently).
2026-06-30 20:21:36 -04:00
..