0fbca06d3d
Cartographie complète (liste_taches/coherence_taches), briefs tacheN + gates validation_tacheN, design tâche 2 (docs/design/tache2/), specs/plans jalon 1-2 et tâche 1.9/2 (Phase 1, Phase 2, SJ-0→3). Validations consignées (1.9 ✅, 2-8 🟡). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
90 lines
5.6 KiB
Markdown
90 lines
5.6 KiB
Markdown
# 80 — Découpage en sous-jalons implémentables
|
|
|
|
> Livrable §4.9. Chaque sous-jalon = un cycle spec → plan → implémentation, indépendamment testable, sans casser le jalon 1. Priorisé. Prêt pour `writing-plans`.
|
|
|
|
---
|
|
|
|
## Ordre recommandé et dépendances
|
|
|
|
```text
|
|
SJ-0 (socle types/réduction) ──► SJ-1 (APT update/analyse) ──► SJ-2 (APT upgrade + diff)
|
|
│
|
|
▼
|
|
SJ-3 (reboot vérifié)
|
|
SJ-4 (Docker scan/inspect) ──► SJ-5 (Docker pull-check) ──► SJ-6 (Docker apply/prune/down)
|
|
SJ-7 (profils OS Proxmox/RPi) [transversal, après SJ-1]
|
|
SJ-8 (post-install bootstrap/identité) [après SJ-0]
|
|
SJ-9 (post-install Docker officiel / partages / VM tools) [après SJ-8]
|
|
```
|
|
|
|
---
|
|
|
|
## SJ-0 — Socle : types étendus + réduction + résolution de profil
|
|
|
|
- **Contenu** : étendre `shared/types.ts` (unions + blocs optionnels, cf. `40-contrats-json.md`), étendre le réducteur (`reduceLines.ts` ajoutant les préfixes Docker), ajouter le mécanisme `resolveTemplate(action, osFamily)` avec fallback `base`, ajouter `schemaVersion`.
|
|
- **Testable** : tests unitaires de réduction (APT + Docker), tests de résolution de template, validation qu'un snapshot/exécution jalon 1 reste typé valide.
|
|
- **Risque** : faible (additif). **Priorité : 1 (prérequis de tout le reste).**
|
|
|
|
## SJ-1 — APT update/analyse (snapshot enrichi)
|
|
|
|
- **Contenu** : `apt/update-analyze.sh.tpl` (update + simulations upgrade/dist-upgrade + held + reboot-check), parsing des sections, `AptSnapshotDetail` enrichi, statut `ok|updates_available|warning|error`. Bascule du refresh dessus (en gardant `check.sh.tpl` jusqu'à validation).
|
|
- **Testable** : fixtures de sortie APT → snapshot ; non-régression du refresh jalon 1.
|
|
- **Risque** : faible-moyen (toucher le refresh). **Priorité : 2.**
|
|
|
|
## SJ-2 — APT upgrade / full-upgrade / autoremove / clean + diff dpkg réel
|
|
|
|
- **Contenu** : templates `upgrade`, `full-upgrade` (enrichi diff), `autoremove`, `clean` ; capture `DPKG_BEFORE/AFTER` ; calcul du diff réel (`AptExecutionResult`) ; timeout d'inactivité + `human_interaction_required` ; confirmations UI pour suppressions.
|
|
- **Testable** : fixtures dpkg before/after → diff ; détection des suppressions/held.
|
|
- **Risque** : moyen (actions destructives). **Priorité : 3.**
|
|
|
|
## SJ-3 — Reboot vérifié (boot_id + délai adaptatif)
|
|
|
|
- **Contenu** : `apt/reboot.sh.tpl` (capture boot_id) + orchestration backend (attente coupure, reconnexion, relecture boot_id), `RebootResult`, délai adaptatif par machine. Conserve l'action `reboot` jalon 1.
|
|
- **Testable** : simulation des états (`boot_id_unchanged`, `machine_did_not_return`, `timeout`).
|
|
- **Risque** : moyen. **Priorité : 4.**
|
|
|
|
## SJ-4 — Docker scan + inspect (passifs)
|
|
|
|
- **Contenu** : `docker/scan-compose.sh.tpl`, `docker/inspect-compose.sh.tpl` ; config machine `dockerEnabled`/`composeRoots`/`composeScanDepth` ; cycle `candidate`/`enabled` ; tables `docker_*`. Détection labels en complément.
|
|
- **Testable** : fixtures de scan → liste de stacks ; validation `compose config --quiet`.
|
|
- **Risque** : faible (passif). **Priorité : 5.**
|
|
|
|
## SJ-5 — Docker pull-check + comparaison
|
|
|
|
- **Contenu** : `docker/pull-check.sh.tpl` ; comparaison déterministe ID/digest/labels OCI ; `DockerSnapshot`/services ; dédup Docker ; refresh Docker séparé (non auto).
|
|
- **Testable** : fixtures before/after pull → updates détectées ; nettoyage secrets registry.
|
|
- **Risque** : faible-moyen. **Priorité : 6.**
|
|
|
|
## SJ-6 — Docker apply + prune + down
|
|
|
|
- **Contenu** : `apply-compose`, `prune-images` (safe/agressif), `down-compose` ; `DockerExecutionResult` ; validations UI explicites ; `docker_image_events`.
|
|
- **Testable** : fixtures up/prune → conteneurs recréés / bytes reclaimed.
|
|
- **Risque** : moyen-élevé (destructif). **Priorité : 7.**
|
|
|
|
## SJ-7 — Profils OS Proxmox + Raspberry Pi (+ proxy persistent)
|
|
|
|
- **Contenu** : dossiers `templates/proxmox/`, `templates/raspbian/` (update-analyze, full-upgrade) ; mode `AptProxyMode="persistent"` ; `machine_probe`.
|
|
- **Testable** : résolution de template par OS ; sonde → propositions de correction.
|
|
- **Risque** : faible (additif, fallback base préservé). **Priorité : 8 (transversal).**
|
|
|
|
## SJ-8 — Post-install : bootstrap + identité/réseau
|
|
|
|
- **Contenu** : moteur de profils (manifestes, champs dynamiques, preview, validations), `custom/bootstrap-root.sh.tpl`, `custom/identity-network.sh.tpl` ; `install_profiles`/`install_recipes` ; stratégie reconnexion ; `PostInstallResult`.
|
|
- **Testable** : rendu de manifeste → formulaire ; preview masquant les secrets ; échec contrôlé si champ manquant.
|
|
- **Risque** : moyen (réseau). **Priorité : 9.**
|
|
|
|
## SJ-9 — Post-install : paquets de base + Docker officiel + partages + VM tools
|
|
|
|
- **Contenu** : `install-package-groups`, `docker-official-debian`, `sharing`, `vm-guest-tools` ; presets de variables ; renvoi du catalogue détaillé à la tâche 4.
|
|
- **Testable** : installation de groupes ; idempotence.
|
|
- **Risque** : faible-moyen. **Priorité : 10.**
|
|
|
|
---
|
|
|
|
## Notes de séquencement
|
|
|
|
- **SJ-0 est bloquant** pour tous les autres (types + réduction + résolution).
|
|
- APT (SJ-1→3) et Docker (SJ-4→6) sont **indépendants** : peuvent être menés en parallèle après SJ-0.
|
|
- Chaque sous-jalon livre un logiciel testable et ne casse pas les flux jalon 1 (`refresh`, `apt_full_upgrade`, `reboot`) grâce aux extensions additives.
|
|
- Les actions destructives n'arrivent qu'après le socle de validation UI (`action_requests`), conformément à `70-securite.md`.
|