docs(a2): mark A2 as code-complete; add A2-closeout.md

This commit is contained in:
2026-05-14 17:02:04 +02:00
parent 80f6661ad5
commit ad9e6e9673
2 changed files with 52 additions and 16 deletions
+16 -16
View File
@@ -53,13 +53,13 @@ A4; cambiano solo path/env vars in Fase B).
- [ ] [A1] PoC `wait-ready` end-to-end via `pypsrp` contro un guest Windows reale
- [ ] [A1] Test pytest unitari per `vmrun.py`, `winrm.py`, `ssh.py`, `credentials.py` con mock
- [ ] [A1] Aggiungere job pytest a `gitea/workflows/lint.yml`
- [ ] [A2] Portare `Wait-VMReady.ps1``python -m ci_orchestrator wait-ready`
- [ ] [A2] Portare `Remove-BuildVM.ps1``vm remove`
- [ ] [A2] Portare `Cleanup-OrphanedBuildVMs.ps1``vm cleanup`
- [ ] [A2] Portare `Watch-DiskSpace.ps1``monitor disk`
- [ ] [A2] Portare `Watch-RunnerHealth.ps1``monitor runner`
- [ ] [A2] Portare `Get-CIJobSummary.ps1``report job`
- [ ] [A2] Sostituire ognuno dei `.ps1` portati con shim a 3 righe verso la CLI Python
- [x] [A2] Portare `Wait-VMReady.ps1``python -m ci_orchestrator wait-ready`
- [x] [A2] Portare `Remove-BuildVM.ps1``vm remove`
- [x] [A2] Portare `Cleanup-OrphanedBuildVMs.ps1``vm cleanup`
- [x] [A2] Portare `Watch-DiskSpace.ps1``monitor disk`
- [x] [A2] Portare `Watch-RunnerHealth.ps1``monitor runner`
- [x] [A2] Portare `Get-CIJobSummary.ps1``report job`
- [x] [A2] Sostituire ognuno dei `.ps1` portati con shim a 3 righe verso la CLI Python
- [ ] [A3] Portare `New-BuildVM.ps1``vm new`
- [ ] [A3] Portare `Invoke-RemoteBuild.ps1``build run`
- [ ] [A3] Portare `Get-BuildArtifacts.ps1``artifacts collect`
@@ -182,15 +182,15 @@ stato con l'orchestratore, sostituendoli con shim minimi.
**Attività**:
- [ ] Implementare `commands/wait.py` con sottocomando `wait-ready` (parametri `--vmx`, `--timeout`, `--guest-os`)
- [ ] Implementare `commands/vm.py` con sottocomando `vm remove` (parametri `--vmx`, `--force`)
- [ ] Implementare `vm cleanup` (scan `CI_BUILD_VMS`, riconoscimento clone orfani per pattern naming + età)
- [ ] Implementare `commands/monitor.py` con `monitor disk` (soglie configurabili, output JSON o human)
- [ ] Implementare `monitor runner` (controllo processo act_runner attivo + ultimo heartbeat)
- [ ] Implementare `commands/report.py` con `report job` (read-only su artifact dir + log job)
- [ ] Sostituire `scripts/Wait-VMReady.ps1` con shim PS 5.1 di 3 righe: `& 'F:\CI\python\venv\Scripts\python.exe' -m ci_orchestrator wait-ready @args; exit $LASTEXITCODE`
- [ ] Idem per `Remove-BuildVM.ps1`, `Cleanup-OrphanedBuildVMs.ps1`, `Watch-DiskSpace.ps1`, `Watch-RunnerHealth.ps1`, `Get-CIJobSummary.ps1`
- [ ] Aggiungere test pytest per ogni comando (mock backend + mock filesystem via `tmp_path`)
- [x] Implementare `commands/wait.py` con sottocomando `wait-ready` (parametri `--vmx`, `--timeout`, `--guest-os`)
- [x] Implementare `commands/vm.py` con sottocomando `vm remove` (parametri `--vmx`, `--force`)
- [x] Implementare `vm cleanup` (scan `CI_BUILD_VMS`, riconoscimento clone orfani per pattern naming + età)
- [x] Implementare `commands/monitor.py` con `monitor disk` (soglie configurabili, output JSON o human)
- [x] Implementare `monitor runner` (controllo processo act_runner attivo + ultimo heartbeat)
- [x] Implementare `commands/report.py` con `report job` (read-only su artifact dir + log job)
- [x] Sostituire `scripts/Wait-VMReady.ps1` con shim PS 5.1 di 3 righe: `& 'F:\CI\python\venv\Scripts\python.exe' -m ci_orchestrator wait-ready @args; exit $LASTEXITCODE`
- [x] Idem per `Remove-BuildVM.ps1`, `Cleanup-OrphanedBuildVMs.ps1`, `Watch-DiskSpace.ps1`, `Watch-RunnerHealth.ps1`, `Get-CIJobSummary.ps1`
- [x] Aggiungere test pytest per ogni comando (mock backend + mock filesystem via `tmp_path`)
- [ ] Convertire `tests/Wait-VMReady.Tests.ps1` in `tests/test_commands_wait.py` (preservando i casi negativi)
- [ ] Convertire `tests/Remove-BuildVM.Tests.ps1` in `tests/test_commands_vm_remove.py`
- [ ] Verificare che gli scheduled task esistenti (`Register-CIScheduledTasks.ps1`) continuino a funzionare invocando gli shim PS