Projet Elena

Cahier des charges · CONFORMITY

Conformité relue et limites de réalisation

Dernière modification du document source :

Date déclarée dans le document :

Document de référence présenté dans son intégralité. Le cahier des charges décrit le périmètre prévu ; il ne constitue pas une preuve de recette.

Objet

Ce document définit la vue descendante TEC / VER vers les preuves de réalisation dans les dépôts produit. Il ne crée aucune prescription : les sources normatives restent les chapitres techniques et la matrice générée.

État de suivi

Les prescriptions et obligations publiées sont suivies lorsqu’une preuve de réalisation a été inspectée. L’absence de ligne ne vaut ni conformité ni non-conformité : elle signifie que la réalisation n’a pas encore été évaluée dans ce registre.

Les références de réalisation seront ajoutées au fil des traductions techniques. Une référence vers un ADR, un test, une procédure ou du code est informative : elle prouve un état observé sans devenir la source de la prescription.

Séquençage à reprendre dans le plan d’action et d’implémentation

Cette vue reprend DEC-0060 et DEC-0061 ; elle ne crée pas de tickets, de calendrier ni de preuve de réalisation. Les responsables et jalons précis sont à affecter dans le plan.

Sujet Phase actuelle Passe différée Preuves de clôture
Tests instables — TEC-OPS-012 Identifier par tag, conserver résultats et motif, inscrire la reprise au plan Corriger dans un second temps selon le séquençage du plan VER-OPS-014 : stabilité démontrée, tag retiré, dette suivie sans faux résultat vert
Idempotence commune REST — TEC-INT-006 Documenter la cible extensible ; pas d’implémentation générique immédiate ni activation par défaut ; conserver les protections spécifiques existantes Après le gros de l’implémentation API : inventorier usages/risques, préciser les contrats, implémenter et qualifier, activer explicitement par commande VER-OPS-015 : preuves de concurrence, panne, droits et activation ; la planification seule ne vaut pas livraison

Ces reports ne suppriment pas les preuves obligatoires à un jalon déjà prescrit et ne reportent pas la sûreté des reprises de jobs ou des effets obligatoires.

Exception DEC-0248 : convertQuotation requiert réalisation et qualification du contrat commun dès le Lot 0, registre propriétaire Sales, selon TEC-INT-006 et le contrat Sales. VER-OPS-015 et VER-FCT-026 sont des prérequis de livraison ciblée ; la passe générale reste différée pour les autres commandes. Paramètres de clé, empreinte et conservation à qualifier ; aucune activation ni recette produit acquise.

Format cible

