docs: Windows host compat is a categorical constraint (B8 cancelled)
User requirement (non-negotiable): the project must stay first-class compatible with a Windows host permanently — Phase B adds Linux *alongside* Windows, never replacing/degrading it. - implementation-plan-A-B §2: categorical-constraint banner; B8 decommissioning cancelled (kept only as historical record); master checklist B8 row updated. - PhaseB-user-checklist: Passo 9 (B8) cancelled -> dual-host kept; Passo 8 no longer a decommission gate; tracking table + closing note updated. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -418,10 +418,11 @@ baseline Windows (entro ±20%).
|
||||
|
||||
---
|
||||
|
||||
## Passo 8 — Stabilità ≥1 settimana (gate per B8)
|
||||
## Passo 8 — Stabilità ≥1 settimana
|
||||
|
||||
**Obiettivo**: verificare ≥1 settimana di esercizio Linux senza
|
||||
incidenti critici prima di dismettere l'host Windows.
|
||||
incidenti critici. (NB: non è più gate per una dismissione Windows —
|
||||
vedi Passo 9: host Windows mantenuto in permanenza.)
|
||||
|
||||
- [ ] Esercizio normale per ≥7 giorni con runner Linux primario.
|
||||
- [ ] Verifica giornaliera (bastano 2 minuti):
|
||||
@@ -436,12 +437,16 @@ incidenti critici prima di dismettere l'host Windows.
|
||||
|
||||
---
|
||||
|
||||
## Passo 9 — Decommissioning host Windows (B8, opzionale)
|
||||
## Passo 9 — ~~Decommissioning host Windows~~ — ANNULLATO
|
||||
|
||||
> ⚠️ Procedere solo dopo Passo 8 `[x]`. L'host Windows va lasciato
|
||||
> spento ma intatto per ≥1 mese come rollback.
|
||||
> 🚫 **VINCOLO CATEGORICO: l'host Windows NON va dismesso.** Resta un
|
||||
> target supportato di prima classe in permanenza (run dual-host
|
||||
> Win+Linux), non solo rollback. Niente `shutdown` definitivo, niente
|
||||
> riallocazione hardware che tolga la capacità Windows. Questo step è
|
||||
> mantenuto solo come record storico.
|
||||
|
||||
- [ ] Backup finale di `F:\CI\` su archivio esterno:
|
||||
- [ ] (Facoltativo, igiene) Backup periodico di `F:\CI\` su archivio
|
||||
esterno:
|
||||
|
||||
```powershell
|
||||
$stamp = Get-Date -Format 'yyyyMMdd'
|
||||
@@ -450,18 +455,10 @@ incidenti critici prima di dismettere l'host Windows.
|
||||
Get-FileHash $archive -Algorithm SHA256 | Tee-Object "$archive.sha256"
|
||||
```
|
||||
|
||||
- [ ] Verifica integrità (estrazione di prova in tmp):
|
||||
|
||||
```powershell
|
||||
$test = "$env:TEMP\ci-restore-test"
|
||||
& 'C:\Program Files\Git\usr\bin\tar.exe' -tf $archive | Select-Object -First 20
|
||||
```
|
||||
|
||||
- [ ] Spegnere host Windows (`shutdown /s /t 0`).
|
||||
- [ ] Lasciare hardware integro e spento per ≥1 mese.
|
||||
- [ ] Aggiornare `docs/RUNBOOK.md` con la procedura di riaccensione +
|
||||
ri-registrazione scheduled task come rollback.
|
||||
- [ ] Dopo 1 mese senza rollback: riallocare hardware.
|
||||
- [ ] Host Windows **resta installato e operativo** (uso dual-host).
|
||||
- [ ] Aggiornare `docs/RUNBOOK.md` documentando l'uso di **entrambi**
|
||||
gli host (Windows + Linux), non una procedura di dismissione.
|
||||
- [ ] ~~Spegnere/riallocare host Windows~~ — NON applicabile.
|
||||
|
||||
---
|
||||
|
||||
@@ -474,11 +471,15 @@ incidenti critici prima di dismettere l'host Windows.
|
||||
| 3 | B3 | Chiavi SSH + keyring (PoC headless) | [ ] |
|
||||
| 4 | B4 | act_runner systemd service registrato | [ ] |
|
||||
| 5 | B5 | Timer systemd installati e attivi | [ ] |
|
||||
| 6 | B6 | Cutover (stop Windows, runner Linux primario) | [ ] |
|
||||
| 6 | B6 | Cutover (Linux primario, Windows resta operativo) | [ ] |
|
||||
| 7 | B7 | Capacity burn-in 4 × 10 (Win + Linux) | [ ] |
|
||||
| 8 | — | ≥1 settimana di stabilità senza rollback | [ ] |
|
||||
| 9 | B8 | Decommissioning host Windows (opzionale) | [ ] |
|
||||
| 8 | — | ≥1 settimana di stabilità | [ ] |
|
||||
| 9 | B8 | ~~Decommissioning Windows~~ ANNULLATO (dual-host) | [x] |
|
||||
|
||||
Quando tutti i passi sono `[x]`, la **Fase B è chiusa** e si può
|
||||
valutare l'apertura della Fase C (backend ESXi, vedi
|
||||
> **Vincolo categorico**: host Windows supportato in permanenza
|
||||
> (dual-host), mai dismesso. Fase B = Linux **in aggiunta**, non al
|
||||
> posto di Windows.
|
||||
|
||||
Quando i passi 1-8 sono `[x]`, la **Fase B è chiusa** (B8 annullato per
|
||||
vincolo) e si può valutare l'apertura della Fase C (backend ESXi, vedi
|
||||
`plans/idea-3-esxi-support.md`).
|
||||
|
||||
@@ -99,8 +99,8 @@ A4; cambiano solo path/env vars in Fase B).
|
||||
- [ ] [B6] Rsync incrementale finale `F:\CI\Artifacts\` → `/var/lib/ci/artifacts/`
|
||||
- [ ] [B6] Trigger smoke workflow + `build-ns7zip.yml` matrix da host Linux PASS
|
||||
- [ ] [B7] Eseguire burn-in 4 job concorrenti × 10 round su template Windows e Linux con tempi entro ±20% baseline
|
||||
- [ ] [B8] Backup finale di `F:\CI\` su archivio
|
||||
- [ ] [B8] Lasciare host Windows spento ma reinstallato per ≥1 mese come rollback
|
||||
- [ ] [B8] (Facoltativo) Backup periodico di `F:\CI\`
|
||||
- [x] [B8] ~~Decommissioning host Windows~~ **ANNULLATO** — vincolo categorico: host Windows supportato in permanenza (dual-host), non dismesso
|
||||
- [ ] [X1] Aggiornare `lint.yml` per girare ruff + mypy + pytest oltre a PSSA
|
||||
- [ ] [X2] Aggiungere observability: log strutturato `logging` + journald handler in Fase B
|
||||
- [ ] [X3] Documentare gestione credenziali headless (DPAPI machine scope su Win, vault `age` su Linux)
|
||||
@@ -384,6 +384,16 @@ qualche caller esterno non ancora migrato emerge.
|
||||
|
||||
## 2. Fase B — Migrazione host Linux Mint
|
||||
|
||||
> **VINCOLO CATEGORICO (non negoziabile): compatibilità host Windows
|
||||
> permanente.** Fase B **aggiunge** il supporto host Linux **accanto**
|
||||
> a Windows — non lo sostituisce né lo degrada. Windows host resta un
|
||||
> target di **prima classe** e supportato, NON solo rollback. In
|
||||
> concreto: **B8 NON va eseguito come rimozione reale** (l'host Windows
|
||||
> resta operativo/usabile); nessun assunto Linux-only nel codice
|
||||
> condiviso; la rimozione shim (B5) deve lasciare un modo Windows-nativo
|
||||
> di invocare la CLI Python; ogni modifica Fase B deve dichiarare
|
||||
> l'impatto su host Windows e preferire parità dual-host.
|
||||
>
|
||||
> **Parallelizzazione**: B1 può iniziare durante A3/A4 (setup hardware
|
||||
> indipendente dal codice). B2, B3 possono iniziare appena B1 è done e
|
||||
> A5 è done. B4–B6 sono **strettamente sequenziali** dopo "A done".
|
||||
@@ -697,20 +707,23 @@ fallisce, rollback a Windows (vedi B6 rollback).
|
||||
- [ ] Tempi documentati
|
||||
- [ ] Nessuna VM orfana
|
||||
|
||||
### B8 — Decommissioning host Windows (opzionale)
|
||||
### B8 — ~~Decommissioning host Windows~~ — ANNULLATO (vincolo categorico)
|
||||
|
||||
**Obiettivo**: dopo ≥1 settimana di stabilità, dismettere host Windows.
|
||||
> **B8 NON va eseguito.** Vincolo categorico: l'host Windows resta
|
||||
> supportato di prima classe in modo permanente (non solo rollback).
|
||||
> Niente dismissione, niente riallocazione hardware che rimuova la
|
||||
> capacità di girare su host Windows. Questo step resta solo come
|
||||
> record storico del piano originale.
|
||||
|
||||
**Input / dipendenze**: B7 done + ≥1 settimana di esercizio Linux
|
||||
senza incidenti.
|
||||
**Obiettivo (annullato)**: ~~dopo ≥1 settimana di stabilità, dismettere
|
||||
host Windows.~~ → Host Windows mantenuto operativo a regime.
|
||||
|
||||
**Attività**:
|
||||
**Attività (NON eseguire la dismissione; resta solo, se utile):**
|
||||
|
||||
- [ ] Backup finale di `F:\CI\` su archivio esterno (`tar` + checksum)
|
||||
- [ ] Spegnimento runner Windows (`Stop-Service actions-runner`, runner già fermo da B6)
|
||||
- [ ] Lasciare host Windows installato ma spento per ≥1 mese come rollback
|
||||
- [ ] Documentare procedura di riaccensione in `docs/RUNBOOK.md`
|
||||
- [ ] Dopo 1 mese: riallocare hardware se non ci sono stati rollback
|
||||
- [ ] (Facoltativo) Backup periodico di `F:\CI\` su archivio esterno
|
||||
- [ ] Host Windows **resta installato e utilizzabile** (run dual-host)
|
||||
- [ ] Documentare in `docs/RUNBOOK.md` come usare entrambi gli host
|
||||
- [ ] ~~Riallocare hardware~~ — NON applicabile (Windows host permanente)
|
||||
|
||||
**Hook futuri Fase C**: nessuno.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user