Conformité à l'architecture produit
Généré par tools/traceability/conformance.py à partir de docs/implementation/conformance/*.yaml et des exécutions enregistrées dans docs/implementation/evidence/results/. Ne pas modifier à la main. Un élément PASSED cite des preuves vertes sur des sources inchangées, sans travail restant ni blocage.
Synthèse
| Statut | Éléments |
|---|---|
| PASSED | 696 |
| BLOCKED | 35 |
| FAILED | 0 |
| IN_PROGRESS | 198 |
| NOT_STARTED | 11 |
| Éléments | 940 |
Par section
| Section | Lot | Éléments | PASSED | IN_PROGRESS | BLOCKED | FAILED |
|---|---|---|---|---|---|---|
| A0 Les cinq éléments de valeur du produit | main | 5 | 0 | 5 | 0 | 0 |
| A1 Décisions structurantes, stockage objet du client et licences des briques | C02 | 27 | 17 | 10 | 0 | 0 |
| A2 Architecture fonctionnelle globale et protections sans console | C04, C01 | 8 | 5 | 2 | 1 | 0 |
| A3.1 Architecture du Manager | C01 | 13 | 6 | 7 | 0 | 0 |
| A3.2 Fonctions d'exploitation obligatoires et sémantique de l'arrêt | C01 | 23 | 19 | 4 | 0 | 0 |
| A3.3 Fiche d'administration de chaque outil | C01 | 4 | 3 | 1 | 0 | 0 |
| A3.4 États de lifecycle, états administratifs et cinq champs d'état | C01 | 8 | 6 | 2 | 0 | 0 |
| A3.5 Composants à installer, phases et graphe de dépendances | C02 | 14 | 3 | 0 | 11 | 0 |
| A3.6 Première installation guidée, rapport de recette signé, bundle hors ligne et récupération du Manager | C02 | 11 | 7 | 4 | 0 | 0 |
| A4.1 Arborescence de navigation du portail | C09 | 13 | 6 | 7 | 0 | 0 |
| A4.2 Écrans fonctionnels du portail | C09 | 28 | 21 | 7 | 0 | 0 |
| A4.3 Profils et droits appliqués côté serveur | C03 | 11 | 11 | 0 | 0 | 0 |
| A4.4 Architecture frontend | C11 | 10 | 6 | 4 | 0 | 0 |
| A5.1 Services backend à développer | C04 | 33 | 32 | 1 | 0 | 0 |
| A5.2 Découpage technique des déploiements | C04 | 10 | 7 | 3 | 0 | 0 |
| A6.1 Schémas et tables PostgreSQL | C05 | 24 | 18 | 6 | 0 | 0 |
| A6.2 Relations importantes du modèle de données | C05 | 11 | 9 | 2 | 0 | 0 |
| B3.1 Fonctions du Manager | C01 | 19 | 15 | 4 | 0 | 0 |
| B3.2 Page d'accueil du Manager et onglets uniformes | C01 | 3 | 2 | 1 | 0 | 0 |
| B3.3 Arrêt technique et suspension de sécurité | C01 | 8 | 3 | 5 | 0 | 0 |
| B3.4 Manifeste standard de chaque composant | C01 | 10 | 0 | 10 | 0 | 0 |
| B3.5 Services backend du Manager et infrastructure apportée par le client | C01 | 14 | 13 | 1 | 0 | 0 |
| B4.1 Profils de déploiement | C02 | 6 | 6 | 0 | 0 | 0 |
| B4.2 Workflow d'installation | C02 | 11 | 6 | 3 | 2 | 0 |
| B4.3 Ce que le client trouve après l'installation | C02 | 14 | 2 | 0 | 12 | 0 |
| B5.1 Arborescence fonctionnelle du portail | C09 | 17 | 2 | 15 | 0 | 0 |
| B5.2 Écrans prioritaires | C09 | 15 | 0 | 15 | 0 | 0 |
| B5.3 Composants frontend transversaux et actions destructives | C11 | 12 | 10 | 2 | 0 | 0 |
| B5.4 Rôles du portail | C03 | 11 | 11 | 0 | 0 | 0 |
| B6.1 Modules du Control Plane | C04 | 25 | 24 | 1 | 0 | 0 |
| B6.2 Services d'exécution et de sécurité indépendants | C04 | 13 | 12 | 1 | 0 | 0 |
| B6.3 Contrats API principaux et operation_id | C04 | 21 | 20 | 1 | 0 | 0 |
| B7.1 Découpage SQL par domaine | C05 | 18 | 17 | 1 | 0 | 0 |
| B7.2 Champs communs des tables métier | C05 | 13 | 8 | 5 | 0 | 0 |
| B7.3 Isolation par RLS et rôles SQL | C05 | 5 | 4 | 1 | 0 | 0 |
| B7.4 Modèle SQL du Marketplace | C07 | 5 | 4 | 1 | 0 | 0 |
| B8.1 Contenu d'un plugin métier | C17 | 19 | 11 | 8 | 0 | 0 |
| B8.2 Structure standard du dossier d'un plugin | C07 | 3 | 3 | 0 | 0 | 0 |
| B8.3 Manifeste d'un plugin | C07 | 11 | 5 | 6 | 0 | 0 |
| B8.4 Marketplace de bout en bout | C07 | 12 | 8 | 4 | 0 | 0 |
| B8.5 Format de distribution des plugins | C16 | 9 | 6 | 2 | 1 | 0 |
| B8.6 Packs métiers livrés avec la plateforme | C08 | 13 | 13 | 0 | 0 | 0 |
| B9.1 Structure des packages SDK | C06 | 3 | 3 | 0 | 0 | 0 |
| B9.2 Contrats SDK obligatoires | C06 | 14 | 14 | 0 | 0 | 0 |
| B9.3 Méthodes SDK exposées | C06 | 17 | 17 | 0 | 0 | 0 |
| B9.4 SDK impossible à contourner | C04 | 10 | 9 | 0 | 1 | 0 |
| B10.1 CLI officielle | C12 | 18 | 18 | 0 | 0 | 0 |
| B10.2 Règles obligatoires pour les développeurs | C12 | 22 | 22 | 0 | 0 | 0 |
| B10.3 Gates de publication | C16 | 14 | 11 | 3 | 0 | 0 |
| B10.4 Gestion des changements | C16 | 3 | 1 | 2 | 0 | 0 |
| B11.1 Documentation produit | C10 | 13 | 7 | 6 | 0 | 0 |
| B11.2 Documentation développeur | C13 | 16 | 16 | 0 | 0 | 0 |
| B11.3 Documentation vivante | C13 | 3 | 2 | 1 | 0 | 0 |
| B12.1 Couverture de la licence | C10 | 16 | 16 | 0 | 0 | 0 |
| B12.2 Périmètre commercial | C10 | 3 | 2 | 1 | 0 | 0 |
| B12.3 Architecture du service de licence | C10 | 4 | 4 | 0 | 0 | 0 |
| B12.4 Contrat de licence technique signé | C10 | 3 | 2 | 1 | 0 | 0 |
| B12.5 Fonctionnement hors ligne de la licence | C10 | 3 | 2 | 1 | 0 | 0 |
| B12.6 Comportement à l'expiration | C10 | 8 | 6 | 1 | 1 | 0 |
| B13.1 Tables critiques du Platform Manager | C01 | 12 | 11 | 1 | 0 | 0 |
| B13.2 Index d'audit et preuves indépendantes | C14 | 5 | 2 | 2 | 1 | 0 |
| B13.3 Registre d'état de sécurité et Kill Switch | C10 | 11 | 9 | 2 | 0 | 0 |
| B13.4 Tables de licence et de support | C10 | 3 | 2 | 1 | 0 | 0 |
| B13.5 Transactional Outbox et actions externes | C04 | 7 | 6 | 1 | 0 | 0 |
| B14 Isolation multi-tenant par couche | C03 | 16 | 15 | 0 | 1 | 0 |
| B14.1 Protection des secrets et des données | C14 | 14 | 13 | 0 | 1 | 0 |
| B14.2 Séparation des responsabilités | C03 | 3 | 3 | 0 | 0 | 0 |
| B15.1 Scalabilité par domaine | C10 | 15 | 8 | 5 | 2 | 0 |
| B15.2 Matrice de disponibilité, RTO et RPO | C10 | 7 | 5 | 2 | 0 | 0 |
| B15.3 Upgrade et rollback | C02 | 10 | 10 | 0 | 0 | 0 |
| B16.1 Installation du plugin Finance chez une banque | C08 | 11 | 7 | 4 | 0 | 0 |
| B16.2 Utilisation du plugin Finance de bout en bout | C08 | 11 | 5 | 6 | 0 | 0 |
| B17 Plan de développement par lots | C10 | 12 | 12 | 0 | 0 | 0 |
| B17.1 Monorepo produit | C02 | 13 | 13 | 0 | 0 | 0 |
| B17.2 Tests de recette obligatoires avant livraison | C10 | 23 | 19 | 3 | 1 | 0 |
| B18 Différenciation, exigences non négociables et version de distribution | C02 | 18 | 4 | 14 | 0 | 0 |
| B19 L'agent porte l'identité de l'utilisateur | C03 | 19 | 19 | 0 | 0 | 0 |
Partie A, A0. Les cinq éléments de valeur du produit
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-A0-01 Platform Manager : installer, configurer, démarrer, arrêter, mettre à jour, superviser et réparer les composants | IN_PROGRESS | test_e2e_infrastructure_journey.py::test_machine_to_verified_restore test_services_operate.py::test_actions_rolling_restart_and_permissions test_services_operate.py::test_component_instances_change_peers (E-HB-E2E, E-RB-NM) | Sections A3.1, A3.2, A3.3, A3.4, A3.5, A3.6, B3.1, B3.2, B3.3, B3.4, B3.5, B4.1, B4.2, B4.3, B13.1, B15.3 : 68 éléments sur 180 non PASSED (IN_PROGRESS 43, BLOCKED 25, FAILED 0) |
| ARCH-A0-02 AI Control Plane : gérer identités, droits, politiques, modèles, données, agents et applications depuis une console centralisée | IN_PROGRESS | test_iam_role_matrix.py::test_role_matrix test_iam_role_matrix.py::test_developer_cannot_approve_own_change_and_auditor_cannot_decide test_identity_context_delegation.py +1 (E-IR-IDENTITY, E-DF-PORTAL) | Sections A4.1, A4.2, A4.3, A4.4, A5.1, A6.1, A6.2, B5.1, B5.2, B5.3, B5.4, B6.1, B7.1, B7.2, B7.3, B14, B14.2, B19 : 68 éléments sur 284 non PASSED (IN_PROGRESS 67, BLOCKED 1, FAILED 0) |
| ARCH-A0-03 AI Runtime & Security Plane : exécuter les agents avec un contrôle obligatoire de chaque action | IN_PROGRESS | test_runtime_without_console.py::test_decisions_stay_enforced_with_console_and_admin_routes_down test_gateway_pep_untrusted.py::test_pep_model_gateway_denied test_gateway_pep_untrusted.py::test_pep_mcp_denied +1 (E-RB-CP, E-CP-SOC) | Sections A2, A5.2, B6.2, B6.3, B9.4, B13.5 : 10 éléments sur 69 non PASSED (IN_PROGRESS 8, BLOCKED 2, FAILED 0) |
| ARCH-A0-04 Developer Platform & Marketplace : SDK, modèles de projets, packs métier, skills, prompts, règles, plugins, MCP et connecteurs prêts à l'emploi | IN_PROGRESS | test_developer_day_one.py::test_developer_day_one test_business_packs.py::test_pack_signed_published_installed_sensitive_actions_blocked test_business_packs.py::test_pack_is_complete_and_holds_no_credential (E-DF-DAY-ONE, E-BP-PACKS-MARKETPLACE) | Sections B7.4, B8.1, B8.2, B8.3, B8.4, B8.5, B8.6, B9.1, B9.2, B9.3, B10.1, B10.2, B10.3, B10.4, B11.2, B11.3, B16.1, B16.2 : 38 éléments sur 204 non PASSED (IN_PROGRESS 37, BLOCKED 1, FAILED 0) |
| ARCH-A0-05 Enterprise Operations : observabilité, SOC IA, conformité, sauvegarde, restauration, support et licences commerciales | IN_PROGRESS | test_trace_end_to_end.py test_soc_ai_sdr.py::test_recovery_needs_four_eyes_then_reauthorization test_evidence_gateway.py +4 (E-G06-OBS, E-CP-SOC, E-CP-EVIDENCE, E-CP-LICENSING, E-HB-E2E, E-FL-SUPPORT) | Sections B11.1, B12.1, B12.2, B12.3, B12.4, B12.5, B12.6, B13.2, B13.3, B13.4, B14.1, B15.1, B15.2, B17, B17.2 : 31 éléments sur 140 non PASSED (IN_PROGRESS 25, BLOCKED 6, FAILED 0) |
Partie A, A1. Décisions structurantes, stockage objet du client et licences des briques
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-A1-01 Type de produit : distribution entreprise installée chez le client | PASSED | test_architecture_decisions.py::test_governance_llm_observability_components_are_catalogued (E-ID-ARCH) | |
| ARCH-A1-02 Déploiement sur site, cloud privé, public ou hybride | PASSED | test_lifecycle_profiles.py::test_profile_catalog_and_creation (E-ID-ARCH, E-ID-LIFECYCLE) | |
| ARCH-A1-03 Fonctionnement déconnecté possible | PASSED | test_bundle.py::test_manifest_of_verified_artifacts (E-ID-ARCH, E-ID-PACKAGING) | |
| ARCH-A1-04 Frontend Next.js, React, TypeScript | PASSED | test_architecture_decisions.py::test_frontend_is_nextjs_react_typescript (E-ID-ARCH) | |
| ARCH-A1-05 Backend métier FastAPI, Python | PASSED | test_architecture_decisions.py::test_backend_is_fastapi_python (E-ID-ARCH) | |
| ARCH-A1-06 Contrôleurs d'infrastructure en Go | PASSED | test_architecture_decisions.py::test_infrastructure_controllers_are_go (E-ID-ARCH) | |
| ARCH-A1-07 Base principale PostgreSQL | PASSED | test_architecture_decisions.py::test_storage_is_client_provided_and_db_is_postgresql (E-ID-ARCH) | |
| ARCH-A1-08 Cache et coordination temporaire Redis | PASSED | test_architecture_decisions.py::test_redis_pins_are_bsd_or_traced_exception (E-ID-ARCH) | |
| ARCH-A1-09 Stockage objet du client, jamais imposé | PASSED | test_architecture_decisions.py::test_storage_is_client_provided_and_db_is_postgresql (E-ID-ARCH) | |
| ARCH-A1-10 Orchestration Kubernetes, clusters existants supportés | PASSED | test_architecture_decisions.py::test_governance_llm_observability_components_are_catalogued (E-ID-ARCH) | |
| ARCH-A1-11 Installation et exploitation par le Platform Manager | PASSED | test_services_install.py::test_provider_and_consumer_install_end_to_end (E-ID-ARCH, E-ID-LIFECYCLE) | |
| ARCH-A1-12 Gouvernance Keycloak, OpenFGA, OPA | PASSED | test_architecture_decisions.py::test_governance_llm_observability_components_are_catalogued (E-ID-ARCH) | |
| ARCH-A1-13 LLM : LiteLLM et vLLM | PASSED | test_architecture_decisions.py::test_governance_llm_observability_components_are_catalogued (E-ID-ARCH) | |
| ARCH-A1-14 Agents : runtime Navin et agents externes compatibles | PASSED | test_architecture_decisions.py::test_governance_llm_observability_components_are_catalogued (E-ID-ARCH) | |
| ARCH-A1-15 Observabilité Opik, OpenTelemetry, OpenSearch, Prometheus | PASSED | test_architecture_decisions.py::test_governance_llm_observability_components_are_catalogued (E-ID-ARCH) | |
| ARCH-A1-16 Sécurité : DLP, audit, politiques, détection, SOC, Kill Switch | IN_PROGRESS | Preuve portée par un autre lot (C05, C07, C10) ; à citer quand son jeu de preuves est vert | |
| ARCH-A1-17 SDK Python, TypeScript, Go et API REST/OpenAPI | PASSED | test_architecture_decisions.py::test_sdks_cover_python_typescript_go (E-ID-ARCH) | |
| ARCH-A1-18 Extensions : packs métier signés, versionnés, administrables | IN_PROGRESS | Preuve portée par un autre lot (C05, C07, C10) ; à citer quand son jeu de preuves est vert | |
| ARCH-A1-19 Licence : abonnement annuel ou triennal | IN_PROGRESS | Preuve portée par un autre lot (C05, C07, C10) ; à citer quand son jeu de preuves est vert | |
| ARCH-A1-20 Utilisateurs illimités | IN_PROGRESS | Preuve portée par un autre lot (C05, C07, C10) ; à citer quand son jeu de preuves est vert | |
| ARCH-A1-21 Agents et cas d'usage illimités | IN_PROGRESS | Preuve portée par un autre lot (C05, C07, C10) ; à citer quand son jeu de preuves est vert | |
| ARCH-A1-22 Pas de facturation à l'usage de la licence | IN_PROGRESS | Preuve portée par un autre lot (C05, C07, C10) ; à citer quand son jeu de preuves est vert | |
| ARCH-A1-23 Pas de prix public | IN_PROGRESS | Preuve portée par un autre lot (C05, C07, C10) ; à citer quand son jeu de preuves est vert | |
| ARCH-A1-24 Connexion S3, Azure Blob, GCS, IBM COS, SeaweedFS, S3 compatible | IN_PROGRESS | Preuve portée par un autre lot (C05, C07, C10) ; à citer quand son jeu de preuves est vert | |
| ARCH-A1-25 Capacités déclarées par fournisseur de stockage | IN_PROGRESS | Preuve portée par un autre lot (C05, C07, C10) ; à citer quand son jeu de preuves est vert | |
| ARCH-A1-26 Règle MIT ou Apache-2.0 et exceptions tracées | PASSED | test_architecture_decisions.py::test_redis_pins_are_bsd_or_traced_exception (E-ID-ARCH) | |
| ARCH-A1-27 PostgreSQL et Redis avec licences exactes (SBOM, notices, document juridique) | IN_PROGRESS | test_architecture_decisions.py::test_redis_pins_are_bsd_or_traced_exception (E-ID-ARCH) | Le SBOM de release/sbom ne liste que le client Python redis, pas le serveur Redis 7.0.15 ; le catalogue hôte du Manager garde Redis 8.0.2 tri licence (LEX-002 en attente d'approbation client) ; notice juridique FR et EN à compléter |
Partie A, A2. Architecture fonctionnelle globale et protections sans console
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-A2-01 Espaces du portail : Admin, Sécurité, Développeur, Opérations, Audit, Marketplace, Licences | IN_PROGRESS | test_licensing.py::test_status_is_readable_by_any_user_without_sensitive_fields test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only (E-RB-CP) | La preuve écran par écran des sept espaces appartient au lot C09 (portail) ; ce lot prouve seulement les API qui les servent. |
| ARCH-A2-02 Modules du control plane : Platform Manager, Identité et gouvernance, Gestion IA, Plateforme développeur, Sécurité et SOC, Licence entreprise | PASSED | test_platform_core.py::test_operations_api_detail_logs_abort_retry_and_scope test_data_quality_governance.py::test_governance_registry test_llm_registry.py::test_model_registry_and_status +3 (E-RB-CP, E-RB-NM) | |
| ARCH-A2-03 Plan d'exécution et d'application : runtime Navin, LiteLLM/vLLM, Secure MCP Gateway, passerelle DLP et politiques | PASSED | test_agents_execution.py::test_kill_switch_blocks_new_runs test_llm_registry.py::test_litellm_sync_proxy test_platform_security_manifests.py::test_vllm_reachable_only_from_litellm_and_control_plane +2 (E-RB-CP) | |
| ARCH-A2-04 Données et infrastructure client : PostgreSQL, Redis, RAG, Qdrant, stockage client, services internes, API métier | PASSED | test_core_rls.py::test_unscoped_app_role_sees_nothing test_core_redis.py::test_sources_of_truth_never_read_from_redis test_rag_governance.py::test_chunk_acl_forbidden_fragments_never_reach_the_context +2 (E-RB-CP) | |
| ARCH-A2-05 Observabilité et opérations de sécurité : Opik, OpenTelemetry, SIEM OpenSearch, Prometheus, Falco, Tetragon, audit WORM | IN_PROGRESS | test_soc_ai_sdr.py::test_signed_webhooks_falco_tetragon_opensearch test_evidence_gateway.py::test_gateway_redelivers_after_target_outage_without_loss_or_duplicate test_data_quality_governance.py::test_telemetry_ingest_overview_trace +1 (E-RB-CP) | Opik, collecteur OpenTelemetry et Prometheus réels sont prouvés par le lot C10 (observabilité) ; ce lot ne cite que l'ingestion et la collecte d'audit. |
| ARCH-A2-06 Infrastructure plateforme : Kubernetes, Cilium, Argo CD, Helm, KEDA, Kyverno, Harbor, sauvegarde et PRA | BLOCKED | test_platform_security_manifests.py::test_every_workload_has_a_network_policy test_platform_security_manifests.py::test_static_cluster_policies test_media_worker.py::test_helm_worker_kinds_are_media_worker_operations +1 (E-RB-CP) | Rendu Helm et politiques validés hors ligne ; le déploiement réel sur Kubernetes avec Cilium, Argo CD, KEDA, Kyverno et Harbor demande un cluster [B-CLUSTER]. |
| ARCH-A2-07 Les protections sensibles restent appliquées par les passerelles et le runtime, en fail closed, quand la console et les routes d'administration sont indisponibles | PASSED | test_runtime_without_console.py::test_decisions_stay_enforced_with_console_and_admin_routes_down test_soc_ai_sdr.py::test_alerting_and_policy_engine_outage_never_weaken_enforcement (E-RB-CP) | |
| ARCH-A2-08 Espace Platform Manager du portail via le Control Plane (ADR-0128) | PASSED | test_platform_manager_bridge.py::test_operation_forwarded_on_behalf_and_audited test_platform_manager_bridge.py::test_space_requires_platform_admin (E-PO-BRIDGE) |
Partie A, A3.1. Architecture du Manager
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-A3.1-01 Catalogue des composants | PASSED | test_catalog.py::test_catalog_loads_and_is_open_source_only (E-PO-SERVER) | |
| ARCH-A3.1-02 Contrôleur d'état désiré et correction de dérive | PASSED | test_lifecycle_drift_backups.py::test_change_outside_the_manager_is_detected_and_reconciled (E-PO-SERVER) | |
| ARCH-A3.1-03 Node Agent : inventaire, santé, commandes autorisées, heartbeats | IN_PROGRESS | test_platform_core.py::test_registration_evaluates_preflight_at_once_and_reregisters test_agent_signature.py::test_agent_and_server_signatures_are_identical (E-PO-SERVER) | Les tests Go de navin-manager/agent-go (TestArbitraryCommandRefused, etc.) ne sont pas lancés ici : go est absent de cette machine. |
| ARCH-A3.1-04 Opérateur Kubernetes : cycle de vie des composants | IN_PROGRESS | test_kubernetes_operator.py::test_install_converges_and_operates (E-PO-K8S) | Les tests Go envtest de navin-manager/operator ne sont pas lancés : go absent. |
| ARCH-A3.1-05 Workflow Engine : opérations longues, reprise, validation, rollback (moteur interne au lieu de Temporal) | IN_PROGRESS | test_foundation.py::test_engine_failure_retry_abort_and_timeout test_availability_api.py::test_dag_order_and_kill_switch_survives_restart (E-PO-SERVER) | Aucune ADR vérifiée ici ne justifie le moteur interne à la place de Temporal. |
| ARCH-A3.1-06 Deployment Engine (Helm + Argo CD) | IN_PROGRESS | test_services_install.py::test_opa_binary_install (E-PO-SERVER) | Déploiement binaire et opérateur prouvés ; Helm et Argo CD non vérifiés par un test. |
| ARCH-A3.1-07 Config Manager : paramètres, versions, validations (PostgreSQL au lieu de Git) | PASSED | test_services_config.py::test_versions_diff_restore_and_secrets (E-PO-SERVER) | |
| ARCH-A3.1-08 Inventory Service PostgreSQL | PASSED | test_foundation.py::test_migrations_are_idempotent test_hosts_api.py::test_list_detail_patch (E-PO-SERVER) | |
| ARCH-A3.1-09 Secret Integration : références sécurisées | IN_PROGRESS | test_platform_core.py::test_settings_store_keeps_secrets_sealed (E-PO-SERVER) | Pas de test contre OpenBao ou le coffre du client. |
| ARCH-A3.1-10 Monitoring Prometheus + OTel | IN_PROGRESS | test_hosts_api.py::test_metrics_series_bucketing (E-PO-SERVER) | Intégration Prometheus et OTel non prouvée par un test de bout en bout. |
| ARCH-A3.1-11 Remote Diagnostics : diagnostics, bundles de support | PASSED | test_lifecycle_bundle_acceptance.py::test_support_bundle_has_no_secret_and_no_personal_data (E-PO-SERVER) | |
| ARCH-A3.1-12 Upgrade Manager | PASSED | test_lifecycle_upgrades.py::test_upgrade_compatibility_refusals (E-PO-SERVER) | |
| ARCH-A3.1-13 License Agent | NOT_STARTED | Lot C10 ; aucun test dans ce lot. |
Partie A, A3.2. Fonctions d'exploitation obligatoires et sémantique de l'arrêt
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-A3.2-01 Install | PASSED | test_services_install.py::test_provider_and_consumer_install_end_to_end (E-PO-SERVER) | |
| ARCH-A3.2-02 Configure et valider | PASSED | test_services_install.py::test_validation_errors (E-PO-SERVER) | |
| ARCH-A3.2-03 Start dans le bon ordre | PASSED | test_availability_api.py::test_dag_order_and_kill_switch_survives_restart (E-PO-SERVER) | |
| ARCH-A3.2-04 Stop contrôlé | IN_PROGRESS | test_services_operate.py::test_actions_rolling_restart_and_permissions (E-PO-SERVER) | Drainage des requêtes d'un proxy non prouvé. |
| ARCH-A3.2-05 Restart d'une instance ou d'un composant | PASSED | test_services_operate.py::test_actions_rolling_restart_and_permissions (E-PO-SERVER) | |
| ARCH-A3.2-06 Upgrade avec contrôle préalable | PASSED | test_lifecycle_upgrades.py::test_stateless_upgrade_with_canary_then_rollback (E-PO-SERVER) | |
| ARCH-A3.2-07 Rollback | PASSED | test_lifecycle_upgrades.py::test_stateful_upgrade_backup_migration_refused_rollback_and_restore (E-PO-SERVER) | |
| ARCH-A3.2-08 Scale replicas et ressources | IN_PROGRESS | test_kubernetes_operator.py::test_install_converges_and_operates (E-PO-K8S) | Scénario 3 à 6 workers non prouvé. |
| ARCH-A3.2-09 Health | PASSED | test_lifecycle_checks.py::test_liveness_readiness_and_smoke_are_distinct (E-PO-SERVER) | |
| ARCH-A3.2-10 Repair d'une configuration invalide | PASSED | test_services_config.py::test_versions_diff_restore_and_secrets (E-PO-SERVER) | |
| ARCH-A3.2-11 Backup | PASSED | test_lifecycle_drift_backups.py::test_coordinated_backup_then_restore_executed_and_verified (E-PO-SERVER) | |
| ARCH-A3.2-12 Restore sur un autre cluster | PASSED | test_backup_recovery.py::test_dr_plan_targets_empty_by_default_and_exercise_measured (E-PO-SERVER) | |
| ARCH-A3.2-13 Rotation des certificats et identifiants | NOT_STARTED | Aucun test cité dans ce lot. | |
| ARCH-A3.2-14 Logs autorisés | PASSED | test_services_operate.py::test_commands_and_logs (E-PO-SERVER) | |
| ARCH-A3.2-15 Métriques | PASSED | test_hosts_api.py::test_metrics_series_bucketing (E-PO-SERVER) | |
| ARCH-A3.2-16 Dépendances et leur état | PASSED | test_services_operate.py::test_uninstall_and_service_in_use test_services_install.py::test_connection_bindings_and_unmanaged_provider (E-PO-SERVER) | |
| ARCH-A3.2-17 Dérive | PASSED | test_lifecycle_drift_backups.py::test_change_outside_the_manager_is_detected_and_reconciled (E-PO-SERVER) | |
| ARCH-A3.2-18 Fenêtres de maintenance | PASSED | test_kubernetes_operator.py::test_maintenance_protects_the_component (E-PO-K8S) | |
| ARCH-A3.2-19 Diagnostics fonctionnels | PASSED | test_lifecycle_checks.py::test_liveness_readiness_and_smoke_are_distinct (E-PO-SERVER) | |
| ARCH-A3.2-20 Lifecycle : activer, désactiver, décommissionner | PASSED | test_hosts_api.py::test_decommission_and_delete (E-PO-SERVER) | |
| ARCH-A3.2-21 Security Lock | IN_PROGRESS | test_availability_api.py::test_dag_order_and_kill_switch_survives_restart (E-PO-SERVER) | Verrou complet pendant un incident non prouvé. |
| ARCH-A3.2-22 Refus des arrêts dangereux sans procédure approuvée | PASSED | test_availability_api.py::test_client_managed_destructive_refused (E-PO-SERVER) | |
| ARCH-A3.2-23 Changement des règles d'arrêt relayé par le portail | PASSED | test_platform_manager_bridge.py::test_manager_refusal_relayed_in_both_languages (E-PO-BRIDGE) |
Partie A, A3.3. Fiche d'administration de chaque outil
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-A3.3-01 Fiche d'administration par outil | PASSED | test_docs.py::test_service_pages_match_the_catalog (E-PO-SERVER) | |
| ARCH-A3.3-02 Actions Configure, Restart, Upgrade, Logs, Metrics, Diagnostics | PASSED | test_services_operate.py::test_commands_and_logs (E-PO-SERVER) | |
| ARCH-A3.3-03 Onglets uniformes de la fiche | NOT_STARTED | Pas de test console des dix onglets. | |
| ARCH-A3.3-04 Même modèle d'exploitation pour tout le catalogue | PASSED | test_catalog.py::test_every_template_renders (E-PO-SERVER) |
Partie A, A3.4. États de lifecycle, états administratifs et cinq champs d'état
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-A3.4-01 États de cycle de vie avec transitions contrôlées | PASSED | test_kubernetes_unit.py::test_states_stay_distinct (E-PO-K8S) | |
| ARCH-A3.4-02 États administratifs ENABLED, DISABLED, MAINTENANCE, QUARANTINED, SUSPENDED | IN_PROGRESS | test_platform_manager_bridge.py::test_services_five_state_fields_and_admin_state (E-PO-BRIDGE) | Seuls enabled et maintenance existent ; DISABLED, QUARANTINED et SUSPENDED sont absents. |
| ARCH-A3.4-03 Champ desired_state | PASSED | test_platform_manager_bridge.py::test_services_five_state_fields_and_admin_state (E-PO-BRIDGE) | |
| ARCH-A3.4-04 Champ observed_state | PASSED | test_platform_manager_bridge.py::test_services_five_state_fields_and_admin_state (E-PO-BRIDGE) | |
| ARCH-A3.4-05 Champ health_status | PASSED | test_platform_manager_bridge.py::test_services_five_state_fields_and_admin_state (E-PO-BRIDGE) | |
| ARCH-A3.4-06 Champ operation_status | PASSED | test_platform_manager_bridge.py::test_services_five_state_fields_and_admin_state test_platform_manager_bridge.py::test_operation_forwarded_on_behalf_and_audited (E-PO-BRIDGE) | |
| ARCH-A3.4-07 Champ security_state | IN_PROGRESS | test_platform_manager_bridge.py::test_services_five_state_fields_and_admin_state (E-PO-BRIDGE) | security_state résume TLS et secrets, pas une autorisation d'exécution. |
| ARCH-A3.4-08 Écart désiré/observé visible dans l'API | PASSED | test_platform_manager_bridge.py::test_services_five_state_fields_and_admin_state (E-PO-BRIDGE) |
Partie A, A3.5. Composants à installer, phases et graphe de dépendances
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-A3.5-01 Phase 0 bootstrap Manager, licence, environnement | BLOCKED | test_lifecycle_checks.py::test_liveness_readiness_and_smoke_are_distinct (E-ID-LIFECYCLE) | Nécessite un cluster Kubernetes réel pour l'exécution de bout en bout ; la logique locale est prouvée par les tests cités [B-CLUSTER] |
| ARCH-A3.5-02 Phase 1 réseau, certificats, DNS, stockage | PASSED | test_lifecycle_checks.py::test_tls_probes_real_handshakes test_lifecycle_checks.py::test_dns_forward_and_reverse_with_the_real_resolver (E-ID-LIFECYCLE) | |
| ARCH-A3.5-03 Phase 2 PostgreSQL, Redis, stockage client | BLOCKED | test_lifecycle_checks.py::test_liveness_readiness_and_smoke_are_distinct (E-ID-LIFECYCLE) | Nécessite un cluster Kubernetes réel pour l'exécution de bout en bout ; la logique locale est prouvée par les tests cités [B-CLUSTER] |
| ARCH-A3.5-04 Phase 3 Keycloak, SPIRE, secrets | BLOCKED | test_lifecycle_checks.py::test_liveness_readiness_and_smoke_are_distinct (E-ID-LIFECYCLE) | Nécessite un cluster Kubernetes réel pour l'exécution de bout en bout ; la logique locale est prouvée par les tests cités [B-CLUSTER] |
| ARCH-A3.5-05 Phase 4 OpenFGA, OPA, passerelle de politiques | BLOCKED | test_lifecycle_checks.py::test_liveness_readiness_and_smoke_are_distinct (E-ID-LIFECYCLE) | Nécessite un cluster Kubernetes réel pour l'exécution de bout en bout ; la logique locale est prouvée par les tests cités [B-CLUSTER] |
| ARCH-A3.5-06 Phase 5 APISIX, passerelle d'audit, contrôle des données | BLOCKED | test_lifecycle_checks.py::test_liveness_readiness_and_smoke_are_distinct (E-ID-LIFECYCLE) | Nécessite un cluster Kubernetes réel pour l'exécution de bout en bout ; la logique locale est prouvée par les tests cités [B-CLUSTER] |
| ARCH-A3.5-07 Phase 6 LiteLLM, vLLM | BLOCKED | test_lifecycle_checks.py::test_liveness_readiness_and_smoke_are_distinct (E-ID-LIFECYCLE) | Nécessite un cluster Kubernetes réel pour l'exécution de bout en bout ; la logique locale est prouvée par les tests cités [B-CLUSTER] |
| ARCH-A3.5-08 Phase 7 runtime Navin, NATS, Temporal, passerelle MCP | BLOCKED | test_lifecycle_checks.py::test_liveness_readiness_and_smoke_are_distinct (E-ID-LIFECYCLE) | Nécessite un cluster Kubernetes réel pour l'exécution de bout en bout ; la logique locale est prouvée par les tests cités [B-CLUSTER] |
| ARCH-A3.5-09 Phase 8 Qdrant, Haystack, Docling, RAG | BLOCKED | test_lifecycle_checks.py::test_liveness_readiness_and_smoke_are_distinct (E-ID-LIFECYCLE) | Nécessite un cluster Kubernetes réel pour l'exécution de bout en bout ; la logique locale est prouvée par les tests cités [B-CLUSTER] |
| ARCH-A3.5-10 Phase 9 OTel, Opik, Prometheus, OpenSearch | BLOCKED | test_lifecycle_checks.py::test_liveness_readiness_and_smoke_are_distinct (E-ID-LIFECYCLE) | Nécessite un cluster Kubernetes réel pour l'exécution de bout en bout ; la logique locale est prouvée par les tests cités [B-CLUSTER] |
| ARCH-A3.5-11 Phase 10 SOC, Kill Switch, preuves | BLOCKED | test_lifecycle_checks.py::test_liveness_readiness_and_smoke_are_distinct (E-ID-LIFECYCLE) | Nécessite un cluster Kubernetes réel pour l'exécution de bout en bout ; la logique locale est prouvée par les tests cités [B-CLUSTER] |
| ARCH-A3.5-12 Phase 11 portail développeur, SDK, packs | BLOCKED | test_lifecycle_checks.py::test_liveness_readiness_and_smoke_are_distinct (E-ID-LIFECYCLE) | Nécessite un cluster Kubernetes réel pour l'exécution de bout en bout ; la logique locale est prouvée par les tests cités [B-CLUSTER] |
| ARCH-A3.5-13 Phase 12 diagnostics et recette finale | PASSED | test_lifecycle_bundle_acceptance.py::test_signed_acceptance_report_with_evidence (E-ID-LIFECYCLE) | |
| ARCH-A3.5-14 Graphe de dépendances calculé par le Manager | PASSED | test_services_install.py::test_provider_and_consumer_install_end_to_end (E-ID-LIFECYCLE) |
Partie A, A3.6. Première installation guidée, rapport de recette signé, bundle hors ligne et récupération du Manager
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-A3.6-01 Étape guidée : Préparer l'infrastructure | PASSED | test_lifecycle_checks.py::test_preflight_blocks_installation_on_critical_failures (E-ID-LIFECYCLE) | |
| ARCH-A3.6-02 Étape guidée : Charger la licence | IN_PROGRESS | Étape présente dans l'assistant, sans test de comportement dédié dans ce lot | |
| ARCH-A3.6-03 Étape guidée : Connecter les ressources client | PASSED | test_services_install.py::test_connection_bindings_and_unmanaged_provider (E-ID-LIFECYCLE) | |
| ARCH-A3.6-04 Étape guidée : Choisir le profil | PASSED | test_lifecycle_profiles.py::test_profile_catalog_and_creation (E-ID-LIFECYCLE) | |
| ARCH-A3.6-05 Étape guidée : Installer avec progression, journaux, reprise | PASSED | test_services_install.py::test_provider_and_consumer_install_end_to_end (E-ID-LIFECYCLE) | |
| ARCH-A3.6-06 Étape guidée : Configurer les politiques | IN_PROGRESS | Étape présente dans l'assistant, sans test de comportement dédié dans ce lot | |
| ARCH-A3.6-07 Étape guidée : Lancer la recette | PASSED | test_lifecycle_bundle_acceptance.py::test_signed_acceptance_report_with_evidence (E-ID-LIFECYCLE) | |
| ARCH-A3.6-08 Étape guidée : Activer l'environnement | IN_PROGRESS | Étape présente dans l'assistant, sans test de comportement dédié dans ce lot | |
| ARCH-A3.6-09 Rapport de recette signé PASS, FAIL, WAIVED justifié | PASSED | test_lifecycle_bundle_acceptance.py::test_signed_acceptance_report_with_evidence (E-ID-LIFECYCLE) | |
| ARCH-A3.6-10 Bundle hors ligne complet, rien téléchargé à l'installation | PASSED | test_bundle.py::test_manifest_of_verified_artifacts test_bundle.py::test_checksum_mismatch_refused test_bundle.py::test_verify_detects_modified_bundle (E-ID-PACKAGING) | |
| ARCH-A3.6-11 Utilitaire de maintenance hors interface web | IN_PROGRESS | CLI présente ; test de récupération du Manager arrêté à écrire |
Partie A, A4.1. Arborescence de navigation du portail
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-A4.1-01 Vue d'ensemble | PASSED | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | |
| ARCH-A4.1-02 Platform Manager | IN_PROGRESS | platform-manager.test.ts::Platform Manager space over the Control Plane bridge nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Espace livré sur les routes /v1/platform-manager (C01) avec tests de configuration, corps d'opération et filtrage par rôle ; non rejoué contre un vrai Platform Manager depuis le portail, liens profonds sans route exposant l'URL de base. |
| ARCH-A4.1-03 Gestion IA | PASSED | nav-access.test.ts::navigation filtered by role from GET /v1/me screens-ai.test.ts::modelsCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | |
| ARCH-A4.1-04 Agents et applications | PASSED | nav-access.test.ts::navigation filtered by role from GET /v1/me screens-ai.test.ts::agentsCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | |
| ARCH-A4.1-05 Developer Studio | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
| ARCH-A4.1-06 Marketplace | PASSED | nav-access.test.ts::navigation filtered by role from GET /v1/me screens-developer.test.ts::marketplacePackagesCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | |
| ARCH-A4.1-07 Données et RAG | PASSED | nav-access.test.ts::navigation filtered by role from GET /v1/me screens-operations.test.ts::knowledgeCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | |
| ARCH-A4.1-08 Sécurité et IAM | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
| ARCH-A4.1-09 SOC et réponse | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
| ARCH-A4.1-10 Observabilité | IN_PROGRESS | observability.test.ts::Observability SLO screen nav-access.test.ts::navigation filtered by role from GET /v1/me screens-overview.test.ts::sloCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | Écran SLO et budgets d'erreur livré sur GET /v1/telemetry/slo ; les traces Opik et les tableaux Grafana restent accessibles hors portail, sans lien profond dédié. |
| ARCH-A4.1-11 Audit et conformité | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
| ARCH-A4.1-12 Paramètres entreprise | PASSED | nav-access.test.ts::navigation filtered by role from GET /v1/me screens-overview.test.ts::tenantsCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | |
| ARCH-A4.1-13 Liens profonds vers Opik, Keycloak, LiteLLM, OpenSearch | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
Partie A, A4.2. Écrans fonctionnels du portail
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-A4.2-01 Dashboard | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
| ARCH-A4.2-02 Cluster Explorer | IN_PROGRESS | platform-manager.test.ts::Platform Manager space over the Control Plane bridge nav-access.test.ts::navigation filtered by role from GET /v1/me screens-overview.test.ts::clustersCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | Espace livré sur les routes /v1/platform-manager (C01) avec tests de configuration, corps d'opération et filtrage par rôle ; non rejoué contre un vrai Platform Manager depuis le portail, liens profonds sans route exposant l'URL de base. |
| ARCH-A4.2-03 Service Manager | IN_PROGRESS | platform-manager.test.ts::Platform Manager space over the Control Plane bridge nav-access.test.ts::navigation filtered by role from GET /v1/me screens-overview.test.ts::servicesCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | Espace livré sur les routes /v1/platform-manager (C01) avec tests de configuration, corps d'opération et filtrage par rôle ; non rejoué contre un vrai Platform Manager depuis le portail, liens profonds sans route exposant l'URL de base. |
| ARCH-A4.2-04 Configuration Center | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Espace Platform Manager du portail absent : attend les routes du domaine platform_manager (lot C01). |
| ARCH-A4.2-05 Model Registry | PASSED | nav-access.test.ts::navigation filtered by role from GET /v1/me screens-ai.test.ts::modelVersionsCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | |
| ARCH-A4.2-06 Model Playground | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
| ARCH-A4.2-07 Agent Registry | PASSED | nav-access.test.ts::navigation filtered by role from GET /v1/me screens-ai.test.ts::agentsCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | |
| ARCH-A4.2-08 Agent Execution Explorer | PASSED | nav-access.test.ts::navigation filtered by role from GET /v1/me screens-ai.test.ts::sessionsCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | |
| ARCH-A4.2-09 Developer Projects | PASSED | nav-access.test.ts::navigation filtered by role from GET /v1/me screens-overview.test.ts::projectsCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | |
| ARCH-A4.2-10 Marketplace | PASSED | nav-access.test.ts::navigation filtered by role from GET /v1/me screens-developer.test.ts::marketplaceInstallationsCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | |
| ARCH-A4.2-11 Plugin Studio | IN_PROGRESS | api-conformance.test.ts::screen configs (ResourceView / Tester) nav-access.test.ts::navigation filtered by role from GET /v1/me screens-developer.test.ts::pluginsCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | Le catalogue de plugins (installation, désinstallation, statut) existe ; l'édition et la construction d'un plugin dans le portail ne sont pas fournies. |
| ARCH-A4.2-12 Skill Library | PASSED | nav-access.test.ts::navigation filtered by role from GET /v1/me screens-operations.test.ts::skillsCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | |
| ARCH-A4.2-13 Prompt Registry | PASSED | nav-access.test.ts::navigation filtered by role from GET /v1/me screens-developer.test.ts::promptsCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | |
| ARCH-A4.2-14 MCP Center | PASSED | nav-access.test.ts::navigation filtered by role from GET /v1/me screens-operations.test.ts::mcpCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | |
| ARCH-A4.2-15 Connector Center | PASSED | nav-access.test.ts::navigation filtered by role from GET /v1/me screens-operations.test.ts::connectorsCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | |
| ARCH-A4.2-16 RAG Studio | PASSED | nav-access.test.ts::navigation filtered by role from GET /v1/me screens-operations.test.ts::knowledgeCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | |
| ARCH-A4.2-17 IAM Center | PASSED | nav-access.test.ts::navigation filtered by role from GET /v1/me screens-overview.test.ts::membersCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | |
| ARCH-A4.2-18 Policy Studio | PASSED | nav-access.test.ts::navigation filtered by role from GET /v1/me screens-security.test.ts::policiesCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | |
| ARCH-A4.2-19 Privacy Center | PASSED | nav-access.test.ts::navigation filtered by role from GET /v1/me screens-security.test.ts::dlpRulesCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | |
| ARCH-A4.2-20 Approval Center | PASSED | nav-access.test.ts::navigation filtered by role from GET /v1/me screens-ai.test.ts::approvalsCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | |
| ARCH-A4.2-21 SOC Dashboard | PASSED | nav-access.test.ts::navigation filtered by role from GET /v1/me screens-security.test.ts::socOrdersCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | |
| ARCH-A4.2-22 Kill Switch Center | PASSED | nav-access.test.ts::navigation filtered by role from GET /v1/me screens-security.test.ts::killSwitchesCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | |
| ARCH-A4.2-23 Trace Explorer | PASSED | nav-access.test.ts::navigation filtered by role from GET /v1/me screens-security.test.ts::correlationsCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | |
| ARCH-A4.2-24 Audit Explorer | PASSED | nav-access.test.ts::navigation filtered by role from GET /v1/me screens-security.test.ts::auditEventsCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | |
| ARCH-A4.2-25 Evidence Center | PASSED | nav-access.test.ts::navigation filtered by role from GET /v1/me screens-security.test.ts::sealsCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | |
| ARCH-A4.2-26 FinOps | PASSED | nav-access.test.ts::navigation filtered by role from GET /v1/me screens-overview.test.ts::usageCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | |
| ARCH-A4.2-27 Backup & DR | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran Backup & DR non construit : aucune route de sauvegarde, restauration ou PRA sous /v1/platform-manager n'existe dans docs/api/control-plane-v1.requests.json (politiques, jobs, plans de restauration avec approbations, plans PRA avec dernier test, RTO et RPO observés). |
| ARCH-A4.2-28 License Center | PASSED | nav-access.test.ts::navigation filtered by role from GET /v1/me screens-overview.test.ts::licenseHistoryCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) |
Partie A, A4.3. Profils et droits appliqués côté serveur
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-A4.3-01 Profil Administrateur plateforme | PASSED | test_iam_role_matrix.py::test_role_matrix (E-IR-IDENTITY) | |
| ARCH-A4.3-02 Profil Administrateur sécurité | PASSED | test_iam_role_matrix.py::test_role_matrix (E-IR-IDENTITY) | |
| ARCH-A4.3-03 Profil Analyste SOC | PASSED | test_iam_role_matrix.py::test_reference_roles_matrix (E-IR-IDENTITY) | |
| ARCH-A4.3-04 Profil Responsable gouvernance IA | PASSED | test_iam_role_matrix.py::test_reference_roles_matrix (E-IR-IDENTITY) | |
| ARCH-A4.3-05 Profil Data Steward | PASSED | test_iam_role_matrix.py::test_reference_roles_matrix (E-IR-IDENTITY) | |
| ARCH-A4.3-06 Profil Développeur | PASSED | test_iam_role_matrix.py::test_role_matrix (E-IR-IDENTITY) | |
| ARCH-A4.3-07 Profil Propriétaire d'application | PASSED | test_iam_role_matrix.py::test_application_owner_edits_own_agent_only test_iam_role_matrix.py::test_reference_roles_matrix (E-IR-IDENTITY) | |
| ARCH-A4.3-08 Profil Auditeur | PASSED | test_iam_role_matrix.py::test_role_matrix (E-IR-IDENTITY) | |
| ARCH-A4.3-09 Profil Finance/FinOps | PASSED | test_iam_role_matrix.py::test_role_matrix (E-IR-IDENTITY) | |
| ARCH-A4.3-10 Profil Utilisateur métier | PASSED | test_iam_role_matrix.py::test_role_matrix (E-IR-IDENTITY) | |
| ARCH-A4.3-11 Droits appliqués par OpenFGA et OPA côté serveur | PASSED | test_iam_openfga_real.py::test_document_relations_allow_and_deny_per_action test_iam_opa_bundles_real.py::test_signed_bundle_revisions_loaded_and_enforced test_iam_role_matrix.py::test_role_matrix (E-IR-IDENTITY) |
Partie A, A4.4. Architecture frontend
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-A4.4-01 Next.js + React + TypeScript | PASSED | i18n.test.ts::en and fr have exactly the same keys (E-DF-PORTAL) | |
| ARCH-A4.4-02 Design system (Tailwind + radix + jetons webui au lieu de MUI, décision du client) | PASSED | i18n.test.ts::no em dash or en dash anywhere (E-DF-PORTAL) | |
| ARCH-A4.4-03 Client API généré depuis la spécification OpenAPI | IN_PROGRESS | openapi-client.test.ts::the generated operation table is up to date with docs/api/openapi-v1.json openapi-client.test.ts::has one entry per operation of the specification api-conformance.test.ts::the table below covers every client call found in the portal source (E-DF-PORTAL) | Seuls les nouveaux appels passent par callOperation ; les enveloppes de domaine existantes de resources.ts restent écrites à la main (vérifiées contre la spécification). |
| ARCH-A4.4-04 Temps réel par SSE ou WebSocket (opérations, traces, incidents, métriques) | IN_PROGRESS | sse.test.ts::follows the documented route with Last-Event-ID resumption and stops at end sse.test.ts::the run detail screen follows live runs realtime.test.ts::reconnects on unexpected closes only, a bounded number of times (E-DF-PORTAL) | Exécutions suivies en SSE, voix en WebSocket ; incidents, traces et métriques restent en rafraîchissement périodique faute de route de flux documentée. |
| ARCH-A4.4-05 Éditeur Monaco (Rego, YAML, prompts, JSON, manifestes), empaqueté localement | PASSED | studio.test.ts::registers the contracts/v1 schemas in the editor, with the policy request wrapper (E-DF-PORTAL) | |
| ARCH-A4.4-06 Formulaires React Hook Form + Zod | PASSED | zod-csp.test.ts::parses objects without calling the Function constructor form-ids.test.ts::scopes every field id to its form instance (E-DF-PORTAL) | |
| ARCH-A4.4-07 Graphes React Flow (topologies, dépendances, traces visuelles) | IN_PROGRESS | components.test.ts::layers GET /v1/lineage/graph and keeps the nodes of a cycle (E-DF-PORTAL) | DependencyGraph en couches sans React Flow (ADR-0148) ; React Flow non ajouté, pas de vue de topologie interactive. |
| ARCH-A4.4-08 Graphiques Apache ECharts | IN_PROGRESS | mappers.test.ts (E-DF-PORTAL) | Recharts (MIT) utilisé à la place d'ECharts (ADR-0148) ; à valider par le client. |
| ARCH-A4.4-09 Authentification OIDC avec Keycloak | PASSED | session.test.ts::keeps no secret in localStorage after login and logout (E-DF-PORTAL) | |
| ARCH-A4.4-10 React Flow limité aux vues de topologie et d'exécution ; Developer Studio code first | PASSED | studio.test.ts::conform to the documented API surface (E-DF-PORTAL) |
Partie A, A5.1. Services backend à développer
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-A5.1-01 platform-manager-api | PASSED | test_platform_core.py::test_operations_api_detail_logs_abort_retry_and_scope (E-RB-NM) | |
| ARCH-A5.1-02 platform-reconciler : dérive détectée et réconciliée | PASSED | test_lifecycle_drift_backups.py::test_change_outside_the_manager_is_detected_and_reconciled (E-RB-NM) | |
| ARCH-A5.1-03 node-agent : enregistrement, préflight et signature | PASSED | test_platform_core.py::test_registration_evaluates_preflight_at_once_and_reregisters test_foundation.py::test_agent_signature_is_required (E-RB-NM) | |
| ARCH-A5.1-04 component-catalog | PASSED | test_catalog.py::test_catalog_loads_and_is_open_source_only test_platform_components.py::test_manifest_is_valid_against_the_schema (E-RB-CP, E-RB-NM) | |
| ARCH-A5.1-05 configuration-service : versions, diff, restauration | PASSED | test_services_config.py::test_versions_diff_restore_and_secrets (E-RB-NM) | |
| ARCH-A5.1-06 deployment-service : installation fournisseur et consommateur | PASSED | test_services_install.py::test_provider_and_consumer_install_end_to_end (E-RB-NM) | |
| ARCH-A5.1-07 health-controller : liveness, readiness, smoke distincts | PASSED | test_lifecycle_checks.py::test_liveness_readiness_and_smoke_are_distinct (E-RB-NM) | |
| ARCH-A5.1-08 identity-integration : OIDC, SPIFFE, clés API | PASSED | test_core_auth.py::test_oidc test_core_auth.py::test_spiffe (E-RB-CP) | |
| ARCH-A5.1-09 authorization-service : ReBAC et vérification | PASSED | test_core_secrets_authz.py::test_authz_tuples_and_check test_authz_rebac.py::test_agent_and_project_relations (E-RB-CP) | |
| ARCH-A5.1-10 delegation-service : délégation toujours plus étroite, révocation en cascade | PASSED | test_identity_context_delegation.py::test_restricted_delegation_is_always_narrower_and_revocation_cascades (E-RB-CP) | |
| ARCH-A5.1-11 governance-registry | PASSED | test_data_quality_governance.py::test_governance_registry (E-RB-CP) | |
| ARCH-A5.1-12 model-control-service : publication approuvée, canari, rollback | PASSED | test_llm_model_lifecycle.py::test_publication_needs_an_approval_then_canary_and_rollback_keep_history (E-RB-CP) | |
| ARCH-A5.1-13 agent-control-service : suspension, reprise approuvée, kill | PASSED | test_agents_execution.py::test_kill_switch_blocks_new_runs (E-RB-CP) | |
| ARCH-A5.1-14 runtime-gateway : PEP sur l'appel modèle | PASSED | test_gateway_pep_untrusted.py::test_pep_model_gateway_denied (E-RB-CP) | |
| ARCH-A5.1-15 mcp-security-gateway | PASSED | test_gateway_pep_untrusted.py::test_pep_mcp_denied test_capabilities_gateways.py::test_mcp_gateway (E-RB-CP) | |
| ARCH-A5.1-16 connector-service : webhooks signés, rejeu, déduplication | PASSED | test_capabilities_gateways.py::test_webhook_signature_replay_and_dedupe test_gateway_pep_untrusted.py::test_pep_connector_channel_a2a_denied (E-RB-CP) | |
| ARCH-A5.1-17 developer-platform-service : premier jour du développeur | PASSED | test_core_contracts.py::test_apply_denied_by_policy (E-RB-CP) | |
| ARCH-A5.1-18 pack-registry-service : paquet non signé ou altéré refusé | PASSED | test_marketplace.py::test_unsigned_tampered_or_untrusted_pack_is_refused (E-RB-CP) | |
| ARCH-A5.1-19 data-access-gateway : PEP connaissance et mémoire | PASSED | test_gateway_pep_untrusted.py::test_pep_knowledge_and_memory_denied (E-RB-CP) | |
| ARCH-A5.1-20 privacy-service : détokenisation autorisée et auditée | PASSED | test_data_privacy.py::test_detokenize_requires_permission_and_is_audited (E-RB-CP) | |
| ARCH-A5.1-21 storage-adapter-service : politique décidée avant l'action | PASSED | test_storage_profiles_api.py::test_policy_decides_before_the_storage_action (E-RB-CP) | |
| ARCH-A5.1-22 rag-governance-service : ACL des fragments | PASSED | test_rag_governance.py::test_chunk_acl_forbidden_fragments_never_reach_the_context (E-RB-CP) | |
| ARCH-A5.1-23 usage-budget-service : réservations concurrentes | PASSED | test_finops_quotas.py::test_concurrent_reservations_one_rejected (E-RB-CP) | |
| ARCH-A5.1-24 evaluation-service : quality gates et red team | IN_PROGRESS | test_data_evaluation.py::test_evaluation_gate_pass_and_fail test_data_evaluation.py::test_red_team_runs (E-RB-CP) | Les moteurs réels Ragas, Promptfoo et garak ne sont pas exécutés par ce lot ; seules les quality gates et le red team intégrés sont prouvés. |
| ARCH-A5.1-25 approval-service : approbation par une autre personne | PASSED | test_approvals_promotion.py::test_promotion_waits_for_an_approval_from_someone_else (E-RB-CP) | |
| ARCH-A5.1-26 audit-gateway : redélivrance sans perte ni doublon | PASSED | test_evidence_gateway.py::test_gateway_redelivers_after_target_outage_without_loss_or_duplicate (E-RB-CP) | |
| ARCH-A5.1-27 evidence-service : scellement vérifiable en ligne et hors ligne | PASSED | test_evidence_gateway.py::test_seal_signature_verifies_online_and_offline (E-RB-CP) | |
| ARCH-A5.1-28 detection-service : normalisation et corrélation | PASSED | test_soc_ai_sdr.py::test_ingestor_normalizes_and_correlator_links_user_agent_tenant (E-RB-CP) | |
| ARCH-A5.1-29 incident-service | PASSED | test_soc_ai_sdr.py::test_incident_lifecycle_assignment_and_auditable_timeline (E-RB-CP) | |
| ARCH-A5.1-30 kill-switch-controller | PASSED | test_soc_ai_sdr.py::test_kill_switch_cancels_run_and_subagents_and_refuses_new_actions test_soc_ai_sdr.py::test_kill_switches_persist_across_restart (E-RB-CP) | |
| ARCH-A5.1-31 response-playbook-service : réactions typées seulement | PASSED | test_soc_ai_sdr.py::test_typed_reactions_only_never_a_free_command test_soc_ai_sdr.py::test_rate_limit_and_require_approval_reactions (E-RB-CP) | |
| ARCH-A5.1-32 license-service : activation hors ligne | PASSED | test_licensing.py::test_offline_issuance_and_file_activation_without_network (E-RB-CP) | |
| ARCH-A5.1-33 diagnostic-service : préflight et bundle de support assaini | PASSED | test_lifecycle_checks.py::test_preflight_blocks_installation_on_critical_failures test_lifecycle_bundle_acceptance.py::test_support_bundle_has_no_secret_and_no_personal_data (E-RB-NM) |
Partie A, A5.2. Découpage technique des déploiements
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-A5.2-01 control-api : déploiement du Control Plane | PASSED | test_platform_deploy_env.py::test_helm_env_names_are_settings test_platform_security_manifests.py::test_every_pod_spec_is_hardened (E-RB-CP) | |
| ARCH-A5.2-02 platform-controller : Platform Manager hors du chart applicatif | PASSED | test_platform_core.py::test_background_server_tasks (E-RB-NM) | |
| ARCH-A5.2-03 security-enforcement : OPA, OpenFGA, politiques réseau | PASSED | test_platform_security_manifests.py::test_default_deny_and_metadata_deny test_core_policies.py::test_opa_engine (E-RB-CP) | |
| ARCH-A5.2-04 runtime-plane : worker, workers multimodaux KEDA, bac à sable, LiteLLM, vLLM | PASSED | test_platform_deploy_env.py::test_helm_worker_deployment test_media_worker.py::test_helm_worker_kinds_are_media_worker_operations test_platform_security_manifests.py::test_vllm_reachable_only_from_litellm_and_control_plane (E-RB-CP) | |
| ARCH-A5.2-05 telemetry-plane | IN_PROGRESS | test_data_quality_governance.py::test_telemetry_ingest_overview_trace (E-RB-CP) | Pas d'unité de déploiement télémétrie distincte dans le chart ; la pile d'observabilité est prouvée par le lot C10. |
| ARCH-A5.2-06 audit-plane : collecte d'audit durable | IN_PROGRESS | test_evidence_gateway.py::test_gateway_redelivers_after_target_outage_without_loss_or_duplicate (E-RB-CP) | La passerelle d'audit tourne comme job du worker (audit_gateway), pas comme déploiement isolé du chart. |
| ARCH-A5.2-07 soc-plane : fonctionne même portail arrêté | IN_PROGRESS | test_runtime_without_console.py::test_decisions_stay_enforced_with_console_and_admin_routes_down test_soc_ai_sdr.py::test_worker_runs_the_soc_scan_and_containment_verifier (E-RB-CP) | Le SOC est servi par le Control Plane et le worker, indépendants du portail ; pas de déploiement SOC séparé dans le chart. |
| ARCH-A5.2-08 developer-plane : portail et documentation | PASSED | test_platform_security_manifests.py::test_portal_ingress_tls_headers_and_login_limit (E-RB-CP) | |
| ARCH-A5.2-09 license-controller hors ligne | PASSED | test_licensing.py::test_verifier_and_store_never_reach_the_network test_licensing.py::test_offline_issuance_and_file_activation_without_network (E-RB-CP) | |
| ARCH-A5.2-10 Temporal pour les workflows durables, NATS JetStream pour les événements, Redis seulement cache et coordination | PASSED | test_runtime_temporal_durable.py::test_durable_workflow_resumes_after_worker_kill test_runtime_nats_jetstream.py::test_dedup_ordering_redelivery_exactly_once test_core_redis.py::test_sources_of_truth_never_read_from_redis (E-RB-CP) |
Partie A, A6.1. Schémas et tables PostgreSQL
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-A6.1-01 Domaine cœur (tenants, organizations, business_units, environments, projects, settings) | IN_PROGRESS | test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls test_data_model_mapping.py::test_column_backed_concepts_exist test_data_model_mapping.py::test_manager_and_external_locations_exist (E-DP-DATAMODEL) | Tables absentes : organizations, business_units. Aucun code ne les utilise encore ; à créer avec le domaine qui les portera (pas de table vide). |
| ARCH-A6.1-02 Domaine identité et accès (users, groups, memberships, service_identities, delegations, access_grants) | PASSED | test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls test_data_model_mapping.py::test_column_backed_concepts_exist test_data_model_mapping.py::test_manager_and_external_locations_exist (E-DP-DATAMODEL) | |
| ARCH-A6.1-03 Domaine inventaire plateforme (clusters, nodes, components, component_versions, service_instances, dependencies) | PASSED | test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls test_data_model_mapping.py::test_column_backed_concepts_exist test_data_model_mapping.py::test_manager_and_external_locations_exist (E-DP-DATAMODEL) | |
| ARCH-A6.1-04 Domaine opérations plateforme (configurations, configuration_versions, operations, operation_steps, health_checks, maintenance_windows) | PASSED | test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls test_data_model_mapping.py::test_column_backed_concepts_exist test_data_model_mapping.py::test_manager_and_external_locations_exist (E-DP-DATAMODEL) | |
| ARCH-A6.1-05 Domaine IA (providers, models, model_routes, model_deployments, model_prices, model_approvals) | PASSED | test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls test_data_model_mapping.py::test_column_backed_concepts_exist test_data_model_mapping.py::test_manager_and_external_locations_exist (E-DP-DATAMODEL) | |
| ARCH-A6.1-06 Domaine agents (agents, agent_versions, agent_deployments, agent_runs, subagent_runs, checkpoints) | PASSED | test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls test_data_model_mapping.py::test_column_backed_concepts_exist test_data_model_mapping.py::test_manager_and_external_locations_exist (E-DP-DATAMODEL) | |
| ARCH-A6.1-07 Domaine sessions d'agents (sessions, action_requests, tool_invocations, memory_scopes, memory_entries) | PASSED | test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls test_data_model_mapping.py::test_column_backed_concepts_exist test_data_model_mapping.py::test_manager_and_external_locations_exist (E-DP-DATAMODEL) | |
| ARCH-A6.1-08 Domaine développement (projects, sdk_versions, project_templates, developer_environments, test_runs) | PASSED | test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls test_data_model_mapping.py::test_column_backed_concepts_exist test_data_model_mapping.py::test_manager_and_external_locations_exist (E-DP-DATAMODEL) | |
| ARCH-A6.1-09 Domaine registre des packs (packs, pack_versions, pack_installations, pack_assets, pack_dependencies) | PASSED | test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls test_data_model_mapping.py::test_column_backed_concepts_exist test_data_model_mapping.py::test_manager_and_external_locations_exist (E-DP-DATAMODEL) | |
| ARCH-A6.1-10 Domaine registre des actifs (skills, skill_versions, prompts, prompt_versions, plugins, plugin_versions) | PASSED | test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls test_data_model_mapping.py::test_column_backed_concepts_exist test_data_model_mapping.py::test_manager_and_external_locations_exist (E-DP-DATAMODEL) | |
| ARCH-A6.1-11 Domaine intégration (mcp_servers, mcp_tools, connectors, connector_instances, connector_credentials) | PASSED | test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls test_data_model_mapping.py::test_column_backed_concepts_exist test_data_model_mapping.py::test_manager_and_external_locations_exist (E-DP-DATAMODEL) | |
| ARCH-A6.1-12 Domaine données (data_sources, datasets, documents, document_acl, classifications, lineage_refs) | IN_PROGRESS | test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls test_data_model_mapping.py::test_column_backed_concepts_exist test_data_model_mapping.py::test_manager_and_external_locations_exist (E-DP-DATAMODEL) | Tables absentes : datasets. Aucun code ne les utilise encore ; à créer avec le domaine qui les portera (pas de table vide). |
| ARCH-A6.1-13 Domaine RAG (collections, ingestion_jobs, document_chunks, retrieval_policies, index_versions) | PASSED | test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls test_data_model_mapping.py::test_column_backed_concepts_exist test_data_model_mapping.py::test_manager_and_external_locations_exist (E-DP-DATAMODEL) | |
| ARCH-A6.1-14 Domaine politiques (policy_sets, policy_versions, policy_assignments, policy_tests, exceptions) | PASSED | test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls test_data_model_mapping.py::test_column_backed_concepts_exist test_data_model_mapping.py::test_manager_and_external_locations_exist (E-DP-DATAMODEL) | |
| ARCH-A6.1-15 Domaine signaux de sécurité (security_signals, detections, incidents, response_actions, quarantines, kill_switches) | PASSED | test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls test_data_model_mapping.py::test_column_backed_concepts_exist test_data_model_mapping.py::test_manager_and_external_locations_exist (E-DP-DATAMODEL) | |
| ARCH-A6.1-16 Domaine approbations de sécurité (approvals, approval_steps, risk_assessments, dlp_events) | PASSED | test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls test_data_model_mapping.py::test_column_backed_concepts_exist test_data_model_mapping.py::test_manager_and_external_locations_exist (E-DP-DATAMODEL) | |
| ARCH-A6.1-17 Domaine audit (events, decision_records, evidence_batches, evidence_objects, retention_policies, exports) | PASSED | test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls test_data_model_mapping.py::test_column_backed_concepts_exist test_data_model_mapping.py::test_manager_and_external_locations_exist (E-DP-DATAMODEL) | |
| ARCH-A6.1-18 Domaine observabilité (trace_refs, alert_rules, alert_instances, service_slos, telemetry_configs) | IN_PROGRESS | test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls test_data_model_mapping.py::test_column_backed_concepts_exist test_data_model_mapping.py::test_manager_and_external_locations_exist (E-DP-DATAMODEL) | Tables absentes : service_slos. Aucun code ne les utilise encore ; à créer avec le domaine qui les portera (pas de table vide). |
| ARCH-A6.1-19 Domaine FinOps (budgets, quotas, usage_records, cost_allocations, price_catalogs) | PASSED | test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls test_data_model_mapping.py::test_column_backed_concepts_exist test_data_model_mapping.py::test_manager_and_external_locations_exist (E-DP-DATAMODEL) | |
| ARCH-A6.1-20 Domaine stockage (profiles, buckets, storage_policies, object_refs, backup_records) | PASSED | test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls test_data_model_mapping.py::test_column_backed_concepts_exist test_data_model_mapping.py::test_manager_and_external_locations_exist (E-DP-DATAMODEL) | |
| ARCH-A6.1-21 Domaine commercial (licenses, license_activations, entitlements, support_contracts, license_events) | IN_PROGRESS | test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls test_data_model_mapping.py::test_column_backed_concepts_exist test_data_model_mapping.py::test_manager_and_external_locations_exist (E-DP-DATAMODEL) | Tables absentes : support_contracts. Aucun code ne les utilise encore ; à créer avec le domaine qui les portera (pas de table vide). |
| ARCH-A6.1-22 Domaine système (outbox_events, inbox_events, scheduled_jobs, migrations, feature_flags) | IN_PROGRESS | test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls test_data_model_mapping.py::test_column_backed_concepts_exist test_data_model_mapping.py::test_manager_and_external_locations_exist (E-DP-DATAMODEL) | Tables absentes : inbox_events. Aucun code ne les utilise encore ; à créer avec le domaine qui les portera (pas de table vide). |
| ARCH-A6.1-23 Grosses traces dans Opik/Jaeger, journaux dans OpenSearch, fichiers dans le stockage objet client | IN_PROGRESS | test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls test_data_model_mapping.py::test_column_backed_concepts_exist test_data_model_mapping.py::test_manager_and_external_locations_exist (E-DP-DATAMODEL) | eai.telemetry_spans garde des spans résumés (coût, run_id) en PostgreSQL : à réduire à des références de trace si la décision d'architecture l'exige. |
| ARCH-A6.1-24 Outils à base propre (Keycloak, Opik, Temporal, OpenFGA) : schémas et migrations séparés | PASSED | test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls (E-DP-DATAMODEL) |
Partie A, A6.2. Relations importantes du modèle de données
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-A6.2-01 Tenant vers organisations, projets, environnements | IN_PROGRESS | test_data_model_mapping.py::test_relations_are_foreign_keys_or_reference_columns (E-DP-DATAMODEL) | Organisations absentes (voir A6.1 cœur). |
| ARCH-A6.2-02 Cluster vers nœuds et instances de service | PASSED | test_data_model_mapping.py::test_relations_are_foreign_keys_or_reference_columns (E-DP-DATAMODEL) | |
| ARCH-A6.2-03 Composant vers versions, dépendances, instances | PASSED | test_data_model_mapping.py::test_relations_are_foreign_keys_or_reference_columns (E-DP-DATAMODEL) | |
| ARCH-A6.2-04 Agent vers versions, déploiements, exécutions | PASSED | test_data_model_mapping.py::test_relations_are_foreign_keys_or_reference_columns (E-DP-DATAMODEL) | |
| ARCH-A6.2-05 Exécution d'agent vers actions, sous-agents, traces | PASSED | test_data_model_mapping.py::test_relations_are_foreign_keys_or_reference_columns (E-DP-DATAMODEL) | |
| ARCH-A6.2-06 Projet développeur vers packs, tests, versions | PASSED | test_data_model_mapping.py::test_relations_are_foreign_keys_or_reference_columns (E-DP-DATAMODEL) | |
| ARCH-A6.2-07 Version de pack vers skills, prompts, MCP, connecteurs | PASSED | test_data_model_mapping.py::test_relations_are_foreign_keys_or_reference_columns (E-DP-DATAMODEL) | |
| ARCH-A6.2-08 Utilisateur vers délégations, approbations, événements d'audit | PASSED | test_data_model_mapping.py::test_relations_are_foreign_keys_or_reference_columns (E-DP-DATAMODEL) | |
| ARCH-A6.2-09 Version de politique vers affectations, tests, décisions | PASSED | test_data_model_mapping.py::test_relations_are_foreign_keys_or_reference_columns (E-DP-DATAMODEL) | |
| ARCH-A6.2-10 Incident vers détection, réponse, preuves | PASSED | test_data_model_mapping.py::test_relations_are_foreign_keys_or_reference_columns (E-DP-DATAMODEL) | |
| ARCH-A6.2-11 Licence vers activations, droits, support | IN_PROGRESS | test_data_model_mapping.py::test_relations_are_foreign_keys_or_reference_columns (E-DP-DATAMODEL) | Contrats de support absents. |
Partie B, B3.1. Fonctions du Manager
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B3.1-01 Discovery | PASSED | test_kubernetes_api.py::test_discovery_inventory (E-PO-K8S) | |
| ARCH-B3.1-02 Preflight | PASSED | test_lifecycle_checks.py::test_preflight_blocks_installation_on_critical_failures (E-PO-SERVER) | |
| ARCH-B3.1-03 Component Catalog | PASSED | test_catalog.py::test_topologies (E-PO-SERVER) | |
| ARCH-B3.1-04 Dependency Manager | PASSED | test_availability_api.py::test_dag_order_and_kill_switch_survives_restart (E-PO-SERVER) | |
| ARCH-B3.1-05 Configuration Manager | PASSED | test_services_config.py::test_config_groups_preview_and_apply (E-PO-SERVER) | |
| ARCH-B3.1-06 Lifecycle Manager | PASSED | test_services_operate.py::test_actions_rolling_restart_and_permissions (E-PO-SERVER) | |
| ARCH-B3.1-07 Health Manager | PASSED | test_services_operate.py::test_blueprint_round_trip_and_health_job (E-PO-SERVER) | |
| ARCH-B3.1-08 Cluster Manager | PASSED | test_services_operate.py::test_component_instances_change_peers (E-PO-SERVER) | |
| ARCH-B3.1-09 Scaling Manager | NOT_STARTED | Fonction non prouvée par un test dans ce lot. | |
| ARCH-B3.1-10 Upgrade Manager | PASSED | test_lifecycle_upgrades.py::test_upgrade_compatibility_refusals (E-PO-SERVER) | |
| ARCH-B3.1-11 Backup & Recovery | PASSED | test_backup_recovery.py::test_restore_needs_two_distinct_approvers_and_separate_privilege (E-PO-SERVER) | |
| ARCH-B3.1-12 Certificate Manager | PASSED | test_lifecycle_checks.py::test_tls_probes_real_handshakes (E-PO-SERVER) | |
| ARCH-B3.1-13 Secrets Integration | PASSED | test_services_config.py::test_versions_diff_restore_and_secrets (E-PO-SERVER) | |
| ARCH-B3.1-14 Troubleshooting | PASSED | test_platform_core.py::test_operations_api_detail_logs_abort_retry_and_scope (E-PO-SERVER) | |
| ARCH-B3.1-15 Capacity Planner | NOT_STARTED | Fonction non prouvée par un test dans ce lot. | |
| ARCH-B3.1-16 Compliance Checker | NOT_STARTED | Fonction non prouvée par un test dans ce lot. | |
| ARCH-B3.1-17 License Manager | NOT_STARTED | Fonction non prouvée par un test dans ce lot. | |
| ARCH-B3.1-18 Support Bundle | PASSED | test_lifecycle_bundle_acceptance.py::test_support_bundle_has_no_secret_and_no_personal_data (E-PO-SERVER) | |
| ARCH-B3.1-19 Installation Wizard | PASSED | test_lifecycle_profiles.py::test_each_profile_is_installable_or_blocked_with_reason (E-PO-SERVER) |
Partie B, B3.2. Page d'accueil du Manager et onglets uniformes
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B3.2-01 Page d'accueil avec comptes réels par environnement | PASSED | test_platform_manager_bridge.py::test_summary_real_counts (E-PO-BRIDGE) | |
| ARCH-B3.2-02 Services avec instances réelles x/y et états | PASSED | test_platform_manager_bridge.py::test_services_five_state_fields_and_admin_state (E-PO-BRIDGE) | |
| ARCH-B3.2-03 Topologie réelle du cluster dans la console (INFUI-003) | IN_PROGRESS | topology.test.tsx nodes.test.tsx (E-PO-UI) | Onglets uniformes (Audit, Support) non testés ; vue pools de nœuds non testée. |
Partie B, B3.3. Arrêt technique et suspension de sécurité
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B3.3-01 Arrêt technique | PASSED | test_services_operate.py::test_actions_rolling_restart_and_permissions (E-PO-SERVER) | |
| ARCH-B3.3-02 Suspension de sécurité | NOT_STARTED | Effet distinct sur les applications et transactions non prouvé. | |
| ARCH-B3.3-03 Restart | PASSED | test_services_operate.py::test_actions_rolling_restart_and_permissions (E-PO-SERVER) | |
| ARCH-B3.3-04 Rolling restart | PASSED | test_services_operate.py::test_actions_rolling_restart_and_permissions (E-PO-SERVER) | |
| ARCH-B3.3-05 Drain | NOT_STARTED | Effet distinct sur les applications et transactions non prouvé. | |
| ARCH-B3.3-06 Scale-to-zero | NOT_STARTED | Effet distinct sur les applications et transactions non prouvé. | |
| ARCH-B3.3-07 Quarantaine d'un nœud | IN_PROGRESS | nodes.test.tsx (E-PO-UI) | Effet distinct sur les applications et transactions non prouvé. |
| ARCH-B3.3-08 Arrêt d'urgence | IN_PROGRESS | test_availability_api.py::test_dag_order_and_kill_switch_survives_restart (E-PO-SERVER) | Effet distinct sur les applications et transactions non prouvé. |
Partie B, B3.4. Manifeste standard de chaque composant
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B3.4-01 Manifeste : Identité | IN_PROGRESS | test_catalog.py::test_parameters_are_documented_and_valid (E-PO-SERVER) | Le test valide le schéma du catalogue, pas chaque champ du manifeste de référence. |
| ARCH-B3.4-02 Manifeste : Statut de support | IN_PROGRESS | test_catalog.py::test_parameters_are_documented_and_valid (E-PO-SERVER) | Le test valide le schéma du catalogue, pas chaque champ du manifeste de référence. |
| ARCH-B3.4-03 Manifeste : Déploiement | IN_PROGRESS | test_catalog.py::test_parameters_are_documented_and_valid (E-PO-SERVER) | Le test valide le schéma du catalogue, pas chaque champ du manifeste de référence. |
| ARCH-B3.4-04 Manifeste : Dépendances | IN_PROGRESS | test_catalog.py::test_parameters_are_documented_and_valid (E-PO-SERVER) | Le test valide le schéma du catalogue, pas chaque champ du manifeste de référence. |
| ARCH-B3.4-05 Manifeste : Configuration (schéma, secretRefs) | IN_PROGRESS | test_catalog.py::test_parameters_are_documented_and_valid (E-PO-SERVER) | Le test valide le schéma du catalogue, pas chaque champ du manifeste de référence. |
| ARCH-B3.4-06 Manifeste : Opérations | IN_PROGRESS | test_catalog.py::test_parameters_are_documented_and_valid (E-PO-SERVER) | Le test valide le schéma du catalogue, pas chaque champ du manifeste de référence. |
| ARCH-B3.4-07 Manifeste : Santé | IN_PROGRESS | test_catalog.py::test_parameters_are_documented_and_valid (E-PO-SERVER) | Le test valide le schéma du catalogue, pas chaque champ du manifeste de référence. |
| ARCH-B3.4-08 Manifeste : Observabilité | IN_PROGRESS | test_catalog.py::test_parameters_are_documented_and_valid (E-PO-SERVER) | Le test valide le schéma du catalogue, pas chaque champ du manifeste de référence. |
| ARCH-B3.4-09 Manifeste : Sécurité | IN_PROGRESS | test_catalog.py::test_parameters_are_documented_and_valid (E-PO-SERVER) | Le test valide le schéma du catalogue, pas chaque champ du manifeste de référence. |
| ARCH-B3.4-10 Manifeste : Lifecycle (backup, approbation, budget) | IN_PROGRESS | test_catalog.py::test_parameters_are_documented_and_valid (E-PO-SERVER) | Le test valide le schéma du catalogue, pas chaque champ du manifeste de référence. |
Partie B, B3.5. Services backend du Manager et infrastructure apportée par le client
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B3.5-01 platform-api | PASSED | test_foundation.py::test_api_requires_authentication (E-PO-SERVER) | |
| ARCH-B3.5-02 installation-orchestrator | PASSED | test_services_install.py::test_provider_and_consumer_install_end_to_end (E-PO-SERVER) | |
| ARCH-B3.5-03 configuration-service | PASSED | test_services_config.py::test_config_groups_preview_and_apply (E-PO-SERVER) | |
| ARCH-B3.5-04 dependency-resolver | PASSED | test_services_install.py::test_connection_bindings_and_unmanaged_provider (E-PO-SERVER) | |
| ARCH-B3.5-05 health-controller | PASSED | test_services_operate.py::test_blueprint_round_trip_and_health_job (E-PO-SERVER) | |
| ARCH-B3.5-06 upgrade-controller | PASSED | test_lifecycle_upgrades.py::test_stateless_upgrade_with_canary_then_rollback (E-PO-SERVER) | |
| ARCH-B3.5-07 backup-coordinator | PASSED | test_lifecycle_drift_backups.py::test_coordinated_backup_then_restore_executed_and_verified (E-PO-SERVER) | |
| ARCH-B3.5-08 platform-diagnostics | PASSED | test_lifecycle_bundle_acceptance.py::test_signed_acceptance_report_with_evidence (E-PO-SERVER) | |
| ARCH-B3.5-09 license-service | NOT_STARTED | Lot C10. | |
| ARCH-B3.5-10 platform-node-agent | PASSED | test_agent_signature.py::test_agent_and_server_signatures_are_identical (E-PO-SERVER) | |
| ARCH-B3.5-11 Agent jamais shell générique : opérations signées | PASSED | test_foundation.py::test_agent_signature_is_required (E-PO-SERVER) | |
| ARCH-B3.5-12 BYOI Kubernetes existant | PASSED | test_kubernetes_api.py::test_manager_user_has_least_privilege (E-PO-K8S) | |
| ARCH-B3.5-13 BYOI fournisseur non géré | PASSED | test_services_install.py::test_connection_bindings_and_unmanaged_provider (E-PO-SERVER) | |
| ARCH-B3.5-14 Pont Control Plane platform_manager | PASSED | test_platform_manager_bridge.py::test_operation_forwarded_on_behalf_and_audited (E-PO-BRIDGE) |
Partie B, B4.1. Profils de déploiement
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B4.1-01 Profil Développement | PASSED | test_lifecycle_profiles.py::test_each_profile_is_installable_or_blocked_with_reason (E-ID-LIFECYCLE) | |
| ARCH-B4.1-02 Profil Standard Enterprise | PASSED | test_lifecycle_profiles.py::test_each_profile_is_installable_or_blocked_with_reason test_lifecycle_profiles.py::test_standard_profile_satisfied_when_its_rules_hold (E-ID-LIFECYCLE) | |
| ARCH-B4.1-03 Profil Banking Secure | PASSED | test_lifecycle_profiles.py::test_each_profile_is_installable_or_blocked_with_reason test_lifecycle_profiles.py::test_banking_secure_two_person_rule (E-ID-LIFECYCLE) | |
| ARCH-B4.1-04 Profil Air-Gapped | PASSED | test_lifecycle_profiles.py::test_each_profile_is_installable_or_blocked_with_reason (E-ID-LIFECYCLE) | |
| ARCH-B4.1-05 Profil Hybride | PASSED | test_lifecycle_profiles.py::test_each_profile_is_installable_or_blocked_with_reason (E-ID-LIFECYCLE) | |
| ARCH-B4.1-06 Aucun profil n'impose de limite commerciale | PASSED | test_lifecycle_profiles.py::test_profile_catalog_and_creation (E-ID-LIFECYCLE) |
Partie B, B4.2. Workflow d'installation
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B4.2-01 Import de licence | IN_PROGRESS | Couvert par un autre lot (licence C10, découverte C01) ; preuve à citer | |
| ARCH-B4.2-02 Choix de l'environnement | PASSED | test_lifecycle_profiles.py::test_profile_catalog_and_creation (E-ID-LIFECYCLE) | |
| ARCH-B4.2-03 Découverte de l'infrastructure | IN_PROGRESS | Couvert par un autre lot (licence C10, découverte C01) ; preuve à citer | |
| ARCH-B4.2-04 Connexion des services client | PASSED | test_services_install.py::test_connection_bindings_and_unmanaged_provider (E-ID-LIFECYCLE) | |
| ARCH-B4.2-05 Sélection du profil | PASSED | test_lifecycle_profiles.py::test_profile_catalog_and_creation (E-ID-LIFECYCLE) | |
| ARCH-B4.2-06 Paramètres | PASSED | test_services_install.py::test_validation_errors (E-ID-LIFECYCLE) | |
| ARCH-B4.2-07 Prévalidation | PASSED | test_lifecycle_checks.py::test_preflight_blocks_installation_on_critical_failures test_services_install.py::test_artifact_missing_and_preflight_failure (E-ID-LIFECYCLE) | |
| ARCH-B4.2-08 Déploiement ordonné enregistré | PASSED | test_services_install.py::test_provider_and_consumer_install_end_to_end (E-ID-LIFECYCLE) | |
| ARCH-B4.2-09 Amorçage sécurité | BLOCKED | test_services_install.py::test_opa_binary_install (E-ID-LIFECYCLE) | Nécessite un cluster Kubernetes réel pour l'exécution de bout en bout ; la logique locale est prouvée par les tests cités [B-CLUSTER] |
| ARCH-B4.2-10 Validation fonctionnelle | BLOCKED | test_lifecycle_bundle_acceptance.py::test_signed_acceptance_report_with_evidence (E-ID-LIFECYCLE) | Nécessite un cluster Kubernetes réel pour l'exécution de bout en bout ; la logique locale est prouvée par les tests cités [B-CLUSTER] |
| ARCH-B4.2-11 Activation opérationnelle | IN_PROGRESS | Couvert par un autre lot (licence C10, découverte C01) ; preuve à citer |
Partie B, B4.3. Ce que le client trouve après l'installation
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B4.3-01 Portail accessible avec SSO et MFA | BLOCKED | Nécessite un cluster Kubernetes réel pour l'exécution de bout en bout ; la logique locale est prouvée par les tests cités [B-CLUSTER] | |
| ARCH-B4.3-02 Comptes administrateurs et accès d'urgence | BLOCKED | Nécessite un cluster Kubernetes réel pour l'exécution de bout en bout ; la logique locale est prouvée par les tests cités [B-CLUSTER] | |
| ARCH-B4.3-03 Composants enregistrés et supervisés | PASSED | test_services_install.py::test_provider_and_consumer_install_end_to_end (E-ID-LIFECYCLE) | |
| ARCH-B4.3-04 Politiques et rôles de base | BLOCKED | Nécessite un cluster Kubernetes réel pour l'exécution de bout en bout ; la logique locale est prouvée par les tests cités [B-CLUSTER] | |
| ARCH-B4.3-05 SDK téléchargeable | BLOCKED | Nécessite un cluster Kubernetes réel pour l'exécution de bout en bout ; la logique locale est prouvée par les tests cités [B-CLUSTER] | |
| ARCH-B4.3-06 Documentation locale hors ligne | BLOCKED | Nécessite un cluster Kubernetes réel pour l'exécution de bout en bout ; la logique locale est prouvée par les tests cités [B-CLUSTER] | |
| ARCH-B4.3-07 Exemples sans données réelles | BLOCKED | Nécessite un cluster Kubernetes réel pour l'exécution de bout en bout ; la logique locale est prouvée par les tests cités [B-CLUSTER] | |
| ARCH-B4.3-08 Packs métier visibles et installables | BLOCKED | Nécessite un cluster Kubernetes réel pour l'exécution de bout en bout ; la logique locale est prouvée par les tests cités [B-CLUSTER] | |
| ARCH-B4.3-09 Traces et métriques | BLOCKED | Nécessite un cluster Kubernetes réel pour l'exécution de bout en bout ; la logique locale est prouvée par les tests cités [B-CLUSTER] | |
| ARCH-B4.3-10 Alertes, détection, Kill Switch testables | BLOCKED | Nécessite un cluster Kubernetes réel pour l'exécution de bout en bout ; la logique locale est prouvée par les tests cités [B-CLUSTER] | |
| ARCH-B4.3-11 Événements d'audit et preuves consultables | BLOCKED | Nécessite un cluster Kubernetes réel pour l'exécution de bout en bout ; la logique locale est prouvée par les tests cités [B-CLUSTER] | |
| ARCH-B4.3-12 Point de terminaison de modèle de test | BLOCKED | Nécessite un cluster Kubernetes réel pour l'exécution de bout en bout ; la logique locale est prouvée par les tests cités [B-CLUSTER] | |
| ARCH-B4.3-13 Sauvegardes configurées et restauration documentée | BLOCKED | Nécessite un cluster Kubernetes réel pour l'exécution de bout en bout ; la logique locale est prouvée par les tests cités [B-CLUSTER] | |
| ARCH-B4.3-14 Prêt dès le premier jour sans permission magique | PASSED | test_lifecycle_bundle_acceptance.py::test_signed_acceptance_report_with_evidence (E-ID-LIFECYCLE) |
Partie B, B5.1. Arborescence fonctionnelle du portail
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B5.1-01 Overview | PASSED | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | |
| ARCH-B5.1-02 Platform Manager | IN_PROGRESS | platform-manager.test.ts::Platform Manager space over the Control Plane bridge nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Espace livré sur les routes /v1/platform-manager (C01) avec tests de configuration, corps d'opération et filtrage par rôle ; non rejoué contre un vrai Platform Manager depuis le portail, liens profonds sans route exposant l'URL de base. |
| ARCH-B5.1-03 Organizations & IAM | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
| ARCH-B5.1-04 AI Models & Gateway | PASSED | nav-access.test.ts::navigation filtered by role from GET /v1/me screens-ai.test.ts::providersCfg routes, bodies, roles, confirmations and states (E-DF-PORTAL, E-PT-SCREENS) | |
| ARCH-B5.1-05 Agents & Applications | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
| ARCH-B5.1-06 Developer Studio | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
| ARCH-B5.1-07 Enterprise Marketplace | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
| ARCH-B5.1-08 Data & RAG | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
| ARCH-B5.1-09 Security & Governance | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
| ARCH-B5.1-10 SOC & Incident Response | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
| ARCH-B5.1-11 Observability | IN_PROGRESS | observability.test.ts::Observability SLO screen nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran SLO et budgets d'erreur livré sur GET /v1/telemetry/slo ; les traces Opik et les tableaux Grafana restent accessibles hors portail, sans lien profond dédié. |
| ARCH-B5.1-12 Quality & Evaluation | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
| ARCH-B5.1-13 FinOps | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
| ARCH-B5.1-14 Audit & Compliance | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
| ARCH-B5.1-15 Infrastructure | IN_PROGRESS | platform-manager.test.ts::Platform Manager space over the Control Plane bridge nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Espace livré sur les routes /v1/platform-manager (C01) avec tests de configuration, corps d'opération et filtrage par rôle ; non rejoué contre un vrai Platform Manager depuis le portail, liens profonds sans route exposant l'URL de base. |
| ARCH-B5.1-16 Licensing & Support | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
| ARCH-B5.1-17 Documentation | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
Partie B, B5.2. Écrans prioritaires
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B5.2-01 Global dashboard | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
| ARCH-B5.2-02 Service Manager | IN_PROGRESS | platform-manager.test.ts::Platform Manager space over the Control Plane bridge nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Espace livré sur les routes /v1/platform-manager (C01) avec tests de configuration, corps d'opération et filtrage par rôle ; non rejoué contre un vrai Platform Manager depuis le portail, liens profonds sans route exposant l'URL de base. |
| ARCH-B5.2-03 Agent Details | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
| ARCH-B5.2-04 Execution Explorer | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
| ARCH-B5.2-05 Policy Manager | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
| ARCH-B5.2-06 Prompt & Skill Studio | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
| ARCH-B5.2-07 MCP Studio | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
| ARCH-B5.2-08 Plugin Builder | IN_PROGRESS | api-conformance.test.ts::screen configs (ResourceView / Tester) nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Le catalogue de plugins (installation, désinstallation, statut) existe ; l'édition et la construction d'un plugin dans le portail ne sont pas fournies. |
| ARCH-B5.2-09 Marketplace | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
| ARCH-B5.2-10 Model Gateway | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
| ARCH-B5.2-11 Data Protection | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
| ARCH-B5.2-12 SOC Console | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
| ARCH-B5.2-13 Kill Switch Center | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
| ARCH-B5.2-14 Audit Explorer | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
| ARCH-B5.2-15 License Center | IN_PROGRESS | nav-access.test.ts::navigation filtered by role from GET /v1/me (E-DF-PORTAL) | Écran présent sans test vitest dédié de configuration, de corps de requête et d'états; à compléter. |
Partie B, B5.3. Composants frontend transversaux et actions destructives
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B5.3-01 ResourceTable : recherche, filtres, tri, pagination, export selon les permissions | PASSED | components.test.ts::searches, sorts numerically with missing values last and paginates (E-DF-PORTAL) | |
| ARCH-B5.3-02 ResourceDetails : informations, état, versions, dépendances, historique | PASSED | components.test.ts::splits information, state, versions, dependencies and history from the real fields (E-DF-PORTAL) | |
| ARCH-B5.3-03 ConfigurationEditor : formulaires générés depuis JSON Schema | PASSED | components.test.ts::generates the form fields from a JSON Schema of contracts/v1 (E-DF-PORTAL) | |
| ARCH-B5.3-04 CodeEditor : Monaco pour Python, TypeScript, JSON, YAML, Rego | IN_PROGRESS | studio.test.ts::registers the contracts/v1 schemas in the editor, with the policy request wrapper (E-DF-PORTAL) | Langages déclarés : json, markdown, rego, plaintext, yaml ; Python et TypeScript non enregistrés dans EditorLanguage. |
| ARCH-B5.3-05 PermissionMatrix : rôles, ressources, opérations | PASSED | components.test.ts::crosses subjects and resources with the relations of GET /v1/authz/tuples (E-DF-PORTAL) | |
| ARCH-B5.3-06 ExecutionTimeline | PASSED | components.test.ts::merges steps and subagents of GET /v1/runs/{id}/steps and /subagents in time order (E-DF-PORTAL) | |
| ARCH-B5.3-07 DependencyGraph | PASSED | components.test.ts::layers GET /v1/lineage/graph and keeps the nodes of a cycle (E-DF-PORTAL) | |
| ARCH-B5.3-08 ApprovalDialog : validation humaine, séparation des tâches | PASSED | components.test.ts::enforces separation of duties, the approver roles and the reject comment (E-DF-PORTAL) | |
| ARCH-B5.3-09 SecurityFindings : vulnérabilités, risques, preuves, remédiations | PASSED | components.test.ts::orders by severity and counts, keeping risk, evidence and remediation (E-DF-PORTAL) | |
| ARCH-B5.3-10 DeploymentProgress : étapes, état, résultats, erreurs | PASSED | components.test.ts::reports steps, state, current step and errors (E-DF-PORTAL) | |
| ARCH-B5.3-11 IncidentTimeline : détection, décision, confinement, vérification, résolution | PASSED | components.test.ts::shows detection, decision, containment, verification and resolution dated by real events only (E-DF-PORTAL) | |
| ARCH-B5.3-12 Actions destructives : ressources, dépendances, risques et permissions affichés avant confirmation | IN_PROGRESS | components.test.ts::lists transitive dependents, risks and permissions and confirms only on the typed name (E-DF-PORTAL) | DestructiveConfirm disponible ; les actions destructives existantes de ResourceView gardent la confirmation simple (non branchées sur le composant). |
Partie B, B5.4. Rôles du portail
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B5.4-01 Rôle Administrateur plateforme | PASSED | test_iam_role_matrix.py::test_role_matrix (E-IR-IDENTITY) | |
| ARCH-B5.4-02 Rôle Administrateur sécurité | PASSED | test_iam_role_matrix.py::test_role_matrix (E-IR-IDENTITY) | |
| ARCH-B5.4-03 Rôle Analyste SOC | PASSED | test_iam_role_matrix.py::test_reference_roles_matrix (E-IR-IDENTITY) | |
| ARCH-B5.4-04 Rôle Conformité/Auditeur | PASSED | test_iam_role_matrix.py::test_role_matrix (E-IR-IDENTITY) | |
| ARCH-B5.4-05 Rôle Ingénieur plateforme IA | PASSED | test_iam_role_matrix.py::test_reference_roles_matrix (E-IR-IDENTITY) | |
| ARCH-B5.4-06 Rôle Développeur IA | PASSED | test_iam_role_matrix.py::test_role_matrix (E-IR-IDENTITY) | |
| ARCH-B5.4-07 Rôle Data Steward | PASSED | test_iam_role_matrix.py::test_reference_roles_matrix (E-IR-IDENTITY) | |
| ARCH-B5.4-08 Rôle Business Owner | PASSED | test_iam_role_matrix.py::test_business_owner_approves_use_case_and_soc_analyst_cannot test_iam_role_matrix.py::test_reference_roles_matrix (E-IR-IDENTITY) | |
| ARCH-B5.4-09 Rôle FinOps Manager | PASSED | test_iam_role_matrix.py::test_role_matrix (E-IR-IDENTITY) | |
| ARCH-B5.4-10 Rôle Ingénieur support | PASSED | test_iam_role_matrix.py::test_reference_roles_matrix (E-IR-IDENTITY) | |
| ARCH-B5.4-11 Chaque endpoint vérifie OpenFGA et OPA indépendamment de l'interface | PASSED | test_iam_openfga_real.py::test_require_relation_on_tool_routes_with_real_openfga test_iam_fail_closed.py::test_opa_killed_refuses_the_tool_call_and_audits_it (E-IR-IDENTITY) |
Partie B, B6.1. Modules du Control Plane
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B6.1-01 platform-core : tenants, projets, environnements | PASSED | test_core_tenancy.py::test_tenant_admin_flow test_core_tenancy.py::test_projects_and_environments (E-RB-CP) | |
| ARCH-B6.1-02 platform-manager : API d'opérations du Manager | PASSED | test_platform_core.py::test_operations_api_detail_logs_abort_retry_and_scope (E-RB-NM) | |
| ARCH-B6.1-03 component-registry : graphe de dépendances acyclique | PASSED | test_platform_components.py::test_dependency_graph_is_acyclic_and_resolvable (E-RB-CP) | |
| ARCH-B6.1-04 configuration-manager : réglages persistés et audités | PASSED | test_security_api.py::test_settings_get_put_persist_and_audit (E-RB-CP) | |
| ARCH-B6.1-05 identity-broker : OIDC et clés API | PASSED | test_core_auth.py::test_oidc test_core_auth.py::test_api_key_lifecycle (E-RB-CP) | |
| ARCH-B6.1-06 authorization-service | PASSED | test_core_secrets_authz.py::test_authz_tuples_and_check (E-RB-CP) | |
| ARCH-B6.1-07 delegation-service | PASSED | test_identity_context_delegation.py::test_restricted_delegation_is_always_narrower_and_revocation_cascades (E-RB-CP) | |
| ARCH-B6.1-08 context-authority : création, vérification, signature des contextes SDK | PASSED | test_identity_context_delegation.py::test_context_is_signed_verified_and_matches_the_contract test_identity_context_delegation.py::test_signing_key_is_read_from_the_openbao_reference_and_never_exposed (E-RB-CP) | |
| ARCH-B6.1-09 agent-registry | PASSED | test_capabilities_gateways.py::test_manifest_apply_every_capability_kind (E-RB-CP) | |
| ARCH-B6.1-10 application-registry | PASSED | test_applications_registry.py::test_application_lifecycle_and_external_agent (E-RB-CP) | |
| ARCH-B6.1-11 model-registry | PASSED | test_llm_registry.py::test_model_registry_and_status (E-RB-CP) | |
| ARCH-B6.1-12 model-gateway-manager : synchronisation LiteLLM sans secret | PASSED | test_llm_registry.py::test_litellm_sync_proxy test_llm_registry.py::test_litellm_config_contains_no_secret (E-RB-CP) | |
| ARCH-B6.1-13 prompt-registry | PASSED | test_data_retention_lineage_prompts.py::test_prompt_registry_render (E-RB-CP) | |
| ARCH-B6.1-14 skill-registry | PASSED | test_capabilities_gateways.py::test_skill_loader_refuses_tampered_unsigned_blocked (E-RB-CP) | |
| ARCH-B6.1-15 mcp-registry | PASSED | test_approvals_promotion.py::test_skill_and_mcp_status_routes (E-RB-CP) | |
| ARCH-B6.1-16 connector-registry | PASSED | test_capabilities_gateways.py::test_webhook_signature_replay_and_dedupe (E-RB-CP) | |
| ARCH-B6.1-17 plugin-manager | PASSED | test_capabilities_gateways.py::test_plugin_install_lifecycle (E-RB-CP) | |
| ARCH-B6.1-18 policy-manager : révisions, diff, simulation | PASSED | test_iam_policy_simulator.py::test_revisions_diff_and_simulation (E-RB-CP) | |
| ARCH-B6.1-19 data-governance | PASSED | test_data_quality_governance.py::test_governance_registry test_data_privacy.py::test_classify_and_dlp_modes (E-RB-CP) | |
| ARCH-B6.1-20 rag-manager : permission de la source vérifiée avant ingestion | PASSED | test_rag_governance.py::test_source_permission_checked_before_ingestion (E-RB-CP) | |
| ARCH-B6.1-21 approval-manager | PASSED | test_approvals_promotion.py::test_promotion_waits_for_an_approval_from_someone_else (E-RB-CP) | |
| ARCH-B6.1-22 finops-manager | PASSED | test_finops_quotas.py::test_reserve_commit_release_cycle (E-RB-CP) | |
| ARCH-B6.1-23 evaluation-manager : comparaisons A/B | PASSED | test_evaluation_ab.py::test_comparison_is_saved_with_baseline_metrics_and_verdict (E-RB-CP) | |
| ARCH-B6.1-24 licensing-manager | PASSED | test_licensing.py::test_annual_and_triennial_licences_activate_online (E-RB-CP) | |
| ARCH-B6.1-25 documentation-service : surface API documentée et implémentée | IN_PROGRESS | test_architecture_contracts_map.py::test_every_mapped_route_exists_in_the_committed_openapi (E-RB-CP) | Pas de service de documentation en ligne dans le Control Plane ; la documentation est livrée en fichiers (docs/, OpenAPI) et vérifiée par les tests. |
Partie B, B6.2. Services d'exécution et de sécurité indépendants
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B6.2-01 agent-execution-gateway : point d'entrée obligatoire des exécutions (agents tiers inclus) | PASSED | test_applications_registry.py::test_external_agent_model_and_mcp_gateways test_identity_context_delegation.py::test_opa_decision_is_taken_before_each_action_with_the_original_user (E-RB-CP) | |
| ARCH-B6.2-02 navin-runtime-service : heartbeat, suspension, kill | PASSED | test_agents_execution.py::test_kill_switch_blocks_new_runs (E-RB-CP) | |
| ARCH-B6.2-03 secure-mcp-gateway | PASSED | test_capabilities_gateways.py::test_mcp_gateway test_gateway_pep_untrusted.py::test_untrusted_mcp_result (E-RB-CP) | |
| ARCH-B6.2-04 data-protection-gateway : masquage DLP | PASSED | test_capabilities_gateways.py::test_tool_invoke_dlp_credentials_usage test_llm_gateway.py::test_control_dlp (E-RB-CP) | |
| ARCH-B6.2-05 audit-gateway : collecte durable indépendante | PASSED | test_evidence_gateway.py::test_gateway_redelivers_after_target_outage_without_loss_or_duplicate test_evidence_gateway.py::test_gateway_detects_outbox_sequence_gap (E-RB-CP) | |
| ARCH-B6.2-06 evidence-service | PASSED | test_evidence_gateway.py::test_seal_signature_verifies_online_and_offline test_evidence_gateway.py::test_monitor_detects_sql_tampering_of_a_sealed_event (E-RB-CP) | |
| ARCH-B6.2-07 security-detection-engine | PASSED | test_soc_ai_sdr.py::test_risk_engine_rules_are_traced test_soc_ai_sdr.py::test_egress_denied_is_blocked_and_opens_an_incident (E-RB-CP) | |
| ARCH-B6.2-08 incident-controller | PASSED | test_soc_ai_sdr.py::test_incident_lifecycle_assignment_and_auditable_timeline (E-RB-CP) | |
| ARCH-B6.2-09 kill-switch-controller | PASSED | test_soc_ai_sdr.py::test_kill_switch_cancels_run_and_subagents_and_refuses_new_actions (E-RB-CP) | |
| ARCH-B6.2-10 containment-verifier : vérifié seulement sur preuve réelle | PASSED | test_soc_ai_sdr.py::test_verified_only_on_real_proof_and_drift_is_reapplied test_soc_ai_sdr.py::test_network_isolation_waits_for_a_signed_in_cluster_receipt (E-RB-CP) | |
| ARCH-B6.2-11 storage-adapter-service | PASSED | test_storage_profiles_api.py::test_presigned_urls_need_a_verified_capability_and_respect_expiry_and_scope (E-RB-CP) | |
| ARCH-B6.2-12 telemetry-ingestion-service | PASSED | test_data_quality_governance.py::test_telemetry_ingest_overview_trace (E-RB-CP) | |
| ARCH-B6.2-13 Workers d'exécution, ingestion de télémétrie et SOC mis à l'échelle séparément | IN_PROGRESS | test_platform_deploy_env.py::test_helm_worker_deployment test_media_worker.py::test_helm_worker_kinds_are_media_worker_operations (E-RB-CP) | Worker et workers multimodaux (KEDA) ont leurs propres déploiements et réplicas ; l'ingestion de télémétrie et le SOC n'ont pas encore de déploiement séparé. |
Partie B, B6.3. Contrats API principaux et operation_id
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B6.3-01 Contrat POST /platform/installations servi par POST /api/v1/clusters/{cluster_id}/services | PASSED | test_services_install.py::test_provider_and_consumer_install_end_to_end test_architecture_contracts_map.py::test_every_mapped_route_exists_in_the_committed_openapi (E-RB-CP, E-RB-NM) | |
| ARCH-B6.3-02 Contrat GET /components servi par GET /api/v1/clusters/{cluster_id}/services | PASSED | test_services_operate.py::test_component_instances_change_peers test_architecture_contracts_map.py::test_every_mapped_route_exists_in_the_committed_openapi (E-RB-CP, E-RB-NM) | |
| ARCH-B6.3-03 Contrat POST /components/{id}/operations servi par POST /api/v1/clusters/{cluster_id}/services/{service}/actions | PASSED | test_services_operate.py::test_actions_rolling_restart_and_permissions test_architecture_contracts_map.py::test_every_mapped_route_exists_in_the_committed_openapi (E-RB-CP, E-RB-NM) | |
| ARCH-B6.3-04 Contrat PUT /components/{id}/configuration servi par PUT /api/v1/clusters/{cluster_id}/services/{service}/config | PASSED | test_services_config.py::test_versions_diff_restore_and_secrets test_architecture_contracts_map.py::test_every_mapped_route_exists_in_the_committed_openapi (E-RB-CP, E-RB-NM) | |
| ARCH-B6.3-05 Contrat POST /agents servi par POST /v1/agents | PASSED | test_agents_execution.py::test_kill_switch_blocks_new_runs test_architecture_contracts_map.py::test_every_mapped_route_exists_in_the_committed_openapi (E-RB-CP) | |
| ARCH-B6.3-06 Contrat POST /executions servi par POST /v1/agents/{agent_id}/runs | PASSED | test_agents_execution.py::test_run_lifecycle_contract_and_invalid_transition test_architecture_contracts_map.py::test_every_mapped_route_exists_in_the_committed_openapi (E-RB-CP) | |
| ARCH-B6.3-07 Contrat POST /delegations servi par POST /v1/delegations | PASSED | test_identity_context_delegation.py::test_restricted_delegation_is_always_narrower_and_revocation_cascades test_architecture_contracts_map.py::test_every_mapped_route_exists_in_the_committed_openapi (E-RB-CP) | |
| ARCH-B6.3-08 Contrat POST /authorization/check servi par POST /v1/authz/check | PASSED | test_core_secrets_authz.py::test_authz_tuples_and_check test_architecture_contracts_map.py::test_every_mapped_route_exists_in_the_committed_openapi (E-RB-CP) | |
| ARCH-B6.3-09 Contrat POST /policies/validate servi par POST /v1/policies/simulate | PASSED | test_iam_policy_simulator.py::test_revisions_diff_and_simulation test_architecture_contracts_map.py::test_every_mapped_route_exists_in_the_committed_openapi (E-RB-CP) | |
| ARCH-B6.3-10 Contrat POST /prompts servi par POST /v1/prompts | PASSED | test_data_retention_lineage_prompts.py::test_prompt_registry_render test_architecture_contracts_map.py::test_every_mapped_route_exists_in_the_committed_openapi (E-RB-CP) | |
| ARCH-B6.3-11 Contrat POST /skills servi par POST /v1/skills | PASSED | test_capabilities_gateways.py::test_skill_loader_refuses_tampered_unsigned_blocked test_architecture_contracts_map.py::test_every_mapped_route_exists_in_the_committed_openapi (E-RB-CP) | |
| ARCH-B6.3-12 Contrat POST /mcp-servers servi par POST /v1/mcp/servers | PASSED | test_capabilities_gateways.py::test_mcp_gateway test_architecture_contracts_map.py::test_every_mapped_route_exists_in_the_committed_openapi (E-RB-CP) | |
| ARCH-B6.3-13 Contrat POST /plugins/installations servi par POST /v1/marketplace/installations | PASSED | test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only test_architecture_contracts_map.py::test_every_mapped_route_exists_in_the_committed_openapi (E-RB-CP) | |
| ARCH-B6.3-14 Contrat POST /models servi par POST /v1/models | PASSED | test_llm_registry.py::test_model_registry_and_status test_architecture_contracts_map.py::test_every_mapped_route_exists_in_the_committed_openapi (E-RB-CP) | |
| ARCH-B6.3-15 Contrat POST /evaluations/runs servi par POST /v1/evaluations/runs | PASSED | test_data_evaluation.py::test_evaluation_gate_pass_and_fail test_architecture_contracts_map.py::test_every_mapped_route_exists_in_the_committed_openapi (E-RB-CP) | |
| ARCH-B6.3-16 Contrat GET /audit/events servi par GET /v1/audit/events | PASSED | test_data_quality_governance.py::test_audit_events_verify_export_correlations test_architecture_contracts_map.py::test_every_mapped_route_exists_in_the_committed_openapi (E-RB-CP) | |
| ARCH-B6.3-17 Contrat POST /incidents servi par POST /v1/incidents | PASSED | test_data_quality_governance.py::test_incident_actions test_architecture_contracts_map.py::test_every_mapped_route_exists_in_the_committed_openapi (E-RB-CP) | |
| ARCH-B6.3-18 Contrat POST /security/containments servi par POST /v1/soc/orders | PASSED | test_soc_ai_sdr.py::test_soc_roles_access_audit_and_sealed_chain_of_custody test_architecture_contracts_map.py::test_every_mapped_route_exists_in_the_committed_openapi (E-RB-CP) | |
| ARCH-B6.3-19 Contrat POST /security/recoveries servi par POST /v1/soc/recoveries | PASSED | test_soc_ai_sdr.py::test_recovery_needs_four_eyes_then_reauthorization test_architecture_contracts_map.py::test_every_mapped_route_exists_in_the_committed_openapi (E-RB-CP) | |
| ARCH-B6.3-20 Contrat POST /license/activate servi par POST /v1/license/activations | PASSED | test_licensing.py::test_annual_and_triennial_licences_activate_online test_architecture_contracts_map.py::test_every_mapped_route_exists_in_the_committed_openapi (E-RB-CP) | |
| ARCH-B6.3-21 Chaque opération longue renvoie un operation_id pour suivre, lire le résultat et éviter les doublons | IN_PROGRESS | test_platform_core.py::test_operations_api_detail_logs_abort_retry_and_scope test_services_install.py::test_provider_and_consumer_install_end_to_end test_agents_execution.py::test_run_lifecycle_contract_and_invalid_transition (E-RB-CP, E-RB-NM) | Le Manager renvoie un operation_id pour toutes ses opérations longues ; le Control Plane renvoie l'identifiant de la ressource suivie et n'accepte Idempotency-Key que sur les runs et les approbations : operation_id commun et déduplication sur chaque création longue à faire. |
Partie B, B7.1. Découpage SQL par domaine
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B7.1-01 Schéma core | PASSED | test_data_model_mapping.py::test_reference_schemas_cover_the_sixteen_schemas test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls (E-DP-DATAMODEL) | |
| ARCH-B7.1-02 Schéma platform | PASSED | test_data_model_mapping.py::test_reference_schemas_cover_the_sixteen_schemas test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls (E-DP-DATAMODEL) | |
| ARCH-B7.1-03 Schéma iam | PASSED | test_data_model_mapping.py::test_reference_schemas_cover_the_sixteen_schemas test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls (E-DP-DATAMODEL) | |
| ARCH-B7.1-04 Schéma governance | PASSED | test_data_model_mapping.py::test_reference_schemas_cover_the_sixteen_schemas test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls (E-DP-DATAMODEL) | |
| ARCH-B7.1-05 Schéma ai | PASSED | test_data_model_mapping.py::test_reference_schemas_cover_the_sixteen_schemas test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls (E-DP-DATAMODEL) | |
| ARCH-B7.1-06 Schéma models | PASSED | test_data_model_mapping.py::test_reference_schemas_cover_the_sixteen_schemas test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls (E-DP-DATAMODEL) | |
| ARCH-B7.1-07 Schéma developer | PASSED | test_data_model_mapping.py::test_reference_schemas_cover_the_sixteen_schemas test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls (E-DP-DATAMODEL) | |
| ARCH-B7.1-08 Schéma marketplace | PASSED | test_data_model_mapping.py::test_reference_schemas_cover_the_sixteen_schemas test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls (E-DP-DATAMODEL) | |
| ARCH-B7.1-09 Schéma data | PASSED | test_data_model_mapping.py::test_reference_schemas_cover_the_sixteen_schemas test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls (E-DP-DATAMODEL) | |
| ARCH-B7.1-10 Schéma privacy | PASSED | test_data_model_mapping.py::test_reference_schemas_cover_the_sixteen_schemas test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls (E-DP-DATAMODEL) | |
| ARCH-B7.1-11 Schéma observability | PASSED | test_data_model_mapping.py::test_reference_schemas_cover_the_sixteen_schemas test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls (E-DP-DATAMODEL) | |
| ARCH-B7.1-12 Schéma audit | PASSED | test_data_model_mapping.py::test_reference_schemas_cover_the_sixteen_schemas test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls (E-DP-DATAMODEL) | |
| ARCH-B7.1-13 Schéma security | PASSED | test_data_model_mapping.py::test_reference_schemas_cover_the_sixteen_schemas test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls (E-DP-DATAMODEL) | |
| ARCH-B7.1-14 Schéma finops | PASSED | test_data_model_mapping.py::test_reference_schemas_cover_the_sixteen_schemas test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls (E-DP-DATAMODEL) | |
| ARCH-B7.1-15 Schéma licensing | PASSED | test_data_model_mapping.py::test_reference_schemas_cover_the_sixteen_schemas test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls (E-DP-DATAMODEL) | |
| ARCH-B7.1-16 Schéma operations | PASSED | test_data_model_mapping.py::test_reference_schemas_cover_the_sixteen_schemas test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls (E-DP-DATAMODEL) | |
| ARCH-B7.1-17 Contenus volumineux dans le stockage objet client, métadonnées, condensés et ACL en PostgreSQL | PASSED | test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls (E-DP-DATAMODEL) | |
| ARCH-B7.1-18 Traces OpenTelemetry non copiées dans PostgreSQL | IN_PROGRESS | test_data_model_mapping.py::test_column_backed_concepts_exist (E-DP-DATAMODEL) | eai.telemetry_spans stocke encore des spans résumés : à remplacer par des références (trace_id) ou à justifier par ADR. |
Partie B, B7.2. Champs communs des tables métier
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B7.2-01 Champ commun id | PASSED | test_data_model_mapping.py::test_common_fields_are_carried_where_declared (E-DP-DATAMODEL) | |
| ARCH-B7.2-02 Champ commun tenant_id | PASSED | test_data_model_mapping.py::test_common_fields_are_carried_where_declared (E-DP-DATAMODEL) | |
| ARCH-B7.2-03 Champ commun environment_id | IN_PROGRESS | test_data_model_mapping.py::test_common_fields_are_carried_where_declared (E-DP-DATAMODEL) | Aucune table ne porte environment_id : l'environnement est un texte (marketplace_installations.environment, usage_events.environment). Normalisation à décider. |
| ARCH-B7.2-04 Champ commun created_at | PASSED | test_data_model_mapping.py::test_common_fields_are_carried_where_declared (E-DP-DATAMODEL) | |
| ARCH-B7.2-05 Champ commun updated_at | PASSED | test_data_model_mapping.py::test_common_fields_are_carried_where_declared (E-DP-DATAMODEL) | |
| ARCH-B7.2-06 Champ commun created_by | PASSED | test_data_model_mapping.py::test_common_fields_are_carried_where_declared (E-DP-DATAMODEL) | |
| ARCH-B7.2-07 Champ commun updated_by | IN_PROGRESS | test_data_model_mapping.py::test_common_fields_are_carried_where_declared (E-DP-DATAMODEL) | Porté seulement par eai.llm_model_rollouts ; non généralisé aux tables métier, sans validation JSON Schema en base pour metadata. |
| ARCH-B7.2-08 Champ commun version | IN_PROGRESS | test_data_model_mapping.py::test_common_fields_are_carried_where_declared (E-DP-DATAMODEL) | Porté seulement par eai.storage_profiles, eai.memory_items, eai.llm_models ; non généralisé aux tables métier, sans validation JSON Schema en base pour metadata. |
| ARCH-B7.2-09 Champ commun status | PASSED | test_data_model_mapping.py::test_common_fields_are_carried_where_declared (E-DP-DATAMODEL) | |
| ARCH-B7.2-10 Champ commun metadata | IN_PROGRESS | test_data_model_mapping.py::test_common_fields_are_carried_where_declared (E-DP-DATAMODEL) | Porté seulement par eai.sessions, eai.kb_documents, eai.connector_credentials ; non généralisé aux tables métier, sans validation JSON Schema en base pour metadata. |
| ARCH-B7.2-11 Champ commun classification | PASSED | test_data_model_mapping.py::test_common_fields_are_carried_where_declared (E-DP-DATAMODEL) | |
| ARCH-B7.2-12 Champ commun correlation_id | IN_PROGRESS | test_data_model_mapping.py::test_common_fields_are_carried_where_declared (E-DP-DATAMODEL) | Porté seulement par eai.audit_events, eai.usage_events, eai.telemetry_spans (sous le nom trace_id) ; non généralisé aux tables métier, sans validation JSON Schema en base pour metadata. |
| ARCH-B7.2-13 Schémas adaptés pour tables globales, d'association et immuables | PASSED | test_data_model_mapping.py::test_every_mapped_eai_table_exists_with_columns_and_rls test_core_rls.py::test_audit_is_append_only_for_app_role (E-DP-DATAMODEL) |
Partie B, B7.3. Isolation par RLS et rôles SQL
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B7.3-01 Tenant fixé par l'identité vérifiée via SET LOCAL dans la transaction | PASSED | test_core_rls.py::test_raw_sql_inside_tx_is_isolated test_core_rls.py::test_tenant_scope_without_principal_and_role_reset_after_tx (E-DP-DATAMODEL) | |
| ARCH-B7.3-02 Rôle SQL non privilégié | PASSED | test_data_model_mapping.py::test_runtime_role_cannot_bypass_rls test_core_rls.py::test_unscoped_app_role_sees_nothing (E-DP-DATAMODEL) | |
| ARCH-B7.3-03 Connexions administrateur et runtime séparées | IN_PROGRESS | test_core_rls.py::test_tenant_scope_without_principal_and_role_reset_after_tx test_core_rls_forced.py::test_migrations_run_in_the_platform_context (E-DP-DATAMODEL) | Un seul identifiant de connexion (EAI_DATABASE_URL) : la séparation passe par SET LOCAL ROLE eai_app par transaction ; un second identifiant runtime sans droits de migration reste à introduire. |
| ARCH-B7.3-04 Propriétaire des tables et rôles BYPASSRLS maîtrisés | PASSED | test_core_rls_forced.py::test_force_binds_the_table_owner test_core_rls_forced.py::test_every_tenant_table_has_forced_row_level_security test_data_model_mapping.py::test_runtime_role_cannot_bypass_rls (E-DP-DATAMODEL) | |
| ARCH-B7.3-05 Tests prouvant qu'une requête ne traverse pas la frontière du tenant | PASSED | test_core_rls.py::test_raw_sql_inside_tx_is_isolated test_core_rls.py::test_cannot_insert_into_other_tenant test_core_rls.py::test_api_isolation +1 (E-DP-DATAMODEL) |
Partie B, B7.4. Modèle SQL du Marketplace
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B7.4-01 Table packages (namespace, nom, catégorie, éditeur, statut) | IN_PROGRESS | test_marketplace.py::test_publication_succeeds_with_every_gate (E-MK-MARKETPLACE) | eai.marketplace_packages porte name, domain (catégorie), owner (éditeur) mais ni namespace ni statut de paquet distincts. |
| ARCH-B7.4-02 Table package_versions (manifeste, artefact, digest, signature, statut sécurité, date) | PASSED | test_marketplace.py::test_publication_succeeds_with_every_gate test_marketplace.py::test_production_publication_needs_gates_and_four_eyes (E-MK-MARKETPLACE) | |
| ARCH-B7.4-03 Installations par tenant et environnement (configuration, statut, installed_by) | PASSED | test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only test_marketplace.py::test_other_tenant_reaches_no_marketplace_resource (E-MK-MARKETPLACE) | |
| ARCH-B7.4-04 Relations approbations, dépendances, rôles, secrets, historique et rollback | PASSED | test_marketplace.py::test_upgrade_rollback_and_uninstall test_marketplace.py::test_install_refuses_unapproved_or_unrequested_permissions test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only (E-MK-MARKETPLACE) | |
| ARCH-B7.4-05 Migrations SQL versionnées testées automatiquement | PASSED | test_core_migrations.py::test_all_migrations_applied test_core_migrations.py::test_new_migration_applied_in_order (E-MK-MARKETPLACE) |
Partie B, B8.1. Contenu d'un plugin métier
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B8.1-01 Plugin contenant des agents : validé, installé, activé | PASSED | test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only test_marketplace.py::test_finance_pack_end_to_end_payments_exactly_once test_marketplace.py::test_publication_succeeds_with_every_gate (E-MK-MARKETPLACE) | |
| ARCH-B8.1-02 Plugin contenant des sous-agents : validé, installé, activé | PASSED | test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only test_marketplace.py::test_finance_pack_end_to_end_payments_exactly_once test_marketplace.py::test_publication_succeeds_with_every_gate (E-MK-MARKETPLACE) | |
| ARCH-B8.1-03 Plugin contenant des skills : validé, installé, activé | PASSED | test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only test_marketplace.py::test_finance_pack_end_to_end_payments_exactly_once test_marketplace.py::test_publication_succeeds_with_every_gate (E-MK-MARKETPLACE) | |
| ARCH-B8.1-04 Plugin contenant des prompts : validé, installé, activé | PASSED | test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only test_marketplace.py::test_finance_pack_end_to_end_payments_exactly_once test_marketplace.py::test_publication_succeeds_with_every_gate (E-MK-MARKETPLACE) | |
| ARCH-B8.1-05 Plugin contenant des règles : validé, installé, activé | IN_PROGRESS | test_marketplace.py::test_publication_succeeds_with_every_gate test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only (E-MK-MARKETPLACE) | Les règles sont validés à la publication (dossier obligatoire, gates tests/observabilité) mais installer.py ne les crée ni ne les active dans un registre. |
| ARCH-B8.1-06 Plugin contenant des politiques OPA : validé, installé, activé | PASSED | test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only test_marketplace.py::test_finance_pack_end_to_end_payments_exactly_once test_marketplace.py::test_publication_succeeds_with_every_gate (E-MK-MARKETPLACE) | |
| ARCH-B8.1-07 Plugin contenant des relations OpenFGA : validé, installé, activé | IN_PROGRESS | test_marketplace.py::test_publication_succeeds_with_every_gate test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only (E-MK-MARKETPLACE) | Les relations OpenFGA sont validés à la publication (dossier obligatoire, gates tests/observabilité) mais installer.py ne les crée ni ne les active dans un registre. |
| ARCH-B8.1-08 Plugin contenant des serveurs MCP : validé, installé, activé | IN_PROGRESS | test_marketplace.py::test_publication_succeeds_with_every_gate test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only (E-MK-MARKETPLACE) | Les serveurs MCP sont validés à la publication (dossier obligatoire, gates tests/observabilité) mais installer.py ne les crée ni ne les active dans un registre. |
| ARCH-B8.1-09 Plugin contenant des outils MCP : validé, installé, activé | PASSED | test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only test_marketplace.py::test_finance_pack_end_to_end_payments_exactly_once test_marketplace.py::test_publication_succeeds_with_every_gate (E-MK-MARKETPLACE) | |
| ARCH-B8.1-10 Plugin contenant des connecteurs : validé, installé, activé | PASSED | test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only test_marketplace.py::test_finance_pack_end_to_end_payments_exactly_once test_marketplace.py::test_publication_succeeds_with_every_gate (E-MK-MARKETPLACE) | |
| ARCH-B8.1-11 Plugin contenant des workflows : validé, installé, activé | IN_PROGRESS | test_marketplace.py::test_publication_succeeds_with_every_gate test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only (E-MK-MARKETPLACE) | Les workflows sont validés à la publication (dossier obligatoire, gates tests/observabilité) mais installer.py ne les crée ni ne les active dans un registre. |
| ARCH-B8.1-12 Plugin contenant des modèles RAG : validé, installé, activé | IN_PROGRESS | test_marketplace.py::test_publication_succeeds_with_every_gate test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only (E-MK-MARKETPLACE) | Les modèles RAG sont validés à la publication (dossier obligatoire, gates tests/observabilité) mais installer.py ne les crée ni ne les active dans un registre. |
| ARCH-B8.1-13 Plugin contenant des évaluations : validé, installé, activé | PASSED | test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only test_marketplace.py::test_finance_pack_end_to_end_payments_exactly_once test_marketplace.py::test_publication_succeeds_with_every_gate (E-MK-MARKETPLACE) | |
| ARCH-B8.1-14 Plugin contenant des tests de sécurité : validé, installé, activé | PASSED | test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only test_marketplace.py::test_finance_pack_end_to_end_payments_exactly_once test_marketplace.py::test_publication_succeeds_with_every_gate (E-MK-MARKETPLACE) | |
| ARCH-B8.1-15 Plugin contenant des dashboards : validé, installé, activé | IN_PROGRESS | test_marketplace.py::test_publication_succeeds_with_every_gate test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only (E-MK-MARKETPLACE) | élément du kit écarté par l'ADR-0169 (packs sans tableaux de bord) |
| ARCH-B8.1-16 Plugin contenant des alertes : validé, installé, activé | IN_PROGRESS | test_marketplace.py::test_publication_succeeds_with_every_gate test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only (E-MK-MARKETPLACE) | Les alertes sont validés à la publication (dossier obligatoire, gates tests/observabilité) mais installer.py ne les crée ni ne les active dans un registre. |
| ARCH-B8.1-17 Plugin contenant des documentation : validé, installé, activé | PASSED | test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only test_marketplace.py::test_finance_pack_end_to_end_payments_exactly_once test_marketplace.py::test_publication_succeeds_with_every_gate (E-MK-MARKETPLACE) | |
| ARCH-B8.1-18 Plugin contenant des tests : validé, installé, activé | PASSED | test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only test_marketplace.py::test_finance_pack_end_to_end_payments_exactly_once test_marketplace.py::test_publication_succeeds_with_every_gate (E-MK-MARKETPLACE) | |
| ARCH-B8.1-19 Plugin contenant des migrations : validé, installé, activé | IN_PROGRESS | test_marketplace.py::test_publication_succeeds_with_every_gate test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only (E-MK-MARKETPLACE) | Les migrations sont validés à la publication (dossier obligatoire, gates tests/observabilité) mais installer.py ne les crée ni ne les active dans un registre. |
Partie B, B8.2. Structure standard du dossier d'un plugin
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B8.2-01 Structure officielle imposée par le validateur | PASSED | test_marketplace.py::test_publication_fails_when_a_gate_input_is_missing test_marketplace.py::test_publication_succeeds_with_every_gate (E-MK-MARKETPLACE) | |
| ARCH-B8.2-02 Fichiers obligatoires plugin.yaml, README.md, LICENSE, CHANGELOG.md | PASSED | test_marketplace.py::test_publication_fails_when_a_gate_input_is_missing (E-MK-MARKETPLACE) | |
| ARCH-B8.2-03 Dossiers inutilisés omissibles | PASSED | test_marketplace.py::test_publication_succeeds_with_every_gate (E-MK-MARKETPLACE) |
Partie B, B8.3. Manifeste d'un plugin
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B8.3-01 Métadonnées (namespace, nom, version, catégorie, éditeur, displayName) | IN_PROGRESS | test_marketplace.py::test_publication_fails_when_a_gate_input_is_missing (E-MK-MARKETPLACE) | Le schéma porte name, version, owner, domain ; namespace, category, publisher et displayName ne sont pas des champs du schéma. |
| ARCH-B8.3-02 Compatibilité plateforme et SDK | PASSED | test_marketplace.py::test_version_ranges test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only (E-MK-MARKETPLACE) | |
| ARCH-B8.3-03 Contenus déclarés | PASSED | test_marketplace.py::test_publication_succeeds_with_every_gate (E-MK-MARKETPLACE) | |
| ARCH-B8.3-04 requestedPermissions données, outils, actions | PASSED | test_marketplace.py::test_install_refuses_unapproved_or_unrequested_permissions test_marketplace.py::test_signed_pack_with_unsafe_permission_is_refused (E-MK-MARKETPLACE) | |
| ARCH-B8.3-05 dataProtection (détection PII, masquage, export externe refusé par défaut) | IN_PROGRESS | test_marketplace.py::test_publication_succeeds_with_every_gate (E-MK-MARKETPLACE) | dataProtection est accepté par le schéma mais les clés piiDetectionRequired, maskingPolicy, externalExportDefault ne sont ni imposées ni appliquées à l'installation. |
| ARCH-B8.3-06 approvals requiredFor | IN_PROGRESS | test_marketplace.py::test_production_promotion_then_prod_install test_marketplace.py::test_install_refuses_unapproved_or_unrequested_permissions (E-MK-MARKETPLACE) | Les approbations sont exprimées par approvals.install/sensitive/production (quorum), pas par une liste requiredFor. |
| ARCH-B8.3-07 security (artefact signé, sandbox, autorisation dynamique, audit) | IN_PROGRESS | test_marketplace.py::test_unsigned_tampered_or_untrusted_pack_is_refused test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only (E-MK-MARKETPLACE) | Signature imposée et autorisation dynamique via /authorize ; les drapeaux sandboxRequired et auditRequired n'existent pas dans le manifeste de pack. |
| ARCH-B8.3-08 Schéma de configuration | IN_PROGRESS | test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only (E-MK-MARKETPLACE) | La configuration est libre (config) ; aucun schéma de configuration déclaré dans le manifeste n'est validé. |
| ARCH-B8.3-09 Drapeaux de tests (conformité SDK, autorisation, sécurité) | IN_PROGRESS | test_marketplace.py::test_publication_fails_when_a_gate_input_is_missing test_marketplace.py::test_publication_fails_on_failed_tests_evaluations_or_vulnerabilities (E-MK-MARKETPLACE) | Tests unit, integration, authz, security exigés par la gate tests ; pas de drapeau sdkConformance. |
| ARCH-B8.3-10 Point d'entrée de la documentation | PASSED | test_marketplace.py::test_publication_fails_when_a_gate_input_is_missing (E-MK-MARKETPLACE) | |
| ARCH-B8.3-11 Permissions demandées, non accordées : approbation puis seules les approuvées appliquées | PASSED | test_marketplace.py::test_install_refuses_unapproved_or_unrequested_permissions test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only (E-MK-MARKETPLACE) |
Partie B, B8.4. Marketplace de bout en bout
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B8.4-01 Publication signée et versionnée | PASSED | test_marketplace.py::test_publication_succeeds_with_every_gate test_marketplace.py::test_unsigned_tampered_or_untrusted_pack_is_refused (E-MK-MARKETPLACE) | |
| ARCH-B8.4-02 Analyse (manifeste, SBOM, dépendances, sécurité) | PASSED | test_marketplace.py::test_publication_fails_when_a_gate_input_is_missing test_marketplace.py::test_publication_fails_on_failed_tests_evaluations_or_vulnerabilities (E-MK-MARKETPLACE) | |
| ARCH-B8.4-03 Évaluation (tests fonctionnels et sécurité) | PASSED | test_marketplace.py::test_publication_fails_on_failed_tests_evaluations_or_vulnerabilities (E-MK-MARKETPLACE) | |
| ARCH-B8.4-04 Approbation des capacités et permissions | PASSED | test_marketplace.py::test_install_refuses_unapproved_or_unrequested_permissions test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only (E-MK-MARKETPLACE) | |
| ARCH-B8.4-05 Installation dans un tenant et un environnement précis | PASSED | test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only test_marketplace.py::test_other_tenant_reaches_no_marketplace_resource (E-MK-MARKETPLACE) | |
| ARCH-B8.4-06 Configuration (connecteurs, secrets, sources, modèles) | PASSED | test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only test_marketplace.py::test_finance_pack_end_to_end_payments_exactly_once (E-MK-MARKETPLACE) | |
| ARCH-B8.4-07 Vérification (tests réels de connexion et d'accès) | IN_PROGRESS | test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only (E-MK-MARKETPLACE) | Les smoke tests vérifient enregistrement, portées et chargement des skills ; aucun test de connexion réelle aux connecteurs. |
| ARCH-B8.4-08 Activation des agents, skills, outils et workflows approuvés | IN_PROGRESS | test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only (E-MK-MARKETPLACE) | Agents, skills et outils activés selon la permission accordée ; les workflows ne sont pas installés. |
| ARCH-B8.4-09 Supervision (activité, qualité, coûts, incidents) | IN_PROGRESS | test_marketplace.py::test_upgrade_rollback_and_uninstall (E-MK-MARKETPLACE) | Historique marketplace_events et audit ; pas de vue agrégée par plugin de qualité, coûts et incidents. |
| ARCH-B8.4-10 Mise à jour (compatibilité, nouvelle approbation) | PASSED | test_marketplace.py::test_upgrade_rollback_and_uninstall (E-MK-MARKETPLACE) | |
| ARCH-B8.4-11 Suspension du plugin ou de capacités | IN_PROGRESS | test_marketplace.py::test_upgrade_rollback_and_uninstall (E-MK-MARKETPLACE) | Aucun état suspended dans marketplace_installations ni route de suspension ; seul le désinstallation ou la révocation de l'éditeur existe. |
| ARCH-B8.4-12 Désinstallation conservant preuves et données | PASSED | test_marketplace.py::test_upgrade_rollback_and_uninstall (E-MK-MARKETPLACE) |
Partie B, B8.5. Format de distribution des plugins
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B8.5-01 Artefacts OCI dans Harbor avec ORAS | BLOCKED | test_marketplace.py::test_production_promotion_then_prod_install (E-MK-MARKETPLACE) | Harbor réel absent ; prouvé avec ORAS vers un registre zot local [B-DOCKER] |
| ARCH-B8.5-02 SemVer | PASSED | test_marketplace.py::test_version_ranges (E-MK-MARKETPLACE) | |
| ARCH-B8.5-03 Signature Cosign | PASSED | test_marketplace.py::test_unsigned_tampered_or_untrusted_pack_is_refused test_marketplace.py::test_publication_succeeds_with_every_gate (E-MK-MARKETPLACE) | |
| ARCH-B8.5-04 SBOM | PASSED | test_marketplace.py::test_publication_fails_when_a_gate_input_is_missing test_marketplace.py::test_publication_succeeds_with_every_gate (E-MK-MARKETPLACE) | |
| ARCH-B8.5-05 Scan Trivy | PASSED | test_marketplace.py::test_publication_fails_on_failed_tests_evaluations_or_vulnerabilities (E-MK-MARKETPLACE) | |
| ARCH-B8.5-06 Provenance et contrôle de licence | IN_PROGRESS | test_marketplace.py::test_publication_fails_when_a_gate_input_is_missing (E-MK-MARKETPLACE) | Gate licence présente ; aucune attestation de provenance (SLSA) n'est exigée. |
| ARCH-B8.5-07 Digest immuable référencé par le marketplace | PASSED | test_marketplace.py::test_production_publication_needs_gates_and_four_eyes test_marketplace.py::test_production_promotion_then_prod_install (E-MK-MARKETPLACE) | |
| ARCH-B8.5-08 Dépôt local pour clients air-gapped | IN_PROGRESS | test_marketplace.py::test_production_promotion_then_prod_install (E-MK-MARKETPLACE) | Registre zot local utilisé en test ; aucune procédure documentée d'import hors ligne des packs dans le marketplace. |
| ARCH-B8.5-09 Signature et digest vérifiés avant chaque installation | PASSED | test_marketplace.py::test_revoked_publisher_blocks_install_and_production test_marketplace.py::test_unsigned_tampered_or_untrusted_pack_is_refused (E-MK-MARKETPLACE) |
Partie B, B8.6. Packs métiers livrés avec la plateforme
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B8.6-01 RH : recrutement, onboarding, congés, analyse de documents RH ; SIRH, Workday, SuccessFactors, Odoo | PASSED | test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only (E-BP-PACK-SOURCES, E-BP-PACKS-MARKETPLACE) | |
| ARCH-B8.6-02 Finance : analyse, reporting, rapprochement, comptes fournisseurs ; ERP, SAP, Odoo, SQL | PASSED | test_marketplace.py::test_finance_pack_end_to_end_payments_exactly_once (E-BP-PACK-SOURCES, E-BP-PACKS-MARKETPLACE) | |
| ARCH-B8.6-03 Banque : KYC, conformité, documents clients, assistance conseiller ; core banking, CRM, GED, outils KYC | PASSED | test_business_packs.py::test_pack_is_complete_and_holds_no_credential test_business_packs.py::test_pack_signed_published_installed_sensitive_actions_blocked (E-BP-PACK-SOURCES, E-BP-PACKS-MARKETPLACE) | |
| ARCH-B8.6-04 Risk & Compliance : contrôles, anomalies, préparation d'audit, réglementations ; GRC, SIEM, GED, référentiels | PASSED | test_business_packs.py::test_pack_is_complete_and_holds_no_credential test_business_packs.py::test_pack_signed_published_installed_sensitive_actions_blocked (E-BP-PACK-SOURCES, E-BP-PACKS-MARKETPLACE) | |
| ARCH-B8.6-05 Juridique : recherche de contrats, analyse de clauses, dossiers ; GED, DMS, SharePoint | PASSED | test_business_packs.py::test_pack_is_complete_and_holds_no_credential test_business_packs.py::test_pack_signed_published_installed_sensitive_actions_blocked (E-BP-PACK-SOURCES, E-BP-PACKS-MARKETPLACE) | |
| ARCH-B8.6-06 IT Operations : diagnostic, incidents, documentation, assistance ; Jira, GitLab, Kubernetes, observabilité | PASSED | test_business_packs.py::test_pack_is_complete_and_holds_no_credential test_business_packs.py::test_pack_signed_published_installed_sensitive_actions_blocked (E-BP-PACK-SOURCES, E-BP-PACKS-MARKETPLACE) | |
| ARCH-B8.6-07 Cybersécurité : analyse d'alertes, investigation, rapports de vulnérabilités ; SIEM, API Wazuh, scanners, CMDB (intégration API, aucun composant GPL livré) | PASSED | test_business_packs.py::test_pack_is_complete_and_holds_no_credential test_business_packs.py::test_pack_signed_published_installed_sensitive_actions_blocked (E-BP-PACK-SOURCES, E-BP-PACKS-MARKETPLACE) | |
| ARCH-B8.6-08 Commercial/CRM : prospection, qualification, relance ; Salesforce, HubSpot, Dynamics | PASSED | test_business_packs.py::test_pack_is_complete_and_holds_no_credential test_business_packs.py::test_pack_signed_published_installed_sensitive_actions_blocked (E-BP-PACK-SOURCES, E-BP-PACKS-MARKETPLACE) | |
| ARCH-B8.6-09 Marketing : contenus, campagnes, reporting, études ; CMS, analytics, réseaux sociaux | PASSED | test_business_packs.py::test_pack_is_complete_and_holds_no_credential test_business_packs.py::test_pack_signed_published_installed_sensitive_actions_blocked (E-BP-PACK-SOURCES, E-BP-PACKS-MARKETPLACE) | |
| ARCH-B8.6-10 Achats : analyse d'offres, fournisseurs, contrats ; ERP, procurement, GED | PASSED | test_business_packs.py::test_pack_is_complete_and_holds_no_credential test_business_packs.py::test_pack_signed_published_installed_sensitive_actions_blocked (E-BP-PACK-SOURCES, E-BP-PACKS-MARKETPLACE) | |
| ARCH-B8.6-11 Support Client : FAQ, RAG, assistance, qualification de tickets ; Zendesk, ServiceNow, CRM | PASSED | test_business_packs.py::test_pack_is_complete_and_holds_no_credential test_business_packs.py::test_pack_signed_published_installed_sensitive_actions_blocked (E-BP-PACK-SOURCES, E-BP-PACKS-MARKETPLACE) | |
| ARCH-B8.6-12 Document Intelligence : OCR, extraction, classification, validation ; stockage, GED, email, API | PASSED | test_business_packs.py::test_pack_is_complete_and_holds_no_credential test_business_packs.py::test_pack_signed_published_installed_sensitive_actions_blocked (E-BP-PACK-SOURCES, E-BP-PACKS-MARKETPLACE) | |
| ARCH-B8.6-13 Chaque pack configurable, sans identifiant réel, connecteurs et actions sensibles désactivés tant que leur sécurité n'est pas validée | PASSED | test_business_packs.py::test_pack_is_complete_and_holds_no_credential test_business_packs.py::test_pack_signed_published_installed_sensitive_actions_blocked test_marketplace.py::test_install_refuses_unapproved_or_unrequested_permissions +1 (E-BP-PACKS-MARKETPLACE) |
Partie B, B9.1. Structure des packages SDK
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B9.1-01 Contrats partagés utilisés par chaque SDK | PASSED | test_api_conformance.py::test_every_sdk_method_matches_the_api test_governance_clients.py::test_embedded_contracts_match_the_repository (E-DF-SDK-PY) | |
| ARCH-B9.1-02 Modules Python et équivalents TypeScript, Go et Java | PASSED | test_api_conformance.py::test_every_sdk_method_matches_the_api test_governance_clients.py::test_embedded_contracts_match_the_repository (E-DF-SDK-PY) | |
| ARCH-B9.1-03 CLI, tests de conformité, exemples et documentation | PASSED | test_api_conformance.py::test_every_sdk_method_matches_the_api test_governance_clients.py::test_embedded_contracts_match_the_repository (E-DF-SDK-PY) |
Partie B, B9.2. Contrats SDK obligatoires
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B9.2-01 Contrat execution-context | PASSED | test_governance_clients.py::test_embedded_contracts_match_the_repository (E-DF-SDK-PY) | |
| ARCH-B9.2-02 Contrat action-context | PASSED | test_governance_clients.py::test_embedded_contracts_match_the_repository (E-DF-SDK-PY) | |
| ARCH-B9.2-03 Contrat delegation-context | PASSED | test_governance_clients.py::test_embedded_contracts_match_the_repository (E-DF-SDK-PY) | |
| ARCH-B9.2-04 Contrat policy-decision | PASSED | test_governance_clients.py::test_embedded_contracts_match_the_repository (E-DF-SDK-PY) | |
| ARCH-B9.2-05 Contrat tool-invocation | PASSED | test_governance_clients.py::test_embedded_contracts_match_the_repository (E-DF-SDK-PY) | |
| ARCH-B9.2-06 Contrat llm-invocation | PASSED | test_governance_clients.py::test_embedded_contracts_match_the_repository (E-DF-SDK-PY) | |
| ARCH-B9.2-07 Contrat data-access-context | PASSED | test_governance_clients.py::test_embedded_contracts_match_the_repository (E-DF-SDK-PY) | |
| ARCH-B9.2-08 Contrat approval-request | PASSED | test_governance_clients.py::test_embedded_contracts_match_the_repository (E-DF-SDK-PY) | |
| ARCH-B9.2-09 Contrat audit-event | PASSED | test_governance_clients.py::test_embedded_contracts_match_the_repository (E-DF-SDK-PY) | |
| ARCH-B9.2-10 Contrat security-incident | PASSED | test_governance_clients.py::test_embedded_contracts_match_the_repository (E-DF-SDK-PY) | |
| ARCH-B9.2-11 Contrat containment-order | PASSED | test_governance_clients.py::test_embedded_contracts_match_the_repository (E-DF-SDK-PY) | |
| ARCH-B9.2-12 Contrat plugin-manifest | PASSED | test_governance_clients.py::test_embedded_contracts_match_the_repository (E-DF-SDK-PY) | |
| ARCH-B9.2-13 Contrat storage-profile | PASSED | test_governance_clients.py::test_embedded_contracts_match_the_repository (E-DF-SDK-PY) | |
| ARCH-B9.2-14 Contrat license-entitlement | PASSED | test_governance_clients.py::test_embedded_contracts_match_the_repository (E-DF-SDK-PY) |
Partie B, B9.3. Méthodes SDK exposées
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B9.3-01 Interface identity | PASSED | test_api_conformance.py::test_every_sdk_method_matches_the_api test_sdk_interfaces.py::test_assume_service_cancel_record_and_storage_objects_confirm_their_result test_sdk_interfaces.py::test_assume_service_cancel_record_and_delete_propagate_every_refusal +7 (E-SC-PY-INTERFACES, E-SC-TS-INTERFACES, E-SC-GO-INTERFACES, E-SC-JAVA-INTERFACES, E-SC-B93-SERVER) | |
| ARCH-B9.3-02 Interface delegation | PASSED | test_sdk_interfaces.py::test_delegation_subagent_tools_and_mcp interfaces.test.ts::delegation, subagent, tools, mcp, llm, rag and privacy interfaces_b93_test.go::TestB93MethodRoutes +1 (E-SC-PY-INTERFACES, E-SC-TS-INTERFACES, E-SC-GO-INTERFACES, E-SC-JAVA-INTERFACES) | |
| ARCH-B9.3-03 Interface authz | PASSED | test_sdk_interfaces.py::test_authz_check_batch_and_explain interfaces.test.ts::checkBatch and explain report the confirmed decisions interfaces_b93_test.go::TestB93MethodRoutes +1 (E-SC-PY-INTERFACES, E-SC-TS-INTERFACES, E-SC-GO-INTERFACES, E-SC-JAVA-INTERFACES) | |
| ARCH-B9.3-04 Interface agent | PASSED | test_api_conformance.py::test_every_sdk_method_matches_the_api conformance.test.ts interfaces_b93_test.go::TestB93MethodRoutes +1 (E-SC-PY-INTERFACES, E-SC-TS-INTERFACES, E-SC-GO-INTERFACES, E-SC-JAVA-INTERFACES) | |
| ARCH-B9.3-05 Interface subagent | PASSED | test_sdk_interfaces.py::test_delegation_subagent_tools_and_mcp interfaces.test.ts::delegation, subagent, tools, mcp, llm, rag and privacy interfaces_b93_test.go::TestB93MethodRoutes +1 (E-SC-PY-INTERFACES, E-SC-TS-INTERFACES, E-SC-GO-INTERFACES, E-SC-JAVA-INTERFACES) | |
| ARCH-B9.3-06 Interface tools | PASSED | test_sdk_interfaces.py::test_delegation_subagent_tools_and_mcp interfaces.test.ts::delegation, subagent, tools, mcp, llm, rag and privacy interfaces_b93_test.go::TestB93MethodRoutes +1 (E-SC-PY-INTERFACES, E-SC-TS-INTERFACES, E-SC-GO-INTERFACES, E-SC-JAVA-INTERFACES) | |
| ARCH-B9.3-07 Interface mcp | PASSED | test_sdk_interfaces.py::test_delegation_subagent_tools_and_mcp interfaces.test.ts::delegation, subagent, tools, mcp, llm, rag and privacy interfaces_b93_test.go::TestB93MethodRoutes +1 (E-SC-PY-INTERFACES, E-SC-TS-INTERFACES, E-SC-GO-INTERFACES, E-SC-JAVA-INTERFACES) | |
| ARCH-B9.3-08 Interface llm | PASSED | test_sdk_interfaces.py::test_llm_rag_privacy_interfaces interfaces.test.ts::delegation, subagent, tools, mcp, llm, rag and privacy interfaces_b93_test.go::TestB93MethodRoutes +1 (E-SC-PY-INTERFACES, E-SC-TS-INTERFACES, E-SC-GO-INTERFACES, E-SC-JAVA-INTERFACES) | |
| ARCH-B9.3-09 Interface rag | PASSED | test_sdk_interfaces.py::test_llm_rag_privacy_interfaces interfaces.test.ts::delegation, subagent, tools, mcp, llm, rag and privacy interfaces_b93_test.go::TestB93MethodRoutes +1 (E-SC-PY-INTERFACES, E-SC-TS-INTERFACES, E-SC-GO-INTERFACES, E-SC-JAVA-INTERFACES) | |
| ARCH-B9.3-10 Interface privacy | PASSED | test_sdk_interfaces.py::test_llm_rag_privacy_interfaces interfaces.test.ts::delegation, subagent, tools, mcp, llm, rag and privacy interfaces_b93_test.go::TestB93MethodRoutes +1 (E-SC-PY-INTERFACES, E-SC-TS-INTERFACES, E-SC-GO-INTERFACES, E-SC-JAVA-INTERFACES) | |
| ARCH-B9.3-11 Interface approval | PASSED | test_sdk_interfaces.py::test_approval_audit_trace_finops_security test_sdk_interfaces.py::test_assume_service_cancel_record_and_storage_objects_confirm_their_result test_sdk_interfaces.py::test_assume_service_cancel_record_and_delete_propagate_every_refusal +7 (E-SC-PY-INTERFACES, E-SC-TS-INTERFACES, E-SC-GO-INTERFACES, E-SC-JAVA-INTERFACES, E-SC-B93-SERVER) | |
| ARCH-B9.3-12 Interface audit | PASSED | test_sdk_interfaces.py::test_approval_audit_trace_finops_security test_sdk_interfaces.py::test_assume_service_cancel_record_and_storage_objects_confirm_their_result test_sdk_interfaces.py::test_assume_service_cancel_record_and_delete_propagate_every_refusal +5 (E-SC-PY-INTERFACES, E-SC-TS-INTERFACES, E-SC-GO-INTERFACES, E-SC-JAVA-INTERFACES, E-SC-B93-SERVER) | |
| ARCH-B9.3-13 Interface trace | PASSED | test_sdk_interfaces.py::test_approval_audit_trace_finops_security interfaces.test.ts::approval, audit, trace, finops, security and storage interfaces_b93_test.go::TestB93MethodRoutes +1 (E-SC-PY-INTERFACES, E-SC-TS-INTERFACES, E-SC-GO-INTERFACES, E-SC-JAVA-INTERFACES) | |
| ARCH-B9.3-14 Interface finops | PASSED | test_sdk_interfaces.py::test_approval_audit_trace_finops_security interfaces.test.ts::approval, audit, trace, finops, security and storage interfaces_b93_test.go::TestB93MethodRoutes +1 (E-SC-PY-INTERFACES, E-SC-TS-INTERFACES, E-SC-GO-INTERFACES, E-SC-JAVA-INTERFACES) | |
| ARCH-B9.3-15 Interface security | PASSED | test_sdk_interfaces.py::test_approval_audit_trace_finops_security interfaces.test.ts::approval, audit, trace, finops, security and storage interfaces_b93_test.go::TestB93MethodRoutes +1 (E-SC-PY-INTERFACES, E-SC-TS-INTERFACES, E-SC-GO-INTERFACES, E-SC-JAVA-INTERFACES) | |
| ARCH-B9.3-16 Interface storage | PASSED | test_sdk_interfaces.py::test_storage_put_and_get_go_through_a_presigned_grant test_sdk_interfaces.py::test_assume_service_cancel_record_and_storage_objects_confirm_their_result test_sdk_interfaces.py::test_assume_service_cancel_record_and_delete_propagate_every_refusal +7 (E-SC-PY-INTERFACES, E-SC-TS-INTERFACES, E-SC-GO-INTERFACES, E-SC-JAVA-INTERFACES, E-SC-B93-SERVER) | |
| ARCH-B9.3-17 Règle : aucune décision OPA ou OpenFGA supposée | PASSED | test_sdk_interfaces.py::test_authz_errors_propagate_and_no_allow_is_assumed interfaces.test.ts::authz errors propagate and no allow is assumed interfaces_b93_test.go::TestB93NoAssumedAllow +1 (E-SC-PY-INTERFACES, E-SC-TS-INTERFACES, E-SC-GO-INTERFACES, E-SC-JAVA-INTERFACES) |
Partie B, B9.4. SDK impossible à contourner
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B9.4-01 Identité et délégation validées par la passerelle (contexte signé, audience, émetteur, expiration) | PASSED | test_identity_context_delegation.py::test_tampered_wrong_audience_wrong_issuer_expired_and_foreign_tenant_are_refused (E-RB-CP) | |
| ARCH-B9.4-02 OpenFGA et OPA revérifiés par la passerelle avant chaque action | PASSED | test_identity_context_delegation.py::test_opa_decision_is_taken_before_each_action_with_the_original_user test_identity_context_delegation.py::test_policy_change_while_the_agent_runs_refuses_the_next_action (E-RB-CP) | |
| ARCH-B9.4-03 Sortie LLM uniquement par LiteLLM | PASSED | test_platform_security_manifests.py::test_vllm_reachable_only_from_litellm_and_control_plane test_llm_isolation.py::test_egress_barrier_denies_external_hosts_of_an_isolated_model (E-RB-CP) | |
| ARCH-B9.4-04 MCP uniquement par la Secure MCP Gateway | PASSED | test_gateway_pep_untrusted.py::test_pep_mcp_denied test_applications_registry.py::test_external_agent_model_and_mcp_gateways (E-RB-CP) | |
| ARCH-B9.4-05 RAG par la passerelle de données et l'ACL du stockage | PASSED | test_rag_governance.py::test_chunk_acl_forbidden_fragments_never_reach_the_context test_rag_governance.py::test_document_acl_and_other_tenant_refused (E-RB-CP) | |
| ARCH-B9.4-06 Masquage par la Data Protection Gateway | PASSED | test_capabilities_gateways.py::test_tool_invoke_dlp_credentials_usage test_llm_gateway.py::test_control_dlp (E-RB-CP) | |
| ARCH-B9.4-07 Audit par l'Audit Gateway avec preuve indépendante | PASSED | test_evidence_gateway.py::test_seal_signature_verifies_online_and_offline test_evidence_gateway.py::test_forged_seal_signature_is_rejected (E-RB-CP) | |
| ARCH-B9.4-08 Kill Switch appliqué par l'admission, le réseau et le runtime | BLOCKED | test_soc_ai_sdr.py::test_kill_switch_cancels_run_and_subagents_and_refuses_new_actions test_soc_ai_sdr.py::test_network_isolation_waits_for_a_signed_in_cluster_receipt test_platform_security_manifests.py::test_static_cluster_policies (E-RB-CP) | Runtime et reçus réseau signés prouvés ici ; l'application réelle par l'admission Kyverno et Cilium sur un cluster demande un cluster [B-CLUSTER]. |
| ARCH-B9.4-09 Agents externes sans SDK : passerelles et connecteurs sécurisés, isolation réseau, permissions limitées | PASSED | test_applications_registry.py::test_external_agent_model_and_mcp_gateways test_applications_registry.py::test_guard_direct (E-RB-CP) | |
| ARCH-B9.4-10 Un agent tiers avec accès direct privilégié à la base est empêché par les rôles de base et les politiques réseau | PASSED | test_core_rls.py::test_unscoped_app_role_sees_nothing test_core_audit.py::test_app_role_cannot_rewrite test_platform_security_manifests.py::test_postgres_cluster_hardening +1 (E-RB-CP) |
Partie B, B10.1. CLI officielle
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B10.1-01 Commande CLI login --profile | PASSED | test_cli.py::test_login_dev_and_config_profiles test_cli_developer.py::test_cli_reference_is_up_to_date (E-DX-CLI) | |
| ARCH-B10.1-02 Commande CLI create agent --template secure-agent | PASSED | test_cli.py::test_reference_commands_of_the_architecture test_cli_developer.py::test_cli_reference_is_up_to_date (E-DX-CLI) | |
| ARCH-B10.1-03 Commande CLI create plugin --template enterprise-plugin | PASSED | test_cli_developer.py::test_create_plugin_with_the_enterprise_plugin_template (E-DX-CLI) | |
| ARCH-B10.1-04 Commande CLI create mcp --template secure-mcp | PASSED | test_cli.py::test_reference_commands_of_the_architecture test_cli_developer.py::test_cli_reference_is_up_to_date (E-DX-CLI) | |
| ARCH-B10.1-05 Commande CLI create skill | PASSED | test_cli_developer.py::test_create_skill_and_prompt test_cli_developer.py::test_cli_reference_is_up_to_date (E-DX-CLI) | |
| ARCH-B10.1-06 Commande CLI create prompt | PASSED | test_cli_developer.py::test_create_skill_and_prompt test_cli_developer.py::test_cli_reference_is_up_to_date (E-DX-CLI) | |
| ARCH-B10.1-07 Commande CLI validate | PASSED | test_cli.py::test_validate_invalid_file_exits_1 test_cli_developer.py::test_cli_reference_is_up_to_date (E-DX-CLI) | |
| ARCH-B10.1-08 Commande CLI test | PASSED | test_cli_developer.py::test_test_without_scope_keeps_evaluation_behaviour test_cli_developer.py::test_cli_reference_is_up_to_date (E-DX-CLI) | |
| ARCH-B10.1-09 Commande CLI test security | PASSED | test_cli_developer.py::test_security_threshold_sets_exit_code test_cli_developer.py::test_cli_reference_is_up_to_date (E-DX-CLI) | |
| ARCH-B10.1-10 Commande CLI test authorization (authz) | PASSED | test_cli_developer.py::test_authz_failing_policy_and_empty_project test_cli_developer.py::test_cli_reference_is_up_to_date (E-DX-CLI) | |
| ARCH-B10.1-11 Commande CLI test sdk-conformance | PASSED | test_cli_developer.py::test_sdk_conformance test_cli_developer.py::test_cli_reference_is_up_to_date (E-DX-CLI) | |
| ARCH-B10.1-12 Commande CLI plugin build | PASSED | test_cli_developer.py::test_create_plugin_with_the_enterprise_plugin_template test_packs.py::test_cli_create_validate_build (E-DX-CLI) | |
| ARCH-B10.1-13 Commande CLI plugin sign | PASSED | test_packs.py::test_cli_sign_and_publish_body_with_oci test_packs.py::test_sign_and_verify_with_cosign test_cli_developer.py::test_create_plugin_with_the_enterprise_plugin_template (E-DX-CLI) | |
| ARCH-B10.1-14 Commande CLI plugin publish --registry | PASSED | test_cli.py::test_reference_commands_of_the_architecture test_cli_developer.py::test_cli_reference_is_up_to_date (E-DX-CLI) | |
| ARCH-B10.1-15 Commande CLI deploy --environment | PASSED | test_cli.py::test_reference_commands_of_the_architecture test_cli_developer.py::test_cli_reference_is_up_to_date (E-DX-CLI) | |
| ARCH-B10.1-16 Commande CLI runs list | PASSED | test_cli.py::test_runs_logs_chat_models_finops_quotas_audit test_cli_developer.py::test_cli_reference_is_up_to_date (E-DX-CLI) | |
| ARCH-B10.1-17 Commande CLI agent inspect | PASSED | test_cli.py::test_reference_commands_of_the_architecture test_cli_developer.py::test_cli_reference_is_up_to_date (E-DX-CLI) | |
| ARCH-B10.1-18 Commande CLI doctor | PASSED | test_cli_developer.py::test_doctor_checks test_cli_developer.py::test_cli_reference_is_up_to_date (E-DX-CLI) |
Partie B, B10.2. Règles obligatoires pour les développeurs
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B10.2-01 Ne jamais forger, modifier ou remplacer l'identité utilisateur | PASSED | test_cli_developer.py::test_rules_package_maps_every_rule_to_an_existing_control_and_test test_security_auth.py::test_claims_enforced test_identity_context_delegation.py::test_run_carries_original_user_and_subagent_never_gets_wider_rights (E-DX-CLI, E-DX-RULES) | |
| ARCH-B10.2-02 Délégation contrôlée et limitée dans le temps | PASSED | test_cli_developer.py::test_rules_package_maps_every_rule_to_an_existing_control_and_test test_identity_context_delegation.py::test_restricted_delegation_is_always_narrower_and_revocation_cascades test_identity_context_delegation.py::test_scheduled_run_needs_an_approved_mandate_bound_to_a_service_identity (E-DX-CLI, E-DX-RULES) | |
| ARCH-B10.2-03 Vérifier les droits à chaque accès sensible | PASSED | test_cli_developer.py::test_rules_package_maps_every_rule_to_an_existing_control_and_test test_core_secrets_authz.py::test_authz_tuples_and_check test_identity_context_delegation.py::test_revocation_during_a_run_blocks_the_next_sensitive_action (E-DX-CLI, E-DX-RULES) | |
| ARCH-B10.2-04 Appeler uniquement des modèles autorisés via LiteLLM | PASSED | test_cli_developer.py::test_rules_package_maps_every_rule_to_an_existing_control_and_test test_llm_gateway.py::test_control_model_allowlist_and_status test_gateway_pep_untrusted.py::test_pep_model_gateway_denied (E-DX-CLI, E-DX-RULES) | |
| ARCH-B10.2-05 Utiliser le Secure MCP Gateway | PASSED | test_cli_developer.py::test_rules_package_maps_every_rule_to_an_existing_control_and_test test_capabilities_gateways.py::test_mcp_gateway test_integration_usage.py::test_mcp_gateway_dlp_on_arguments_and_results (E-DX-CLI, E-DX-RULES) | |
| ARCH-B10.2-06 Appliquer les ACL documentaires avant retrieval et génération | PASSED | test_cli_developer.py::test_rules_package_maps_every_rule_to_an_existing_control_and_test test_rag_governance.py::test_chunk_acl_forbidden_fragments_never_reach_the_context test_rag_governance.py::test_document_acl_and_other_tenant_refused (E-DX-CLI, E-DX-RULES) | |
| ARCH-B10.2-07 Protéger les PII avant toute destination non approuvée | PASSED | test_cli_developer.py::test_rules_package_maps_every_rule_to_an_existing_control_and_test test_llm_gateway.py::test_control_dlp test_quotas_dlp_realtime.py::test_adapter_file_dlp_blocks_before_call (E-DX-CLI, E-DX-RULES) | |
| ARCH-B10.2-08 Aucun secret dans le code, prompt, log ou dépôt | PASSED | test_cli_developer.py::test_rules_package_maps_every_rule_to_an_existing_control_and_test test_llm_registry.py::test_litellm_config_contains_no_secret test_evidence_config_redaction.py::test_secrets_and_pii_never_reach_logs (E-DX-CLI, E-DX-RULES) | |
| ARCH-B10.2-09 Aucune donnée sensible en clair dans les logs sans exception approuvée | PASSED | test_cli_developer.py::test_rules_package_maps_every_rule_to_an_existing_control_and_test test_evidence_config_redaction.py::test_secrets_and_pii_never_reach_logs test_llm_gateway.py::test_control_audit_hashes_only (E-DX-CLI, E-DX-RULES) | |
| ARCH-B10.2-10 Audit obligatoire des décisions, actions et résultats | PASSED | test_cli_developer.py::test_rules_package_maps_every_rule_to_an_existing_control_and_test test_audit_mutation_coverage.py::test_every_mutation_route_audits test_iam_fail_closed.py::test_audit_store_unavailable_blocks_sensitive_mutations (E-DX-CLI, E-DX-RULES) | |
| ARCH-B10.2-11 Prompts enregistrés et versionnés | PASSED | test_cli_developer.py::test_rules_package_maps_every_rule_to_an_existing_control_and_test test_data_retention_lineage_prompts.py::test_prompt_registry_render (E-DX-CLI, E-DX-RULES) | |
| ARCH-B10.2-12 Skills vérifiés en signature, permissions et version | PASSED | test_cli_developer.py::test_rules_package_maps_every_rule_to_an_existing_control_and_test test_capabilities_gateways.py::test_skill_loader_refuses_tampered_unsigned_blocked (E-DX-CLI, E-DX-RULES) | |
| ARCH-B10.2-13 Uniquement des packages approuvés | PASSED | test_cli_developer.py::test_rules_package_maps_every_rule_to_an_existing_control_and_test test_marketplace.py::test_unsigned_tampered_or_untrusted_pack_is_refused test_marketplace.py::test_install_refuses_unapproved_or_unrequested_permissions (E-DX-CLI, E-DX-RULES) | |
| ARCH-B10.2-14 Les sous-agents ne reçoivent jamais plus de droits que reçus | PASSED | test_cli_developer.py::test_rules_package_maps_every_rule_to_an_existing_control_and_test test_identity_context_delegation.py::test_run_carries_original_user_and_subagent_never_gets_wider_rights test_security_privilege.py::test_narrow_key_cannot_mint_broader_scopes (E-DX-CLI, E-DX-RULES) | |
| ARCH-B10.2-15 Actions suspendues jusqu'à l'approbation requise | PASSED | test_cli_developer.py::test_rules_package_maps_every_rule_to_an_existing_control_and_test test_platform_opa.py::test_tool_invocation_approval_obligation test_approvals_promotion.py::test_promotion_waits_for_an_approval_from_someone_else (E-DX-CLI, E-DX-RULES) | |
| ARCH-B10.2-16 Budgets respectés | PASSED | test_cli_developer.py::test_rules_package_maps_every_rule_to_an_existing_control_and_test test_integration_llm_finops.py::test_quota_exceeded_is_429_before_any_provider_call test_agents_execution.py::test_subagent_depth_count_and_budget_inheritance (E-DX-CLI, E-DX-RULES) | |
| ARCH-B10.2-17 Destinations réseau non autorisées interdites | PASSED | test_cli_developer.py::test_rules_package_maps_every_rule_to_an_existing_control_and_test test_soc_ai_sdr.py::test_egress_denied_is_blocked_and_opens_an_incident test_llm_isolation.py::test_egress_barrier_denies_external_hosts_of_an_isolated_model (E-DX-CLI, E-DX-RULES) | |
| ARCH-B10.2-18 Code risqué en sandbox | PASSED | test_cli_developer.py::test_rules_package_maps_every_rule_to_an_existing_control_and_test test_runtime_gvisor_sandbox.py::test_untrusted_code_refused_when_sandbox_unavailable test_agents_execution.py::test_sandbox_execution_spec (E-DX-CLI, E-DX-RULES) | |
| ARCH-B10.2-19 Ordres Kill Switch exécutés immédiatement | PASSED | test_cli_developer.py::test_rules_package_maps_every_rule_to_an_existing_control_and_test test_agents_execution.py::test_kill_switch_blocks_new_runs test_llm_gateway.py::test_control_kill_switch (E-DX-CLI, E-DX-RULES) | |
| ARCH-B10.2-20 Ne jamais masquer ni supprimer une alerte levée | PASSED | test_cli_developer.py::test_rules_package_maps_every_rule_to_an_existing_control_and_test test_observability_signals.py::test_alert_receiver_creates_dedups_and_resolves test_core_rls.py::test_audit_is_append_only_for_app_role (E-DX-CLI, E-DX-RULES) | |
| ARCH-B10.2-21 Tests de sécurité et de conformité passés avant publication | PASSED | test_cli_developer.py::test_rules_package_maps_every_rule_to_an_existing_control_and_test test_marketplace.py::test_publication_fails_when_a_gate_input_is_missing test_packs.py::test_cli_publish_refuses_an_unsigned_build (E-DX-CLI, E-DX-RULES) | |
| ARCH-B10.2-22 Paquet de règles versionné distinguant règles documentaires et contrôles appliqués | PASSED | test_cli_developer.py::test_rules_package_maps_every_rule_to_an_existing_control_and_test test_cli_developer.py::test_rules_package_is_copied_by_every_project_template test_cli_developer.py::test_create_plugin_with_the_enterprise_plugin_template (E-DX-CLI) |
Partie B, B10.3. Gates de publication
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B10.3-01 G1 Schéma | PASSED | test_marketplace.py::test_publication_fails_when_a_gate_input_is_missing (E-MK-MARKETPLACE) | |
| ARCH-B10.3-02 G2 Dépendances (approuvées, licences, SBOM) | PASSED | test_marketplace.py::test_publication_fails_when_a_gate_input_is_missing test_marketplace.py::test_publication_succeeds_with_every_gate (E-MK-MARKETPLACE) | |
| ARCH-B10.3-03 G3 Sécurité (Trivy, signatures, secrets) | PASSED | test_marketplace.py::test_publication_fails_on_failed_tests_evaluations_or_vulnerabilities test_marketplace.py::test_unsigned_tampered_or_untrusted_pack_is_refused (E-MK-MARKETPLACE) | |
| ARCH-B10.3-04 G4 Autorisation (RBAC, ABAC, OpenFGA, tests OPA) | PASSED | test_marketplace.py::test_publication_fails_when_a_gate_input_is_missing test_marketplace.py::test_signed_pack_with_unsafe_permission_is_refused (E-MK-MARKETPLACE) | |
| ARCH-B10.3-05 G5 Isolation des tenants | PASSED | test_marketplace.py::test_other_tenant_reaches_no_marketplace_resource (E-MK-MARKETPLACE) | |
| ARCH-B10.3-06 G6 Confidentialité (PII, masquage, DLP, logs, destinations) | IN_PROGRESS | test_marketplace.py::test_publication_succeeds_with_every_gate (E-MK-MARKETPLACE) | Aucune gate dédiée PII/DLP à la publication ; dataProtection n'est pas évalué. |
| ARCH-B10.3-07 G7 Sûreté des outils (outils MCP, effets de bord) | PASSED | test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only test_marketplace.py::test_finance_pack_end_to_end_payments_exactly_once (E-MK-MARKETPLACE) | |
| ARCH-B10.3-08 G8 Qualité (seuils Promptfoo et Ragas) | PASSED | test_marketplace.py::test_publication_fails_on_failed_tests_evaluations_or_vulnerabilities (E-MK-MARKETPLACE) | |
| ARCH-B10.3-09 G9 Résilience (timeouts, retries, idempotence, annulation) | IN_PROGRESS | test_marketplace.py::test_finance_pack_end_to_end_payments_exactly_once (E-MK-MARKETPLACE) | Idempotence prouvée (paiement exactement une fois) ; pas de gate timeouts/retries/annulation. |
| ARCH-B10.3-10 G10 Audit | PASSED | test_marketplace.py::test_hr_pack_end_to_end_with_granted_permissions_only test_marketplace.py::test_install_refuses_unapproved_or_unrequested_permissions (E-MK-MARKETPLACE) | |
| ARCH-B10.3-11 G11 Kill Switch (suspension, pas de contournement) | IN_PROGRESS | test_marketplace.py::test_revoked_publisher_blocks_install_and_production (E-MK-MARKETPLACE) | Révocation de l'éditeur bloque install et production ; pas de gate Kill Switch dédiée par pack. |
| ARCH-B10.3-12 G12 Approbation (propriétaire et sécurité, production refusée sans) | PASSED | test_marketplace.py::test_production_publication_needs_gates_and_four_eyes test_marketplace.py::test_production_promotion_then_prod_install test_approvals_promotion.py::test_promotion_waits_for_an_approval_from_someone_else (E-MK-MARKETPLACE) | |
| ARCH-B10.3-13 Politiques OPA distribuées en bundles signés sans redémarrage | PASSED | test_iam_opa_bundles_real.py::test_signed_bundle_revisions_loaded_and_enforced test_iam_opa_bundles_real.py::test_bundle_signed_with_another_key_is_refused_by_opa (E-MK-MARKETPLACE) | |
| ARCH-B10.3-14 Statut de chargement du bundle vérifié | PASSED | test_iam_opa_bundles_real.py::test_signed_bundle_revisions_loaded_and_enforced (E-MK-MARKETPLACE) |
Partie B, B10.4. Gestion des changements
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B10.4-01 Pipeline Draft, Test, Revue sécurité, Approbation métier, Staging, Production, Monitoring | IN_PROGRESS | test_approvals_promotion.py::test_failing_blocking_suite_prevents_the_promotion test_approvals_promotion.py::test_promotion_waits_for_an_approval_from_someone_else test_marketplace.py::test_production_promotion_then_prod_install (E-MK-MARKETPLACE) | Promotion avec suite bloquante, approbation par un tiers et environnements dev/test/staging/prod ; pas de machine d'états unique nommant les sept étapes. |
| ARCH-B10.4-02 Changements de prompts, skills, connecteurs, règles, modèles traités comme changements applicatifs | IN_PROGRESS | test_approvals_promotion.py::test_skill_cannot_be_approved_outside_a_promotion test_approvals_promotion.py::test_failing_blocking_suite_prevents_the_promotion (E-MK-MARKETPLACE) | Skills soumis à promotion ; prompts versionnés ; connecteurs, règles et modèles non couverts par la même promotion. |
| ARCH-B10.4-03 Changement critique : nouvelle évaluation et approbation sécurité selon l'impact | PASSED | test_approvals_promotion.py::test_failing_blocking_suite_prevents_the_promotion test_marketplace.py::test_upgrade_rollback_and_uninstall test_marketplace.py::test_install_refuses_unapproved_or_unrequested_permissions (E-MK-MARKETPLACE) |
Partie B, B11.1. Documentation produit
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B11.1-01 Product Overview | IN_PROGRESS | test_docs_kit.py::test_every_docu_requirement_has_its_french_and_english_guide (E-DO-DOCS, E-DO-AIRGAP) | Le bundle hors ligne (tools/release/build.py, docs-offline) n'embarque que docs/operations et docs/release : ce guide hors de ces dossiers n'y est pas encore livré (bundle détenu par C02). |
| ARCH-B11.1-02 Architecture Guide (plans de contrôle, données, sécurité et flux) | IN_PROGRESS | test_docs_kit.py::test_every_docu_requirement_has_its_french_and_english_guide test_docs_kit.py::test_repository_paths_quoted_in_the_guides_exist (E-DO-DOCS, E-DO-AIRGAP) | Le bundle hors ligne (tools/release/build.py, docs-offline) n'embarque que docs/operations et docs/release : ce guide hors de ces dossiers n'y est pas encore livré (bundle détenu par C02). |
| ARCH-B11.1-03 Deployment Guide (installation Kubernetes, prérequis, profils) | PASSED | test_docs_kit.py::test_every_docu_requirement_has_its_french_and_english_guide test_docs_kit.py::test_repository_paths_quoted_in_the_guides_exist test_docs_kit.py::test_routes_quoted_in_the_guides_exist_in_the_published_api +1 (E-DO-DOCS, E-DO-AIRGAP) | |
| ARCH-B11.1-04 Administrator Guide | IN_PROGRESS | test_docs_kit.py::test_every_docu_requirement_has_its_french_and_english_guide (E-DO-DOCS, E-DO-AIRGAP) | Pas de guide d'administration unique : le contenu est réparti entre la doc du Manager (operations.md) et docs/operations/configuration.md ; un guide d'administrateur consolidé FR et EN reste à écrire. |
| ARCH-B11.1-05 Security Hardening Guide (TLS, mTLS, RBAC, OPA, OpenFGA, secrets, réseau) | PASSED | test_docs_kit.py::test_every_docu_requirement_has_its_french_and_english_guide test_docs_kit.py::test_repository_paths_quoted_in_the_guides_exist test_docs_kit.py::test_routes_quoted_in_the_guides_exist_in_the_published_api +1 (E-DO-DOCS, E-DO-AIRGAP) | |
| ARCH-B11.1-06 Operations Runbook (démarrer, arrêter, redémarrer, upgrade, diagnostic) | PASSED | test_docs_kit.py::test_every_docu_requirement_has_its_french_and_english_guide test_docs_kit.py::test_repository_paths_quoted_in_the_guides_exist test_docs_kit.py::test_routes_quoted_in_the_guides_exist_in_the_published_api +1 (E-DO-DOCS, E-DO-AIRGAP) | |
| ARCH-B11.1-07 Backup & Recovery Guide (sauvegardes, restauration, RTO, RPO) | PASSED | test_docs_kit.py::test_every_docu_requirement_has_its_french_and_english_guide test_docs_kit.py::test_repository_paths_quoted_in_the_guides_exist test_docs_kit.py::test_routes_quoted_in_the_guides_exist_in_the_published_api +1 (E-DO-DOCS, E-DO-AIRGAP) | |
| ARCH-B11.1-08 Monitoring Guide | PASSED | test_docs_kit.py::test_every_docu_requirement_has_its_french_and_english_guide test_docs_kit.py::test_repository_paths_quoted_in_the_guides_exist test_docs_kit.py::test_routes_quoted_in_the_guides_exist_in_the_published_api +1 (E-DO-DOCS, E-DO-AIRGAP) | |
| ARCH-B11.1-09 Incident Response Guide (SOC, playbooks, Kill Switch, reprise) | IN_PROGRESS | test_docs_kit.py::test_every_docu_requirement_has_its_french_and_english_guide test_docs_kit.py::test_repository_paths_quoted_in_the_guides_exist (E-DO-DOCS, E-DO-AIRGAP) | Le bundle hors ligne (tools/release/build.py, docs-offline) n'embarque que docs/operations et docs/release : ce guide hors de ces dossiers n'y est pas encore livré (bundle détenu par C02). |
| ARCH-B11.1-10 Compliance Mapping (matrices de contrôles et preuves) | IN_PROGRESS | test_kit_traceability.py (E-TRACE) | Les matrices existent sous forme générée (traceability.yaml, STATUS, ARCHITECTURE_CONFORMANCE) mais aucun guide Compliance Mapping rédigé en FR et EN (contrôle vers preuve) n'est livré dans le bundle. |
| ARCH-B11.1-11 Troubleshooting Guide | IN_PROGRESS | test_docs_kit.py::test_every_docu_requirement_has_its_french_and_english_guide test_docs_kit.py::test_repository_paths_quoted_in_the_guides_exist (E-DO-DOCS, E-DO-AIRGAP) | Le bundle hors ligne (tools/release/build.py, docs-offline) n'embarque que docs/operations et docs/release : ce guide hors de ces dossiers n'y est pas encore livré (bundle détenu par C02). |
| ARCH-B11.1-12 Licensing Guide (activation, hors ligne, expiration, renouvellement) | PASSED | test_docs_kit.py::test_every_docu_requirement_has_its_french_and_english_guide test_docs_kit.py::test_repository_paths_quoted_in_the_guides_exist test_docs_kit.py::test_routes_quoted_in_the_guides_exist_in_the_published_api +2 (E-DO-DOCS, E-DO-AIRGAP) | |
| ARCH-B11.1-13 Release Notes | PASSED | test_release_bundle.py::test_release_notes_generated_and_deterministic test_docs_kit.py::test_no_long_dash_anywhere (E-DO-DOCS, E-DO-AIRGAP) |
Partie B, B11.2. Documentation développeur
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B11.2-01 Getting Started (premier agent sécurisé) | PASSED | test_developer_guides.py::test_guide_exists_in_french_and_english_with_the_same_structure test_developer_guides.py::test_links_and_quoted_paths_resolve test_developer_guides.py::test_cli_commands_and_sub_commands_exist +3 (E-DD-GUIDES) | |
| ARCH-B11.2-02 Guide SDK Python | PASSED | test_developer_guides.py::test_guide_exists_in_french_and_english_with_the_same_structure test_developer_guides.py::test_links_and_quoted_paths_resolve test_developer_guides.py::test_cli_commands_and_sub_commands_exist +1 (E-DD-GUIDES) | |
| ARCH-B11.2-03 Guide SDK TypeScript | PASSED | test_developer_guides.py::test_guide_exists_in_french_and_english_with_the_same_structure test_developer_guides.py::test_links_and_quoted_paths_resolve test_developer_guides.py::test_cli_commands_and_sub_commands_exist +2 (E-DD-GUIDES) | |
| ARCH-B11.2-04 Guide SDK Go | PASSED | test_developer_guides.py::test_guide_exists_in_french_and_english_with_the_same_structure test_developer_guides.py::test_links_and_quoted_paths_resolve test_developer_guides.py::test_cli_commands_and_sub_commands_exist +2 (E-DD-GUIDES) | |
| ARCH-B11.2-05 Référence ExecutionContext | PASSED | test_developer_guides.py::test_guide_exists_in_french_and_english_with_the_same_structure test_developer_guides.py::test_links_and_quoted_paths_resolve test_developer_guides.py::test_cli_commands_and_sub_commands_exist +3 (E-DD-GUIDES) | |
| ARCH-B11.2-06 Référence ActionContext | PASSED | test_developer_guides.py::test_guide_exists_in_french_and_english_with_the_same_structure test_developer_guides.py::test_links_and_quoted_paths_resolve test_developer_guides.py::test_cli_commands_and_sub_commands_exist +3 (E-DD-GUIDES) | |
| ARCH-B11.2-07 Référence API (OpenAPI et exemples) | PASSED | test_developer_guides.py::test_guide_exists_in_french_and_english_with_the_same_structure test_developer_guides.py::test_links_and_quoted_paths_resolve test_developer_guides.py::test_cli_commands_and_sub_commands_exist +3 (E-DD-GUIDES) | |
| ARCH-B11.2-08 Guide de développement d'agent | PASSED | test_developer_guides.py::test_guide_exists_in_french_and_english_with_the_same_structure test_developer_guides.py::test_links_and_quoted_paths_resolve test_developer_guides.py::test_cli_commands_and_sub_commands_exist +3 (E-DD-GUIDES) | |
| ARCH-B11.2-09 Guide de développement MCP | PASSED | test_developer_guides.py::test_guide_exists_in_french_and_english_with_the_same_structure test_developer_guides.py::test_links_and_quoted_paths_resolve test_developer_guides.py::test_cli_commands_and_sub_commands_exist +3 (E-DD-GUIDES) | |
| ARCH-B11.2-10 Guide de développement de skill | PASSED | test_developer_guides.py::test_guide_exists_in_french_and_english_with_the_same_structure test_developer_guides.py::test_links_and_quoted_paths_resolve test_developer_guides.py::test_cli_commands_and_sub_commands_exist +3 (E-DD-GUIDES) | |
| ARCH-B11.2-11 Guide de développement de prompt | PASSED | test_developer_guides.py::test_guide_exists_in_french_and_english_with_the_same_structure test_developer_guides.py::test_links_and_quoted_paths_resolve test_developer_guides.py::test_cli_commands_and_sub_commands_exist +3 (E-DD-GUIDES) | |
| ARCH-B11.2-12 Guide de développement de plugin | PASSED | test_developer_guides.py::test_guide_exists_in_french_and_english_with_the_same_structure test_developer_guides.py::test_links_and_quoted_paths_resolve test_developer_guides.py::test_cli_commands_and_sub_commands_exist +3 (E-DD-GUIDES) | |
| ARCH-B11.2-13 Guide de développement de connecteur | PASSED | test_developer_guides.py::test_guide_exists_in_french_and_english_with_the_same_structure test_developer_guides.py::test_links_and_quoted_paths_resolve test_developer_guides.py::test_cli_commands_and_sub_commands_exist +3 (E-DD-GUIDES) | |
| ARCH-B11.2-14 Guide de développement de politiques | PASSED | test_developer_guides.py::test_guide_exists_in_french_and_english_with_the_same_structure test_developer_guides.py::test_links_and_quoted_paths_resolve test_developer_guides.py::test_cli_commands_and_sub_commands_exist +3 (E-DD-GUIDES) | |
| ARCH-B11.2-15 Guide de tests | PASSED | test_developer_guides.py::test_guide_exists_in_french_and_english_with_the_same_structure test_developer_guides.py::test_links_and_quoted_paths_resolve test_developer_guides.py::test_cli_commands_and_sub_commands_exist +3 (E-DD-GUIDES) | |
| ARCH-B11.2-16 Guide de migration | PASSED | test_developer_guides.py::test_guide_exists_in_french_and_english_with_the_same_structure test_developer_guides.py::test_links_and_quoted_paths_resolve test_developer_guides.py::test_cli_commands_and_sub_commands_exist +3 (E-DD-GUIDES) |
Partie B, B11.3. Documentation vivante
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B11.3-01 Portail développeur alimenté par manifestes, schémas JSON et OpenAPI | PASSED | test_developer_guides.py::test_guide_exists_in_french_and_english_with_the_same_structure test_developer_guides.py::test_links_and_quoted_paths_resolve (E-DD-GUIDES) | |
| ARCH-B11.3-02 Marketplace affichant documentation, capacités, exemples et configuration du plugin | IN_PROGRESS | test_developer_guides.py::test_routes_quoted_in_the_guides_exist (E-DD-GUIDES) | La documentation explique les routes Marketplace (fiche, version, preflight) ; l'affichage dans l'écran Marketplace de la documentation du plugin, des capacités, des exemples et de la configuration reste à vérifier par C07 et C09 (écrans hors périmètre de C13). |
| ARCH-B11.3-03 Exemples exécutables vérifiés par des tests | PASSED | test_developer_guides.py::test_typescript_snippets_compile test_developer_guides.py::test_go_snippets_vet_and_build test_developer_guides.py::test_java_snippets_compile_against_the_maven_build (E-DD-GUIDES) |
Partie B, B12.1. Couverture de la licence
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B12.1-01 Utilisateurs illimités | PASSED | test_licensing.py::test_entitlements_never_count_users_agents_apps_plugins_or_use_cases test_licensing.py::test_payload_carrying_a_price_or_a_limit_is_refused test_license_issuer.py::test_signed_payload_with_price_or_limit_is_refused (E-CP-LICENSING, E-LICENSE-ISSUER) | |
| ARCH-B12.1-02 Agents illimités | PASSED | test_licensing.py::test_entitlements_never_count_users_agents_apps_plugins_or_use_cases test_licensing.py::test_payload_carrying_a_price_or_a_limit_is_refused test_license_issuer.py::test_signed_payload_with_price_or_limit_is_refused (E-CP-LICENSING, E-LICENSE-ISSUER) | |
| ARCH-B12.1-03 Sous-agents illimités | PASSED | test_licensing.py::test_entitlements_never_count_users_agents_apps_plugins_or_use_cases test_licensing.py::test_payload_carrying_a_price_or_a_limit_is_refused test_license_issuer.py::test_signed_payload_with_price_or_limit_is_refused (E-CP-LICENSING, E-LICENSE-ISSUER) | |
| ARCH-B12.1-04 Applications illimités | PASSED | test_licensing.py::test_entitlements_never_count_users_agents_apps_plugins_or_use_cases test_licensing.py::test_payload_carrying_a_price_or_a_limit_is_refused test_license_issuer.py::test_signed_payload_with_price_or_limit_is_refused (E-CP-LICENSING, E-LICENSE-ISSUER) | |
| ARCH-B12.1-05 Cas d'usage illimités | PASSED | test_licensing.py::test_entitlements_never_count_users_agents_apps_plugins_or_use_cases test_licensing.py::test_payload_carrying_a_price_or_a_limit_is_refused test_license_issuer.py::test_signed_payload_with_price_or_limit_is_refused (E-CP-LICENSING, E-LICENSE-ISSUER) | |
| ARCH-B12.1-06 Développeurs illimités | PASSED | test_licensing.py::test_entitlements_never_count_users_agents_apps_plugins_or_use_cases test_licensing.py::test_payload_carrying_a_price_or_a_limit_is_refused test_license_issuer.py::test_signed_payload_with_price_or_limit_is_refused (E-CP-LICENSING, E-LICENSE-ISSUER) | |
| ARCH-B12.1-07 Prompts et skills illimités | PASSED | test_licensing.py::test_entitlements_never_count_users_agents_apps_plugins_or_use_cases test_licensing.py::test_payload_carrying_a_price_or_a_limit_is_refused test_license_issuer.py::test_signed_payload_with_price_or_limit_is_refused (E-CP-LICENSING, E-LICENSE-ISSUER) | |
| ARCH-B12.1-08 Plugins et mcp illimités | PASSED | test_licensing.py::test_entitlements_never_count_users_agents_apps_plugins_or_use_cases test_licensing.py::test_payload_carrying_a_price_or_a_limit_is_refused test_license_issuer.py::test_signed_payload_with_price_or_limit_is_refused (E-CP-LICENSING, E-LICENSE-ISSUER) | |
| ARCH-B12.1-09 Connecteurs illimités | PASSED | test_licensing.py::test_entitlements_never_count_users_agents_apps_plugins_or_use_cases test_licensing.py::test_payload_carrying_a_price_or_a_limit_is_refused test_license_issuer.py::test_signed_payload_with_price_or_limit_is_refused (E-CP-LICENSING, E-LICENSE-ISSUER) | |
| ARCH-B12.1-10 Modèles configurés illimités | PASSED | test_licensing.py::test_entitlements_never_count_users_agents_apps_plugins_or_use_cases test_licensing.py::test_payload_carrying_a_price_or_a_limit_is_refused test_license_issuer.py::test_signed_payload_with_price_or_limit_is_refused (E-CP-LICENSING, E-LICENSE-ISSUER) | |
| ARCH-B12.1-11 Aucun quota commercial sur les requêtes ou les tokens | PASSED | test_licensing.py::test_many_users_agents_and_plugins_under_one_licence test_licensing.py::test_only_two_actions_can_ever_be_refused (E-CP-LICENSING) | |
| ARCH-B12.1-12 Durée 12 ou 36 mois | PASSED | test_licensing.py::test_annual_and_triennial_licences_activate_online test_licensing.py::test_terms_other_than_12_or_36_months_and_inconsistent_dates_are_refused test_license_issuer.py::test_annual_and_triennial_licences_sign_and_verify (E-CP-LICENSING, E-LICENSE-ISSUER) | |
| ARCH-B12.1-13 Activation en ligne ou hors ligne | PASSED | test_licensing.py::test_annual_and_triennial_licences_activate_online test_licensing.py::test_offline_issuance_and_file_activation_without_network (E-CP-LICENSING) | |
| ARCH-B12.1-14 Déploiement sur l'infrastructure couverte par le contrat | PASSED | test_licensing.py::test_tampered_unknown_key_and_wrong_environment_are_refused_and_audited test_licensing.py::test_dr_restore_cluster_migration_and_second_site (E-CP-LICENSING) | |
| ARCH-B12.1-15 Support et mises à jour selon le contrat | PASSED | test_licensing.py::test_expiry_refuses_only_the_documented_actions_and_nothing_stops (E-CP-LICENSING) | |
| ARCH-B12.1-16 Quotas de sécurité, capacité et coût configurables par le client, jamais des restrictions de licence | PASSED | test_licensing.py::test_only_two_actions_can_ever_be_refused test_perf_measurements.py::test_quotas_answer_429_with_documented_codes_and_recover (E-CP-LICENSING, E-DO-PERF) |
Partie B, B12.2. Périmètre commercial
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B12.2-01 Aucune facturation par agent, utilisateur ou cas d'usage | PASSED | test_licensing_no_price_scan.py::test_no_licence_price_in_catalog_contracts_docs_and_screens test_licensing_no_price_scan.py::test_issued_licence_payloads_carry_no_price test_licensing.py::test_entitlements_never_count_users_agents_apps_plugins_or_use_cases (E-CP-LICENSING) | |
| ARCH-B12.2-02 Périmètre contractuel d'installation explicite (organisation, environnements, infrastructures, services, support) | IN_PROGRESS | test_licensing.py::test_tampered_unknown_key_and_wrong_environment_are_refused_and_audited (E-CP-LICENSING) | Le payload porte customer_id, installation_group_id, environments et support_ref, mais ni la liste des infrastructures ni celle des services couverts. |
| ARCH-B12.2-03 Aucun compteur caché | PASSED | test_licensing.py::test_entitlements_never_count_users_agents_apps_plugins_or_use_cases test_licensing.py::test_verifier_and_store_never_reach_the_network test_licensing_no_price_scan.py::test_licensing_material_carries_no_amount_at_all (E-CP-LICENSING) |
Partie B, B12.3. Architecture du service de licence
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B12.3-01 Émetteur de licence côté éditeur (contrat, client, produit, durée, périmètre, signature) | PASSED | test_license_issuer.py::test_command_line_round_trip test_license_issuer.py::test_keygen_writes_private_key_0600_and_a_public_jwk test_license_issuer.py::test_private_key_readable_by_others_is_refused (E-LICENSE-ISSUER) | |
| ARCH-B12.3-02 Licence signée en fichier portable ou activation en ligne | PASSED | test_licensing.py::test_offline_issuance_and_file_activation_without_network test_licensing.py::test_annual_and_triennial_licences_activate_online (E-CP-LICENSING) | |
| ARCH-B12.3-03 Vérificateur local avec clé publique embarquée | PASSED | test_licensing.py::test_key_rotation_accepts_every_listed_kid test_licensing.py::test_production_refuses_test_keys_and_malformed_keys test_licensing.py::test_verifier_and_store_never_reach_the_network (E-CP-LICENSING) | |
| ARCH-B12.3-04 Entitlements de plateforme (statut, période, périmètre, support, renouvellement) | PASSED | test_licensing.py::test_status_is_readable_by_any_user_without_sensitive_fields test_licensing.py::test_renewal_without_gap_silences_the_banner_and_takes_over (E-CP-LICENSING) |
Partie B, B12.4. Contrat de licence technique signé
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B12.4-01 Payload (schema_version, license_id, product_id, edition, customer_id, durée, entitlements illimités, usage_metered_for_licensing false, deployment_scope, support, issuer, issued_at, key_id) | IN_PROGRESS | test_license_issuer.py::test_annual_and_triennial_licences_sign_and_verify test_license_issuer.py::test_other_terms_and_inconsistent_dates_are_refused (E-LICENSE-ISSUER) | Le payload v1 porte schema_version, license_id, product_id, edition, customer_id, term_months, valid_from, valid_until, environments, support_ref, issued_at, key_id ; il manque l'objet entitlements avec drapeaux unlimited explicites, usage_metered_for_licensing false, un deployment_scope structuré et issuer (changement de contrat partagé avec C06 contracts/v1). |
| ARCH-B12.4-02 Objet signé (JWS) à canonicalisation vérifiable | PASSED | test_license_issuer.py::test_non_canonical_payload_is_refused test_license_issuer.py::test_tampered_unknown_key_and_wrong_algorithm_are_refused (E-LICENSE-ISSUER) | |
| ARCH-B12.4-03 Une propriété de signature déclarative est refusée | PASSED | test_license_issuer.py::test_non_canonical_payload_is_refused test_licensing.py::test_tampered_unknown_key_and_wrong_environment_are_refused_and_audited (E-LICENSE-ISSUER, E-CP-LICENSING) |
Partie B, B12.5. Fonctionnement hors ligne de la licence
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B12.5-01 Demande d'activation non sensible liée à l'installation | IN_PROGRESS | test_licensing.py::test_status_is_readable_by_any_user_without_sensitive_fields (E-CP-LICENSING) | installation_id et installation_group_id sont exposés à l'administrateur, mais aucun fichier de demande d'activation formalisé (export signé à transmettre à l'éditeur) n'est produit. |
| ARCH-B12.5-02 Vérification locale sans aucun appel externe | PASSED | test_licensing.py::test_verifier_and_store_never_reach_the_network test_licensing.py::test_offline_issuance_and_file_activation_without_network (E-CP-LICENSING) | |
| ARCH-B12.5-03 Renouvellements, installations de secours, migrations de cluster, changements matériels sans blocage injustifié | PASSED | test_licensing.py::test_dr_restore_cluster_migration_and_second_site test_licensing.py::test_renewal_without_gap_silences_the_banner_and_takes_over test_backup_dr_extended.py::test_licence_of_the_group_stays_valid_after_dr_offline (E-CP-LICENSING, E-HB-BACKUP) |
Partie B, B12.6. Comportement à l'expiration
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B12.6-01 État Active | PASSED | test_licensing.py::test_state_rules_at_every_boundary (E-CP-LICENSING) | |
| ARCH-B12.6-02 Expiring Soon avec notifications aux administrateurs et au responsable du contrat | IN_PROGRESS | test_licensing.py::test_worker_warns_at_30_7_and_1_days_then_grace_and_expiry (E-CP-LICENSING) | Les alertes à 30, 7 et 1 jours vont aux administrateurs plateforme ; aucun destinataire « responsable du contrat » n'est configurable. |
| ARCH-B12.6-03 Grace Period (fonctionnement maintenu avec avertissements) | PASSED | test_licensing.py::test_state_rules_at_every_boundary test_licensing.py::test_worker_warns_at_30_7_and_1_days_then_grace_and_expiry (E-CP-LICENSING) | |
| ARCH-B12.6-04 Expired (renouvellement demandé) | PASSED | test_licensing.py::test_expiry_refuses_only_the_documented_actions_and_nothing_stops (E-CP-LICENSING) | |
| ARCH-B12.6-05 Revoked (procédure contractuelle et approbations) | BLOCKED | test_licensing.py::test_state_rules_at_every_boundary (E-CP-LICENSING) | La procédure de révocation contractuelle et ses approbateurs sont une décision du client et de l'éditeur [B-CLIENT] |
| ARCH-B12.6-06 Renewed (nouvelle licence chargée sans interruption) | PASSED | test_licensing.py::test_renewal_without_gap_silences_the_banner_and_takes_over (E-CP-LICENSING) | |
| ARCH-B12.6-07 Sécurité, audit, reprise et confinement restent opérationnels à l'expiration | PASSED | test_licensing.py::test_expiry_refuses_only_the_documented_actions_and_nothing_stops test_licensing.py::test_only_two_actions_can_ever_be_refused (E-CP-LICENSING) | |
| ARCH-B12.6-08 Aucun kill switch commercial : le Kill Switch de sécurité n'est jamais utilisé pour les licences | PASSED | test_licensing.py::test_only_two_actions_can_ever_be_refused test_soc_ai_sdr.py::test_kill_switch_cancels_run_and_subagents_and_refuses_new_actions (E-CP-LICENSING, E-G06-SOC) |
Partie B, B13.1. Tables critiques du Platform Manager
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B13.1-01 Table clusters -> nm.clusters | PASSED | test_foundation.py::test_migrations_are_idempotent (E-PO-SERVER) | |
| ARCH-B13.1-02 Table nodes -> nm.hosts | PASSED | test_foundation.py::test_migrations_are_idempotent (E-PO-SERVER) | |
| ARCH-B13.1-03 Table components -> nm.cluster_services | PASSED | test_foundation.py::test_migrations_are_idempotent (E-PO-SERVER) | |
| ARCH-B13.1-04 Table component_instances -> nm.host_components | PASSED | test_foundation.py::test_migrations_are_idempotent (E-PO-SERVER) | |
| ARCH-B13.1-05 Table dependencies -> nm.connections | PASSED | test_foundation.py::test_migrations_are_idempotent (E-PO-SERVER) | |
| ARCH-B13.1-06 Table config_revisions -> nm.config_versions | PASSED | test_foundation.py::test_migrations_are_idempotent (E-PO-SERVER) | |
| ARCH-B13.1-07 Table operations -> nm.operations | PASSED | test_foundation.py::test_migrations_are_idempotent (E-PO-SERVER) | |
| ARCH-B13.1-08 Table operation_steps -> nm.stages, nm.tasks | PASSED | test_foundation.py::test_migrations_are_idempotent (E-PO-SERVER) | |
| ARCH-B13.1-09 Table health_checks -> nm.service_checks | PASSED | test_foundation.py::test_migrations_are_idempotent (E-PO-SERVER) | |
| ARCH-B13.1-10 Table compatibility_matrix -> absente | IN_PROGRESS | test_foundation.py::test_migrations_are_idempotent (E-PO-SERVER) | Pas de table compatibility_matrix : la compatibilité vient du catalogue. |
| ARCH-B13.1-11 Table desired/observed reconciled -> nm.host_components.desired_state | PASSED | test_foundation.py::test_migrations_are_idempotent (E-PO-SERVER) | |
| ARCH-B13.1-12 Table destructive actions under maintenance policy -> nm.maintenance_windows | PASSED | test_foundation.py::test_migrations_are_idempotent (E-PO-SERVER) |
Partie B, B13.2. Index d'audit et preuves indépendantes
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B13.2-01 Table d'index d'audit et magasin de preuves indépendant | PASSED | test_core_audit.py::test_chain_is_valid_and_gapless test_evidence_gateway.py::test_seal_signature_verifies_online_and_offline test_storage_profiles_api.py::test_worm_audit_export_is_qualified_on_a_verified_object_lock_profile (E-G03-AUDIT, E-G03-EVIDENCE, E-G03-WORM) | |
| ARCH-B13.2-02 Événements partitionnés par event_time, contraintes d'accès, rétention et archivage | IN_PROGRESS | test_core_audit.py::test_app_role_cannot_rewrite test_evidence_gateway.py::test_legal_hold_blocks_purge_and_release_needs_two_distinct_approvers test_siem_audit_worm.py::test_audit_worm_job_exports_each_past_day_once_signed_by_transit (E-G03-AUDIT, E-G03-EVIDENCE, E-G03-WORM) | eai.audit_events n'est pas une table partitionnée (CREATE TABLE simple, V010) : il manque le partitionnement déclaratif par event_time et la création automatique des partitions. RLS, REVOKE UPDATE/DELETE, rétention avec legal hold et archivage WORM quotidien sont prouvés. |
| ARCH-B13.2-03 event_time, ingested_at et sealed_at distincts | PASSED | test_evidence_gateway.py::test_event_time_ingested_at_sealed_at_are_distinct_and_ordered (E-G03-EVIDENCE) | |
| ARCH-B13.2-04 PostgreSQL jamais WORM : preuves dans le stockage objet qualifié, empreintes, signatures, immutabilité vérifiée | BLOCKED | test_storage_profiles_api.py::test_worm_audit_export_is_refused_without_verified_object_lock test_storage_profiles_api.py::test_worm_audit_export_is_qualified_on_a_verified_object_lock_profile test_evidence_gateway.py::test_monitor_detects_sql_tampering_of_a_sealed_event +1 (E-G03-WORM, E-G03-EVIDENCE) | Object Lock prouvé sur l'émulateur local ; la qualification sur le stockage objet réel du client demande ce stockage [B-CLIENT] |
| ARCH-B13.2-05 Champs de la table de référence (event_type, severity, identités, ids d'exécution, decision_reason, policy_revision, evidence_*, sanitized_metadata) | IN_PROGRESS | test_evidence_config_redaction.py::test_policy_decision_audited_with_id_version_reason_obligations test_evidence_config_redaction.py::test_audit_metadata_has_no_credentials_and_pii_goes_to_the_encrypted_payload (E-G03-EVIDENCE) | Les informations existent dans des colonnes jsonb (actor, resource, decision, context, evidence, attributes) mais pas sous les noms de colonnes de la référence (event_type, severity, result_status, evidence_state...) : une vue ou des colonnes d'index normalisées restent à ajouter. |
Partie B, B13.3. Registre d'état de sécurité et Kill Switch
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B13.3-01 Table detections (eai.soc_detections) | PASSED | test_soc_ai_sdr.py::test_ingestor_normalizes_and_correlator_links_user_agent_tenant test_soc_ai_sdr.py::test_soc_tables_are_tenant_isolated (E-G06-SOC) | |
| ARCH-B13.3-02 Table incidents (eai.incidents) | PASSED | test_soc_ai_sdr.py::test_incident_lifecycle_assignment_and_auditable_timeline (E-G06-SOC) | |
| ARCH-B13.3-03 Table incident_events (eai.incident_timeline) | PASSED | test_soc_ai_sdr.py::test_incident_lifecycle_assignment_and_auditable_timeline test_soc_ai_sdr.py::test_soc_roles_access_audit_and_sealed_chain_of_custody (E-G06-SOC) | |
| ARCH-B13.3-04 Table containment_orders | PASSED | test_soc_ai_sdr.py::test_typed_reactions_only_never_a_free_command test_soc_ai_sdr.py::test_proportionality_guard_in_the_platform (E-G06-SOC) | |
| ARCH-B13.3-05 Table enforcement_receipts (eai.containment_receipts) | PASSED | test_soc_ai_sdr.py::test_network_isolation_waits_for_a_signed_in_cluster_receipt (E-G06-SOC) | |
| ARCH-B13.3-06 Table recovery_requests | PASSED | test_soc_ai_sdr.py::test_recovery_needs_four_eyes_then_reauthorization (E-G06-SOC) | |
| ARCH-B13.3-07 revoked_credentials (eai.kill_switches, target_type credential) | PASSED | test_soc_ai_sdr.py::test_credentials_identity_and_tenant_suspension_refused_by_auth (E-G06-SOC) | |
| ARCH-B13.3-08 suspension_states (eai.kill_switches desired_state et observed_state) | PASSED | test_soc_ai_sdr.py::test_kill_switches_persist_across_restart test_soc_ai_sdr.py::test_credentials_identity_and_tenant_suspension_refused_by_auth (E-G06-SOC) | |
| ARCH-B13.3-09 Table playbook_runs | IN_PROGRESS | test_soc_ai_sdr.py::test_worker_runs_the_soc_scan_and_containment_verifier (E-G06-SOC) | Les playbooks sont des listes de réactions typées (soc/catalog.py) tracées par containment_orders et incident_timeline ; aucune table playbook_runs ne regroupe une exécution de playbook. |
| ARCH-B13.3-10 tenant_id + target_type + target_id protégés par contrôle de concurrence et versions | IN_PROGRESS | test_soc_ai_sdr.py::test_kill_switches_persist_across_restart test_soc_ai_sdr.py::test_retried_payment_never_executes_twice_even_when_killed_in_flight (E-G06-SOC) | L'index unique partiel kill_switches_active_target (tenant_id, reaction, target_type, target_ref) empêche deux suspensions actives, mais aucune colonne de version (verrou optimiste) n'existe sur kill_switches ni containment_orders. |
| ARCH-B13.3-11 Un ordre de confinement ne devient VERIFIED qu'après confirmation des points d'application | PASSED | test_soc_ai_sdr.py::test_verified_only_on_real_proof_and_drift_is_reapplied test_soc_ai_sdr.py::test_network_isolation_waits_for_a_signed_in_cluster_receipt (E-G06-SOC) |
Partie B, B13.4. Tables de licence et de support
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B13.4-01 license_installations (client, groupe d'installation, empreinte cluster, produit, édition, validité, digest, key id, statut, activation, dernière vérification) | IN_PROGRESS | test_licensing.py::test_dr_restore_cluster_migration_and_second_site test_licensing.py::test_history_is_paginated (E-CP-LICENSING) | Réparti entre license_installation et licenses (groupe, produit, édition, valid_until > valid_from, token_sha256, key_id, activated_at) ; il manque l'empreinte hachée du cluster, la colonne statut persistée et last_verified_at. |
| ARCH-B13.4-02 license_events | PASSED | test_licensing.py::test_history_is_paginated test_licensing.py::test_tampered_unknown_key_and_wrong_environment_are_refused_and_audited (E-CP-LICENSING) | |
| ARCH-B13.4-03 Données minimales : jamais le nombre d'utilisateurs, de prompts ou d'agents | PASSED | test_licensing.py::test_entitlements_never_count_users_agents_apps_plugins_or_use_cases test_licensing.py::test_status_is_readable_by_any_user_without_sensitive_fields (E-CP-LICENSING) |
Partie B, B13.5. Transactional Outbox et actions externes
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B13.5-01 Le changement et son événement outbox dans une seule transaction SQL | PASSED | test_evidence_gateway.py::test_rolled_back_change_leaves_no_event_and_committed_one_always_has_it (E-RB-CP) | |
| ARCH-B13.5-02 Un worker publie vers NATS JetStream | PASSED | test_evidence_gateway.py::test_gateway_publishes_to_real_jetstream_with_dedup test_worker.py::test_outbox_job_delivers_pending_events_to_triggers (E-RB-CP) | |
| ARCH-B13.5-03 Le consommateur acquitte après traitement | PASSED | test_media_worker.py::test_nats_mode_publishes_through_the_outbox_and_acks_after_processing (E-RB-CP) | |
| ARCH-B13.5-04 L'identifiant d'événement déduplique | PASSED | test_runtime_nats_jetstream.py::test_dedup_ordering_redelivery_exactly_once test_evidence_gateway.py::test_gateway_publishes_to_real_jetstream_with_dedup (E-RB-CP) | |
| ARCH-B13.5-05 Une publication non acquittée est rejouée | PASSED | test_evidence_gateway.py::test_gateway_redelivers_after_target_outage_without_loss_or_duplicate test_runtime_nats_jetstream.py::test_dedup_ordering_redelivery_exactly_once (E-RB-CP) | |
| ARCH-B13.5-06 Le service de preuve scelle et met à jour l'état | PASSED | test_evidence_gateway.py::test_seal_signature_verifies_online_and_offline test_evidence_gateway.py::test_event_time_ingested_at_sealed_at_are_distinct_and_ordered (E-RB-CP) | |
| ARCH-B13.5-07 Actions sur systèmes externes : clés d'idempotence, reçus, rapprochement, compensations | IN_PROGRESS | test_soc_ai_sdr.py::test_retried_payment_never_executes_twice_even_when_killed_in_flight test_marketplace.py::test_finance_pack_end_to_end_payments_exactly_once test_soc_ai_sdr.py::test_network_isolation_waits_for_a_signed_in_cluster_receipt (E-RB-CP) | Idempotence, reçus et rapprochement prouvés ; aucune compensation automatique (action inverse) n'est encore définie pour une action externe validée puis annulée. |
Partie B, B14. Isolation multi-tenant par couche
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B14-01 Identité (realm, organisation, groupes) | PASSED | test_core_tenancy.py::test_tenant_admin_flow test_identity_context_delegation.py:: (E-IR-IDENTITY) | |
| ARCH-B14-02 API : tenant issu du contexte authentifié | PASSED | test_core_tenancy.py::test_tenant_admin_flow (E-IR-IDENTITY) | |
| ARCH-B14-03 PostgreSQL : RLS et rôles SQL | PASSED | test_identity_context_delegation.py::test_identity_tables_are_tenant_isolated (E-IR-IDENTITY) | |
| ARCH-B14-04 Redis : préfixes et ACL | PASSED | test_core_redis.py::test_tenant_isolation_and_clear test_core_redis.py::test_acl_user_with_password_file (E-IR-ISOLATION) | |
| ARCH-B14-05 Qdrant : filtres obligatoires | PASSED | test_rag_qdrant_real.py::test_real_qdrant_two_tenants_never_leak test_rag_governance.py::test_document_acl_and_other_tenant_refused (E-IR-ISOLATION) | |
| ARCH-B14-06 Agents : contextes, permissions | PASSED | test_identity_context_delegation.py::test_run_carries_original_user_and_subagent_never_gets_wider_rights (E-IR-IDENTITY) | |
| ARCH-B14-07 MCP : identités, scopes | PASSED | test_capabilities_gateways.py::test_tool_scope_denied_and_rate_limit test_gateway_pep_untrusted.py::test_pep_mcp_denied (E-IR-ISOLATION) | |
| ARCH-B14-08 Modèles : contrôle par tenant, budgets | PASSED | test_llm_isolation.py::test_project_mode_overrides_tenant_and_internal_hosts test_llm_isolation.py::test_egress_barrier_denies_external_hosts_of_an_isolated_model (E-IR-ISOLATION) | |
| ARCH-B14-09 Stockage : chemins et buckets séparés | PASSED | test_storage_profiles_api.py::test_profile_crud_keeps_only_a_credential_reference_and_is_tenant_isolated test_storage_profiles_api.py::test_presigned_urls_need_a_verified_capability_and_respect_expiry_and_scope (E-IR-ISOLATION) | |
| ARCH-B14-10 Secrets par service, environnement, organisation | PASSED | test_identity_context_delegation.py::test_signing_key_is_read_from_the_openbao_reference_and_never_exposed (E-IR-IDENTITY) | |
| ARCH-B14-11 Kubernetes : namespaces, quotas, network policies | BLOCKED | test_platform_security_manifests.py::test_every_workload_has_a_network_policy test_platform_security_manifests.py::test_service_accounts_do_not_automount_by_default test_platform_security_manifests.py::test_static_cluster_policies (E-IR-ISOLATION) | Exige un cluster réel [B-CLUSTER] |
| ARCH-B14-12 Logs : filtrage, masquage, droits de lecture | PASSED | test_observability_stack.py::test_bootstrap_is_idempotent_and_logs_are_filtered_by_tenant test_evidence_config_redaction.py::test_secrets_and_pii_never_reach_logs (E-IR-ISOLATION) | |
| ARCH-B14-13 Audit : recherche isolée | PASSED | test_identity_context_delegation.py::test_audit_events_carry_user_workload_delegation_and_causal_ids (E-IR-IDENTITY) | |
| ARCH-B14-14 Plugins : activation par tenant | PASSED | test_llm_isolation.py::test_external_fallback_is_dropped_in_isolated_mode test_platform_security_manifests.py::test_default_deny_and_metadata_deny (E-IR-ISOLATION) | |
| ARCH-B14-15 Kill Switch à portée stricte | PASSED | test_marketplace.py::test_other_tenant_reaches_no_marketplace_resource test_marketplace.py::test_install_refuses_unapproved_or_unrequested_permissions (E-IR-ISOLATION) | |
| ARCH-B14-16 Profil d'isolation renforcée | PASSED | test_soc_ai_sdr.py::test_kill_switch_cancels_run_and_subagents_and_refuses_new_actions (E-IR-ISOLATION) |
Partie B, B14.1. Protection des secrets et des données
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B14.1-01 Intégration au gestionnaire de secrets du client | PASSED | test_platform_secrets.py::test_external_secret_conventions test_iam_kms.py::test_openbao_transit_adapter test_core_secrets_authz.py::test_secrets_write_only (E-AP-PROTECTION) | |
| ARCH-B14.1-02 DLP Presidio | PASSED | test_data_presidio_real.py::test_real_presidio_detects_banking_entities (E-AP-PROTECTION) | |
| ARCH-B14.1-03 Cryptographie Tink | PASSED | test_data_envelope_tink.py::test_ciphertext_hides_the_plaintext_and_decrypts test_data_envelope_tink.py::test_other_tenant_or_context_cannot_decrypt (E-AP-PROTECTION) | |
| ARCH-B14.1-04 Classification | PASSED | test_data_privacy.py::test_classify_and_dlp_modes (E-DM-DATA-MEDIA) | |
| ARCH-B14.1-05 Détection des PII | PASSED | test_data_privacy.py::test_builtin_recognizers_and_validators test_integration_llm_finops.py::test_iban_valid_only_by_checksum_is_detected (E-DM-DATA-MEDIA, E-AP-PROTECTION) | |
| ARCH-B14.1-06 Masquage avant l'appel LLM | PASSED | test_integration_llm_finops.py::test_tenant_rule_block_wins_over_mask_mode test_integration_llm_finops.py::test_model_response_goes_through_dlp test_quotas_dlp_realtime.py::test_adapter_file_dlp_blocks_before_call (E-AP-PROTECTION) | |
| ARCH-B14.1-07 Tokenisation réversible | PASSED | test_data_privacy.py::test_detokenize_requires_permission_and_is_audited (E-DM-DATA-MEDIA) | |
| ARCH-B14.1-08 Chiffrement avec une clé approuvée | BLOCKED | test_data_privacy.py::test_encrypt_decrypt_and_rotate test_iam_kms.py::test_pkcs11_wrap_sign_on_softhsm2 (E-DM-DATA-MEDIA, E-AP-PROTECTION) | HSM réel du client non disponible, prouvé sur SoftHSM2 [B-CLIENT] |
| ARCH-B14.1-09 Détokenisation réservée à un utilisateur autorisé | PASSED | test_data_privacy.py::test_detokenize_requires_permission_and_is_audited test_data_privacy.py::test_detokenize_denied_by_clearance_policy (E-DM-DATA-MEDIA) | |
| ARCH-B14.1-10 Refus d'un transfert externe interdit | PASSED | test_llm_isolation.py::test_egress_barrier_denies_external_hosts_of_an_isolated_model test_evidence_config_redaction.py::test_dlp_masking_and_egress_decisions_are_chained_on_the_action (E-AP-PROTECTION, E-G03-EVIDENCE) | |
| ARCH-B14.1-11 Assainissement des journaux | PASSED | test_evidence_config_redaction.py::test_secrets_and_pii_never_reach_logs test_evidence_config_redaction.py::test_span_attributes_refuse_free_text (E-G03-EVIDENCE) | |
| ARCH-B14.1-12 Rétention | PASSED | test_data_retention_lineage_prompts.py::test_retention_run_respects_legal_hold (E-DM-DATA-MEDIA) | |
| ARCH-B14.1-13 Workflow de suppression avec preuves | PASSED | test_data_retention_lineage_prompts.py::test_subject_erasure_report test_siem_audit_worm.py::test_erase_subject_reaches_opik_and_clickhouse_and_respects_hold (E-DM-DATA-MEDIA, E-G03-WORM) | |
| ARCH-B14.1-14 Coffre token vers valeur séparé des agents avec son propre contrôle d'accès | PASSED | test_data_privacy.py::test_rls_isolation_privacy_tables test_data_privacy.py::test_detokenize_denied_by_clearance_policy (E-DM-DATA-MEDIA) |
Partie B, B14.2. Séparation des responsabilités
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B14.2-01 Administrateurs techniques sans lecture automatique des documents métier | PASSED | test_iam_role_matrix.py::test_administrator_without_reader_acl_cannot_read_business_content (E-IR-IDENTITY) | |
| ARCH-B14.2-02 Un développeur ne peut pas désactiver la journalisation | PASSED | test_iam_role_matrix.py::test_developer_cannot_approve_own_change_and_auditor_cannot_decide (E-IR-IDENTITY) | |
| ARCH-B14.2-03 Droits Manager, SOC, gouvernance données et Studio séparés avec approbations | PASSED | test_iam_role_matrix.py::test_reference_roles_matrix test_iam_role_matrix.py::test_role_matrix test_iam_role_matrix.py::test_developer_cannot_approve_own_change_and_auditor_cannot_decide +1 (E-IR-IDENTITY) |
Partie B, B15.1. Scalabilité par domaine
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B15.1-01 Réplicas frontend derrière un ingress | PASSED | test_eo_scalability_helm.py::test_frontend_replicas_behind_an_ingress_with_hpa_and_pdb (E-EO-SCALING) | |
| ARCH-B15.1-02 API backend stateless mise à l'échelle horizontalement | PASSED | test_eo_scalability_helm.py::test_backend_api_is_stateless_and_scaled_horizontally (E-EO-SCALING) | |
| ARCH-B15.1-03 Workers d'agents séparés avec quotas de concurrence et KEDA | PASSED | test_eo_scalability_helm.py::test_agent_workers_are_separate_with_their_own_resources_and_keda test_platform_deploy_env.py::test_helm_worker_deployment (E-EO-SCALING) | |
| ARCH-B15.1-04 Workers Temporal par type de workflow | IN_PROGRESS | test_eo_scalability_helm.py::test_agent_workers_are_separate_with_their_own_resources_and_keda (E-EO-SCALING) | Un seul ScaledObject agent-runs-temporal sur la file des runs ; pas de Deployment de worker distinct par type de workflow (Temporal reste un adaptateur optionnel). |
| ARCH-B15.1-05 Cluster NATS JetStream avec rétention et réplication | PASSED | test_availability_local_ha.py::test_nats_jetstream_r3_member_loss test_availability_helm.py::test_data_services_ha_values (E-HB-HA) | |
| ARCH-B15.1-06 Réplicas, clés et routage LiteLLM | PASSED | test_eo_scalability_helm.py::test_litellm_replicas_scaled_with_pdb (E-EO-SCALING) | |
| ARCH-B15.1-07 Pools GPU vLLM, ordonnancement et contraintes mémoire | BLOCKED | test_eo_scalability_helm.py::test_vllm_gpu_pools_ask_gpus_memory_and_bound_gpu_memory (E-EO-SCALING) | Exécution réelle sur GPU absente ici [B-GPU] |
| ARCH-B15.1-08 Opik dimensionné avec ses dépendances | IN_PROGRESS | test_backup_engines_real.py::test_opik_coordinated_plan_and_redis_rdb_backup_restore (E-HB-BACKUP) | Pas de valeurs de dimensionnement Opik (ClickHouse, MySQL, Redis) vérifiées par test ; seul le plan coordonné de sauvegarde Opik est prouvé. |
| ARCH-B15.1-09 OpenSearch : indexation, shards et rétention | IN_PROGRESS | (E-G06-OBS) | Shards et rétention OpenSearch non vérifiés par un test de rendu dédié. |
| ARCH-B15.1-10 Prometheus dimensionné pour la cardinalité et la rétention | IN_PROGRESS | (E-G06-OBS) | Rétention et limites de cardinalité Prometheus non vérifiées par un test dédié. |
| ARCH-B15.1-11 Audit Gateway : ingestion durable et workers indépendants | PASSED | test_evidence_gateway.py (E-DO-BACKUP) | |
| ARCH-B15.1-12 PostgreSQL HA, réplication, pooling, sauvegarde | PASSED | test_availability_local_ha.py::test_postgres_streaming_failover_fencing_rejoin test_availability_local_ha.py::test_patroni_etcd_election_failover_fencing_rejoin test_availability_helm.py::test_cnpg_cluster_manifest_validates_against_pinned_crd_schema (E-HB-HA) | |
| ARCH-B15.1-13 Redis HA, limites mémoire, politique d'éviction | PASSED | test_availability_local_ha.py::test_redis_sentinel_failover test_availability_helm.py::test_data_services_ha_values (E-HB-HA) | |
| ARCH-B15.1-14 Qdrant : collections, sharding et réplication | IN_PROGRESS | (E-HB-HA) | Sharding et réplication Qdrant non prouvés par un test (Qdrant mono nœud dans les tests RAG). |
| ARCH-B15.1-15 Capacités de stockage client et SLA par fournisseur | BLOCKED | Capacités et SLA de stockage propres à chaque client et fournisseur [B-CLIENT] |
Partie B, B15.2. Matrice de disponibilité, RTO et RPO
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B15.2-01 Critical Security (autorisation, délégation, Kill Switch, audit critique : HA et fail closed) | PASSED | test_soc_ai_sdr.py::test_alerting_and_policy_engine_outage_never_weaken_enforcement test_availability_helm.py::test_ha_profile_replicas_pdb_spread_antiaffinity_probes_shutdown (E-G06-SOC, E-HB-HA) | |
| ARCH-B15.2-02 Critical Runtime (agent gateway, LiteLLM, MCP gateway : redondance) | PASSED | test_eo_scalability_helm.py::test_litellm_replicas_scaled_with_pdb test_eo_scalability_helm.py::test_backend_api_is_stateless_and_scaled_horizontally (E-EO-SCALING) | |
| ARCH-B15.2-03 Critical Data (PostgreSQL, stockage de preuves : sauvegardes validées et restauration) | IN_PROGRESS | test_backup_recovery.py::test_artifact_checksum_encryption_and_corruption_detected test_backup_dr_extended.py::test_periodic_restore_test_signed_report_and_alarm_on_corruption (E-HB-BACKUP) | BACK-010 : restauration réelle des traces Opik (ClickHouse, MySQL aux versions épinglées) non rejouée ; les binaires officiels statiques peuvent tourner sans privilège ici mais ne sont pas encore téléchargés et câblés. BACK-012 bloqué [B-DOCKER]. |
| ARCH-B15.2-04 Operations (Manager, configuration, workflows) | PASSED | test_backup_dr_extended.py::test_manager_rebuilt_from_bundle_and_backups_keeps_audit_identities_permissions test_backup_dr_extended.py::test_recovery_dag_runs_local_processes_in_dependency_order (E-HB-BACKUP) | |
| ARCH-B15.2-05 Observability (mise en tampon sans perte critique) | IN_PROGRESS | (E-G06-OBS) | Tampon du collecteur OTel (file persistante) non prouvé par un test de perte réseau. |
| ARCH-B15.2-06 Developer Tools (marketplace, studio, documentation) | PASSED | (E-CP-MARKETPLACE, E-DO-DOCS) | |
| ARCH-B15.2-07 RTO et RPO définis avec chaque client, jamais une valeur unique imposée | PASSED | test_backup_recovery.py::test_dr_plan_targets_empty_by_default_and_exercise_measured test_backup_dr_extended.py::test_dr_targets_set_by_client_traffic_model_and_health_checks (E-HB-BACKUP) |
Partie B, B15.3. Upgrade et rollback
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B15.3-01 Mise à niveau : Analyse | PASSED | test_lifecycle_upgrades.py::test_upgrade_compatibility_refusals (E-ID-LIFECYCLE) | |
| ARCH-B15.3-02 Mise à niveau : Simulation | PASSED | test_lifecycle_upgrades.py::test_upgrade_compatibility_refusals (E-ID-LIFECYCLE) | |
| ARCH-B15.3-03 Mise à niveau : Préparation (sauvegarde) | PASSED | test_lifecycle_upgrades.py::test_stateful_upgrade_backup_migration_refused_rollback_and_restore (E-ID-LIFECYCLE) | |
| ARCH-B15.3-04 Mise à niveau : Prévalidation | PASSED | test_lifecycle_upgrades.py::test_upgrade_compatibility_refusals (E-ID-LIFECYCLE) | |
| ARCH-B15.3-05 Mise à niveau : Déploiement | PASSED | test_lifecycle_upgrades.py::test_stateless_upgrade_with_canary_then_rollback (E-ID-LIFECYCLE) | |
| ARCH-B15.3-06 Mise à niveau : Validation | PASSED | test_lifecycle_upgrades.py::test_stateless_upgrade_with_canary_then_rollback (E-ID-LIFECYCLE) | |
| ARCH-B15.3-07 Mise à niveau : Surveillance | PASSED | test_lifecycle_upgrades.py::test_stateless_upgrade_with_canary_then_rollback (E-ID-LIFECYCLE) | |
| ARCH-B15.3-08 Mise à niveau : Rollback | PASSED | test_lifecycle_upgrades.py::test_stateless_upgrade_with_canary_then_rollback (E-ID-LIFECYCLE) | |
| ARCH-B15.3-09 Mise à niveau : Audit | PASSED | test_lifecycle_upgrades.py::test_stateless_upgrade_with_canary_then_rollback (E-ID-LIFECYCLE) | |
| ARCH-B15.3-10 Mise à niveau : Migrations irréversibles signalées, restauration imposée | PASSED | test_lifecycle_upgrades.py::test_stateful_upgrade_backup_migration_refused_rollback_and_restore (E-ID-LIFECYCLE) |
Partie B, B16.1. Installation du plugin Finance chez une banque
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B16.1-01 Sélection du pack Finance dans la marketplace | PASSED | test_marketplace.py::test_finance_pack_end_to_end_payments_exactly_once (E-BP-PACKS-MARKETPLACE, E-BP-FINANCE-FLOW) | |
| ARCH-B16.1-02 Validation version, signature, SBOM et compatibilité | PASSED | test_marketplace.py::test_unsigned_tampered_or_untrusted_pack_is_refused test_marketplace.py::test_publication_fails_when_a_gate_input_is_missing test_marketplace.py::test_version_ranges (E-BP-PACKS-MARKETPLACE, E-BP-FINANCE-FLOW) | |
| ARCH-B16.1-03 OpenFGA et OPA déterminent les autorisations nécessaires | PASSED | test_marketplace.py::test_finance_pack_end_to_end_payments_exactly_once test_identity_context_delegation.py::test_opa_decision_is_taken_before_each_action_with_the_original_user (E-BP-PACKS-MARKETPLACE, E-BP-FINANCE-FLOW) | |
| ARCH-B16.1-04 Approbation de l'installation et des accès par les responsables autorisés | PASSED | test_marketplace.py::test_finance_pack_end_to_end_payments_exactly_once test_marketplace.py::test_production_publication_needs_gates_and_four_eyes (E-BP-PACKS-MARKETPLACE, E-BP-FINANCE-FLOW) | |
| ARCH-B16.1-05 Connecteurs ERP, stockage et sources configurés | IN_PROGRESS | test_marketplace.py::test_finance_pack_end_to_end_payments_exactly_once (E-BP-PACKS-MARKETPLACE, E-BP-FINANCE-FLOW) | Prouvé par brique ; pas encore rejoué dans un test unique de bout en bout du pack Finance. |
| ARCH-B16.1-06 Identifiants référencés dans le coffre du client | PASSED | test_business_packs.py::test_pack_is_complete_and_holds_no_credential test_llm_registry.py::test_provider_crud_credentials_write_only (E-BP-PACKS-MARKETPLACE, E-BP-FINANCE-FLOW) | |
| ARCH-B16.1-07 Modèles autorisés choisis dans le registre | IN_PROGRESS | test_llm_registry.py::test_model_registry_and_status (E-BP-PACKS-MARKETPLACE, E-BP-FINANCE-FLOW) | Prouvé par brique ; pas encore rejoué dans un test unique de bout en bout du pack Finance. |
| ARCH-B16.1-08 Documents financiers ingérés avec leurs ACL | IN_PROGRESS | test_rag_governance.py::test_source_permission_checked_before_ingestion test_rag_governance.py::test_document_acl_and_other_tenant_refused (E-BP-PACKS-MARKETPLACE, E-BP-FINANCE-FLOW) | Prouvé par brique ; pas encore rejoué dans un test unique de bout en bout du pack Finance. |
| ARCH-B16.1-09 Tests de validation (SDK, sécurité, masquage, qualité, permissions) | PASSED | test_marketplace.py::test_publication_fails_on_failed_tests_evaluations_or_vulnerabilities test_evidence_config_redaction.py::test_dlp_masking_and_egress_decisions_are_chained_on_the_action (E-BP-PACKS-MARKETPLACE, E-BP-FINANCE-FLOW) | |
| ARCH-B16.1-10 Activation des agents et outils approuvés | PASSED | test_marketplace.py::test_finance_pack_end_to_end_payments_exactly_once (E-BP-PACKS-MARKETPLACE, E-BP-FINANCE-FLOW) | |
| ARCH-B16.1-11 Exploitation : supervision, audit, budgets, Kill Switch actif | IN_PROGRESS | test_finops_usage.py::test_summary_group_by_and_budget_alerts test_soc_ai_sdr.py::test_kill_switch_cancels_run_and_subagents_and_refuses_new_actions test_marketplace.py::test_upgrade_rollback_and_uninstall (E-BP-PACKS-MARKETPLACE, E-BP-FINANCE-FLOW) | Prouvé par brique ; pas encore rejoué dans un test unique de bout en bout du pack Finance. |
Partie B, B16.2. Utilisation du plugin Finance de bout en bout
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B16.2-01 Utilisateur finance connecté par SSO Keycloak | IN_PROGRESS | test_iam_keycloak_real.py::test_pkce_login_token_accepted_refresh_and_logout (E-BP-PACKS-MARKETPLACE, E-BP-FINANCE-FLOW) | Prouvé par brique ; pas encore rejoué dans un test unique de bout en bout du pack Finance. |
| ARCH-B16.2-02 L'agent hérite de l'identité avec un contexte signé et des permissions limitées | PASSED | test_identity_context_delegation.py::test_restricted_delegation_is_always_narrower_and_revocation_cascades test_marketplace.py::test_finance_pack_end_to_end_payments_exactly_once (E-BP-PACKS-MARKETPLACE, E-BP-FINANCE-FLOW) | |
| ARCH-B16.2-03 OpenFGA + OPA par action | PASSED | test_identity_context_delegation.py::test_opa_decision_is_taken_before_each_action_with_the_original_user (E-BP-PACKS-MARKETPLACE, E-BP-FINANCE-FLOW) | |
| ARCH-B16.2-04 MCP Finance lit l'ERP dans les transactions autorisées | PASSED | test_marketplace.py::test_finance_pack_end_to_end_payments_exactly_once (E-BP-PACKS-MARKETPLACE, E-BP-FINANCE-FLOW) | |
| ARCH-B16.2-05 RAG Finance ne renvoie que les documents lisibles par l'utilisateur | IN_PROGRESS | test_rag_governance.py::test_chunk_acl_forbidden_fragments_never_reach_the_context (E-BP-PACKS-MARKETPLACE, E-BP-FINANCE-FLOW) | Prouvé par brique ; pas encore rejoué dans un test unique de bout en bout du pack Finance. |
| ARCH-B16.2-06 Protection des données Presidio + Tink | IN_PROGRESS | test_data_presidio_real.py::test_real_presidio_detects_banking_entities test_rag_governance.py::test_restricted_chunks_are_sealed_at_rest (E-BP-PACKS-MARKETPLACE, E-BP-FINANCE-FLOW) | Prouvé par brique ; pas encore rejoué dans un test unique de bout en bout du pack Finance. |
| ARCH-B16.2-07 LiteLLM vers un modèle approuvé (fournisseur de test compatible OpenAI) | PASSED | test_integration_llm_finops.py::test_tenant_rule_block_wins_over_mask_mode test_llm_gateway.py::test_control_kill_switch (E-BP-PACKS-MARKETPLACE, E-BP-FINANCE-FLOW) | |
| ARCH-B16.2-08 Génération de rapport avec contrôle de sortie | IN_PROGRESS | test_security_prompt_injection.py::test_output_guard_rules (E-BP-PACKS-MARKETPLACE, E-BP-FINANCE-FLOW) | Prouvé par brique ; pas encore rejoué dans un test unique de bout en bout du pack Finance. |
| ARCH-B16.2-09 Audit + Opik + OpenTelemetry avec utilisateur, agent, données, autorisations, résultat et coût | IN_PROGRESS | test_opik_integration.py::test_opik_down_keeps_postgres_copy_and_audit_event test_tracing.py::test_gateway_call_produces_linked_spans_without_personal_data (E-BP-PACKS-MARKETPLACE, E-BP-FINANCE-FLOW) | Prouvé par brique ; pas encore rejoué dans un test unique de bout en bout du pack Finance. |
| ARCH-B16.2-10 Écriture ERP soumise à sa propre autorisation et, si requis, à une approbation humaine | PASSED | test_marketplace.py::test_finance_pack_end_to_end_payments_exactly_once (E-BP-PACKS-MARKETPLACE, E-BP-FINANCE-FLOW) | |
| ARCH-B16.2-11 L'administrateur retrouve toute l'exécution | IN_PROGRESS | test_identity_context_delegation.py::test_audit_events_carry_user_workload_delegation_and_causal_ids test_marketplace.py::test_upgrade_rollback_and_uninstall (E-BP-PACKS-MARKETPLACE, E-BP-FINANCE-FLOW) | Prouvé par brique ; pas encore rejoué dans un test unique de bout en bout du pack Finance. |
Partie B, B17. Plan de développement par lots
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B17-01 Lot 0 Foundations : statut face à son critère de fin | PASSED | test_foundation_lot_plan.py::test_kit_section_16_lots_are_the_roadmap_lots test_foundation_lot_plan.py::test_dependencies_are_known_acyclic_and_the_lot_order_is_a_valid_schedule test_kit_traceability.py (E-FL-LOTPLAN, E-TRACE) | |
| ARCH-B17-02 Lot 1 Platform Manager : statut face à son critère de fin | PASSED | test_foundation_lot_plan.py::test_kit_section_16_lots_are_the_roadmap_lots test_foundation_lot_plan.py::test_dependencies_are_known_acyclic_and_the_lot_order_is_a_valid_schedule test_kit_traceability.py (E-FL-LOTPLAN, E-TRACE) | |
| ARCH-B17-03 Lot 2 IAM & Governance : statut face à son critère de fin | PASSED | test_foundation_lot_plan.py::test_kit_section_16_lots_are_the_roadmap_lots test_foundation_lot_plan.py::test_dependencies_are_known_acyclic_and_the_lot_order_is_a_valid_schedule test_kit_traceability.py (E-FL-LOTPLAN, E-TRACE) | |
| ARCH-B17-04 Lot 3 AI Runtime : statut face à son critère de fin | PASSED | test_foundation_lot_plan.py::test_kit_section_16_lots_are_the_roadmap_lots test_foundation_lot_plan.py::test_dependencies_are_known_acyclic_and_the_lot_order_is_a_valid_schedule test_kit_traceability.py (E-FL-LOTPLAN, E-TRACE) | |
| ARCH-B17-05 Lot 4 Data Protection : statut face à son critère de fin | PASSED | test_foundation_lot_plan.py::test_kit_section_16_lots_are_the_roadmap_lots test_foundation_lot_plan.py::test_dependencies_are_known_acyclic_and_the_lot_order_is_a_valid_schedule test_kit_traceability.py (E-FL-LOTPLAN, E-TRACE) | |
| ARCH-B17-06 Lot 5 Observability : statut face à son critère de fin | PASSED | test_foundation_lot_plan.py::test_kit_section_16_lots_are_the_roadmap_lots test_foundation_lot_plan.py::test_dependencies_are_known_acyclic_and_the_lot_order_is_a_valid_schedule test_kit_traceability.py (E-FL-LOTPLAN, E-TRACE) | |
| ARCH-B17-07 Lot 6 Audit & SOC : statut face à son critère de fin | PASSED | test_foundation_lot_plan.py::test_kit_section_16_lots_are_the_roadmap_lots test_foundation_lot_plan.py::test_dependencies_are_known_acyclic_and_the_lot_order_is_a_valid_schedule test_kit_traceability.py (E-FL-LOTPLAN, E-TRACE) | |
| ARCH-B17-08 Lot 7 Developer Platform : statut face à son critère de fin | PASSED | test_foundation_lot_plan.py::test_kit_section_16_lots_are_the_roadmap_lots test_foundation_lot_plan.py::test_dependencies_are_known_acyclic_and_the_lot_order_is_a_valid_schedule test_kit_traceability.py (E-FL-LOTPLAN, E-TRACE) | |
| ARCH-B17-09 Lot 8 Marketplace : statut face à son critère de fin | PASSED | test_foundation_lot_plan.py::test_kit_section_16_lots_are_the_roadmap_lots test_foundation_lot_plan.py::test_dependencies_are_known_acyclic_and_the_lot_order_is_a_valid_schedule test_kit_traceability.py (E-FL-LOTPLAN, E-TRACE) | |
| ARCH-B17-10 Lot 9 Enterprise Licensing : statut face à son critère de fin | PASSED | test_foundation_lot_plan.py::test_kit_section_16_lots_are_the_roadmap_lots test_foundation_lot_plan.py::test_dependencies_are_known_acyclic_and_the_lot_order_is_a_valid_schedule test_kit_traceability.py (E-FL-LOTPLAN, E-TRACE) | |
| ARCH-B17-11 Lot 10 Enterprise Readiness : statut face à son critère de fin | PASSED | test_foundation_lot_plan.py::test_kit_section_16_lots_are_the_roadmap_lots test_foundation_lot_plan.py::test_dependencies_are_known_acyclic_and_the_lot_order_is_a_valid_schedule test_kit_traceability.py (E-FL-LOTPLAN, E-TRACE) | |
| ARCH-B17-12 Sécurité et audit développés en parallèle du runtime | PASSED | test_foundation_lot_plan.py::test_dependencies_are_known_acyclic_and_the_lot_order_is_a_valid_schedule (E-FL-LOTPLAN) |
Partie B, B17.1. Monorepo produit
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B17.1-01 Dossier cible apps | PASSED | test_architecture_decisions.py::test_monorepo_map_paths_exist (E-ID-ARCH) | |
| ARCH-B17.1-02 Dossier cible backend | PASSED | test_architecture_decisions.py::test_monorepo_map_paths_exist (E-ID-ARCH) | |
| ARCH-B17.1-03 Dossier cible services | PASSED | test_architecture_decisions.py::test_monorepo_map_paths_exist (E-ID-ARCH) | |
| ARCH-B17.1-04 Dossier cible operators | PASSED | test_architecture_decisions.py::test_monorepo_map_paths_exist (E-ID-ARCH) | |
| ARCH-B17.1-05 Dossier cible sdk | PASSED | test_architecture_decisions.py::test_monorepo_map_paths_exist (E-ID-ARCH) | |
| ARCH-B17.1-06 Dossier cible cli | PASSED | test_architecture_decisions.py::test_monorepo_map_paths_exist (E-ID-ARCH) | |
| ARCH-B17.1-07 Dossier cible plugins | PASSED | test_architecture_decisions.py::test_monorepo_map_paths_exist (E-ID-ARCH) | |
| ARCH-B17.1-08 Dossier cible policies | PASSED | test_architecture_decisions.py::test_monorepo_map_paths_exist (E-ID-ARCH) | |
| ARCH-B17.1-09 Dossier cible deployment | PASSED | test_architecture_decisions.py::test_monorepo_map_paths_exist (E-ID-ARCH) | |
| ARCH-B17.1-10 Dossier cible database | PASSED | test_architecture_decisions.py::test_monorepo_map_paths_exist (E-ID-ARCH) | |
| ARCH-B17.1-11 Dossier cible docs | PASSED | test_architecture_decisions.py::test_monorepo_map_paths_exist (E-ID-ARCH) | |
| ARCH-B17.1-12 Dossier cible tests | PASSED | test_architecture_decisions.py::test_monorepo_map_paths_exist (E-ID-ARCH) | |
| ARCH-B17.1-13 Dossier cible release | PASSED | test_architecture_decisions.py::test_monorepo_map_paths_exist (E-ID-ARCH) |
Partie B, B17.2. Tests de recette obligatoires avant livraison
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B17.2-01 Installation neuve reproductible | PASSED | test_release_bundle.py::test_bundle_is_reproducible (E-DO-AIRGAP, E-DO-INSTALL) | |
| ARCH-B17.2-02 Air-gap | PASSED | test_release_bundle.py::test_airgapped_install_in_empty_network_namespace (E-DO-AIRGAP) | |
| ARCH-B17.2-03 Configuration validée, versionnée et auditable | IN_PROGRESS | test_platform_deploy_env.py::test_deploy_values_are_valid_settings (E-DO-INSTALL) | Versionnement et audit de la configuration prouvés côté Manager (lot C01), à citer. |
| ARCH-B17.2-04 Démarrage, arrêt et redémarrage contrôlés et observables | IN_PROGRESS | test_availability_helm.py::test_ha_profile_replicas_pdb_spread_antiaffinity_probes_shutdown (E-HB-HA) | Opérations de service du Manager prouvées par le lot C01, à citer. |
| ARCH-B17.2-05 Upgrade avec restauration documentée | PASSED | test_backup_recovery.py::test_restore_incompatible_major_and_rollback_on_corruption (E-HB-BACKUP) | |
| ARCH-B17.2-06 IAM (SSO, MFA, rôles, sessions) | PASSED | test_iam_keycloak_real.py test_iam_role_matrix.py (E-CP-IAM-REAL) | |
| ARCH-B17.2-07 Permissions OpenFGA/OPA avec refus prouvés | PASSED | test_iam_openfga_real.py test_iam_opa_bundles_real.py (E-CP-IAM-REAL, E-CP-AUTHZ) | |
| ARCH-B17.2-08 Identité de l'agent propagée sur chaque action | PASSED | test_identity_context_delegation.py (E-CP-CONTEXT) | |
| ARCH-B17.2-09 Isolation des tenants | PASSED | test_core_rls_forced.py test_soc_ai_sdr.py::test_soc_routes_refuse_other_tenant_ids (E-CP-RLS, E-G06-SOC) | |
| ARCH-B17.2-10 Sécurité MCP impossible à contourner | PASSED | test_capabilities_gateways.py test_security_egress_wiring.py (E-CP-CAPS) | |
| ARCH-B17.2-11 DLP | PASSED | test_soc_ai_sdr.py::test_secret_is_blocked_before_export test_evidence_config_redaction.py (E-G06-SOC, E-DO-REDACTION) | |
| ARCH-B17.2-12 Sécurité RAG | PASSED | test_rag_governance.py test_soc_ai_sdr.py::test_rag_poisoning_isolates_the_knowledge_base (E-CP-RAG-KIT, E-G06-SOC) | |
| ARCH-B17.2-13 Audit complet et vérifiable | PASSED | test_core_audit.py test_audit_mutation_coverage.py (E-CP-AUDIT) | |
| ARCH-B17.2-14 Traces Opik/OTel, tokens, coûts et latence corrélés | PASSED | test_tracing.py test_observability_signals.py (E-CP-OBS) | |
| ARCH-B17.2-15 Détection et investigation SOC | PASSED | test_soc_ai_sdr.py::test_ingestor_normalizes_and_correlator_links_user_agent_tenant test_soc_ai_sdr.py::test_soc_roles_access_audit_and_sealed_chain_of_custody (E-G06-SOC) | |
| ARCH-B17.2-16 Kill Switch effectif sans reprise non autorisée | PASSED | test_soc_ai_sdr.py::test_kill_switch_cancels_run_and_subagents_and_refuses_new_actions test_soc_ai_sdr.py::test_recovery_needs_four_eyes_then_reauthorization (E-G06-SOC) | |
| ARCH-B17.2-17 Reprise contrôlée et journalisée | PASSED | test_soc_ai_sdr.py::test_emergency_lockdown_blocks_everything_but_soc_and_recovers test_backup_recovery.py::test_restore_needs_two_distinct_approvers_and_separate_privilege (E-G06-SOC, E-HB-BACKUP) | |
| ARCH-B17.2-18 Scalabilité face aux objectifs client | BLOCKED | test_eo_scalability_helm.py::test_backend_api_is_stateless_and_scaled_horizontally test_perf_measurements.py::test_every_scenario_has_coherent_metrics (E-EO-SCALING, E-DO-PERF) | La tenue en charge réelle face aux objectifs client demande un cluster [B-CLUSTER] |
| ARCH-B17.2-19 Sauvegarde et restauration démontrées | PASSED | test_recovery_postgres_real.py test_backup_dr_extended.py::test_periodic_restore_test_signed_report_and_alarm_on_corruption (E-HB-BACKUP) | |
| ARCH-B17.2-20 Marketplace de plugins : installation, permissions, mise à jour, rollback | PASSED | test_marketplace.py (E-CP-MARKETPLACE) | |
| ARCH-B17.2-21 Conformité des SDK dans chaque langage | IN_PROGRESS | tests (E-CONTRACTS, E-DO-SDK-SNIPPETS) | Contrats et SDK Python prouvés ici ; TypeScript, Go et Java sont prouvés par les ensembles E-SDK-TS, E-SDK-GO et E-SDK-JAVA du lot C06. |
| ARCH-B17.2-22 Licences annuelle, triennale et hors ligne | PASSED | test_licensing.py::test_annual_and_triennial_licences_activate_online test_licensing.py::test_offline_issuance_and_file_activation_without_network (E-CP-LICENSING) | |
| ARCH-B17.2-23 Procédures de documentation exécutables et vérifiées | PASSED | test_docs_kit.py::test_python_modules_quoted_in_the_docs_exist_and_answer_help test_docs_kit.py::test_routes_quoted_in_the_guides_exist_in_the_published_api (E-DO-DOCS) |
Partie B, B18. Différenciation, exigences non négociables et version de distribution
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B18-01 Installation assistée | PASSED | test_services_install.py::test_provider_and_consumer_install_end_to_end (E-ID-LIFECYCLE) | |
| ARCH-B18-02 Configuration centralisée versionnée | IN_PROGRESS | Preuve portée par le lot propriétaire (C03 à C10) ; à citer quand son jeu est vert | |
| ARCH-B18-03 Portail unifié | IN_PROGRESS | Preuve portée par le lot propriétaire (C03 à C10) ; à citer quand son jeu est vert | |
| ARCH-B18-04 SDK standard | IN_PROGRESS | Preuve portée par le lot propriétaire (C03 à C10) ; à citer quand son jeu est vert | |
| ARCH-B18-05 Contrôles fournis et testés | IN_PROGRESS | Preuve portée par le lot propriétaire (C03 à C10) ; à citer quand son jeu est vert | |
| ARCH-B18-06 Marketplace de packs signés | IN_PROGRESS | Preuve portée par le lot propriétaire (C03 à C10) ; à citer quand son jeu est vert | |
| ARCH-B18-07 OpenFGA, OPA et contexte utilisateur | IN_PROGRESS | Preuve portée par le lot propriétaire (C03 à C10) ; à citer quand son jeu est vert | |
| ARCH-B18-08 Execution Explorer et audit corrélé | IN_PROGRESS | Preuve portée par le lot propriétaire (C03 à C10) ; à citer quand son jeu est vert | |
| ARCH-B18-09 SOC, playbooks, Kill Switch | IN_PROGRESS | Preuve portée par le lot propriétaire (C03 à C10) ; à citer quand son jeu est vert | |
| ARCH-B18-10 Gestion des versions et dépendances | PASSED | test_lifecycle_upgrades.py::test_upgrade_compatibility_refusals (E-ID-LIFECYCLE) | |
| ARCH-B18-11 Documentation versionnée | IN_PROGRESS | Preuve portée par le lot propriétaire (C03 à C10) ; à citer quand son jeu est vert | |
| ARCH-B18-12 Diagnostics et bundle de support | PASSED | test_lifecycle_bundle_acceptance.py::test_support_bundle_has_no_secret_and_no_personal_data (E-ID-LIFECYCLE) | |
| ARCH-B18-13 Catalogue unique de composants | PASSED | test_architecture_decisions.py::test_governance_llm_observability_components_are_catalogued (E-ID-ARCH) | |
| ARCH-B18-14 Registre central des agents | IN_PROGRESS | Preuve portée par le lot propriétaire (C03 à C10) ; à citer quand son jeu est vert | |
| ARCH-B18-15 Autorisation centralisée | IN_PROGRESS | Preuve portée par le lot propriétaire (C03 à C10) ; à citer quand son jeu est vert | |
| ARCH-B18-16 Audit indépendant | IN_PROGRESS | Preuve portée par le lot propriétaire (C03 à C10) ; à citer quand son jeu est vert | |
| ARCH-B18-17 SDK commun documenté testé | IN_PROGRESS | Preuve portée par le lot propriétaire (C03 à C10) ; à citer quand son jeu est vert | |
| ARCH-B18-18 Release de distribution figée | IN_PROGRESS | Preuve portée par le lot propriétaire (C03 à C10) ; à citer quand son jeu est vert |
Partie B, B19. L'agent porte l'identité de l'utilisateur
| Élément | Statut | Preuve | Reste ou blocage |
|---|---|---|---|
| ARCH-B19-01 Champ tenant_id porté par l'agent | PASSED | test_identity_context_delegation.py::test_context_is_signed_verified_and_matches_the_contract test_identity_context_delegation.py::test_audit_events_carry_user_workload_delegation_and_causal_ids (E-IR-IDENTITY) | |
| ARCH-B19-02 Champ user_id porté par l'agent | PASSED | test_identity_context_delegation.py::test_context_is_signed_verified_and_matches_the_contract test_identity_context_delegation.py::test_audit_events_carry_user_workload_delegation_and_causal_ids (E-IR-IDENTITY) | |
| ARCH-B19-03 Champ on_behalf_of porté par l'agent | PASSED | test_identity_context_delegation.py::test_context_is_signed_verified_and_matches_the_contract test_identity_context_delegation.py::test_audit_events_carry_user_workload_delegation_and_causal_ids (E-IR-IDENTITY) | |
| ARCH-B19-04 Champ agent_id porté par l'agent | PASSED | test_identity_context_delegation.py::test_context_is_signed_verified_and_matches_the_contract test_identity_context_delegation.py::test_audit_events_carry_user_workload_delegation_and_causal_ids (E-IR-IDENTITY) | |
| ARCH-B19-05 Champ agent_version porté par l'agent | PASSED | test_identity_context_delegation.py::test_context_is_signed_verified_and_matches_the_contract test_identity_context_delegation.py::test_audit_events_carry_user_workload_delegation_and_causal_ids (E-IR-IDENTITY) | |
| ARCH-B19-06 Champ subagent_id porté par l'agent | PASSED | test_identity_context_delegation.py::test_context_is_signed_verified_and_matches_the_contract test_identity_context_delegation.py::test_audit_events_carry_user_workload_delegation_and_causal_ids (E-IR-IDENTITY) | |
| ARCH-B19-07 Champ workload_identity porté par l'agent | PASSED | test_identity_context_delegation.py::test_context_is_signed_verified_and_matches_the_contract test_identity_context_delegation.py::test_audit_events_carry_user_workload_delegation_and_causal_ids (E-IR-IDENTITY) | |
| ARCH-B19-08 Champ delegation_id porté par l'agent | PASSED | test_identity_context_delegation.py::test_context_is_signed_verified_and_matches_the_contract test_identity_context_delegation.py::test_audit_events_carry_user_workload_delegation_and_causal_ids (E-IR-IDENTITY) | |
| ARCH-B19-09 Champ delegated_scopes porté par l'agent | PASSED | test_identity_context_delegation.py::test_context_is_signed_verified_and_matches_the_contract test_identity_context_delegation.py::test_audit_events_carry_user_workload_delegation_and_causal_ids (E-IR-IDENTITY) | |
| ARCH-B19-10 Champ session_id porté par l'agent | PASSED | test_identity_context_delegation.py::test_context_is_signed_verified_and_matches_the_contract test_identity_context_delegation.py::test_audit_events_carry_user_workload_delegation_and_causal_ids (E-IR-IDENTITY) | |
| ARCH-B19-11 Champ execution_id porté par l'agent | PASSED | test_identity_context_delegation.py::test_context_is_signed_verified_and_matches_the_contract test_identity_context_delegation.py::test_audit_events_carry_user_workload_delegation_and_causal_ids (E-IR-IDENTITY) | |
| ARCH-B19-12 Champ trace_id porté par l'agent | PASSED | test_identity_context_delegation.py::test_context_is_signed_verified_and_matches_the_contract test_identity_context_delegation.py::test_audit_events_carry_user_workload_delegation_and_causal_ids (E-IR-IDENTITY) | |
| ARCH-B19-13 Champ policy_revision porté par l'agent | PASSED | test_identity_context_delegation.py::test_context_is_signed_verified_and_matches_the_contract test_identity_context_delegation.py::test_audit_events_carry_user_workload_delegation_and_causal_ids (E-IR-IDENTITY) | |
| ARCH-B19-14 Champ security_state porté par l'agent | PASSED | test_identity_context_delegation.py::test_context_is_signed_verified_and_matches_the_contract test_identity_context_delegation.py::test_audit_events_carry_user_workload_delegation_and_causal_ids (E-IR-IDENTITY) | |
| ARCH-B19-15 Droits effectifs = intersection | PASSED | test_identity_context_delegation.py::test_pattern_algebra_never_widens (E-IR-IDENTITY) | |
| ARCH-B19-16 Pas de compte technique privilégié pour l'agent | PASSED | test_identity_context_delegation.py::test_opa_decision_is_taken_before_each_action_with_the_original_user (E-IR-IDENTITY) | |
| ARCH-B19-17 Connecteur sécurisé applique les droits de l'utilisateur | PASSED | test_connector_on_behalf_of.py::test_connector_enforces_user_right_on_technical_credential (E-IR-IDENTITY) | |
| ARCH-B19-18 Workflows planifiés avec mandat limité | PASSED | test_identity_context_delegation.py::test_scheduled_run_needs_an_approved_mandate_bound_to_a_service_identity (E-IR-IDENTITY) | |
| ARCH-B19-19 Règle centrale de bout en bout | PASSED | test_identity_context_delegation.py::test_run_carries_original_user_and_subagent_never_gets_wider_rights (E-IR-IDENTITY) |