Définition du socle de données du harnais : taxonomie des artefacts, métadonnées, machine à états, modèle de dépendances et configuration des référentiels. Ce document est le livrable de l'étape 1 de la feuille de route V3.
Le registre d'artefacts est la source de vérité unique du harnais : toute production (document, code, configuration, plan, preuve) y est enregistrée avec ses métadonnées, son statut et ses dépendances. Ce document définit le schéma de ce registre — c'est-à-dire sa structure logique, indépendamment de la technologie d'implémentation (base de données, dépôt Git, ou hybride).
Le schéma couvre : les types d'artefacts (section 2), le schéma de métadonnées (section 3), la machine à états (section 4), le modèle de dépendances (section 5), la configuration des référentiels (section 6) et un exemple instancié (section 7). L'implémentation technique (choix SQLite/Postgres/Git, API) est traitée à une étape ultérieure.
Chaque artefact porte un type identifié par un code unique, organisé par famille (une famille = une phase du cycle de vie). La taxonomie suit la section 3 du guide V3, avec un identifiant machine famille.type pour chaque artefact listé.
| Code | Artefact | Référentiel(s) appliqués |
|---|---|---|
cadrage.note-opportunite | Note d'opportunité et objectifs métier | — (ISO 25010 en grille qualité) |
cadrage.cahier-des-charges | Cahier des charges (besoins, contraintes, périmètre) | Exigences identifiables et vérifiables |
cadrage.analyse-risques | Analyse des risques et des parties prenantes | — |
cadrage.estimation | Estimation budgétaire et calendaire de premier niveau | — |
| Code | Artefact | Référentiel(s) appliqués |
|---|---|---|
design.personas | Personas et parcours utilisateurs | ISO 9241-11 |
design.wireframes | Wireframes et maquettes basse puis haute fidélité | ISO 9241-11 |
design.prototype | Prototype interactif | ISO 9241-11 |
design.charte | Charte graphique et design system | WCAG 2.2 / RGAA |
design.guide-accessibilite | Guide d'accessibilité | WCAG 2.2 / RGAA |
design.tests-utilisabilite | Protocole et résultats des tests d'utilisabilité | ISO 9241-11 |
| Code | Artefact | Référentiel(s) appliqués |
|---|---|---|
spec.fonctionnelles | Spécifications fonctionnelles | Exigences traçables |
spec.techniques | Spécifications techniques | Exigences traçables |
archi.architecture | Architecture logicielle (diagrammes composants, séquence, déploiement) | C4 model, ISO/IEC/IEEE 42010 |
archi.adr | Décision d'architecture (ADR) — un artefact par décision | ADR |
archi.modele-donnees | Modèle de données | — |
archi.choix-technos | Choix technologiques et justification | ADR (justification tracée) |
| Code | Artefact | Référentiel(s) appliqués |
|---|---|---|
plan.backlog | Backlog produit et user stories | — |
plan.lots | Découpage en lots ou sprints | — |
plan.planning | Planning et jalons | — |
| Code | Artefact | Référentiel(s) appliqués |
|---|---|---|
code.source | Code source et configuration d'environnement | Guide de style, Conventional Commits |
code.readme | README et documentation d'installation | Diátaxis (guide) |
code.conventions | Conventions de code et structure du dépôt | Guide de style |
| Code | Artefact | Référentiel(s) appliqués |
|---|---|---|
test.plan | Plan de tests | Pyramide de tests |
test.unitaires | Tests unitaires | Pyramide de tests |
test.integration | Tests d'intégration | Pyramide de tests |
test.e2e | Tests de bout en bout | Pyramide de tests |
test.couverture | Rapports de couverture | Couverture mesurée |
test.revue-securite | Revue de sécurité, de conformité et d'accessibilité | OWASP Top 10, WCAG/RGAA |
| Code | Artefact | Référentiel(s) appliqués |
|---|---|---|
deploy.pipeline | Pipeline CI/CD | 12-factor, IaC versionnée |
deploy.iac | Scripts d'infrastructure as code | 12-factor, IaC versionnée |
deploy.runbook | Documentation d'exploitation (runbook) | Diátaxis (guide), ITIL |
deploy.plan-reprise | Plan de reprise d'activité | ITIL |
| Code | Artefact | Référentiel(s) appliqués |
|---|---|---|
exploit.plan-maintenance | Plan de maintenance (corrective, évolutive, préventive) | ITIL |
exploit.journal-incidents | Journal des incidents | ITIL |
exploit.post-mortem | Post-mortems | ITIL |
exploit.notes-version | Notes de version et changelog | Conventional Commits |
exploit.dette-technique | Registre de dette technique | — (artefact de 1ʳᵉ classe) |
exploit.supervision | Tableau de bord de supervision (SLO/SLI) | SRE |
exploit.patch-management | Plan de gestion des correctifs de sécurité | ITIL, OWASP |
exploit.audits | Rapports d'audit périodiques | ISO 25010, OWASP |
| Code | Artefact | Référentiel(s) appliqués |
|---|---|---|
finvie.plan | Plan de décommissionnement | RGPD, ISO 27001 |
finvie.migration | Plan de migration, d'export et d'archivage | RGPD |
finvie.desactivation-acces | Procédure de désactivation sécurisée des accès | ISO 27001 |
finvie.preuve-destruction | Preuve de destruction ou d'anonymisation des données | RGPD |
finvie.bilan-capitalisation | Bilan de fin de vie et capitalisation | — |
| Code | Artefact | Référentiel(s) appliqués |
|---|---|---|
transverse.doc-utilisateur | Documentation utilisateur | Diátaxis |
transverse.plan-gestion-projet | Plan de gestion de projet et comptes-rendus | — |
transverse.matrice-tracabilite | Matrice de traçabilité exigences ↔ tests | Exigences traçables |
transverse.registre-decisions | Registre des décisions | — |
transverse.glossaire | Glossaire du projet | — |
La matrice de traçabilité et le registre des décisions sont des artefacts dérivés mécaniquement par l'orchestrateur depuis les dépendances déclarées — ils ne sont pas générés par un agent spécialisé, mais régénérés à chaque transition de statut.
Chaque enregistrement du registre porte les champs suivants. Les champs marqués obligatoire sont exigés dès la création ; les autres sont renseignés au fil du cycle de vie.
| Champ | Type | Oblig. | Description |
|---|---|---|---|
id | UUID | obligatoire | Identifiant unique et immuable de l'artefact |
type | enum (taxonomie §2) | obligatoire | Code de la famille et du type, ex. archi.adr |
version | semver | obligatoire | Version de l'artefact (1.0.0, 1.1.0…) |
statut | enum (machine à états §4) | obligatoire | brouillon · en_revue · valide · rejete · obsolete · archive |
auteur | string | obligatoire | Identifiant de l'agent (agent:cadrage) ou de l'humain (humain:hkofi) |
cree_le | datetime ISO 8601 | obligatoire | Horodatage de création |
modifie_le | datetime ISO 8601 | obligatoire | Horodatage de dernière modification |
valide_le | datetime ISO 8601 | — | Horodatage de validation humaine (statut valide) |
valide_par | string | — | Humain validateur + commentaire (ex. humain:hkofi) |
dependances | liste de liens | obligatoire | Contrats de dépendance (modèle §5), peut être vide |
referentiels | liste de codes | obligatoire | Référentiels appliqués (config §6), dérivé du type |
contenu | chemin / blob | obligatoire | Emplacement du contenu (fichier, commit, URL) |
garde-fous | objet | — | Résultats des vérifications automatiques (linters, tests, revue croisée) avant passage en revue |
tags | liste de strings | — | Mots-clés libres pour la recherche |
historique | liste de transitions | obligatoire | Journal append-only des transitions de statut (qui, quand, quoi) — alimente l'audit |
Le champ historique est append-only : aucune transition passée ne peut être modifiée ou supprimée. C'est la base de l'audit et de la traçabilité exigée par le guide (annexe B V3).
Reprise fidèle de l'annexe A du guide V3, formalisée pour le registre. Six statuts, quatre règles de transition.
Figure 1 — Machine à états d'un artefact (annexe A du guide V3). Transitions : brouillon → en_revue (garde-fous passés) ; en_revue → valide (humain) ou rejete ; valide → obsolete (remplacé) ou brouillon (réouverture) ; obsolete → archive ; rejete → brouillon (reformulation) ou archive (abandon).
Les contrats de dépendance relient chaque artefact à ses sources (amont) et à ses consommateurs (aval). Le registre stocke ces liens de manière directionnelle : une modification d'un artefact amont marque automatiquement les avals comme impactés (statut proposé à la régénération).
| Lien | Sens | Signification |
|---|---|---|
derive_de | aval → amont | L'artefact est généré à partir de l'amont (ex. specs dérivent du cahier des charges) |
conforme_a | artefact → référentiel | L'artefact applique un référentiel (ex. design.charte conforme à WCAG) |
valide_par | artefact → point de contrôle | Le point de contrôle humain (PC1…PC10) qui valide cet artefact |
depend_de | artefact → artefact | Dépendance non dérivationnelle (ex. tests dépendent du code exécutable) |
impacte | amont → aval (dérivé) | Lien inverse calculé par l'orchestrateur : liste des avals à régénérer |
Le tableau suivant fixe les dérivations attendues par défaut dans le harnais. L'orchestrateur les utilise pour vérifier la complétude du registre et propager les changements.
| Aval (produit) | Dérive de (amont) | Agent producteur |
|---|---|---|
cadrage.cahier-des-charges | cadrage.note-opportunite | agent:cadrage |
spec.fonctionnelles | cadrage.cahier-des-charges | agent:specifications |
spec.techniques | spec.fonctionnelles + archi.architecture | agent:specifications |
archi.architecture | spec.fonctionnelles | agent:architecture |
archi.adr | archi.architecture | agent:architecture |
design.wireframes | cadrage.cahier-des-charges + spec.fonctionnelles | agent:design |
plan.backlog | spec.fonctionnelles + archi.architecture | agent:backlog |
code.source | archi.architecture + plan.backlog (user stories) | agent:code |
test.plan / test.* | spec.fonctionnelles + code.source | agent:tests |
deploy.pipeline / deploy.iac | code.source | agent:deploiement |
deploy.runbook | deploy.pipeline + deploy.iac | agent:deploiement |
transverse.doc-utilisateur | design.wireframes + code.readme | agent:documentation |
exploit.supervision | deploy.runbook + code.source | agent:exploitation |
finvie.plan | ensemble des artefacts valides du registre | agent:decommissionnement |
transverse.matrice-tracabilite | tous les liens derive_de (dérivé mécanique) | orchestrateur |
Toute transition d'un artefact amont vers valide, rejete ou obsolete marque ses avals directs et indirects comme impactés (nouveau champ impacte_par proposé) : l'orchestrateur déclenche alors l'analyse d'impact et la régénération selon la section 7.2 du guide (retry → régénération enrichie → escalade humaine).
Le guide V3 (section 4) exige que les référentiels soient configurables sans modification du code de l'orchestrateur. Le registre embarque un fichier de configuration versionné — referentiels.yaml — associant type d'artefact ↔ référentiel(s). Les agents le consultent comme grille d'auto-évaluation avant publication.
# referentiels.yaml — configuration des référentiels par type d'artefact # Versionné dans le registre comme un artefact de type `config.referentiels`. version: "1.0" referentiels: cadrage.*: ["iso-25010"] design.*: ["wcag-2.2", "rgaa", "iso-9241-11"] spec.*: ["exigences-traçables"] archi.*: ["adr", "c4", "iso-42010"] plan.*: [] code.*: ["guide-style", "conventional-commits"] test.*: ["pyramide-tests", "owasp-top10"] deploy.*: ["12-factor", "iac-versionnee"] exploit.*: ["itil", "sre", "owasp-top10"] finvie.*: ["rgpd", "iso-27001"] transverse.*: ["iso-25010", "diataxis"] points_de_controle: cadrage.cahier-des-charges: "PC1" design.prototype: "PC2" archi.architecture: "PC3" plan.backlog: "PC4" code.source: "PC5" test.*: "PC5" deploy.pipeline: "PC6" exploit.*: "PC7" finvie.plan: "PC8" transverse.doc-utilisateur: "PC9" transverse.matrice-tracabilite: "PC10"
famille.*) s'appliquent à tous les types de la famille ; un type peut être surchargé individuellement (code.readme → diataxis en plus).config.referentiels) : toute modification passe par la machine à états et déclenche l'analyse d'impact sur les artefacts concernés.Exemple complet d'un ADR (archi.adr) enregistré dans le registre, illustrant l'ensemble des champs de la section 3.
{
"id": "9f3c2a1e-7b4d-4e8f-9a2c-1d5e6f7a8b9c",
"type": "archi.adr",
"version": "1.0.0",
"statut": "valide",
"auteur": "agent:architecture",
"cree_le": "2026-08-01T10:15:00Z",
"modifie_le": "2026-08-01T14:30:00Z",
"valide_le": "2026-08-01T15:00:00Z",
"valide_par": "humain:hkofi",
"dependances": [
{ "lien": "derive_de", "cible": "archi.architecture@1.2.0" },
{ "lien": "conforme_a", "cible": "referentiel:adr" }
],
"referentiels": ["adr", "c4"],
"contenu": "docs/adr/0001-choix-postgresql.md",
"garde-fous": {
"revue_croisee": "ok",
"conformite_referentiel": "ok",
"coherence_terminologique": "ok"
},
"tags": ["base-de-donnees", "choix-technologique"],
"historique": [
{ "de": "brouillon", "vers": "en_revue", "le": "2026-08-01T13:45:00Z", "par": "agent:architecture" },
{ "de": "en_revue", "vers": "valide", "le": "2026-08-01T15:00:00Z", "par": "humain:hkofi", "commentaire": "ADR validé — PC3" }
]
}
Le champ garde-fous documente les vérifications automatiques passées avant le passage en revue — c'est l'application concrète du principe 6 du guide (« un artefact qui n'a pas passé ces contrôles ne doit pas être marqué validé »).
Ce schéma introduit des choix de conception qui doivent être confirmés avant l'implémentation (point de contrôle humain de l'étape 1).
Décisions D1 → D5 toutes validées par Hugues (PC1 de l'étape 1). Les choix retenus sont signalés en gras dans le tableau ci-dessous. Ce document passe au statut Validé.
| # | Décision | Options | Recommandation |
|---|---|---|---|
| D1 | Technologie de persistance du registre | SQLite / PostgreSQL / dépôt Git (fichiers YAML+MD) / hybride Git+BDD | Hybride Git+BDD : Git pour le contenu (traçabilité native), BDD pour les métadonnées et la recherche |
| D2 | Identifiant de version des dépendances | Semver seul / id+semver / id+semver+empreinte | id + semver + empreinte (intégrité exigée par l'annexe B V3) |
| D3 | Granularité des ADR | Un artefact par décision / un artefact groupant toutes les décisions | Un artefact par décision (traçabilité fine, régénération ciblée) |
| D4 | Champ impacte_par | Champ calculé à la volée / champ persisté | Calculé à la volée par l'orchestrateur (évite la dérive) |
| D5 | Langue des artefacts | Français systématique / langue du projet / mixte | Langue du projet définie au cadrage (par défaut : français) |
L'étape 1 est considérée terminée lorsque les conditions suivantes sont remplies :
famille.type.referentiels.yaml est défini et couvre toutes les familles.Une fois ce schéma validé, l'étape 2 de la feuille de route consiste à construire l'orchestrateur minimal avec les agents Cadrage, Spécifications et Architecture, plus le point de contrôle humain PC1.