Skip to content

ADR-v2-031 — Spoken Code Mode

Status: Accepted (2026-07-02) · Wave E Context links: [[adr-v2-004-context-primed]] (biases prior, not syntax), [[adr-v2-006-spoken-mcp]] (runs tools), [[adr-011]]

Context

The Wave E research (#6) proposes syntax-aware programming by voice — spoken symbols and identifier casing ("snake user I d" → user_id) — the Talon/Serenade/Cursorless paradigm. Context-Primed dictation only feeds LSP context into initial_prompt; Voice-to-Tool runs MCP actions. Neither produces code text, so this is a distinct output grammar.

Decision

Add an opt-in Spoken Code Mode: [code] enabled=false. Two pure cores: spoken_symbols(text) maps spoken symbol phrases to punctuation (longest-match: "open paren" → (, "arrow" → ->, "equals" → =, …), and to_case(words, style) joins words into an identifier in camel / snake / pascal / constant / kebab style. These compose on the command path; the LSP identifier completion (via the existing NeovimBridge) is a deferred enhancement. OFF by default.

Consequences

  • Distinct output grammar (code text) — neither prior-biasing nor tool-running.
  • Both cores pure → fully testable with no model; activatable via a dedicated command key.
  • On-device only (ADR-011); pure string transforms.
  • Caveat: symbol phrases overlap ordinary words → active only in code mode, off by default.