Skip to main content

Voice From Anywhere — Expected Output Spec

§0 The incident

Terry Beckett (real paying customer, 2026-09-03): voice call with Aria went well; he scrolled down to Guides & Resources; done browsing, he wanted to talk again — the only floating element is the text-chat bubble, text-Aria could not tell him how to return to voice, and guide pages have NO voice widget at all.

§1 Expected output

  1. AiBandSection gains a stable anchor (id="talk-to-aria").
  2. ChatWidgetStream gains an OPT-IN prop (e.g. voiceAnchorHref) rendering a small companion "Talk" affordance beside/inside the widget. ABSENT PROP = BYTE-IDENTICAL WIDGET — this component is shared by every church site, and church behaviour must not change in any way (contract test on the default render).
  3. The RE header passes the prop. Behaviour on activation: if the current page contains #talk-to-aria, smooth-scroll to it; otherwise navigate to the site homepage #talk-to-aria. Works from guide pages, listing pages, blog.
  4. Chat-Aria can ANSWER the question Terry asked: the RE tenant chat prompt gains one line — voice is available via the Talk button on this widget or the Talk-to-Aria section of the homepage. (Web-side prompt only; no voice agent deploy involved.)

§2 Acceptance checks

  1. Default ChatWidgetStream render (no new prop) is unchanged — snapshot or markup-equality test, positive-controlled.
  2. With the prop: the affordance renders, and its target resolves per §1.3 on a page WITH the anchor and a page WITHOUT it.
  3. Guide page → Talk → lands at the homepage voice section.
  4. Church pages (any non-RE mount) show no trace of the affordance.
  5. Chat prompt line present for RE tenants only.

§3 Out of scope

A floating/persistent in-call mini-bar (active calls already survive scrolling — audio continues; this spec covers RE-starting voice); embedding the full call UI in the floating widget; church-vertical voice affordances.