Files
system_update/docs/design/tache2/80-sous-jalons.md
T
gilles 0fbca06d3d docs: roadmap tâches 1.9-8 (briefs, gates de validation, designs tâche 2) + plans d'implémentation
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>
2026-06-05 19:50:25 +02:00

5.6 KiB

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

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.