fix(ci): align Windows Compose topology

This commit is contained in:
2026-08-25 17:14:42 +02:00
parent 6d0cb6d997
commit 8980c35198
3 changed files with 32 additions and 9 deletions
@@ -33,8 +33,8 @@ const reviewedExpandableBlocks = new Map([
["scripts/test-windows-clone-contract.ps1", [
{ sha256: "3204f772d33cad42bcac99191507051aefb2c91d2935bec6698b956e44f9bf45", rationale: "Generates reviewed Windows clone test configuration with its authentication configuration root." },
{ sha256: "f4814d842a7502b7ef30fd6b224d5cb17b0ffd6fb2367c41c49ac16587536d93", rationale: "Same reviewed block in the repository-required CRLF checkout representation." },
{ sha256: "8db9ab0ee3580399f311fe7a24d4ea97105873b8a2d41e34a1ec64302d86bee2", rationale: "Generates the reviewed Windows Compose override with a braced remote path." },
{ sha256: "5afbeb3de5b89f978ef00b15f52e0066147bbfb8f6c9d1b7e081f4a1571ab204", rationale: "Same reviewed Compose override in the repository-required CRLF checkout representation." },
{ sha256: "6f25ce3b58cea47b74fe9319ed917d8089a2fb334bc0d469daa7e1f10865d870", rationale: "Generates the reviewed Windows Compose override for the canonical service topology." },
{ sha256: "45a3cf19f7ce697b858b63d27a4edc7fefa2414d0408e7b6d72a65c86d314f5b", rationale: "Same reviewed Compose override in the repository-required CRLF checkout representation." },
{ sha256: "5d0d1a3fc45e99b3aacaf4ee5dd09a6bee1937784375dfe4bcfaa4ae32cfb9de", rationale: "Generates reviewed Windows clone test configuration." },
{ sha256: "b903e5dae953ae1372f1a5276f12a92ed3dd632b897f3afe5e00c646d90a1b42", rationale: "Same reviewed block in the repository-required CRLF checkout representation." },
]],
@@ -294,6 +294,8 @@ test("Windows clone contract copies the shared complete schema v3 descriptor int
expect(windows).toContain('$workspaceDestination = Join-Path $workspaceDirectory "workspace.yaml"');
expect(windows).toContain('Join-Path $workspaceEvidence "guide.md"');
expect(windows).toContain('THT_AUTH_CONFIG_ROOT=$authConfigRoot');
expect(windows).toContain('"core,embedding,embedding-model-init,frontend,qdrant"');
expect(windows).toContain('"core,embedding,frontend,qdrant"');
expect(windows).not.toContain('schema_version: 3');
expect(descriptor).toMatchObject({
workspace: {
+28 -7
View File
@@ -216,6 +216,15 @@ services:
io.thothii.task13.run: "$runLabel"
labels:
io.thothii.task13.run: "$runLabel"
qdrant:
labels:
io.thothii.task13.run: "$runLabel"
embedding:
labels:
io.thothii.task13.run: "$runLabel"
embedding-model-init:
labels:
io.thothii.task13.run: "$runLabel"
networks:
thothii:
labels:
@@ -230,9 +239,21 @@ volumes:
workspace-registry:
labels:
io.thothii.task13.run: "$runLabel"
workspace-secrets:
labels:
io.thothii.task13.run: "$runLabel"
sessions:
labels:
io.thothii.task13.run: "$runLabel"
qdrant-data:
labels:
io.thothii.task13.run: "$runLabel"
embedding-models:
labels:
io.thothii.task13.run: "$runLabel"
auth-state:
labels:
io.thothii.task13.run: "$runLabel"
"@
$repoYaml = ConvertTo-YamlPath $spacedRepository
$envYaml = ConvertTo-YamlPath $envFile
@@ -254,20 +275,20 @@ overrides:
)
$render = Invoke-BoundedNative -FilePath "docker" -Arguments ($composeArguments + @("config", "--services")) -Label "render Windows Compose from spaced path"
$services = @($render.StdOut -split "`r?`n" | Where-Object { $_ } | Sort-Object)
if (($services -join ",") -ne "core,frontend") {
throw "rendered Windows stack must contain exactly core and frontend"
if (($services -join ",") -ne "core,embedding,embedding-model-init,frontend,qdrant") {
throw "rendered Windows stack must contain the canonical five services"
}
Invoke-BoundedNative -FilePath "docker" -Arguments ($composeArguments + @("config", "--quiet")) -Label "validate Windows Compose from spaced path" | Out-Null
if ($DockerStartup) {
Invoke-BoundedNative -FilePath "docker" -Arguments @("info") -Label "verify Windows Docker Desktop readiness" -TimeoutSeconds 60 | Out-Null
$startupAttempted = $true
Invoke-BoundedNative -FilePath "docker" -Arguments ($composeArguments + @("build", "--pull")) -Label "build two-service Windows stack" | Out-Null
Invoke-BoundedNative -FilePath "docker" -Arguments ($composeArguments + @("up", "--detach", "--wait", "--wait-timeout", "180")) -Label "start two-service Windows stack" -TimeoutSeconds 300 | Out-Null
Invoke-BoundedNative -FilePath "docker" -Arguments ($composeArguments + @("build", "--pull")) -Label "build canonical Windows stack" | Out-Null
Invoke-BoundedNative -FilePath "docker" -Arguments ($composeArguments + @("up", "--detach", "--wait", "--wait-timeout", "180")) -Label "start canonical Windows stack" -TimeoutSeconds 300 | Out-Null
$running = Invoke-BoundedNative -FilePath "docker" -Arguments ($composeArguments + @("ps", "--status", "running", "--services")) -Label "inspect running Windows services"
$runningServices = @($running.StdOut -split "`r?`n" | Where-Object { $_ } | Sort-Object)
if (($runningServices -join ",") -ne "core,frontend") {
throw "bounded Windows startup did not leave exactly core and frontend running"
if (($runningServices -join ",") -ne "core,embedding,frontend,qdrant") {
throw "bounded Windows startup did not leave the four long-running services ready"
}
Invoke-BoundedNative -FilePath $tht -Arguments @("--installation", $installation, "status") -Label "invoke installation-aware Windows tht in spaced path" | Out-Null
}
@@ -314,7 +335,7 @@ if (-not $cleanupSucceeded) {
throw "Windows cleanup proof failed; fixture path retained for recovery"
}
if ($DockerStartup) {
Write-Output "Windows spaced-path build, native tht, bounded two-service startup, and exact cleanup passed."
Write-Output "Windows spaced-path build, native tht, bounded canonical startup, and exact cleanup passed."
} else {
Write-Output "Windows spaced-path clone, LF-byte, Compose render, and native tht build/invocation contracts passed; Docker startup mode was not requested."
}