windows-comfyui-converge -WhatIf reports a fully converged host as completely empty #882
Labels
No labels
burndown-2026-06
burndown-2026-08
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/advocate
role/director
role/exec
role/frontend
role/gamedev
role/human
role/platform
role/qa
role/science
role/sysadmin
state
ambient
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/infrastructure#882
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Symptom
On
kai-tower-3026, with every model already installed and verified,just windows-comfyui-converge -WhatIfplans the entire bundle as missing:The host needs zero bytes. Every file is present at its exact pinned size and its exact pinned SHA-256, checked independently outside the
-WhatIfpath:Cause
Under
-WhatIf,Get-FileHashinside the script produces no output, soTest-Sha256(scripts/converge-comfyui-windows.ps1:143) compares$nullagainst the pin and returns$false.Test-VerifiedFilethen reports every asset unverified, and the whole plan follows from that.An instrumented copy dumping the plan makes it unambiguous. The length check passes and the hash comes back empty:
Test-PathandGet-Item ... .Lengthboth behave correctly under-WhatIf, so the size half of the check is fine and only the digest half breaks. Isolated calls toGet-FileHash -LiteralPath ... -WhatIffrom an advanced function return the hash normally under both Windows PowerShell 5.1 and pwsh 7, so this is specific to the script-level[CmdletBinding(SupportsShouldProcess)]scope on line 18, not a general PowerShell behavior.Impact
docs/comfyui-runtime.md:57presents-WhatIfas the way to "preview the full convergence without mutation". The preview is wrong in the most misleading direction, telling an operator to expect 56 GiB of downloads that are already on disk.Insufficient free diskagainst$requiredFreeBytescomputed from that phantom bundle. A converged host with less than about 56 GiB free cannot preview its own state at all, even though a real run would download nothing.RESULT=CHANGEDon a converged host makes the preview useless as a drift signal, which is the main thing it is for.Fix
Make the verification path independent of
$WhatIfPreference.Test-VerifiedFileandTest-Sha256are pure reads and should never be suppressed by a preview flag. Options:[System.Security.Cryptography.SHA256]over aFileStreaminstead ofGet-FileHash, which removes the cmdlet-preference coupling entirely.Get-FileHash ... -WhatIf:$falseat the two call sites, which is smaller but leaves the trap in place for the next read helper someone adds.The first is preferable. A read helper inside a
SupportsShouldProcessscript should not be able to silently return nothing.Worth a regression test in
windows-comfyui-convergence-testthat runs the verification helper with$WhatIfPreferenceset and asserts a known-good file still verifies. That is the assertion that would have caught this.Notes
Real state on
kai-tower-3026is fully converged: portable release0.29.0matches the pin, all six models plus the preserved Juggernaut XL checkpoint verify, and Tailscale Serve forwards tailnet 8188 to the loopback listener. Only the preview is broken.