Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions docs/cahier-des-charges.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ table de la section 13, qui portent la décision du propriétaire du 2026-10-23
1.5, 3, 7.1, 8.1, 8.3, 10, 11.1 et 11.2, non classés ici entre décision LangGraph et réécriture de forme ;
les critères CA-18 à CA-32, ajoutés à la suite des dix-sept critères de la mission (CA-32 et R-16 le
2026-10-24, par décision du propriétaire), dont le texte est
inchangé aux réécritures de forme près ; et ces réécritures, exigées par la norme des paquets de
inchangé aux réécritures de forme près ; le report de CA-31 de WP-4 à WP-7 (section 8.2, R-12 et
R-15, le 2026-10-26, par décision du propriétaire) ; et ces réécritures, exigées par la norme des paquets de
travail de `libre-ai/project-governance` (`docs/specifications/WORK-PACKAGES.md`) : chaque paramètre
écrit entre chevrons y est écrit en capitales (`ORG/DEPOT`, `DEPOT-CONSOMMATEUR`, `REV`,
`SUJET/SHA`), le jalon B prime s'écrit `B'`, et les commandes qui enchaînent deux programmes sont
Expand Down Expand Up @@ -394,7 +395,8 @@ mémoire sont internes à l'invocation et n'apparaissent dans aucune entrée ni
fiables écrites pour une lecture humaine), et les vecteurs rouges 1 à 3 d'ADR-0045
(Conséquences), chacun prouvé rouge sans son contrôle, et le critère CA-31 pour le vecteur 4
(suite d'attaques adaptatives, taux d'utilité et taux d'attaque réussie rapportés ensemble ;
arbitrage du propriétaire du 2026-10-23 : ajouté à WP-4, R-15). La lettre d'INV-a laisse un canal
arbitrage du propriétaire du 2026-10-23 : ajouté à WP-4, R-15 ; porté par WP-7 depuis la scission
de WP-4 décidée par le propriétaire le 2026-10-26). La lettre d'INV-a laisse un canal
ouvert : `read` lit hors du worktree de la passe, et le verdict, texte libre compris, est publié
sous `docs/reviews/` ; réponse : le critère CA-32 (passe confinée à son worktree par une frontière
appliquée hors de `pi`), sixième condition d'activation, appliquée aux deux pilotes (décision du
Expand Down Expand Up @@ -579,10 +581,10 @@ transitive `@langchain/core` et `@langchain/langgraph-checkpoint`, aux condition
| R-9 | Écart entre `evaluate_effect_attestation` et ADR-0034 D4 (accepted) pour `started` et observation indisponible | `effect.rs:277-279` rend `transition-forbidden`, `:227-229` rend `store-unavailable` | un consommateur qui lit « bloqué » sur ces deux cas lit un état que la crate ne rend pas (Q9) |
| R-10 | Cinq types à `Debug` dérivé portent des identifiants et deux énumérations les portent par référence | `grep -n 'derive(.*Debug' -A2 src/control.rs src/budget.rs` | un diagnostic de l'appelant qui formate l'un de ces types journalise des identifiants de fil ; CA-5 ne les couvre pas, CA-16 les couvre |
| R-11 | La valeur de LangGraph sur un orchestrateur de sous-processus est nulle ou négative (M8, H7) | écart de CA-24 défavorable sur les trois nombres | l'écart s'écrit dans la fiche, il n'interdit pas (arbitrage du 2026-10-23) ; le propriétaire relit la décision sur ce relevé ; CA-29 garde le retrait possible |
| R-12 | L'échéance ADR-0045 (2026-12-31) arrive avant WP-3 et WP-4 | M9 à 0 vecteur à la date | l'orchestrateur de revues est suspendu (ADR-0045 décision 4), avec ou sans LangGraph ; le passage en lecture seule des passes (CA-26) ne dépend pas du paquet et peut précéder WP-2 |
| R-12 | L'échéance ADR-0045 (2026-12-31) arrive avant WP-3, WP-4 et WP-7 | M9 à 0 vecteur à la date | l'orchestrateur de revues est suspendu (ADR-0045 décision 4), avec ou sans LangGraph ; le passage en lecture seule des passes (CA-26) ne dépend pas du paquet et peut précéder WP-2 |
| R-13 | Le mécanisme réseau qui applique CA-22 n'existe pas sur la machine de forge (aucun plan `execution-plan-body` ne couvre `tools/review` au commit lu) | vecteur `telemetry-egress-refused` sans mécanisme nommé | l'orchestrateur sous LangGraph ne s'active pas (ADR-0058 section 3 condition 4 : « un harness qui ne produit pas ce refus n'active pas le worker ») ; décision du propriétaire du 2026-10-24 : espace de noms réseau Linux et règles nftables à compteur, le même en CI (runner `ubuntu-24.04`) et sur la machine de forge, où les campagnes réelles tournent dans un conteneur Linux ; écartés le même jour : Seatbelt sur macOS (refus mesuré, aucun compte natif, `sandbox-exec` déprécié), le harness d'`execution-sandbox` (macOS non pris en charge, Linux non qualifié), le report de CA-22 |
| R-14 | Un avis de l'éditeur absent de la base `osv-scanner` | date de base et nombre d'entrées imprimés par CA-18 | le fichier `tools/review/advisories.v1.json` le porte ; l'ajout d'une entrée est une édition revue |
| R-15 | Le corpus du vecteur 4 d'ADR-0045 (suite d'attaques adaptatives, taux d'utilité et taux d'attaque réussie rapportés ensemble) est borné par ce que des cas enregistrés peuvent exercer : il prouve les contrôles déterministes, pas la robustesse d'un modèle réel | `grep -n 'AgentDojo' docs/adr/0045-*.md` dans `project-governance` rend la ligne du vecteur ; `grep -n 'CA-31' docs/cahier-des-charges.md` rend le critère | décision du propriétaire du 2026-10-23 : le vecteur est ajouté à WP-4 (CA-31) ; un rejeu avec un modèle réel est une mesure versée dans `docs/evidence/`, jamais un seuil ; M9 compte quatre vecteurs |
| R-15 | Le corpus du vecteur 4 d'ADR-0045 (suite d'attaques adaptatives, taux d'utilité et taux d'attaque réussie rapportés ensemble) est borné par ce que des cas enregistrés peuvent exercer : il prouve les contrôles déterministes, pas la robustesse d'un modèle réel | `grep -n 'AgentDojo' docs/adr/0045-*.md` dans `project-governance` rend la ligne du vecteur ; `grep -n 'CA-31' docs/cahier-des-charges.md` rend le critère | décision du propriétaire du 2026-10-23 : le vecteur est ajouté à WP-4 (CA-31) ; décision du propriétaire du 2026-10-26 : WP-4 est scindé et le vecteur est porté par WP-7, qui ne dépend pas du mécanisme de R-13 ; un rejeu avec un modèle réel est une mesure versée dans `docs/evidence/`, jamais un seuil ; M9 compte quatre vecteurs |
| R-16 | L'outil `read` de `pi` n'est pas confiné au worktree de la passe et le verdict, texte libre compris, est publié : un contenu revu peut faire recopier un fichier de l'hôte dans un artefact public (relevé par les relectures de second modèle de WP-3, le 2026-10-24) | aucune condition `pass-read-confined` vraie dans `tools/review/fanout-activation.ts` (absente au commit lu, ajoutée à `satisfied: false` par WP-3) ; vecteur `pass-read-confined` absent | décision du propriétaire du 2026-10-24 : sixième condition d'activation (CA-32), appliquée aux deux pilotes ; aucune campagne réelle de `tools/review` avant WP-4 (la dernière versée est `docs/evidence/2026-08-19-first-real-fanout-campaign.md`) ; le mécanisme est celui de R-13 |

## 13. Table de conformité à SPECIFICATION-STANDARD
Expand Down
18 changes: 13 additions & 5 deletions docs/prd.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,10 @@ l'hypothèse H7, le quatrième défaut de la section 2 (ADR-0045), la ligne Lang
phrases de la section 8 (déplacement de `tools/review`, validation du jalon par M8 et M9) et la
section 9 (paquets de travail), qui portent la décision du propriétaire du 2026-10-23 (ADR-0058,
premier consommateur LangGraph JS de la flotte, sous ADR-0045) ; la ligne `WP-4` de la section 9 et
trois phrases de son préambule, qui portent la décision du propriétaire du 2026-10-24 (CA-32) ; et des
trois phrases de son préambule, qui portent la décision du propriétaire du 2026-10-24 (CA-32) ; la
ligne `WP-7`, le retrait de `CA-31` de la ligne `WP-4`, une phrase du préambule et le compte de la
porte, qui portent la
décision du propriétaire du 2026-10-26 (scission de WP-4) ; et des
réécritures de forme exigées par la norme des paquets de travail de `libre-ai/project-governance`
(`docs/specifications/WORK-PACKAGES.md`) : chaque paramètre écrit entre chevrons y est écrit en
capitales (`ORG/DEPOT`, `DEPOT-CONSOMMATEUR`, `REV`, `SUJET/SHA`), le jalon B prime s'écrit `B'`.
Expand Down Expand Up @@ -256,16 +259,20 @@ au moins à `décision` (`ecosystem/work-package-policy.v1.yaml`, `approvedFrom`
dédiée qui a promu ce document l'a fait en citant l'arbitrage du propriétaire du 2026-10-23. La
ligne `WP-4` a été étendue ensuite par une pull request dédiée, qui cite l'arbitrage du propriétaire
du 2026-10-24 (CA-32, et les chemins du mécanisme de R-13 et des deux pilotes) ; l'issue de ce
paquet cite le commit de cette extension. Un paquet s'ouvre par une issue qui nomme ce document et
paquet cite le commit de cette extension. Cette ligne a ensuite été scindée par une pull request dédiée,
qui cite l'arbitrage du propriétaire du 2026-10-26 : `CA-31` passe à la ligne `WP-7`, parce que son
rejeu de sorties de modèle enregistrées contre les contrôles déterministes ne dépend pas du
mécanisme de R-13, et WP-7 peut donc précéder WP-4 ; les issues de ces deux paquets citent le commit
de cette scission. Un paquet s'ouvre par une issue qui nomme ce document et
sa ligne.

Chaque périmètre nomme des chemins sous `tools/review/` ; `tools/review/gates/`,
`tools/review/vectors/` et `tools/review/advisories.v1.json` n'existent pas encore au commit lu
(`git ls-files tools/review` rend 8 fichiers) : ils sont déclarés à créer par WP-1, WP-3 et WP-4,
(`git ls-files tools/review` rend 8 fichiers) : ils sont déclarés à créer par WP-1, WP-3, WP-4 et WP-7,
et le lecteur de la norme le signale comme tel ; `tools/review/confinement/`, ajouté le 2026-10-24
pour le mécanisme de R-13, est déclaré à créer par WP-4. `docs/evidence/` existe (une campagne).

Porte : les six paquets sont `two-way`. Aucun ne modifie un contrat, un lock, une fiche de phase
Porte : les sept paquets sont `two-way`. Aucun ne modifie un contrat, un lock, une fiche de phase
acceptée ni un ruleset ; le paquet entre dans un espace de travail Bun propre à `tools/review`,
jamais dans `Cargo.toml` ; le chemin d'exécution sans le paquet reste vivant (CA-29), de sorte que le
retrait est une pull request qui défait l'ajout, sans migration d'un run ni d'un verdict enregistré ;
Expand All @@ -279,6 +286,7 @@ de l'orchestrateur ou le déplacement du dépôt (AB-4), n'est pas dans ce jalon
| `WP-1` | `CA-18`, `CA-21`, `CA-23` | `tools/review/gates/**`, `tools/review/advisories.v1.json`, `package.json` | `bun test tools/review/gates` | `two-way` |
| `WP-2` | `CA-19`, `CA-20`, `CA-25` | `tools/review/*.ts`, `tools/review/package.json`, `tools/review/bun.lock`, `tools/review/bunfig.toml`, `package.json` | `bun run check:review-tools` | `two-way` |
| `WP-3` | `CA-26`, `CA-27`, `CA-28` | `tools/review/*.ts`, `tools/review/vectors/**` | `bun test tools/review/vectors` | `two-way` |
| `WP-4` | `CA-22`, `CA-31`, `CA-32` | `tools/review/vectors/**`, `tools/review/confinement/**`, `tools/review/*.ts`, `docs/evidence/**` | `bun test tools/review/vectors` | `two-way` |
| `WP-4` | `CA-22`, `CA-32` | `tools/review/vectors/**`, `tools/review/confinement/**`, `tools/review/*.ts`, `docs/evidence/**` | `bun test tools/review/vectors` | `two-way` |
| `WP-5` | `CA-24` | `docs/evidence/**`, `project.v1.yaml`, `README.md` | `grep -n 'langgraph' project.v1.yaml` | `two-way` |
| `WP-6` | `CA-29`, `CA-30` | `tools/review/*.ts`, `project.v1.yaml`, `README.md` | `bun run check:review-tools` | `two-way` |
| `WP-7` | `CA-31` | `tools/review/vectors/**`, `tools/review/fanout-activation.ts`, `docs/evidence/**` | `bun test tools/review/vectors` | `two-way` |