Règle:code ≠ labpreuve reproductiblesource dépôtNO-GO production

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 edge intégrésKamailio 6.0.7, RTPEngine 26.0.1.13 et Asterisk 22.9.0; appel local fermé complet. Admission locale: drain par défaut, OPTIONS disponible, bail 30 s via RPC réel, dialogue établi survivant à l’expiration, nouvel INVITE 503. Un lab SBC séparé borne aussi 4/4 sessions simultanéesRuntime-lab exact-edge local + labs ciblésRetrait/failover carrier, PSTN, cloud, PKI production, voix humaine, pipeline IA, charge et SLO. Les paquets relayés sont supérieurs à zéro, mais ce total volatil ne prouve ni seuil de performance ni débit; 4 sessions ne dimensionnent pas le serviceruntime-lab/run.mjs, admission-runner.ts, integrated-media-runner.ts
Sockets et corrélation exact-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; canal PJSIP corrélé au Call-ID, bridge ARI à deux membres exacts, WSS 8089; double Record-Route et BYE retourRuntime-lab local, réseaux fermés sans port hôteIdentités externes, appel carrier/PSTN, cloud et action externeruntime-lab/functional-runner.ts, integrated-media-runner.ts, runtime-lab/run.mjs
Robustesse SIP cibléenp_oa_lock dédié au Call-ID couvre contrôle et mutation RTPEngine. Admission CSeq typée, current_invite/current_update, active et media_owner empêchent collision, chevauchement et rollback ancien. BYE pose une tombstone globale avant destruction. Le lab observe une fois chacun: 491 offre chevauchante, 500 INVITE 103 après UPDATE 106, 500 collision INVITE/UPDATE au CSeq 106, 481 rejeu initial après BYE. UPDATE 302 réussit avant le final INVITE 300. La campagne garde 8 PRACK dont 2 ack-only, reset early unanswered=1, unexpectedAckSdpObserved=1, 4/4 sessions et drainage à zéro. Un UAS mTLS séparé, piloté par barrières JSON-lines internes sans port hôte, retient puis libère les mêmes octets vérifiés par SHA-256: le 200 PRACK bodyless passe pendant qu’UPDATE 502 possède active, prack_ack_while_update_active=1; après le 200 BYE 504, le 200 UPDATE 503 retenu est supprimé sur tombstone, terminated_update_answer_dropped=1, média drainé.Runtime-lab et SBC lab locaux verts, 29 août 2026; configuration chargée et scénarios ciblés exercésLa suppression du 2xx UPDATE tardif est un hardening fail-closed non transparent, pas une preuve de conformité RFC proxy; son interop carrier/UAS externe reste ouverte. Glare bidirectionnel, forks, plusieurs 1xx fiables séquentiels, injection exhaustive des branches t_drop() et continuité RTP après chaque renégociation manquent encore. Aucun pcap ou événement PBX indépendant ne prouve le corps ACK reçu. PRACK unmatched conserve un risque de contournement aval; teardown ACK late-offer, rotation/refresher, expiration réelle et carrier/cloud restent ouverts.kamailio.cfg.tpl, runner.ts, race-uas.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é, admission, export et collecte14 checks, timer 15 s, bail 30 s, exporter sans listener, mTLS A/B, déduplication, SQLite borné, anti-Slowloris et cinq règles content-freeCode + health/telemetry/collector labs + runtime Kamailio réel + systemd-analyzeDéploiement et HA du collecteur, backend externe, notification, SLO, retrait/failover carrierhealth.py, admission.py, telemetry.py, collector.py et labs
Failover carrier des nouveaux appelsModèle A priorité 10 puis B priorité 20; 503 Cell Draining, timeout 4 s avec émission anticipée refusée, hold-down 30 s non raccourci par résultats concurrents, 302 terminal sans nouvelle cible, refus fermé après deux échecs et dialogue établi conservé sur A pendant le drainContrat + lab local fermé content-free, décision fonctionnelle PASSCarrier contracté configuré, IP publiques, appel PSTN, TLS/SRTP terrain, failover et récupération opérateur. realCarrierCalled=false; promotion NO-GOcarrier-new-call-failover.ts, verify-carrier-new-call-failover-lab.ts, contrat téléphonie
OpenTofu Scaleway39 tests natifs credential-free répartis sur six modules: 9 compute, 4 données, 5 IAM, 4 pilote, 15 edge HA et 2 coffre audio. Le test ajouté refuse un collecteur télémétrie RFC1918 valide mais non routé. Chaque module possède son lock Scaleway 2.79.0; le package du provider est authentifié et vérifié contre les six locks. Après ce bootstrap réseau borné au miroir, init -backend=false, format, validation et tests mockés tournent avec --network=none. Les sources copiées sont limitées au HCL revu; aucun credential hôte, plan, state, environnement ou stdout brut n’est persisté.Gate locale reproductible après bootstrap fournisseur authentifiéAucun plan/apply contre l’API, ressource Scaleway, state distant, rollback, carrier ou PSTN. PASS fonctionnel de la gate ne change jamais la promotion NO-GO.verify-scaleway-opentofu-runtime.ts, schéma scaleway-opentofu-runtime-gate.v1, six .terraform.lock.hcl
Média applicatifSur le même appel exact-edge, motifs synthétiques distincts détectés dans les deux directions avec marge, références SHA-256 des injections, DTMF exact, ancien mark annulé, mark post-flush reçu et ressources gouvernées nettoyéesLab local fermé intégréLes SHA-256 ne sont pas une signature cryptographique d’origine. Aucun VAD, arrêt acoustique, audition humaine, ACK acoustique, pipeline STT-LLM-TTS, perte/jitter, charge ou téléphone cloud E2Eintegrated-media-runner.ts, integrated-media-signature.ts, serveur Media WS
Enveloppe exact-edgeSchéma v1, 13 checks et 9 métriques canoniques, digest SHA-256, versions et références de corrélation opaques; aucune donnée audio/SIP brute dans le rapport; dernier run avec sourceTreeClean=truePreuve éphémère locale; décision fonctionnelle PASS cibléeRegistre immuable, signature et attestation externe; décision de promotion NO-GO avec blockers local/carrier/attestationedge-integrated-media-evidence.ts, runtime-lab/run.mjs
Voix IAContrats STT/TTS/LLM et scénarios séparésCode/expériencesEndpoint souverain qualifié et SLOlib/ai, expériences voix
Carrier / PSTNUn contrat et un modèle local décrivent le failover attendu; aucun appel PSTN et aucune action externe ne sont effectuésExterne non prouvéDID, trunk, appel, SRTP, failover réel et supportAucune preuve opérateur