Skip to content

AI guides follow-ups - #568

Draft
Devon-White wants to merge 20 commits into
mainfrom
Devon/ai-guides-followup
Draft

AI guides follow-ups#568
Devon-White wants to merge 20 commits into
mainfrom
Devon/ai-guides-followup

Conversation

@Devon-White

Copy link
Copy Markdown
Collaborator

No description provided.

…mple

Rewrites the AI-sounding introduction, disambiguates "call" from the phone
call in the SWAIG request/reply section, removes DataMap from "where the
code lives" since it has no code (keeping a relocated mention for straight
REST calls), moves the dispatch agent example to the end of the guide so it
lands after the reliability patterns it demonstrates, and puts the Server
SDK code block first in every CodeBlocks group on the page.
Task 11 final sweep caught one straggler: the context-step CodeBlocks
group led with SWML instead of the Server SDK, breaking the
Server-SDK-first convention every other AI doc page follows.
Qualify the content-redaction masking table against the C source. Four paths
carry unredacted text and the page claimed otherwise: interim ASR results and
transparent-barge payloads reach the event webhook unmasked, and the timeline's
auto-correct, pronunciation, and normalization entries keep the original text.
Replace the "everything SignalWire records" absolute with the concrete surface
list, split the two overclaiming table rows into masked and unmasked, and stop
the Verify step from asking the agent to repeat the number back, which is the
step that triggers the pronounce path it then claimed was masked.

Correct redaction's latency framing: it is a synchronous model call on the turn
path, not a background task. Drop the say-action claim that handler text never
reenters the model's context, which is false in realtime mode.

End the tool-calling guide on its most complete example. The closing agent gains
the second tool, the global_data validation, and fillers; the mid-page copy
becomes the two-handler excerpt the global_data section actually needs, with a
forward link. Retarget swaig-test, the AI quickstart link, and the fillers
reference accordingly, and use the documented rime.spore:coda voice string.

Reconcile the prompt-structure taxonomy with its worked example: six elements,
in the example's order, with Context folded into Knowledge base.

Add the no-code-agents redirect, stop the AI overview promising a Dashboard
walkthrough no page provides, and point Datasphere and the voice Build-with-AI
card at guides instead of a REST endpoint.
The previous wave replaced one absolute with three positive masking claims, two
of which are false on the default documented path. Redaction only ever rewrites
a turn's content: redact_user_text marks spans and redact_apply_markers swaps
them into a sibling "redacted" string, and every consumer honors it by preferring
that sibling in place of content (conversation.c:164-168, :234-237, :269-272).
Nothing else on the entry is touched.

The metadata flatten is the hole. ai_conversation_json copies every metadata
field to the top level unconditionally at conversation.c:180-188, immediately
after the content swap it is unaffected by, so entity (speech_detect.c:750-767 ->
conversation.c:1628-1636, the validated structured value in canonical form) and
original_result (conversation.c:1866-1869, the undistilled tool output) reach
call_log and raw_call_log intact. build_call_timeline is worse than unmasked:
its turn events carry no content field at all (timeline.c:657-674), so they are
the flattened metadata and nothing else, and masking the text cannot change them.

Drop the two false table rows, add rows for the structured fields and for
timeline turn entries, scope the call_log row to conversation text, and delete
the narrowing sentence claiming the turns themselves are still masked. Replace
the "wherever the call is recorded or transmitted" absolute the last wave missed,
and scope the Warning's first clause to the conversation text.

Bring the diagram into line in all four places. The mermaid matters most: it is
what the .md view and any agent reading this page receives instead of the image,
so it gained an unmasked structured-fields node beside the masked-text one rather
than restating "every record is masked". The SVG grows a second labeled records
row for the same contrast; theming, classes, and the reduced-motion guard are
untouched.

Point the AI overview's Datasphere link at builtin-skills#datasphere, which is
the section that documents it; search-knowledge is about sw-search and pgvector.

Rename the tool-calling inline declaration to validate_trip so it matches what
the page teaches, and the remote signature response with it, since it declared
the same get_quote(pickup, destination) the page's own agent declares paramless.
Give the global_data excerpt its class header so it pastes without an
IndentationError.
Timeline turn entries carry no turn text, but on a normal barge
mod_openai.c writes text_heard_approx and text_spoken_total onto the
last assistant entry's metadata, and timeline.c flattens metadata
unconditionally onto the event. The agent's raw utterance therefore
reaches raw_call_log and call_timeline unmasked, which refutes the
'no conversation text at all' absolute.

Scope the Verify redaction step to the logs so it no longer sends the
reader to the timeline looking for masked turns, and retarget the
'Speak a value' lead-in at the records, which is what both paragraphs
beneath it actually compare.
Two independent source traces disagreed on whether the barge timeline
fields text_heard_approx / text_spoken_total are masked. A contested
claim should not ship in either direction on a PCI/HIPAA page, so the
claim is deleted rather than adjudicated or hedged.

Keeps the source-verified sentence that timeline turn entries are built
from structured fields, and keeps the entity / original_result warning
above it. Also drops the dependent 'timeline holds no turn text to mask'
clause from the verify step, retaining the correct scoping of the ----
expectation to call_log and raw_call_log.
@github-actions

Copy link
Copy Markdown
Contributor

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant