Aller au contenu principal

Exigences de la plateforme

Version anglaise : en/REQUIREMENTS.md

Source : KIT_AGENT_PLATEFORME_IA_ENTERPRISE/MATRICE_EXIGENCES_PLATEFORME.csv, 355 exigences (269 P0, 86 P1) réparties en 22 domaines. Le libellé et le critère d'acceptation sont ceux du kit, sans reformulation. Le prompt maître cite 264 exigences : la matrice livrée en contient 355 depuis l'addendum (section 20), c'est ce fichier qui fait foi.

Lire la traçabilité générée​

  • TRACEABILITY.csv : une ligne par exigence, enrichie (chemins de code, routes, migrations, écrans, tests, docs, preuves, blocage). Produit par python tools/traceability/trace.py build à partir de la matrice, de traceability.yaml et des résultats de evidence/results.json.
  • STATUS.md : comptes par domaine et par lot ; TEST_EVIDENCE.md : commandes exécutées et résultats ; BLOCKERS.md : blocages, propriétaire et critère de sortie ; RELEASE_READINESS.md : verdict de livraison.
  • Les statuts changent à chaque exécution : ce document ne les recopie pas.

Glossaire des statuts (tools/traceability/trace.py)​

StatutSignification
NOT_STARTEDaucune trace dans le dépôt pour l'exigence
IN_PROGRESSdu code ou des tests existent, mais une preuve manque ou un travail résiduel est déclaré
FAILEDun jeu de preuves cité a échoué (code de sortie non nul, échec ou erreur)
BLOCKEDun blocage externe est déclaré (accès client, infrastructure, approbation) avec son critère de sortie
PASSEDchaque jeu de preuves cité a tourné vert (au moins un contrôle, aucun échec, aucune erreur, aucun test sauté), les sources n'ont pas changé depuis, aucun travail résiduel ni blocage

Groupes de dépendances entre lots​

Les lots sont décrits dans ROADMAP.md. Correspondance domaine vers lot :

DomaineLotExigences
FOUNDATIONL014
MANAGERL123
IAM_GOVL218
AGENT_RUNTIMEL317
LLM_FINOPSL316
DATA_RAGL424
MULTIMODALL412
OBSERVABILITYL514
SECURITY_SOCL625
AUDIT_EVIDENCEL617
DEV_MARKETPLACEL7, L822
FRONTENDL1 à L818
LICENSING_RELEASEL916
DOCUMENTATIONL1012
RELEASE_ACCEPTANCEL1016
HOST_BOOTSTRAPL118
CLUSTER_MANAGEMENTL112
HIGH_AVAILABILITYL1018
BACKUP_RECOVERYL1019
DISASTER_RECOVERYL1011
INFRA_UIL18
INFRA_SDKL75

Exigences par domaine​

FOUNDATION​

IDPrioritéExigenceCritère d'acceptation
FOUN-001P0Inventaire repos branches et changements existantsRapport audit liens code et écarts
FOUN-002P0Architecture en plans et ADR versionnésArchitecture et ADR revus
FOUN-003P0Matrice bidirectionnelle exigences code API SQL UI tests docsChaque ID est lié à preuves
FOUN-004P0Plan DAG et lots livrablesOrdonnancement dépendances validé
FOUN-005P0Monorepo conventions Python TS GoBuild reproductible et lint
FOUN-006P0OpenAPI et JSON Schema versionnésContrats publiés et tests de compatibilité
FOUN-007P0PostgreSQL central acceptéConnexions migrations backup testés
FOUN-008P0Redis central acceptéConnexions cache HA et configuration testées
FOUN-009P0CI pipelines lint types unit integration e2ePipelines réellement exécutés
FOUN-010P0Gestion des secrets par référencesAucun secret en dur ou dans logs
FOUN-011P0SBOM et SPDX par artefactRapport de licence vérifié
FOUN-012P0Exceptions de licence PostgreSQL Redis client modelsExceptions enregistrées et validées
FOUN-013P0Matrice versions composants et dependancesVersions figées et testées
FOUN-014P0Build de distribution signé et reproductibleArtefacts hashes et signatures vérifiés

MANAGER​

