Règle:code ≠ lablab ≠ cloudcloud ≠ carrier/PSTNclaim sans preuve = cible

Décisions structurantes

Ces décisions évitent les mélanges de source de vérité, de produit et de domaine de panne.

DécisionConséquenceSource actuelleStatut
Deux cellules complètesPas de load balancer RTP central; nouveaux appels basculés par carriertelephony-edge-ha + edge-cell-imageCible non déployée
Source carrier distinctecompute-planes STRIKE IT, ARI 8088 et IA 8000/9000 restent historiquesDépôts IaC séparésDécision documentée
VoiceBot optionnelSa panne ne coupe ni PBX, ni file, ni humainContrats produits séparésArchitecture/code partiel
Déterminisme aux frontièresLLM propose; garde, politique, ACK et CAS décidentPipeline VoiceBot/NavyCode et cible à qualifier
Souveraineté runtimeCloudflare Pages héberge seulement cette documentation statiqueRunbooks et mandat de publicationDocumentation, jamais runtime

Matrice de preuve

Le niveau le plus élevé acquis est indiqué sans extrapolation.

DomaineAcquisNiveauAbsentSource dépôt
Edge supply chainVersions/digests, attestation locale, policy imageCode + labSignature, SBOM, CVE, image cloudinfra/telephony/edge-cell-image
Runtimes edgeKamailio 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éesLabs locaux séparésLe 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 edgemTLS 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 TLSRuntime-lab local, namespace partagéRTP bidirectionnel sur ce même appel, port hôte, carrier/PSTN, cloud et action externeruntime-lab/functional-runner.ts, runtime-lab/run.mjs
Robustesse SIP cibléetmx.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ésAucun 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édiaPair sans certificat, tentative outbound et service inconnu refusés; perte RTPEngine refuse un nouvel appelLab SBC localAttaque externe, carrier réel, failover A/B et appel actifcontroller/run.mjs, runner.ts
Pare-feuInterfaces, identités et dérives activesLab localInstance réelle et scan externelab/run.mjs, health-lab/run.py
Santé edge14 checks, timer 15 s, fraîcheur 45 s, spool bornéCode + health-lab simuléExporter, backend, alerting, drainhealth.py, tests observabilité
OpenTofu14 tests natifs provider mockéTest IaCPlan/apply API et rollbacktelephony-edge-ha
Média applicatifSessions, générations, barge-in, ACK en code/testsCodeMedia WS importé et téléphone cloud E2Elib/media-session.ts, tests NP019
Voix IAContrats STT/TTS/LLM et scénarios séparésCode/expériencesEndpoint souverain qualifié et SLOlib/ai, expériences voix
Carrier / PSTNAucun appel PSTN et aucune action externe effectuée par les labsExterneDID, trunk, appel, SRTP, failover et supportAucune preuve opérateur

Risques ouverts prioritaires

Les risques sont formulés comme des comportements observables à fermer, pas comme des composants à acheter.

RisqueImpactPreuve de fermetureOwner
Couverture SIP encore partielleUn 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ësInterop 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-closeEdge téléphonie
Admission non dimensionnéeLe 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 appelsSeuil contractuel et configurable, charge CPS/burst mutualisé, faux positifs 429 et capacité média par palierEdge téléphonie + SRE/carrier
Media WS non intégréChaîne Asterisk vers Navy Phone non exécutableImport runtime + test audio bidirectionnelMédia Navy Phone
Readiness sans consommateurCellule malade continue à recevoir des appelsDrain et retrait carrier exercésSRE/carrier
Barge-in E2E absentRéponse obsolète, crash ou commit incorrectTéléphone cloud avec annulation propagée et ACK invalidéNavy média + VoiceBot
PKI et secrets non opérésImpossible de démarrer ou renouveler sans interruptionRotation, révocation et break-glass testésSécurité/SRE
Absence de SLO mesuréCapacité, latence et qualité impossibles à garantirCharge, burn-rate, MOS, TTFT et runbooksSRE/produit

Gates avant pilote

Chaque gate doit produire une preuve reproductible et être approuvée par son owner.

G1

Image promouvable

Signature, SBOM, CVE, attestation externe et UUID zonaux.

G2

Infra opérable

PKI, secrets, VPN/BGP, NTP, observabilité, backup et rollback.

G3

Interop et capacité carrier

SIP/SDP/SRTP, DID, DTMF, timers, failover, causes, seuil CPS/burst configurable, charge par palier et faux positifs 429.

G4

Expérience humaine

Latence, interruption, repli, transfert, qualité voix et tests par profils.