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
AiBandSectiongains a stable anchor (id="talk-to-aria").ChatWidgetStreamgains 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).- 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. - 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
- Default
ChatWidgetStreamrender (no new prop) is unchanged — snapshot or markup-equality test, positive-controlled. - With the prop: the affordance renders, and its target resolves per §1.3 on a page WITH the anchor and a page WITHOUT it.
- Guide page → Talk → lands at the homepage voice section.
- Church pages (any non-RE mount) show no trace of the affordance.
- 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.