IDPrioritéExigenceCritère d'acceptation
MANA-001P0Découverte clusters BYO ou managésInventaire vrai et mode découverte testé
MANA-002P0Inventaire nodes CPU RAM stockage GPUDonnées réelles affichées
MANA-003P0Preflight DNS TLS ports capacité versionsInstallation bloquée si contrôle critique échoue
MANA-004P0Profils development enterprise banking airgapped hybridChaque profil installable ou marqué bloque
MANA-005P0Catalogue managed componentsManifests par service validés
MANA-006P0Graphe de dépendances et ordre des opérationsTest ordre et cycles
MANA-007P0Reconciler desired observed statesConvergence vérifiée
MANA-008P0Différencier health operation security statesUI et API cohérentes
MANA-009P0Install/config/start/stop/restartVérifier action et état observé
MANA-010P0Rolling restart drain maintenance et PDBService critique protégé
MANA-011P0Scale KEDA HPA quotas ressourcesScale out et scale in testés
MANA-012P0Upgrade migration compatibilité canaryUpgrade depuis version antérieure testé
MANA-013P0Rollback ou restore expliciteRetour sûr ou impossibilité signalée
MANA-014P0Health liveness readiness functional probesSmoke test fonctionnel
MANA-015P0Drift detection configurationChangement hors manager détecté
MANA-016P0Config versions typed schema et secret refsValidation ref et rollback
MANA-017P0Node agent Go avec allowlistCommande arbitraire interdite
MANA-018P0Platform Operator KubernetesReconcilier des CRD ou ressources déploiement
MANA-019P0Backups coordonnés et tests restoreRestauration exécutée
MANA-020P0Diagnostics support bundle expurgéPack sans PII ou secret
MANA-021P0Installation offline et images miroirAucun accès Internet durant recette
MANA-022P0Bascule sur infrastructure client existanteBYO sans commande destructrice
MANA-023P0Rapport recette installation signéPASS FAIL BLOCKED avec preuves

IAM_GOV​

IDPrioritéExigenceCritère d'acceptation
IAM_-001P0Keycloak OIDC SAML SSO MFALogin et logout et MFA vérifiés
IAM_-002P0Identités de service SPIFFE SPIRE mTLSmTLS et workload IDs vérifiés
IAM_-003P0OpenFGA relations ressourcesAllow/deny par document et action
IAM_-004P0OPA Rego ABAC contextuelDécision obligation et deny testés
IAM_-005P0Policy bundles version et publicationVersion réellement chargée par service
IAM_-006P0Deny by default et fail-closedPanne OPA/FGA action sensible bloquée
IAM_-007P0Context Authority signe contextesSignature expiry issuer audience validés
IAM_-008P0Delegation scopes audience expiry depthSous-agent droits plus restrictifs
IAM_-009P0Identité on_behalf_of utilisateur de bout en boutAction audite user et workload
IAM_-010P0Sessions révoquées en cours de runNouvelle action sensible bloquée
IAM_-011P0Identités pour agents planifiésMandat explicite sans usurpation
IAM_-012P0Séparation roles admins developers auditorsPermissions backend testées
IAM_-013P0Break glass exceptionnelDurée audit et approbation validés
IAM_-014P0Approval four-eyes et séparation tâchesApprobateur différent demandeur
IAM_-015P0Permissions données RLS et droits sourcesLecture hors ressource refusée
IAM_-016P0Policy simulator et audit des changementsTests diff/revisions et UI
IAM_-017P0Modeles de rôles RBAC ABAC ReBACPermission effective jamais plus large
IAM_-018P0KMS HSM integration via clientGestion de clé négociée ou blocage documenté

AGENT_RUNTIME​

IDPrioritéExigenceCritère d'acceptation
AGEN-001P0Runtime Navin Loop Runner SubagentManagerAgent multi-step produit résultat testable
AGEN-002P0Planning acting verification recoveryRecette erreurs et correction
AGEN-003P0Checkpoints et reprise sans re-exécution non sûreResume idempotent validé
AGEN-004P0Heartbeat deadline cancellationSuspension et timeout testés
AGEN-005P0Temporal workflows durablesReprise après interruption process
AGEN-006P0NATS JetStream events durablesRedelivery et déduplication testés
AGEN-007P0gVisor sandbox code outilAction hors sandbox interdite
AGEN-008P0Agent registry versions owners risk statesCycle draft approuve actif suspendu
AGEN-009P0Application registry avec deploy et statutsApplications visibles et gouvernées
AGEN-010P0Agents tiers via SDK et gatewaysAgent externe ne contourne pas règles
AGEN-011P0MCP gateway authz par invocationAppel non autorisé bloqué
AGEN-012P0MCP catalogue discovery outils schemasOutils versions et scopes exposés
AGEN-013P0API gateway APISIX auth rate limitPolitique ingress et egress testée
AGEN-014P0Sécurisation sous-agent identités et ressourcesDroites limités et audit
AGEN-015P0Validation args outils effets side-effectsValidation avant mutation
AGEN-016P0Webhook events signés et idempotentsReplay et signature testés
AGEN-017P0Protected execution des skills/pluginsPermission demandée non accordée implicitement

