You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
SEC-1: validate each EgressAllowlist entry against ^(?i)\.?[a-z0-9][a-z0-9.-]*$
in Assert-TierProfileValid (ProfileLoader.ps1) before it reaches the builder's
Squid dstdomain ACL (SeedBuilder substitutes the allowlist with no escaping; a
newline-bearing entry could inject http_access allow all). Runs on bare tiers
AND the merged builder. All shipped profiles (tier0/tier1/ralph/firefox/builder)
still load. New reject + accept tests; SeedBuilder xref comment.
TR-2: the detach-before-hash test used IndexOf ordering only, which is vacuously
true when an op is absent (-1 -BeLessThan positive). Added Should -Contain guards
for RemoveHardDiskDrive + GetVhdxImageHash before the ordering assertion.
TR-3: the two builder timeout tests leaked a "did not power off" WARNING into
Pester output. Capture it (-WarningVariable) and assert it (a real timeout-path
check), and silence the host leak (-WarningAction SilentlyContinue).
SPEC-1/ci-1: BuilderVM.ps1 comments claimed deps.vhdx "is left on disk" — but the
default DepsDiskPath == OutputDiskPath IS in CreatedDisks and IS deleted at
teardown. Rewrote the .DESCRIPTION + finally-block comments: persistence is
LIVE-only pending the Phase-6 Copy-Item; the whole-image hash is the durable
artifact today.
2.2 docstring: SeedBuilder header "Two shapes" -> "Three" (DISK-OFFLINE,
DISK-BUILDER [Disk+SquidSniProxy], SERIAL).
SEC-2 (comment only): the builder seed redirects TCP 80/443 to Squid but does NOT
yet enforce BlockProtocols (DNS/53, QUIC/UDP-443, DoH/DoT) — noted as Phase-6;
no enforcement wired.
ci-2: SeedIso is genuinely unused in the disk-mode/builder path (New-WorkloadSeedDisk
builds the seed onto a CIDATA data disk; SeedIso is consumed only by the serial/DVD
path). Added a clarifying NOTE in builder.psd1; kept the key (the loader carries it,
mirrors firefox.psd1).
(@($wv) -join"`n") | Should -Match'did not power off'-Because 'the timeout path must emit the lifecycle-abort warning'
85
95
(&$fake.GetVM@{ Name='bld-timeout-td' }) | Should -BeNullOrEmpty -Because 'the builder VM is removed even on a timeout'
86
96
}
87
97
}
@@ -119,7 +129,7 @@ Describe 'Invoke-BuilderVM — RC7: SetAutomaticCheckpoints called before StartV
119
129
120
130
It 'SetAutomaticCheckpoints(Enabled=$false) is applied before StartVM: the deps hash is non-empty (AutomaticCheckpoints=ON would hide the blob in a child .avhdx -> empty hash)' {
121
131
# When AutomaticCheckpointsEnabled is still ON at StartVM, the fake routes the
122
-
# DepsImageBlob into OutboxChildLayer (the .avhdx child — inaccessible to GetVhdxImageHash,
132
+
# DepsImageBlob into DepsImageChildLayer (the .avhdx child — inaccessible to GetVhdxImageHash,
123
133
# which reads the base). So GetVhdxImageHash would return SHA256 of empty bytes, NOT the
124
134
# blob's hash. If RC7 is applied (Enabled=$false) before StartVM, the blob goes into
125
135
# DepsImageRegion (the base layer) and the hash matches the blob. So a non-empty/correct
0 commit comments