CVN-N014-EC-S16 — dev-productivity tooling · hub Story¶
Hub documentaire de la Story S16 (tooling : lecteur XCom read-only + bootstrap "second développeur"). Partie de l'Epic CVN-N014-EC (skills/scripts du workflow de dev). État live = OpenProject (wp#240, GH #1103, ADR-76).
En une phrase¶
Combler deux frictions du workflow diagnostic/multi-dev : lire en local la trajectoire XCom des DAGs s40/s41/s42 (DB métadonnées sur VPC privé) et lancer un second "développeur" Claude sans recloner le repo.
Les documents (dans l'ordre de lecture)¶
| # | Document | Quoi | Pour qui |
|---|---|---|---|
| 1 | Plan dossier | Partie I : problématisation → user stories → hypothèses → état de l'art → DoD → Consolidation ; Partie II : design self-contained. | décideur, relecteur |
| 2 | Architecture | construction des 2 outils : SELECT in-pod read-only (+ garde) ; worktree + symlinks ; foot-guns. | ingénieur |
| 3 | Runbook — usage + gotchas | quel outil pour quoi, quickstart, gotchas (git stash, single-WIP), rollback. |
opérateur |
| 4 | Stratégie de tests | garantie read-only (23 tests) + dogfood (worktree). | dev, QA |
| 5 | airflow-xcom-reader (how-to) · parallel-dev worktrees (how-to) | les deux docs process détaillés (le « comment » par outil). | dev, opérateur |
| 6 | PR review — committee pr_review (session 037037cf, OP Meeting #247) — REJECTED, blockers adressés (cf. État) |
dossier archivé sur la Meeting. | relecteur |
Dogfood ADR-0101 : S16 est la première Story tooling pré-existante rétro-conformée au standard documentaire universel.
État¶
New (OpenProject) — implémentation complète et verte sur la branche chore/airflow-xcom-reader (PR #1102, MERGEABLE, CodeRabbit pass) mais non mergée. Par décision opérateur (2026-06-05), la Story ne prend pas le carve-out "scripts-only ⇒ committee-exempt" : docs + nav + dossier + comité produits d'abord, pour respecter le flux standard.
Gate ADR-81 → Developed : bloqué. Le committee pr_review (037037cf) a rendu REJECTED (code EXECUTION_RISK, consensus split) avec 2 blockers mandatory :
- Q2 — la garantie « read-only by construction » de airflow_xcom_pull.py doit avoir une enforcement technique (test/garde runtime asserting aucun verbe DDL/DML), pas seulement documentaire.
- Q4 — la mitigation du git stash partagé entre worktrees par la doc seule est insuffisante : garde technique ou guidance d'alternative explicite.
- Recommandé : identité git per-worktree (git config --worktree) ; documenter pourquoi pas l'API REST/CLI Airflow.
Points validés par le comité (areas of agreement, 5 experts) : pattern kubectl exec pragmatique et défendable vu la contrainte VPC ; split SCRIPT-not-SKILL correct (précédent S02) ; new_worktree.sh efficace ; trim ADR de CLAUDE.md aligné ADR-77.
Remédiation (2026-06-05) — les 2 blockers + 2 recommandations sont adressés :
- Q2 (read-only by construction) → garde assert_select_only() host-side + garde miroir _guard() runtime dans la probe in-pod (refuse tout verbe DDL/DML, fail-fast ADR-25), couverte par 23 tests unitaires (tests/unit/test_airflow_xcom_pull.py).
- Q4 (git stash partagé) → new_worktree.sh épingle l'identité git per-worktree (extensions.worktreeConfig + git config --worktree) et avertit du stash dans son banner ; le doc parallel-dev worktrees ajoute une section « Parking WIP without git stash » (alternatives worktree-safe) — chemin explicitement accepté par le comité.
- Recommandés → identité per-worktree (ci-dessus) + section « Why an in-pod SELECT and not the Airflow REST API / CLI » dans le doc XCom reader.
Prochaines actions : re-revue (CR + comité) → merge (go opérateur explicite) → docs live → /story-advance vers Developed.