LLM_FINOPS​

IDPrioritéExigenceCritère d'acceptation
LLM_-001P1LiteLLM OSS proxy centralAppel local via gateway
LLM_-002P1Provider local cloud config et secretsClé non visible et route testée
LLM_-003P1vLLM inference localeModele de recette répond
LLM_-004P1Registry modeles versions licenses weightsProvenance et approbation
LLM_-005P1Model modalities texte vision image audio videoMatrice support non fictive
LLM_-006P1Reasoning effort context output paramsValeur réelle fournisseur conservée
LLM_-007P1Fallback restrict par sensibilité régionPas de fallback interdit
LLM_-008P1Budget per user agent tenant projectBlocage sur plafond configuré
LLM_-009P1Quota rpm tpm concurrenceRate limiter test charge
LLM_-010P1Pricing dated input output cache reasoningUsage agrégé et tarif versionné
LLM_-011P1FinOps audio image vidéo GPU stockageCoûts avec provenance ou unavailable
LLM_-012P1Cost reservation reconciliationEstimation puis reçu
LLM_-013P1A/B model evaluations et baselinesComparaison sauvegardée
LLM_-014P1Choix providers GCP Azure AWS Anthropic OpenAI etcAdaptateurs vérifiés si credentials
LLM_-015P1Local-only / airgapped modelsAucun egress dans mode isolé
LLM_-016P1Model rollout et rollbackPublication approuvée et historique

DATA_RAG​

IDPrioritéExigenceCritère d'acceptation
DATA-001P0Storage abstraction S3 AWSUpload download credential et metadata testés
DATA-002P0Storage abstraction Azure BlobTests adaptateur ou BLOCKED dépendance client
DATA-003P0Storage abstraction GCSTests adaptateur ou BLOCKED dépendance client
DATA-004P0Storage abstraction IBM COSTests adaptateur ou BLOCKED dépendance client
DATA-005P0Storage abstraction Seaweed S3Tests adaptateur ou BLOCKED dépendance client
DATA-006P0Capabilities discovery versioning retention WORMVraie détection et refus absence
DATA-007P0Presigned URLs et contrôles accèsExpiration et scopes testés
DATA-008P0Qdrant filtre tenant et ACLPas de cross-tenant leakage
DATA-009P0Haystack ingest retrieve rerankRésultat et provenance testés
DATA-010P0Docling extraction PDF/Word/tableDocument de recette parsé
DATA-011P0PaddleOCR scan imagesOCR document de recette
DATA-012P0OpenLineage provenance transformationsLien source document réponse
DATA-013P0Chunk-level ACL et document-level ACLFragments interdits absents du contexte
DATA-014P0Source permission pre-retrievalRAG ne contourne pas source
DATA-015P0RAG poisoning detection quarantineDocument suspect isolé
DATA-016P0Retention/erasure data lifecycleRègle retention et effet mesuré
DATA-017P0RAG citations et version sourceRéponse cite sources autorisées
DATA-018P0PII detection PresidioExemples bancaires détectés
DATA-019P0Masking before LLM logs outputsAucune PII brute dans traces test
DATA-020P0Tokenization reversible vault separéDetokenization soumise droits
DATA-021P0Tink encryption envelope et rotation clésCiphertext et rotation testés
DATA-022P0Residency et data egress restrictionsDestination interdite bloquée
DATA-023P0SQL RLS isolation end-to-endTests access A != B
DATA-024P0Cache sensible encrypted et segregationIsolation des tenants vérifiée

MULTIMODAL​

IDPrioritéExigenceCritère d'acceptation
MULT-001P1LiveKit room et streaming temps réelSession voix fonctionnelle
MULT-002P1WebRTC reconnect low-latencyReconnexion et mesure latence
MULT-003P1faster whisper STTAudio de test transcrit
MULT-004P1pyannote diarisationChangements locuteurs détectés
MULT-005P1Silero VADSegments de parole détectés
MULT-006P1Kokoro TTSSynthèse testée avec poids approuvés
MULT-007P1VLM image/doc et vidéo framesTest vision et sortie
MULT-008P1Audio recording consent retentionRefus sans consentement
MULT-009P1Transcription PII protectionTranscript filtré
MULT-010P1Interrupt/turn cancellationTour interrompu proprement
MULT-011P1Licences codecs drivers models weightsSBOM et modèles qualifiés
MULT-012P1Identity user livekit participant actorAudit par participant et agent

OBSERVABILITY​

