docs: record Phase C cutover; close $IsWindows shim bug (Phase C9)

- CLAUDE.md: Linux host no longer runs pwsh; PS 5.1 constraints scoped to
  Windows guests + Windows runner.
- RUNBOOK: add "Phase C — Python equivalents" table; §6-§13 benchmark records
  kept as historical provenance.
- TODO §3.7: close $IsWindows shim bug (resolved-by-replacement — bench run
  bypasses the shim).
- plans: mark C1-C8 done + docs C9; flag operational cutover/uninstall pending.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-07 20:15:10 +02:00
parent d23ce1939e
commit 962a69d287
5 changed files with 373 additions and 68 deletions
+8 -7
View File
@@ -849,17 +849,18 @@ liberi su 63.7). **Mitigazioni**: ridurre vCPU/VM (lega a §3.5), `-Parallelism
alzare connect-timeout pypsrp + retry a livello job in `_windows_build`.
**Rifiori quando**: si vuole concorrenza 4× Windows-guest affidabile su host Windows.
### 3.7 [P3] [ ] Shim Invoke-CIJob.ps1 — `$IsWindows` non guardato (PS 5.1 + StrictMode)
### 3.7 [P3] [x] Shim Invoke-CIJob.ps1 — `$IsWindows` non guardato (PS 5.1 + StrictMode) — RISOLTO 2026-06-07 (Fase C)
File: [scripts/Invoke-CIJob.ps1:37](scripts/Invoke-CIJob.ps1).
`if ($null -ne $IsWindows -and $IsWindows -eq $false)` dereferenzia `$IsWindows`,
inesistente su Windows PowerShell 5.1 → con `Set-StrictMode -Version Latest`
lancia `VariableIsUndefined` e il job fallisce subito. Si manifesta solo quando lo
shim gira sotto PS 5.1 **senza** `CI_VENV_PYTHON` settato (il ramo auto-detect).
Produzione setta `CI_VENV_PYTHON` via runner, quindi non si vede; colpisce invocazioni
manuali/burn-in. **Fix**: guardare con `if ((Test-Path variable:IsWindows) -and -not $IsWindows)`
o `Get-Variable IsWindows -EA SilentlyContinue`.
**Workaround attuale**: esportare `CI_VENV_PYTHON` prima di lanciare lo shim.
lancia `VariableIsUndefined` e il job fallisce subito. Si manifestava solo quando lo
shim girava sotto PS 5.1 **senza** `CI_VENV_PYTHON` settato (il ramo auto-detect),
cioè nelle invocazioni manuali/burn-in.
**Risoluzione**: il percorso burn-in manuale non passa più dallo shim — `bench run`
(Fase C) lancia i job concorrenti in-process via `concurrent.futures`, senza
`Start-Job`/`pwsh`/`$IsWindows`. Lo shim resta solo per il runner Windows, dove
`CI_VENV_PYTHON` è sempre settato. Il bug non è più raggiungibile sull'host Linux.
### 8.1 [P3] [ ] Mirror GitHub Actions su Gitea locale (rimuovi dipendenza github.com)
File: [.gitea/workflows/lint.yml](.gitea/workflows/lint.yml), Gitea (org `actions`).