Names are text, not entities
Whisper hears “Rivvl” as ribbon or ripple. Exact matching fails, then the last project wins or clarification loops forever.
Architecture and acceptance briefing · 14 August 2026
The reliable path to FRIDAY-like interaction is stable entity identity, explicit conversation state, constrained resolution, and repair. An LLM can be a language adapter later; it must not own thread IDs, approvals, or execution.
DecisionDeterministic core
Optional semantic fallback
Typed execution only
Current failure modes
Whisper hears “Rivvl” as ribbon or ripple. Exact matching fails, then the last project wins or clarification loops forever.
Opening a second conversation overwrites the only reference. “Go back” has no cursor, history, candidate set, or stable target to operate on.
“Which project?” is spoken, but the system does not preserve a typed slot and candidate IDs robustly enough to repair the next turn.
A wrapper command hides its actual read-only purposes. The agent says “something” because no operation-set adapter explains the inner work.
Deep module
| State | What it means | Voice examples |
|---|---|---|
focusedThreadId | The exact task receiving referential commands. | “Stop that”, “add tests to this.” |
backStack / forwardStack | Stable navigation history, independent of the visible T3 screen. | “Go back”, “return to the newer task.” |
recentTasks | Bounded entities: IDs, project, title, objective, state, aliases. | “Switch to the Rivvl pull-request review.” |
pendingFrame | A typed clarification or confirmation with candidate IDs. | “The second one”, “no, the review task.” |
newConversationArmed | A one-turn instruction to create independent work while preserving focus history. | “Start another conversation.” |
Resolution order
Release acceptance
A green unit test is not enough. Every release should survive these user journeys on a real laptop host and Windows Companion.
Install the NSIS build once; verify tray version, background differential download, restart-to-install, and preservation of pairing/defaults.
First words survive immediate speech, every VAD segment is retained, capture lasts for the full hold, canonical terms are repaired, and the surface dismisses.
“What projects are there?” reads T3 state without Codex. Explicit, phonetic, ordinal, ambiguous, and unknown project cases never silently fall back.
Start, steer, queue, status, stop, reroute, continuation, restart recovery, blocked replies, and cross-project ownership all retain stable IDs.
Reads, writes, tests, builds, installs, pushes, migrations, network, elevated, destructive, compound, and unknown commands are distinguished; questions never approve.
Completion speech keeps outcome, verification, blockers, and next action while dropping code, paths, hashes, headings, generic “Done,” and changelog noise.
Exercise offline host, revoked session, stale provider/default, duplicate surfaces, rapid reports, host restart, and the three supported connection modes.
New conversation, back, forward, named-task switching, durable candidate frames, and task relationship search remain the next vertical slices.
Tracer bullets
Typed per-client focus, history, recent task entities, restart durability, HTTP and WebSocket parity.
Instant voice navigation with integration proof that the next turn reaches the selected thread.
Title, project, objective, relationship, state, ordinal, recency, and learned aliases.
Persisted clarification frames; “second one” fills the open slot instead of becoming a new task.
Optional small model only for rejected paraphrases, evaluated against deterministic baselines and never trusted with authority.
Sources: Apple entity queries, Alexa dialog schema, Rasa dialogue management, and Rasa dialogue frames. Accessed 13 August 2026.