Exploitation et disponibilité
Readiness, failover et supervision11 composants
Liveness applicative et readiness edge localeCode + lab
- Rôle / owner
- livez/readyz applicatifs, collecteur edge 14 checks et contrôleur d’admission local. Owners applicatif et edge séparés.
- Interfaces / confiance
- HTTP privé app; edge sans listener ni port, timer 15 s, RPC Kamailio Unix local.
- État / dépendances
- Quatre fichiers /run bornés et bail htable Kamailio de 30 s.
- HA / panne
- Snapshot exact âgé de plus de 25 s refusé pour admission; panne collecteur demande le drain, sinon le bail expire; appels établis non gated.
- Sécurité / preuve / source
- 0700/0640, aucune donnée d’appel/adresse/média/payload/sortie de commande. Health-lab injecté et runtime-lab réel. Source:
health.py,admission.pyet labs.
Consommateur carrier du contrat A/BExterne non prouvé
- Rôle / owner
- Sélectionne A puis B pour chaque nouvel appel. Autorité: carrier contracté; Navy Phone possède le contrat et la preuve d’acceptation.
- Interfaces / confiance
- Deux cibles SIP mTLS directes; 503
Cell Drainingou absence de réponse. Aucun contrôleur central ni nouveau listener edge n’est implicite.
- État / dépendances
- Priorités 10/20, timeout 4 s et hold-down 30 s dans le modèle local; configuration opérateur et audit terrain absents.
- HA / panne
- Deux échecs ferment le nouvel appel; aucun actif ne migre et toute redirection SIP reste interdite.
- Sécurité / preuve / source
- Contrat et lab local content-free PASS, promotion NO-GO. Aucun carrier, PSTN ou action externe. Voir résilience et preuves.
Exporter privé edge-healthCode + lab
- Rôle / owner
- Envoie l’état content-free hors chemin d’appel. Owner SRE edge.
- Interfaces / confiance
- Snapshot local vers POST mTLS TCP/9443 avec identité telemetry A/B.
- État / dépendances
- Spool de trois enveloppes; dépend du timer santé et de la cible privée.
- HA / panne
- Retry idempotent; panne distante sans impact sur appel ou admission locale.
- Fiche / preuve
- Fiche exporter. Telemetry-lab local; VIP et cloud absents.
VIP et load balancer privésCible
- Rôle / owner
- Adresse stable et répartition TCP vers collecteurs A/B. Owner SRE plateforme.
- Interfaces / confiance
10.72.40.50:9443, passthrough TLS sans Proxy Protocol.
- État / dépendances
- Health check TCP; dépend du réseau privé et du service LB Scaleway.
- HA / panne
- Aucun runtime; SPOF et source backend restent non qualifiés.
- Fiche / preuve
- Fiche VIP/LB. Contrat statique, aucun déploiement.
Collecteur privé edge-healthCode + lab
- Rôle / owner
- Réception, déduplication et métriques A/B. Owner SRE edge.
- Interfaces / confiance
- POST mTLS TCP/9443 et GET /metrics; identités telemetry/monitoring séparées.
- État / dépendances
- SQLite borné à 256 enveloppes par cellule; sorties content-free.
- HA / panne
- Aucune réplication ni sauvegarde; appels indépendants.
- Fiche / preuve
- Fiche collecteur. Lab mTLS A/B, aucun cloud.
Prometheus A/B edge-healthCode + runtime-lab
- Rôle / owner
- Scrape et agrégation par cellule/scope. Owner SRE observabilité.
- Interfaces / confiance
- GET /metrics mTLS direct A/B; sortie vers les deux Alertmanager.
- État / dépendances
- Deux Prometheus 3.14.0 digest-pinnés exercés; TSDB durable et rétention à figer.
- HA / panne
- Deux scrapes par Prometheus et perte de A exercés localement; panne double, charge et SLO absents.
- Fiche / preuve
- Fiche Prometheus. Runtime-lab fermé 12/12, aucun déploiement souverain.
Alertmanager A/B edge-healthCode + runtime-lab
- Rôle / owner
- Groupage, inhibition et routage vers receiver. Owner SRE/astreinte.
- Interfaces / confiance
- Gossip mTLS 9094 et webhook notification mTLS privé.
- État / dépendances
- Deux Alertmanager 0.33.1 digest-pinnés exercés; dépend des deux Prometheus.
- HA / panne
- Gossip bilatéral, arrêt de A, partition fail-open, doublons dédupliqués et guérison exercés localement.
- Fiche / preuve
- Fiche Alertmanager. Runtime-lab fermé 12/12, aucun déploiement ou chemin humain.
Receiver privé durable d’alertesCode + lab 23/23
- Rôle / owner
- Validation, idempotence et watchdog deadman. Owner SRE/astreinte.
- Interfaces / confiance
- POST /v1/alerts et /v1/deadman mTLS sur
10.72.40.60:9444.
- État / dépendances
- SQLite et snapshot content-free bornés; CA notification dédiée.
- HA / panne
- Panne puis retry exercés localement; pas de réplica ni restauration; aucune action humaine livrée.
- Fiche / preuve
- Fiche receiver. Labs 23/23 isolé et 12/12 intégré avec Alertmanager A/B réels.
PostgreSQL des opérations edge-healthCandidat + lab synthétique
- Rôle / owner
- Journalise transitions, obligations, tentatives, acquittements et escalades. L’owner d’objets
navy_phone_edge_health_ownerestNOLOGIN,NOSUPERUSERet distinct de l’owner métier cible SRE opérations et plateforme données.
- Interfaces / confiance
- PostgreSQL 18.6 avec
pgcrypto; rôlesNOLOGINingest/dispatch/operator/recovery et fonctions bornées dont lesearch_pathplacepg_tempen dernière position. Le lab prouve qu’un objet temporaire homonyme ne détourne pas la fonction privilégiée et n’ouvre aucun port hôte.
- État / dépendances
- Cinq journaux append-only et une outbox transactionnelle. Chaque tentative produit
startedpuisresultdans la même table; répéterstartedavec le même lease est idempotent. Le sink consulte d’abord l’issue terminale de l’idempotency key, puis lalifecycle_revision: une clé dont l’effet a déjà été appliqué resteacceptedsans rejouer l’effet; une clé déjà écartée restesuppressed. La completion inscrit un outcome distinctsuppressedpour un effet réellement écarté. Le payload révisé et les tombstonesresolved/acknowledgedgouvernent les autres effets obsolètes.
- HA / panne
- Le lab exerce les deux permutations
firing/resolvedetescalation/acknowledgedavec perte de completion DB, retry de lease et redémarrage réel: deux requêtes, un seul effet, aucune fausse reclassification ensuppressed. Un lease en vol n’est jamais présenté comme annulé; une résolution compensatrice et les races résolution/ACK restent auditées dans les deux ordres exercés. Le stress a reproduit trois fois une course intermittente de même génération avant le verrou transactionnel PostgreSQL dérivé degeneration_id; la série propre passe ensuite 5/5 avec 22 contrôles par passage, cleanup vrai et aucune nouvelleunique_violation. Cette preuve reste locale. Le sink synthétique persiste ses révisions sur disque par fichier temporaire,fsyncdu fichier, renommage atomique puisfsyncdu dossier. Son étatnavy-phone.synthetic-operator-sink-state.v1est strictement versionné: clés attendues, listes SHA-256 et révisions entières positives sont contrôlées. Le JSON corrompu et le JSON syntaxiquement valide mais incomplet comme{}sont refusés.pg_dump/pg_restorepréserve l’owner. Aucun PostgreSQL HA, receiver intégré ou humain réel.
- Fiche / preuve
- Fiche PostgreSQL opérations. Issue terminale, suppression stale, validation stricte de l’état et verrou par génération sont prouvés dans le candidat local seulement. Promotion NO-GO. Sink réel de production, identités runtime, dead-letter queue, nombre maximal de retries, receiver et humain restent non intégrés.
Dispatcher privé des événements opérateur edge-healthCandidat + labs locaux
- Rôle / owner
- Réclame les obligations operations v2, journalise la tentative avant le réseau et transmet chaque événement au sink. Owner cible: SRE opérations.
- Interfaces / confiance
- PostgreSQL mTLS par identité A/B, puis HTTPS mTLS vers
10.72.40.70:9445. Identités base et sink séparées.
- État / dépendances
- Aucun état métier local. Dépend des leases, témoins epoch/watermark et completions idempotentes de PostgreSQL operations v2.
- HA / panne
- Deux workers, concurrence et délais bornés. Les erreurs temporaires sont rejouées; les réponses invalides sont bloquées sans immobiliser l’événement sain suivant.
- Fiche / preuve
- Vérificateur contractuel, 75 tests HTTPS mTLS avec sink simulé et lab PostgreSQL 18.6 reproduit deux fois sous Node.js 22.23.2 exact avec certificats A/B, identités
session_useret fonctions claim/start/complete réelles. Aucun sink réel déployé, canal de messagerie ou humain notifié. Promotion NO-GO.
Sink opérateur transactionnel edge-healthCandidat + lab local
- Rôle / owner
- Engage les reçus opérateur, écarte les révisions dépassées et crée une obligation durable non consommée. Owner cible: SRE opérations et plateforme données.
- Interfaces / confiance
- HTTPS mTLS privé TCP/9445 avec identité SAN et adresse source A/B, JSON canonique fermé et PostgreSQL dédié.
- État / dépendances
- Reçus idempotents, tête de révision par génération, watermark global, inbox et obligations de canal annulables.
- HA / panne
- Le lab local couvre concurrence, crash après commit, restauration ancienne, changement d’epoch et révisions obsolètes. Aucun PostgreSQL HA ou restauration managée.
- Fiche / preuve
- Service, schéma et lab PostgreSQL/mTLS locaux. L’obligation
operator-primaryn’est pas consommée: aucun SMS, appel, email, push ou humain notifié. Promotion NO-GO.