Principe:conversation libre par défautdéterminisme aux frontières critiquesaucun commit avant ACK courant

Séquence conversationnelle complète

Le LLM propose. Les politiques, l’état courant et la garde décident. Le transport audio ne prouve jamais l’audition humaine.

ÉtapeOwnerAutoritéÉtat / tokenPreuve et limite
Media WSNavy PhoneFrames slin16 consultativesSession média et générationLe même appel exact-edge local traverse WSS avec audio synthétique entrant/sortant, DTMF, MARK_MEDIA, FLUSH_MEDIA et nettoyage. Aucun cloud/PSTN, voix humaine ou pipeline IA n’est prouvé.
VAD / barge-inNavy PhoneDébut/fin de paroleNouvelle génération + AbortSignalLe produit ne ferme plus 1011 sur une annulation confirmée et le contexte d’interruption traverse toute la chaîne logicielle. Le lab média annule un ancien mark. VAD humain et arrêt acoustique restent non prouvés.
STT streaming cibleNavy PhonePartiels consultatifs; final seulement après validation langue/re-décodageFinal corrélé au tourContrats/code; aucun endpoint souverain ou streaming runtime intégré
Session VoiceBotVoiceBotRévision et protocole métierPrepared-turn, token opaque et settlementcommitted, cancelled et failed sont explicites; cancelled+replayed adopte la révision sans valider l’ancien tour
OrchestrationVoiceBotChoix dialogue, faits et outils allowlistésContexte minimal, interruption et provenanceL’attente répond sans question. Pendant heatwave-outreach, gas/flood/seveso/fire interrompt le questionnaire; hazard+vital choisit le protocole hazard univoque ou une guidance générique fail-safe. Runtime non déployé.
LLMProvider piloté par VoiceBotProposition conversationnelle uniquementTexte candidat + modèle/digestChoix modèle non production
Validation déterministeVoiceBotDécision avant action et avant restitutionAutoriser, corriger, demander, refuser, handoffPas un simple filtre post-LLM
TTSNavy PhoneSynthèse du texte validéFrames liées à la générationVoix/endpoint souverain à qualifier
Transport / markNavy PhonePreuve de frontière transportMark/ACK corrélé courantrequestAck() renvoie un booléen; refus ou exception devient failed immédiatement. Mark ≠ audition par l’appelant.
Commit CASVoiceBotÉtat durable du tourCommit seulement si révision et ACK sont courantsACK indéterminé fail-closed. Prepare: 6 s par défaut, borne 0,5 à 15 s. ACK: 3 s par défaut, borne 0,25 à 10 s.

Matrice d’autorité

Cette répartition empêche le produit conversationnel de prendre le contrôle implicite de la téléphonie ou de ses preuves de lecture.

Navy Phone

Autorité média et téléphonie

Appel, PBX, bridge, file, Media WS, VAD, barge-in, STT, TTS, playback, mark/ACK, WebRTC et handoff humain.

VoiceBot Navy Crisis

Autorité conversationnelle

Session, prepared-turn, révision, protocoles critiques, RAG, provenance, décisions, garde déterministe, token et audit métier.

Barge-in et propagation d’annulation

La propagation logicielle est maintenant testée de bout en bout entre les deux produits. Elle ne prouve toujours pas qu’une vraie voix arrête assez vite le son sur un téléphone.

1. VAD

Parole détectée pendant la restitution.

2. Génération

Incrément et AbortSignal vers tâches actives.

3. Transport

clear / FLUSH_MEDIA et purge.

4. Settlement

cancelled garde l’appel ouvert; failed reste fermé par prudence.

5. Nouveau tour

interrupted_previous_assistant=true arrive jusqu’au moteur.

Code testé

Ce qui a changé

Une annulation confirmée ne provoque plus de fermeture 1011. La readiness exige que le produit annonce interruption_context=true. Le prepare est annulable et les deux délais sont bornés.

NO-GO

Ce qui reste faux

Aucun appel PSTN, cloud, humain, arrêt acoustique, charge ou SLO conversationnel n’est prouvé.

Voir les preuves de ce cycle

Gate sécurité courante: 84 fichiers et 974 tests verts; 128 sources et 19 sources média verrouillées. Produit séparé: 31 pass + 1 skipped, puis 344 pass + 3 skipped sur 347 tests, typecheck vert. Les tests ignorés sont déclarés, pas présentés comme réussis.

Replis déterministes

Aucune indisponibilité modèle ne doit produire une action critique inventée ou empêcher un transfert humain.

PanneRéactionÉtat durableExpérience appelant
STTRetirer le bot de l’admissionAucun nouveau tourPhrase sûre puis humain
LLMRéponse déterministe bornéeDécision auditéeClarification ou transfert
Prepare / TTS / ACKAnnulation du fetch, timeout borné ou échec immédiat si la demande de confirmation est refuséeAucun commit sur cancelled, failed ou issue indéterminéeRetry borné ou humain; une annulation confirmée conserve la connexion
DB / CASRefus fail-closedAucun commitInformation sans engagement ou transfert
WorkerSession perdue/drainPas de reprise transparente prouvéeHandoff si encore contrôlable

Données minimales et provenance

Le pipeline transporte le strict nécessaire: état, faits autorisés, sources et identifiants opaques, jamais un transcript généralisé dans les métriques.

Contexte minimal

Tenant, session, tour, protocole, faits autorisés, révision, langue validée et état de handoff.

Provenance

Source, version, modèle/digest, garde/version et raison de décision restent corrélés au tour.