Image promouvable
Signature, SBOM, CVE, attestation externe et UUID zonaux.
Assurance architecture
Registre transversal des sources de vérité, preuves exécutées, limites connues et gates avant pilote.
Ces décisions évitent les mélanges de source de vérité, de produit et de domaine de panne.
| Décision | Conséquence | Source actuelle | Statut |
|---|---|---|---|
| Deux cellules complètes | Pas de load balancer RTP central; nouveaux appels basculés par carrier | telephony-edge-ha + edge-cell-image | Cible non déployée |
| Source carrier distincte | compute-planes STRIKE IT, ARI 8088 et IA 8000/9000 restent historiques | Dépôts IaC séparés | Décision documentée |
| VoiceBot optionnel | Sa panne ne coupe ni PBX, ni file, ni humain | Contrats produits séparés | Architecture/code partiel |
| Déterminisme aux frontières | LLM propose; garde, politique, ACK et CAS décident | Pipeline VoiceBot/Navy | Code et cible à qualifier |
| Souveraineté runtime | Cloudflare Pages héberge seulement cette documentation statique | Runbooks et mandat de publication | Documentation, jamais runtime |
Le niveau le plus élevé acquis est indiqué sans extrapolation.
| Domaine | Acquis | Niveau | Absent | Source dépôt |
|---|---|---|---|---|
| Edge supply chain | Versions/digests, attestation locale, policy image | Code + lab | Signature, SBOM, CVE, image cloud | infra/telephony/edge-cell-image |
| Runtimes edge | Kamailio 6.0.7, RTPEngine 26.0.1.13, Asterisk 22.9.0; SRTP deux legs, RTP bidirectionnel, plus de 1 000 paquets relayés dans le dernier run borné et 4/4 sessions concurrentes bornées | Labs locaux séparés | Le volume de paquets est sensible au timing et ne prouve aucun débit. Dimensionnement, carrier/PSTN, cloud et slin16 Media WS E2E restent absents; 4 sessions ne constituent pas une preuve de capacité | runtime-lab/run.mjs, controller/run.mjs |
| Sockets exacts image edge | mTLS 8.8.8.9:5061 → 8.8.8.8:5061 → TLS 127.0.0.1:5062; NG 127.0.0.1:22222; SDP 8.8.8.8:10000-11000; double Record-Route; Stasis et BYE sur la même connexion TLS | Runtime-lab local, namespace partagé | RTP bidirectionnel sur ce même appel, port hôte, carrier/PSTN, cloud et action externe | runtime-lab/functional-runner.ts, runtime-lab/run.mjs |
| Robustesse SIP ciblée | tmx.so en production/lab. L’état combine Call-ID, orientation et CSeq INVITE, plus un marqueur current monotone par orientation; les quatre reply routes INVITE refusent un CSeq ancien avant RTPEngine (1xx core drop, 2xx t_drop()). BYE nettoie toutes les clés CSeq des deux orientations. Chaque 183 retransmis observé est revalidé ancré. La campagne garde 7 PRACK, reset early unanswered=1, plus de 1 000 paquets relayés, 4/4 sessions et drainage à zéro. Late offer, hold/reprise, UPDATE, 422/Min-SE et BYE restent verts. L’ACK anormal est injecté avec unexpectedAckSdpObserved=1; le vérificateur exige remove_body() et retrait de Content-Type avant t_relay(). | Runtime-lab et SBC lab locaux verts, 29 août 2026; garde cross-CSeq et stripping ACK prouvés par code/configuration chargée et compteurs ciblés | Aucun UAS ne retarde encore artificiellement une réponse cross-CSeq; les quatre branches stale t_drop() ne sont pas injectées. Aucun pcap ou événement PBX indépendant ne prouve le corps ACK reçu. Le PRACK unmatched garde son risque de contournement aval et l’état UAS inconnu. Carrier/cloud, forks, plusieurs 1xx fiables séquentiels, RTP après renégociation, rollback et ancien média sur rejet/glare/timeout, teardown ACK late-offer, rotation/refresher, expiration réelle, autres timers et races restent ouverts. Le volume de paquets est timing-sensitive et ne prouve aucun débit. | kamailio.cfg.tpl, runner.ts, controller/run.mjs |
| Admission et panne média | Pair sans certificat, tentative outbound et service inconnu refusés; perte RTPEngine refuse un nouvel appel | Lab SBC local | Attaque externe, carrier réel, failover A/B et appel actif | controller/run.mjs, runner.ts |
| Pare-feu | Interfaces, identités et dérives actives | Lab local | Instance réelle et scan externe | lab/run.mjs, health-lab/run.py |
| Santé edge | 14 checks, timer 15 s, fraîcheur 45 s, spool borné | Code + health-lab simulé | Exporter, backend, alerting, drain | health.py, tests observabilité |
| OpenTofu | 14 tests natifs provider mocké | Test IaC | Plan/apply API et rollback | telephony-edge-ha |
| Média applicatif | Sessions, générations, barge-in, ACK en code/tests | Code | Media WS importé et téléphone cloud E2E | lib/media-session.ts, tests NP019 |
| Voix IA | Contrats STT/TTS/LLM et scénarios séparés | Code/expériences | Endpoint souverain qualifié et SLO | lib/ai, expériences voix |
| Carrier / PSTN | Aucun appel PSTN et aucune action externe effectuée par les labs | Externe | DID, trunk, appel, SRTP, failover et support | Aucune preuve opérateur |
Les risques sont formulés comme des comportements observables à fermer, pas comme des composants à acheter.
| Risque | Impact | Preuve de fermeture | Owner |
|---|---|---|---|
| Couverture SIP encore partielle | Un UAS aval peut accepter le SDP brut d’un PRACK unmatched et contourner l’ancrage média du proxy; les ACK late-offer défaillants restent sans teardown; branches multiples, renégociation et courses restent ambiguës | Interop UAS/carrier avec vérification de l’état média aval sur erreurs PRACK, teardown ACK contrôlé, RTP après chaque renégociation, rejet/glare/timeout avec ancien média intact, reset re-INVITE sûr, forks, plusieurs 1xx fiables, timers réels, races CANCEL/200/BYE et couverture de chaque branche fail-close | Edge téléphonie |
| Admission non dimensionnée | Le pike fixe à 12 requêtes par fenêtre de 2 s peut refuser un burst carrier légitime; 4 sessions lab ne dimensionnent ni 25, ni 500 appels | Seuil contractuel et configurable, charge CPS/burst mutualisé, faux positifs 429 et capacité média par palier | Edge téléphonie + SRE/carrier |
| Media WS non intégré | Chaîne Asterisk vers Navy Phone non exécutable | Import runtime + test audio bidirectionnel | Média Navy Phone |
| Readiness sans consommateur | Cellule malade continue à recevoir des appels | Drain et retrait carrier exercés | SRE/carrier |
| Barge-in E2E absent | Réponse obsolète, crash ou commit incorrect | Téléphone cloud avec annulation propagée et ACK invalidé | Navy média + VoiceBot |
| PKI et secrets non opérés | Impossible de démarrer ou renouveler sans interruption | Rotation, révocation et break-glass testés | Sécurité/SRE |
| Absence de SLO mesuré | Capacité, latence et qualité impossibles à garantir | Charge, burn-rate, MOS, TTFT et runbooks | SRE/produit |
Chaque gate doit produire une preuve reproductible et être approuvée par son owner.
Signature, SBOM, CVE, attestation externe et UUID zonaux.
PKI, secrets, VPN/BGP, NTP, observabilité, backup et rollback.
SIP/SDP/SRTP, DID, DTMF, timers, failover, causes, seuil CPS/burst configurable, charge par palier et faux positifs 429.
Latence, interruption, repli, transfert, qualité voix et tests par profils.