IDPrioritéExigenceCritère d'acceptation
OBSE-001P0OpenTelemetry instrumentation W3C traceTrace corrélée de bout en bout
OBSE-002P0OTel collector filtering exportPII expurgées avant export
OBSE-003P0Opik traces prompt evaluationsExecution LLM et outils visibles
OBSE-004P0Jaeger distributed tracesTrace interservices visible
OBSE-005P0Prometheus metrics p50 p95 p99Dashboards métriques vérifiés
OBSE-006P0Perses dashboards unifiedSources de métriques valides
OBSE-007P0Alertmanager routing silences groupingNotification test réellement reçue
OBSE-008P0OpenSearch logs indexing searchRecherche et tenant filtering
OBSE-009P0OpenSearch security analytics detectionsRègles déclenchent findings
OBSE-010P0OpenLineage lineage explorationSource vers réponse traçable
OBSE-011P0Opik et OTel pas seul audit probantEvents critiques persistés ailleurs
OBSE-012P0SLO et error budget trackingSLO réel par service
OBSE-013P0FinOps metrics tenant model agentCoûts de test attribués
OBSE-014P0Performance CPU GPU RAM concurrencyDonnées mesures véritables

SECURITY_SOC​

IDPrioritéExigenceCritère d'acceptation
SECU-001P0Falco runtime detectionAlerte test documentée
SECU-002P0Tetragon runtime enforcementPolitique et effet mesurés
SECU-003P0Detection ingestor normalize eventsAlertes de sources corrélées
SECU-004P0Event correlator user agent tenantIncident multi-source lié
SECU-005P0AI risk engine policy decisionSévérité et raison tracées
SECU-006P0Detection prompt injectionAppel outil interdit malgré injection
SECU-007P0Detection data exfiltrationEgress bloqué et incident
SECU-008P0Detection secrets leakSecret faux bloqué avant export
SECU-009P0Detection runaway agent cost loopsCircuit breaker applique
SECU-010P0Detection MCP compromised pluginPlugin unsigned refusé
SECU-011P0Detection privilege escalationEscalade refusée
SECU-012P0Detection RAG poisoningDocument suspect isolé
SECU-013P0Detection no-audit or unauthorized policy changeIncident généré
SECU-014P0SOC incidents assign lifecycleStatus et timeline auditables
SECU-015P0SOAR playbooks approved typed actionsAucune commande shell libre
SECU-016P0Kill Switch run agent subagentsCancel et refus nouvelles actions
SECU-017P0Kill Switch application tool MCP providerBlocage permanent redémarrage
SECU-018P0Kill Switch network CiliumRéseau isolé et vérifié
SECU-019P0Kill Switch credentials user and tenantRévocation appliquée et testée
SECU-020P0Containment desired observed receiptsNe passe VERIFIED que preuve réelle
SECU-021P0Separation alerting vs enforcement vs auditPanne d'un plan n'affaiblit pas contrôle
SECU-022P0Recover workflow four-eyes and reauthorizationReprise sous autorisation
SECU-023P0Transaction safety in incidentAucun paiement doublé
SECU-024P0False positive proportionality guardCritères d'automatisation prédéfinis
SECU-025P0SOC consoles and access controlRôles SOC et audit accès

AUDIT_EVIDENCE​

IDPrioritéExigenceCritère d'acceptation
AUDI-001P0Immutable audit event schemaContrat et validations
AUDI-002P0Audit capture who what when how why resultPreuve action complete
AUDI-003P0Trace and run ID correlationReconstitution timeline multiagent
AUDI-004P0Audit policy FGA OPA decisionsVersion reason obligations et IDs
AUDI-005P0Audit approvals delegation rights lineagePreuves corrélées
AUDI-006P0Audit data classification DLP and egressProtection indiquée et vérifiée
AUDI-007P0Audit tool model prompt skill plugin versionsConfiguration exec reproductible
AUDI-008P0Audit gateway durable queue no samplingPannes et redelivery testés
AUDI-009P0Transactional outbox idempotency dedupAucun event perdu au test
AUDI-010P0Sealing canonicalization hashing signatureVerification signature réussie
AUDI-011P0Client storage WORM Object Lock capabilityImmutabilité qualifiée ou refus
AUDI-012P0Audit encryption access separationAdministrateur technique ne voit pas payload
AUDI-013P0Retention and legal hold workflowsExpiration contrôlée et preuves
AUDI-014P0Audit read/export accesses themselves auditedTrace consult et export
AUDI-015P0Evidence verification integrity monitoringAltération détectée
AUDI-016P0Clock sync event_time ingested sealedHorodatages distincts vérifiés
AUDI-017P0Incident evidence preservation and chainAudit chaîne possession

DEV_MARKETPLACE​

