Skip to content

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.