Prescription Vérification Dépôt Référence de réalisation État Preuve relue le
TEC-SEC-001 VER-SEC-001 elena 13504323, compose.dev.yaml (instance postgres-audit, stockage objet rustfs-audit dédié, identité de traitement d’audit, identifiant de déploiement), docker/rustfs/audit-archive.policy.json, database/schema/01-provision-audit.sql, bin/verify-audit-isolation, tests/tooling/dev-compose-contract.test.mjs : séparation locale du métier et de l’audit conforme ; essai croisé entre deux projets de sociétés non rejoué dans cette relecture ; qualification et production différées partiel 2026-09-21
TEC-SEC-003 VER-SEC-003, VER-SEC-006 elena 13504323, Modules/Foundation/app/Audit/{AuditHasher,AuditChainVerifier}.php, Modules/Foundation/app/Audit/Sealing/, commandes audit:seal, audit:verify, audit:verify-seals, audit:checkpoint, tests/Feature/{AuditHashChainTest,AuditBatchSealingTest,AuditSealArchiveTest,AuditSealVerificationTest,AuditVerificationEventsTest}.php, Modules/Foundation/tests/Feature/{AuditSealBatchPostgresTest,AuditDeliveryOutboxTest,PersonalAuditFragmentStorePostgresTest}.php, Modules/Referential/tests/Feature/{ContactAuditTest,ContactPersonalFragmentTest}.php : chaîne, lots Merkle signés, archive objet, contrôle quotidien, valeurs personnelles du Contact hors entrée immuable et purge du contexte de reprise conformes à DEC-0251 et DEC-0256 ; signataire local transitoire, KMS/HSM, WORM qualifié, réplication, sauvegardes indépendantes, rotation et exercice annuel absents partiel 2026-09-21
TEC-SEC-004 VER-SEC-004 elena 13504323, Modules/Foundation/app/Audit/{AuditDeliveryOutbox,AuthorizationDenialAuditor,AuditAdministrationRecorder}.php, Modules/Foundation/app/Auth/{SsoGuard,ApiKeyGuard}.php, Modules/Dwt/app/Import/Audit/ImportAuditTrail.php, Modules/PdfGeneration/app/Services/{PdfTemplateService,ContextualPdfGenerationService}.php, Modules/Manufacturing/app/Services/WorkorderService.php, Modules/Referential/app/Services/ThirdPartyService.php, tests/Feature/AuditDeliveryAlertsTest.php, Modules/Foundation/tests/Feature/{AuditDeliveryOutboxTest,AuthorizationDenialAuditTest}.php, Modules/Dwt/tests/Feature/Import/Audit/, Modules/PdfGeneration/tests/Feature/Audit/PdfTemplateAuditTrailTest.php, Modules/Manufacturing/tests/Feature/WorkorderAuditTrailTest.php : échec fermé, refus audités, alertes et reprise conformes à DEC-0252 et DEC-0257 ; les commandes client de Manufacturing écrivent encore par le chemin dégradable jusqu’à leur reprise par le module Ventes partiel 2026-09-21
TEC-SEC-011 VER-SEC-016 elena 13504323, Modules/Foundation/app/Http/Controllers/Api/AuditTrailController.php, Modules/Foundation/app/Audit/{AuditRestitutionPolicy,AuditEventFilters,AuditAuthorResolver}.php, Modules/Foundation/tests/Feature/{AuditTrailAuthorAttributionTest,AuditTrailRestitutionTest,AuditTrailFilteringTest,AuditTrailExportEndpointTest}.php : auteur par identifiant local, différences des cibles non personnelles, filtres, total, NDJSON et échec fermé conformes conforme 2026-09-21
TEC-SEC-012 VER-SEC-017 elena 13504323, Modules/Foundation/app/Contributions/permissions.php, routes api/v1/audit/{legal-holds,retention-policy,verifications}, commande audit:reconcile-restored-fragments, Modules/Foundation/tests/Feature/{AuditLegalHoldEndpointTest,AuditLegalHoldPostgresTest,AuditRetentionPolicyEndpointTest,AuditVerificationEndpointTest,AuditReconcileRestoredFragmentsTest}.php, tests/Feature/{AuditRetentionLegalHoldTest,AuditRetentionPolicyEffectTest}.php : six permissions sans octroi par défaut, conservation à titre légal, durées bornées, vérification à la demande et rapprochement conformes conforme 2026-09-21
TEC-SEC-013 VER-SEC-018 elena 13504323, Modules/*/app/Contributions/audit-events.php, Modules/Foundation/app/PublicApi/Audit/, commande audit:catalog-sync, tests/Unit/Architecture/AuditEventCatalogExhaustivenessTest.php, tests/Feature/AuditCatalogVersioningTest.php : inventaire exécutable, version auditée, catégorie de conservation portée par le fait et purge par catégorie conformes conforme 2026-09-21
TEC-INT-013 VER-FCT-040 elena Constat de DEC-0153 maintenu ; aucune nouvelle inspection applicative écart applicatif ouvert ; recette non exécutée —
TEC-INT-014 VER-FCT-041 elena Constat de DEC-0154 maintenu ; aucune nouvelle inspection applicative écart applicatif ouvert ; recette non exécutée —
TEC-INT-015 VER-FCT-042 elena Constat de DEC-0155 maintenu ; aucune nouvelle inspection applicative écart applicatif ouvert ; recette non exécutée —
TEC-INT-016 VER-FCT-043 elena Constat de DEC-0156 maintenu ; aucune nouvelle inspection applicative écart applicatif ouvert ; recette non exécutée —
TEC-INT-017 VER-FCT-044 elena Constat de DEC-0157 maintenu ; aucune nouvelle inspection applicative écart applicatif ouvert ; recette non exécutée —
TEC-INT-018 VER-FCT-045 elena Constat de DEC-0159 maintenu ; aucune nouvelle inspection applicative écart applicatif ouvert ; recette non exécutée —
TEC-INT-019 VER-FCT-046 elena Constat de DEC-0160 maintenu ; aucune nouvelle inspection applicative écart applicatif ouvert ; recette non exécutée —
TEC-INT-020 VER-FCT-047 elena Constat de DEC-0161 maintenu ; aucune nouvelle inspection applicative écart applicatif ouvert ; recette non exécutée —
TEC-INT-021 VER-FCT-048 elena Constat de DEC-0162 maintenu ; aucune nouvelle inspection applicative écart applicatif ouvert ; recette non exécutée —
TEC-INT-022 VER-FCT-049 elena Constat de DEC-0163 maintenu ; aucune nouvelle inspection applicative écart applicatif ouvert ; recette non exécutée —
TEC-INT-023 VER-FCT-050 elena Constat de DEC-0164 maintenu ; aucune nouvelle inspection applicative écart applicatif ouvert ; recette non exécutée —
TEC-INT-024 VER-FCT-051 elena Constat de DEC-0165 maintenu ; aucune nouvelle inspection applicative écart applicatif ouvert ; recette non exécutée —
TEC-INT-025 VER-FCT-052 elena Constat de DEC-0166 maintenu ; aucune nouvelle inspection applicative écart applicatif ouvert ; recette non exécutée —
TEC-INT-026 VER-FCT-053 elena DEC-0167 et DEC-0168 : exclusion uniforme et indication visible prescrites ; aucune nouvelle inspection applicative écart applicatif ouvert ; recette non exécutée —
TEC-INT-033 VER-FCT-060 elena DEC-0175 : import direct depuis la validation terminée et ses réglages serveur ; aucune nouvelle inspection applicative évolution applicative ouverte ; recette non exécutée —
TEC-INT-036 VER-FCT-063 elena DEC-0178 : parcours complet par lots sans plafond implicite et interruption explicite ; aucune nouvelle inspection applicative complétude moteur et conformité à vérifier ; recette non exécutée —
TEC-INT-037 VER-FCT-064 elena DEC-0193, DEC-0330 ; inspection statique du 2026-09-30 : « Éditer » et « Dupliquer » passent par window.open (ImportConfigurationsListView.vue l. 152, 161) et le brouillon vit sous une clé de session unique (dwt.import-wizard.draft, isolation par onglet du navigateur seulement) ; le nom du duplicata est vidé à l’ouverture (ImportConfigurationEditView.vue l. 226-230) non-conforme par lecture statique : onglet du navigateur et brouillon non isolé par instance d’onglet de travail, libellés des onglets d’édition et de duplication non distingués (ElenaAppLayout rattache les deux routes à la même entrée dwt.import-configurations.index), nom du duplicata non prérempli ; recette non exécutée 2026-09-30
TEC-INT-035 VER-FCT-062 elena DEC-0177 : association persistée, unicité atomique et accès au même suivi sous contrôle des droits ; aucune nouvelle inspection applicative évolution applicative ouverte ; recette non exécutée —
TEC-INT-034 VER-FCT-061 elena DEC-0176 : contrôles métier ordinaires à l’écriture et résultats propres à l’import réel ; aucune nouvelle inspection applicative évolution applicative ouverte ; recette non exécutée —
TEC-INT-032 VER-FCT-059 elena DEC-0174 : mention de conservation conditionnée au mode réel courant ; aucune nouvelle inspection applicative écart applicatif ouvert ; recette non exécutée —
TEC-INT-031 VER-FCT-058 elena DEC-0173 : message dérivé des réglages effectifs du lancement ; aucune nouvelle inspection applicative écart applicatif ouvert ; recette non exécutée —
TEC-INT-030 VER-FCT-057 elena DEC-0172 : lignes non traitées distinctes depuis les résultats serveur ; aucune nouvelle inspection applicative écart applicatif ouvert ; recette non exécutée —
TEC-INT-029 VER-FCT-056 elena DEC-0171 : bilan fondé sur le mode exécuté prescrit ; aucune nouvelle inspection applicative écart applicatif ouvert ; recette non exécutée —
TEC-INT-028 VER-FCT-055 elena DEC-0170 : séparateur à corriger, UTF-8 historiquement existant ; aucune nouvelle inspection applicative écart applicatif ouvert ; recette non exécutée —
TEC-INT-027 VER-FCT-054 elena DEC-0169 : format CSV existant conservé, seule feuille exécutée prescrite ; aucune nouvelle inspection applicative contenu réimportable à mettre en conformité ; recette non exécutée —
TEC-INT-012 VER-FCT-039 elena DEC-0152, DEC-0330 ; inspection statique du 2026-09-30 : ImportConfigurationsListView.vue ouvre window.open (l. 152, 161) pour « Utiliser », « Modifier » et « Dupliquer », sans to ni double-clic, là où ImportJobsListView.vue est conforme (l. 299, 319) non-conforme par lecture statique : le contenant est un onglet du navigateur au lieu d’un onglet de travail, et l’isolation sessionStorage du brouillon ne sépare que les onglets du navigateur, non les préparations ouvertes dans un même onglet de travail ; recette non exécutée 2026-09-30
TEC-INT-010 VER-FCT-037 elena Constat de DEC-0150 maintenu ; aucune nouvelle inspection applicative écart applicatif ouvert ; recette non exécutée —
TEC-INT-011 VER-FCT-038 elena Constat de DEC-0151 maintenu ; aucune nouvelle inspection applicative écart applicatif ouvert ; recette non exécutée —
TEC-INT-009 VER-FCT-036 elena DEC-0179 ; aucune nouvelle preuve applicative, écart de remplacement implicite DEC-0149 maintenu à mettre en conformité et à vérifier ; recette non exécutée —
TEC-INT-008 VER-FCT-035 elena 758bb3c4be18ecf0d8b5f1d106cffd8d287bf062, Modules/Dwt/resources/js/views/ImportReviewView.vue (34–49, 132–137) et stores/import-wizard.ts du module : associations disponibles mais résumé, compteur et exclusions absents de la vue non-conforme par lecture statique ; recette non exécutée 2026-09-15
TEC-DAT-009 VER-FCT-023 elena 45c03a18, Modules/Referential/app/Services/ThirdPartyService.php, migrations 2026_09_10_*, Modules/Referential/tests/Feature/{ThirdPartyTest,ThirdPartyMutationTest}.php, tests/Feature/Database/ThirdPartyPostgresProofTest.php : identité, rôles, adresses, qualification client, désactivation et suppression conformes ; valeurs d’adresse autonomes des documents absentes faute de propriétaires Sales/Billing partiel 2026-09-21
TEC-INT-007 VER-FCT-024 elena 45c03a18, Modules/Referential/graphql/third_party.graphql, Modules/Referential/resources/js/views/{ThirdPartyFormView,ThirdPartiesListView}.vue, Modules/Referential/app/PublicApi/CustomerOrderThirdPartyEligibility.php : fiche, liste, éligibilité client des commandes, désactivation et suppression conformes ; offres et corrections documentaires d’adresse (DEC-0086, DEC-0158) absentes partiel 2026-09-21
TEC-01-005 VER-FCT-028 elena 8467b7b9, Modules/Referential/app/Services/{ContactService,ContactPeriodService}.php, Modules/Referential/app/Http/Controllers/Api/ContactRelationController.php, Modules/Referential/app/GraphQL/ThirdPartyViewGate.php, Modules/Referential/app/Import/{ContactLinkImportResource,ContactLinkImportService}.php, migration 2026_09_21_000000_*, Modules/Referential/tests/Feature/{ContactPeriodTest,ContactMutationTest,ContactGraphqlTest,ContactReadAuthorizationTest}.php, Modules/Referential/tests/Feature/Import/ContactLinkImportResourceTest.php, tests/Feature/Database/{ContactPeriodPgsqlTest,ContactRelationConcurrencyPgsqlTest}.php, e2e/specs/contacts-relation-periods.spec.mjs : ordre et primaire, périodes DEC-0183/0249, retrait le jour même d’un rattachement erroné DEC-0273, reprise des rattachements par la ressource d’import dédiée DEC-0182/0274 (ordre préparé, positions jamais complétées, date source obligatoire, rejeu idempotent), consultation depuis Tiers, lectures auditées, suppression anonymisante conformes ; courses sur deux sessions PostgreSQL dans les deux ordres, restauration d’un instantané, parcours navigateur FR/EN des périodes et coût SQL constant de la liste prouvés ; plans PostgreSQL et charge sur volumes qualifiés, contenu de l’export, consentement et recette produit restent à produire partiel 2026-09-22
TEC-ARC-003 VER-FCT-006 elena Modules/Referential/app/PublicApi/, tests/Unit/NeighborModelBoundaryTest.php, tests/Unit/PhpModuleDependencyGateTest.php, composer.json, phpstan.neon.dist partiel 2026-08-25
TEC-ARC-004 VER-FCT-009 elena tests/Unit/NeighborModelBoundaryTest.php, composer.json, phpstan.neon.dist, recherche de CrossModuleReadable et de fournisseurs de builders publics non-conforme 2026-08-25
TEC-DAT-002 VER-FCT-007, VER-FCT-008 elena Modules/Dwt/app/Application/Intermodule/ReferentialImportOrchestrator.php, Modules/Foundation/app/{Architecture/OrchestratorGraphBuilder.php,PublicApi/Transactions/{CrossModuleOrchestrator.php,IntermoduleTransaction.php}}, docs/architecture/{intermodule-matrix.json,orchestrator-graph.json,receipts/ELENA-906.json}, tests PostgreSQL et de contrat associés conforme 2026-09-02
TEC-DAT-006 VER-FCT-013 elena tests/Support/DisposableDatabaseGuard.php, tests/TestCase.php, tests/Feature/ModuleStubGenerationTest.php, database/schema/01-provision-core.sql, deploy/postgres/bootstrap.sql, recherche de dump et manifeste de régime partiel 2026-08-26

Écarts observés pour TEC-ARC-003

État de TEC-ARC-004

État de TEC-DAT-002

La revue du dépôt elena confirme la convention machine-lisible prescrite : ReferentialImportOrchestrator est déclaré sous le chemin attendu, porte le marqueur et l’attribut requis, et son graphe archivé est recalculé contre le code réel. Les scénarios de mutation du contrôle de graphe couvrent notamment les marqueurs et attributs absents, les participants ou ordres invalides, les orchestrateurs imbriqués et les cycles de précédence.

La preuve PostgreSQL jetable npm run e2e:pgsql a été rejouée le 2026-09-02 sur dev : 117 tests et 787 assertions passent, puis le projet isolé elena-e2e-976 est retiré. Elle exerce le rollback atomique de l’effet Referential et du verdict DWT, la reprise idempotente, le graphe d’orchestration et la gouvernance des FK interschémas. Les commits 7af11ce5, b2e4ee15 et 7d28d2b7 sont tous ancêtres de origin/dev ; le reçu versionné docs/architecture/receipts/ELENA-906.json identifie les critères VER-FCT-007 et VER-FCT-008 et ne déclare aucun écart.

État de TEC-DAT-006

États autorisés : non-évalué, conforme, partiel, non-conforme, non-applicable.

Règles