IDPrioritéExigenceCritère d'acceptation
DEV_-001P1SDK Python TypeScript GoClients publiables et tests conformance
DEV_-002P1SDK contracts shared JSON SchemaCompatibles interlangage
DEV_-003P1CLI login and scaffold agentProjet créé utilisable
DEV_-004P1CLI create plugin skill prompt mcp connectorArtefacts valides générés
DEV_-005P1CLI validate test security authzTests réellement exécutés
DEV_-006P1CLI publish sign deploy doctor runsCommandes fonctionnelles
DEV_-007P1Developer code-first studio MonacoEditeur projets utilisable
DEV_-008P1Prompt registry drafts versions evaluationsPrompt version et changement audité
DEV_-009P1Skill registry SKILL.md and signaturesSkill version et permission vérifiés
DEV_-010P1MCP Studio server tool schemas authMCP serveur test lancé
DEV_-011P1Connector Studio OAuth API key SQLConf et secrets correctement gérés
DEV_-012P1Rule and Policy Studio simulate publishRego test et version active
DEV_-013P1OCI artifact plugin packagingDigest signature et SBOM
DEV_-014P1Manifest compatibility scopes dependenciesInstallation refuse demande non approuvée
DEV_-015P1Marketplace per tenant environmentInstallation isolée
DEV_-016P1Plugin install upgrade rollback uninstallLifecycle fonctionnel
DEV_-017P1Packs RH end-to-end with fake dataAgent RH et outils résultats testés
DEV_-018P1Packs Finance end-to-end with fake dataAgent Finance et outils résultats testés
DEV_-019P1Banking risk legal IT security sales etc templatesTemplates construits et lintés
DEV_-020P1Plugin docs tests evaluation dashboards alertsFichiers livrés et validés
DEV_-021P1Dev rules AGENTS.md security and qualityRègles distribuées et contrôles réels
DEV_-022P1Approval and production publication gatesPublication échoue si gate absent

FRONTEND​

IDPrioritéExigenceCritère d'acceptation
FRON-001P1Unified Next.js React TypeScript portalBuild et E2E responsive
FRON-002P1SSO navigation role and tenantMenus et backend authz
FRON-003P1Overview real health incidents costsPas de chiffres fictifs
FRON-004P1Platform service lifecycle pageActions connectées et audited
FRON-005P1Cluster nodes and GPU explorerInventaire réel et topologie
FRON-006P1Config version diff schema formsValidation et historique
FRON-007P1IAM users groups service identitiesInteractions backend
FRON-008P1Agents apps runs subagent explorerTimeline et état réels
FRON-009P1Model providers gateway catalog and FinOpsCRUD et permissions
FRON-010P1Developer studio prompts skills MCP pluginsEdition tests et publication
FRON-011P1Marketplace catalog and install wizardsInstall signé en staging
FRON-012P1Data RAG ACL ingest lineage UISource et ACL visibles
FRON-013P1Policy simulation masking encryption pagesChecks effectifs
FRON-014P1SOC incidents Kill Switch recovery UIVerifications et approbations
FRON-015P1Observability traces logs metrics dashboardsCorrélation interservices
FRON-016P1Audit evidence and export pagesDroits audit et WORM status
FRON-017P1License support documentation and backup pagesFonctions réelles
FRON-018P1Accessibility responsive filters paginationE2E et navigation clavier

LICENSING_RELEASE​

IDPrioritéExigenceCritère d'acceptation
LICE-001P0License annual 12 monthsSignature et dates valides
LICE-002P0License triennial 36 monthsSignature et dates valides
LICE-003P0No limit users agents apps cases pluginsAssertions entitlements
LICE-004P0No prices anywhereScan UI/docs/assets
LICE-005P0Offline license issuance verificationVérification sans réseau
LICE-006P0Install-group scope and DR portabilityMigration test
LICE-007P0Expiry grace no safety killLa sécurité et audit restent actifs
LICE-008P0Release version pinning componentsLock manifest complet
LICE-009P0Airgap bundle images packages models SQLInstall sans Internet
LICE-010P0Cosign signatures Syft SBOM TrivyChecks exécutés
LICE-011P0Registry Harbor and CI TektonBuild publish et pull local
LICE-012P0Git Gitea and GitOps ArgoCDPipeline et déploiement reproductibles
LICE-013P0Kyverno Cilium KEDA HPA HelmContrôles en cluster
LICE-014P0Backup Velero and restorationRestoration test
LICE-015P0Client installation handbook and release notesDocuments correspondent version
LICE-016P0Support bundle safe and diagnosticsPas de données sensibles

DOCUMENTATION​

