[DTP-Worker] Sprint 8 · buffer · Fiches agents/colonne « Job CI » : chaque table de livrables de 03_agents/*/AGENT.md NOMME entre backticks le job Gitea Actions qui exécute la suite du module (rbac-tests · fiscal-ecf-tests · frontend-portails-tests…) — nom SAISI À LA MAIN dont la source de vérité est la clé jobs: de .gitea/workflows/ci.yml — mais AUCUN gate ne liait le NOM écrit dans la fiche au job réel. check_ci_integrity.sh prouve que chaque job est CÂBLÉ dans gate.needs (INV-A/B) et les blocs amont de check_readme_claims recomputent les COMPTES de tests par suite ; RIEN ne vérifiait que le token DÉSIGNE un job existant. Renommer un job dans ci.yml (rbac-tests→rbac-role-tests) ou mal recopier demo-scenario-tests en demo-scenarios-tests laissait la fiche pointer un job FANTÔME pendant que le CI reste VERT (le vrai job tourne sous son nouveau nom) — la doc d'identité de l'agent ment en silence.
Gate ajouté (bloc « Fiches agents · colonne Job CI ») : on RECOMPUTE l'ensemble des jobs depuis la clé `jobs:` de ci.yml (la section `on:` push/pull_request/workflow_dispatch est AVANT `jobs:` et donc exclue ; jamais une liste à la main) et on exige que chaque token `*-tests` cité dans une fiche y figure. Direction fiche→ci.yml (le consommateur) : ci.yml peut définir des jobs non cités (légitime), une fiche ne peut pas citer un job absent ; la disparition totale de la colonne échoue AUSSI. 33 références vérifiées == jobs ci.yml ; 2 morsures (token de fiche `seo-tests`→`seo-suite-tests` fantôme · job ci.yml `rbac-tests` renommé → mord SIMULTANÉMENT les 4 fiches qui le citent : erpnext_backend/ifc_speckle/mobile/rendu), restauré vert, 7 gates re-verts. ci/README.md + activity log MAJ. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -414,3 +414,46 @@ contrat · exit 0. Working tree byte-restauré (`git checkout --`, **JAMAIS**
|
||||
édition **hors** `05_deliverables_mvp/*/out` ⇒ 0 dérive d'artefact ; le seed réel
|
||||
du rôle + le câblage Compupar restent côté VPS).
|
||||
- **Auto-score 4Big** : 96/100.
|
||||
|
||||
## Session `20260801_033217` · Buffer S8 · Domaine Fiches agents/colonne « Job CI » : chaque table de livrables de `03_agents/*/AGENT.md` porte une colonne **Job CI** qui NOMME entre backticks le job Gitea Actions exécutant la suite du module (`rbac-tests`, `fiscal-ecf-tests`, `frontend-portails-tests`…). Ce nom est **saisi à la main** ; la source de vérité est la clé `jobs:` de `.gitea/workflows/ci.yml`. Ce lien n'était couvert par **AUCUN gate** : `check_ci_integrity.sh` prouve que chaque job est CÂBLÉ dans `gate.needs` (INV-A/B) et les blocs amont de `check_readme_claims` recomputent les **comptes** de tests par suite — mais RIEN ne vérifiait que le nom ÉCRIT dans la fiche DÉSIGNE un job réel.
|
||||
|
||||
**Tâche** : **Sprint 8 · buffer** (DevOps CI/CD · QA). Roadmap fonctionnellement
|
||||
close ; poursuite de la série anti-dérive (CLAUDE.md #6). Même classe de « vert
|
||||
trompeur » que les cellules « Tests » par suite ou la colonne « Type » des Role
|
||||
Profile — appliqué à la **surface data-derived distincte** : le NOM de job cité par
|
||||
la fiche, jamais confronté à la définition réelle du workflow CI.
|
||||
|
||||
**Dérive silencieuse fermée** :
|
||||
- `03_agents/*/AGENT.md` — colonne « Job CI » : 33 tokens `*-tests` répartis sur
|
||||
13 fiches, chacun un nom de job Gitea Actions recopié à la main.
|
||||
- Source faisant autorité : la section `jobs:` de `.gitea/workflows/ci.yml`.
|
||||
- Piège : renommer un job dans ci.yml (`rbac-tests`→`rbac-role-tests`) ou mal
|
||||
recopier `demo-scenario-tests` en `demo-scenarios-tests` laisse la fiche pointer
|
||||
un job **fantôme** — le CI reste **vert** (le vrai job tourne sous son nouveau
|
||||
nom), la doc d'identité de l'agent ment en silence. `check_ci_integrity` ne
|
||||
regarde QUE le câblage `gate.needs`, aveugle au NOM cité par la prose.
|
||||
|
||||
**Gate ajouté** (`ci/check_readme_claims.sh`, bloc « Fiches agents · colonne
|
||||
Job CI ») : on RECOMPUTE l'ensemble des jobs depuis la clé `jobs:` de ci.yml
|
||||
(la section `on:` — push/pull_request/workflow_dispatch — est AVANT `jobs:` et donc
|
||||
naturellement exclue ; jamais une liste à la main) et on exige que chaque token
|
||||
`*-tests` cité dans une fiche y figure. Direction **fiche→ci.yml** (le
|
||||
consommateur) : ci.yml peut définir des jobs non cités (légitime), mais une fiche
|
||||
ne peut pas citer un job absent. La disparition totale de la colonne échoue AUSSI
|
||||
(le recensement qui s'évapore est lui-même une régression).
|
||||
|
||||
**Morsures vérifiées (2)** : (1) token de fiche `seo-tests`→`seo-suite-tests`
|
||||
(job fantôme, mord les 2 citations dans `seo/AGENT.md`) ; (2) job ci.yml
|
||||
`rbac-tests` renommé `rbac-role-tests` → mord **SIMULTANÉMENT les 4 fiches** qui
|
||||
le citent (`erpnext_backend`/`ifc_speckle`/`mobile`/`rendu`). État courant :
|
||||
**33 références == jobs ci.yml**, exit 0. Working tree byte-restauré
|
||||
(`cp` depuis backup + `git checkout` implicite — **JAMAIS** `git clean`, interdit
|
||||
absolu). Sibling gates re-verts : `check_ci_integrity`/`check_docs`/
|
||||
`guard_constraints`/`check_artifacts` = PASS.
|
||||
|
||||
- `ci/README.md` (table récap du pipeline + paragraphe détaillé « Colonne Job CI
|
||||
des fiches agents == section `jobs:` de ci.yml ») mis à jour.
|
||||
- **Hors périmètre worker (VPS · #8)** : néant (gate bash/python3 stdlib en-repo ;
|
||||
édition **hors** `05_deliverables_mvp/*/out` ⇒ 0 dérive d'artefact ; aucun
|
||||
déclenchement de workflow CI réel — analyse statique du YAML uniquement).
|
||||
- **Auto-score 4Big** : 96/100.
|
||||
|
||||
Reference in New Issue
Block a user