| Field | Value |
|---|---|
| Date | 2026-09-13 |
| Harness version | grounded-page-build-completion-14 → voice-idea-canvas-15 |
| Models | gpt-realtime-2.1, remote voice; existing selected local builder |
| Evidence grade | C; live audio/model quality unmeasured |
| Pre-registered | yes |
| Source record | User conversation; evidence/RL-025/record.md |
Observation
TinyAgent has no microphone, realtime transport, visual idea state, or reviewed voice-to-build handoff. Baseline source inspection finds no such entry points. The preceding full suite passed 740 tests. No OPENAI_API_KEY is configured.
Hypotheses
- H1: A schema-validated, revisioned idea board preserves decisions and negation across streaming updates, rejects stale writes and does not execute model tools.
- H2: WebRTC lifecycle handling releases the microphone on stop, error and chat switch; mock browser sessions can verify these transitions without paid calls.
- H3: A reviewed brief can enter the existing builder exactly once per revision, without including discarded suggestions, raw transcripts or unreviewed changes.
- H4: Stable card placement, incremental transcript updates, and reduced-motion support produce an inspectable canvas at desktop and narrow window sizes.
Intervention
Voice is a separate user-started conversation with a board-only tool. The host retains authority over persistence and build handoff. New voice prompts are measured before sending. Existing local-model prompts gain no recurring overhead outside an explicit voice build.
Method
Deterministic state/transport tests and an Electron interaction script with synthetic realtime events. These establish wiring, not natural conversation quality. Live audio validation requires a configured API key and microphone.
Results
- Eight deterministic voice tests pass. The unchanged whole-suite instrument reports 750 passing tests (740 before; eight voice cases and two renderer parses added, so the counts are not a model-performance comparison).
- Nine Electron checks pass using the actual preload, plain-Node host, SQLite, local harness and browser verifier, with synthetic microphone and provider.
- Six connected cards produce four kept brief items. A manual correction and subsequent streaming correction preserve negation. A new revision invalidates an open review. Double clicking builds once and releases the microphone.
- Returning to the canvas restores its state; changing chats ends voice and shows an empty separate canvas. Layout inspected at 1440×940 and 760×800; controls also checked at 560×420. Screenshots and fixture outputs are saved.
- Build and type checking pass. Live API access, audio quality, recognition and latency have not been measured because no API key is configured.
Evidence record
See evidence/RL-025/record.md for exact user requests, fixtures and limitations.
Threats to validity
Mock audio and model responses cannot establish recognition, voice quality, latency, nuanced instruction following or local-model build quality.
Conclusion
H1–H3 supported at grade C for the covered transitions. H4's layout and motion implementation are inspected/tested; subjective fluidity and real conversation quality still require user evaluation. This does not demonstrate improved local model reasoning. Website local-only claims were corrected for optional voice.
Follow-ups
Measure real long instructions, corrections, negation and interruptions with the user's microphone and configured voice account.
Reproduce
node --import tsx --test tests/voice.test.ts tests/renderer.test.ts
npm run build and npm run check:voice
npm test and npm run typecheck