IDPrioritéExigenceCritère d'acceptation
DOCU-001P1Product and architecture docsVue plans flux et décisions
DOCU-002P1Install admin manager and runbook docsCommandes vérifiées
DOCU-003P1IAM policies delegation RLS security docsExemples testés
DOCU-004P1SDK Python TS Go and schema docsSnippets exécutés
DOCU-005P1Plugin MCP skill prompt connector guidePack de démo construit selon guide
DOCU-006P1RAG multimodal voice data privacy docsConformité dépendances clarifiée
DOCU-007P1Observability SOC audit evidence docsIncident simulation reproductible
DOCU-008P1License annual triennial offline support docsAbsence prix et limites
DOCU-009P1Airgap upgrades backup disaster recovery docsTests et limites documentés
DOCU-010P1API OpenAPI and CLI referenceGénérés versions
DOCU-011P1Troubleshooting and compat matrixProcédures vérifiées
DOCU-012P1Conformance and customer acceptance reportPASS FAIL BLOCKED avec preuves

RELEASE_ACCEPTANCE​

IDPrioritéExigenceCritère d'acceptation
RELE-001P0Fresh cluster install automatedRecette sans intervention cachée
RELE-002P0BYO Kubernetes Postgres Redis storageServices clients non modifiés sans accord
RELE-003P0No Internet airgap installPacket egress test ou equivalent
RELE-004P0Failure of OPA OpenFGA audit gatewayFail closed ciblé prouvé
RELE-005P0Policy revocation while agent runningAction suivante refusée
RELE-006P0Non-privileged user cannot see another tenantTests de sécurité réels
RELE-007P0Bank financial operation retry idempotentPas de doublon
RELE-008P0Secrets encrypted and PII out of logsTests redaction
RELE-009P0Agent kill restart cannot resume unauthorizedSuspension persistante prouvée
RELE-010P0Signed plugin unsafe permission deniedMarketplace refuse
RELE-011P0Voice consent and participant identityE2E audio avec traces
RELE-012P0License expires without production cutComportement démontré
RELE-013P0Backup restore evidence retention testedRestauration et preuves
RELE-014P0Performance HA scale and RTO RPO measuredRésultats chiffrés selon cible client
RELE-015P0Developer first agent works day oneTemplate + SDK + docs aboutissent
RELE-016P0Docs and support handover completeRecette de bout en bout signée

HOST_BOOTSTRAP​

IDPrioritéExigenceCritère d'acceptation
HOST-001P0Inventaire hôtes VM bare metal et capacités CPU RAM GPU OS réseauHôtes/labels et ressources inventoriés, valeurs réconciliées par heartbeat
HOST-002P0Préflight SSH OS DNS NTP disque ports et réseauRapport reproductible de contrôles bloquants et avertissements
HOST-003P0SSH par clé Ed25519 ou certificats approuvésConnexion bootstrap validée, méthodes non autorisées refusées
HOST-004P1Support RSA conditionnel selon politique clientTests RSA moderne et politique de refus de clés faibles
HOST-005P0Strict SSH host key/certificate verificationHôte inconnu ou clé hôte modifiée refusés
HOST-006P0SSH via bastion proxy jump et réseaux segmentésE2E bootstrap via bastion sans accès SSH public direct
HOST-007P0Compte bootstrap dédié et sudo allowlist sans root permanentTests sudo allowlist et refus commandes non autorisées
HOST-008P0Références des clés et secrets uniquement dans PostgreSQLScanner DB/logs confirme absence de clés privées
HOST-009P0Binaire Node Agent signé digest vérifié et service systemd durciInstallation signature valide et rejet artefact altéré
HOST-010P0Bootstrap idempotent, rollback et suppression accès temporairesRelance bootstrap sans effets doubles; clés temporaires révoquées
HOST-011P0Enrôlement par jeton unique court lié à un hôteRéutilisation et expiration de jeton bloquées
HOST-012P0Identité SPIFFE et canal mTLS pour Node AgentIdentité vérifiée, rotation cert et refus certificat révoqué
HOST-013P0Agent Node Go inventaire heartbeat métriques et diagnosticsHeartbeats, health et inventaire visibles via API et UI
HOST-014P0Commandes agents signées allowlistées expirantes anti-rejeuRefus signature invalide, nonce rejoué, action hors périmètre
HOST-015P0Commandes agents context identité et audit reçus réelsChaque commande porte actor/tenant/trace/receipt vérifiable
HOST-016P0Mise en quarantaine désenrôlement et récupération machineRevoke bloque commandes et renouvellement et émet audit
HOST-017P1Mise à jour sécurisée du Node Agent avec rollbackTest upgrade signé et rollback sans perte inventaire
HOST-018P0Break glass SSH approuvé et auditéDouble validation, TTL et preuve intervention

CLUSTER_MANAGEMENT​

IDPrioritéExigenceCritère d'acceptation
CLUS-001P0Six modes single host node group K8s existing K8s managed multi cluster externalImport et opérations prouvés pour chacun ou mode marqué unsupported
CLUS-002P0Distinction platform managed et client managedActions destructives automatiquement refusées sur client managed
CLUS-003P0Import Kubernetes via API sans SSH et permissions minimalesImport E2E avec RBAC minimal prouvé
CLUS-004P0Cluster Agent Go répliqué et identité par clusterPerte replica sans perte de contrôle, tokens isolés
CLUS-005P0Cluster Agent connexion sortante mTLS et autonomie contrôlée offlinePerte Manager central n’autorise pas de nouvelles opérations sensibles
CLUS-006P0Platform Operator CRDs schémas et reconciliationTests reconcile install update drift delete contrôlé
CLUS-007P0Node pools CPU GPU labels et placement contraintWorkloads placés sur nœuds compatibles
CLUS-008P0ManagedComponent manifest des modes opérations dépendances et sécuritéValidation schema et intégration API/Operator
CLUS-009P0DAG dépendances services ordre et maintenanceStart/stop respectent dépendances et cas critiques
CLUS-010P0Séparation service start/stop et security suspensionKill switch reste actif après redémarrage de service
CLUS-011P1Capacity planning CPU RAM GPU et quotas par poolSaturation déclenche alerte et bloque planning irréalisable
CLUS-012P0Gestion de plusieurs clusters et perte de connexion WANConsoles affichent état non connu sans inventer état healthy

HIGH_AVAILABILITY​

IDPrioritéExigenceCritère d'acceptation
HAVA-001P0Profils standalone ha critical ha et choix de fault domainsProfils et limites déclarés clairement en UI et manifest
HAVA-002P0Frontend backend Manager gateway répliqués en HAPanne replica avec maintien SLA cible
HAVA-003P0HA Identity Policy Context Authority et Security ControllersPanne replica sans contournement OPA/OpenFGA et révocations
HAVA-004P0HA Audit Evidence SOC Kill Switch et LicensingPanne contrôle central n’efface ni suspend events ni audit
HAVA-005P0Topology spread affinity PDB et drains planifiésReplica spread across host/zone et maintenance compatible PDB
HAVA-006P0Leader election et anti-double opération exclusiveDeux reconcilers ne déclenchent pas deux upgrades/failovers concurrents
HAVA-007P0HA PostgreSQL sous K8s via CloudNativePGPrimary replica bascule testée avec mesures RPO RTO
HAVA-008P0HA PostgreSQL VM via Patroni ou client-managedGestion unique, fencing et rejoin testés sur profil concerné
HAVA-009P0HA Redis Sentinel ou Cluster et reconnexion clientsPanne primary, reconnexion et perte éventuelle documentée
HAVA-010P0HA NATS JetStream quorum et redelivery idempotentPanne membre et reprise sans double action métier
HAVA-011P0HA Temporal persistence et jobs durablesReprise workflow et side effects réconciliés
HAVA-012P0HA des dépendances Keycloak LiteLLM Opik OpenFGA Qdrant OpenSearchTests réels mode HA et dépendances pour versions pinées
HAVA-013P1HA OTel Collector Prometheus AlertmanagerCollecte et alerting vérifiés en panne replica
HAVA-014P0HA LiveKit avec limites de reconnexion roomsPerte room-node donne incident et reconnexion testée
HAVA-015P1HA vLLM et capacity GPU failoverRoutage replica sain et capacité restante vérifiés
HAVA-016P0Fail closed sécurité en panne control planeActions critiques interdites si audit/authz invalide
HAVA-017P0Observabilité HA distinction configured versus validatedUI montre épreuves, fault domains, quorum et mesures
HAVA-018P1Autoscaling horizontal KEDA HPA et politique de quotasTests montée charge et retour stable

BACKUP_RECOVERY​

IDPrioritéExigenceCritère d'acceptation
BACK-001P0Backup Manager central plans restauration permissions et historiqueUI API SQL job et audit E2E prouvés
BACK-002P0Storage adapter S3 Azure GCS IBM Seaweed BYOAdapters testés par capacité et fournisseur disponible
BACK-003P0Qualification capabilities versioning ObjectLock legal hold nativeFail closed si exigence WORM non supportée
BACK-004P0Velero backup Kubernetes manifests CRDs volumes compatiblesRestore vers environnement isolé avec tests de ressources
BACK-005P0PostgreSQL backup cohérent CNPG ou pgBackRest selon modeRestore base et validation cohérence
BACK-006P0PostgreSQL WAL continu et Point in Time RecoveryPITR à point de test et contrôle de données
BACK-007P0Snapshots etcd et procédure restore control planeReconstruction cluster prouvée en environnement de test
BACK-008P0Backup OpenSearch via snapshots natifsIndex restauré et requêtes de contrôle réussies
BACK-009P0Backup Qdrant via snapshots natifsCollection vecteurs restaurée et ACL conservées
BACK-010P0Backup Opik et backends MySQL Redis ClickHouse object storage selon distroRestauration traces et métadonnées validée version pinée
BACK-011P0Backup Temporal NATS JetStream et checkpoints agentsWorkflows et streams restaurables selon objectifs
BACK-012P0Backup OCI Harbor manifests prompts skills plugins policies modèlesDigests signatures et chargement des artefacts vérifiés
BACK-013P0Backup secrets certificats CA et processus key recoveryRestauration contrôlée sans exposition de clés
BACK-014P0Cohérence transverse DB objets registres versionsRapport références orphelines et réconciliation
BACK-015P0Chiffrement backup rétention et séparation de privilègesTests secrets non exposés, restauration autorisée, retention
BACK-016P0Backup WORM preuves d audit immuables sur backend qualifiéTest mutation/suppression refusées pendant rétention
BACK-017P0Tests réguliers automatiques restore isolé et intégritéRapport signé de restauration et alarmes en cas échec
BACK-018P0Backup policies monitoring retards erreurs et alertesAlertes opérationnelles et audit des erreurs
BACK-019P0Restore approval dry-run plan et rollback de configurationOpération impossible sans autorisation et plan compatible

DISASTER_RECOVERY​

IDPrioritéExigenceCritère d'acceptation
DR-001P0DR sites primary secondary multi cluster et rôlesSites et liens de réplication visibles et validés
DR-002P0Modes active passive warm cold et active active statelessProfils testés avec limites et dépendances documentées
DR-003P0Fencing ancien primary et prevention split brainTest promotion avec primaire isolé sans écriture double
DR-004P0Plan recovery séquencé données identités gateways modèlesDAG de reprise testé, état et preuves conservés
DR-005P0Reconstruire Manager depuis bundle offline backups et manifestsExercice recovery Manager sans serveur editeur
DR-006P0DNS load balancer routes reconfiguration failoverTraffic bascule suivant état et vérifications de santé
DR-007P0RPO RTO objectifs client et valeurs observéesExercice mesuré et rapport vs SLA validé
DR-008P0DR tests planifiés avec approbation et preuvesPlan exercise et runbook répliquables
DR-009P0Licence 12 36 mois reste valide pendant DR et mode offlineRecovery sans coupure licence ou contact éditeur
DR-010P0Audit identités suspensions et permissions préservés pendant DRAprès DR état de sécurité inchangé et vérifié
DR-011P0Réconciliation post failover empêche doubles paiementsTests idempotence E2E et reçus externes

INFRA_UI​

IDPrioritéExigenceCritère d'acceptation
INFUI-001P0UI hosts preflight SSH bootstrap et enrôlementE2E UI API SQL avec erreurs et étapes visibles
INFUI-002P0UI node agents heartbeats certificats et révocationChangements état et audit visibles de bout en bout
INFUI-003P0UI clusters pools placement et dépendancesTopology réelle et plan placement contrôlable
INFUI-004P0UI HA replicas quorum failover et fault domainsÉtat configuré et validé distingué
INFUI-005P0UI backups policies jobs historiques et testsPlan sauvegarde exécuté et preuves consultables
INFUI-006P0UI Restore dry run approve execute verifyRestore impossible sans approval et test authentifié
INFUI-007P0UI PRA sites objectifs exercices et résultatsFailover planifié + exercise rapport réel consultable
INFUI-008P0UI client-managed actions non autorisées cachées et refusées backendTest RBAC et forbidden opérations direct API

INFRA_SDK​

IDPrioritéExigenceCritère d'acceptation
INFSDK-001P0SDK Python TS Go hosts bootstrap enrollment diagnosticsContract et conformance tests sur 3 SDK
INFSDK-002P0SDK Python TS Go clusters et services operationsResponse operation_id et audit corrélé
INFSDK-003P0SDK Python TS Go HA backups restore DRApprobations et versions supportées prouvées
INFSDK-004P0Contexte user identity on behalf of service delegation pour operationsAucun appel système sans attribution identité et chaîne
INFSDK-005P0CLI host cluster services ha backup restore drCLI tests avec API réelle et aide docs offline