|
3 | 3 | { |
4 | 4 | "name": "Typecheck", |
5 | 5 | "status": "Passed", |
6 | | - "detail": "npm --prefix src/engine run typecheck — tsc --noEmit and tsc --noEmit -p tsconfig.scripts.json, no errors." |
| 6 | + "detail": "npm --prefix src/engine run typecheck -- tsc --noEmit && tsc --noEmit -p tsconfig.scripts.json, exit 0." |
7 | 7 | }, |
8 | 8 | { |
9 | 9 | "name": "Lint", |
10 | 10 | "status": "Passed", |
11 | | - "detail": "npm --prefix src/engine run lint — eslint src scripts, no findings." |
| 11 | + "detail": "npm --prefix src/engine run lint -- eslint src scripts, exit 0. The determinism guard (Math.random, non-bit-stable Math.*, Date.now) reported nothing." |
12 | 12 | }, |
13 | 13 | { |
14 | 14 | "name": "Test", |
15 | 15 | "status": "Passed", |
16 | | - "detail": "npm --prefix src/engine test — 97 test files, 1594 tests, all passed." |
| 16 | + "detail": "npm --prefix src/engine test -- vitest run: 97 test files passed (97), 1594 tests passed (1594), duration 9.38s." |
17 | 17 | }, |
18 | 18 | { |
19 | 19 | "name": "Pack package", |
20 | 20 | "status": "Passed", |
21 | | - "detail": "npm pack --silent in src/engine produced the-running-dev-game-engine-0.10.0.tgz with no errors." |
| 21 | + "detail": "cd src/engine; npm pack --silent produced the-running-dev-game-engine-0.10.0.tgz, exit 0." |
22 | 22 | }, |
23 | 23 | { |
24 | 24 | "name": "Inspect tarball", |
25 | 25 | "status": "Passed", |
26 | | - "detail": "tar -tzf against the packed tarball: no src/ entries, no tsconfig*.json, no .test.* build artifacts, and package/dist/ is present — matches ci.yml's four assertions exactly." |
| 26 | + "detail": "tar -tzf over 332 entries: no package/src/, no tsconfig*.json, no .test.* artifacts, and package/dist/ present." |
27 | 27 | }, |
28 | 28 | { |
29 | 29 | "name": "Consumer smoke", |
30 | 30 | "status": "Passed", |
31 | | - "detail": "consumer-smoke/: npm ci, npm run install:engine (installed the fresh tarball), npm run build (tsc), npm run smoke (node dist/smoke.js) — all completed with no error output and exit 0." |
| 31 | + "detail": "consumer-smoke/{node_modules,package-lock.json,dist} cleared, then npm run install:engine (installed the packed tarball, added 5 packages), npm run build (tsc -p tsconfig.json), npm run smoke (node dist/smoke.js) -- all exit 0." |
32 | 32 | }, |
33 | 33 | { |
34 | 34 | "name": "Parse-check PowerShell scripts", |
35 | 35 | "status": "Passed", |
36 | | - "detail": "Every *.ps1 in the repo parsed with [System.Management.Automation.Language.Parser]::ParseFile, zero parse errors across the tree." |
| 36 | + "detail": "Every *.ps1 outside node_modules parsed with [System.Management.Automation.Language.Parser]::ParseFile; 0 parse errors." |
37 | 37 | }, |
38 | 38 | { |
39 | 39 | "name": "Run Pester tests", |
40 | 40 | "status": "Passed", |
41 | | - "detail": "Invoke-Pester -Path tools -PassThru: Tests Passed: 324, Failed: 0, Skipped: 35, NotRun: 0." |
42 | | - }, |
43 | | - { |
44 | | - "name": "Validate the core/companion split", |
45 | | - "status": "Passed", |
46 | | - "detail": "tools/Test-Companion.ps1: 'Companion split OK - 23 core(s) checked, 14 companion file(s) present, 9 core(s) with no companion.' State: Valid, exit 0." |
47 | | - }, |
48 | | - { |
49 | | - "name": "Check the design state against the tree", |
50 | | - "status": "DidNotRun", |
51 | | - "reason": "tools/Test-DesignState.ps1 exited 2 (could-not-evaluate, not a finding): 'ContractListUnreadable: SectionNotFound: design/20-contract.md' and 'StateSetAbsent: design/state/ is missing or holds no records other than WorkRef mirrors' — this repository has not adopted design/state/ as its live state set (per CLAUDE.md this behaves per I27, reading design/ and the contract directly instead), so the script has nothing to evaluate." |
| 41 | + "detail": "Invoke-Pester -Path tools -PassThru: passed=324 failed=0 skipped=35 total=359." |
52 | 42 | }, |
53 | 43 | { |
54 | 44 | "name": "Validate Markdown links, terminology, and generated files", |
55 | 45 | "status": "Passed", |
56 | | - "detail": "./build/Test-Documentation.ps1: 'Human-documentation drift check passed across 18 generated engine page(s), compatibility pointers, and the guide.' and 'Documentation checks passed across 197 Markdown file(s).'" |
| 46 | + "detail": "./build/Test-Documentation.ps1: human-documentation drift check passed across 18 generated engine page(s), compatibility pointers, and the guide; documentation checks passed across 198 Markdown file(s)." |
57 | 47 | }, |
58 | 48 | { |
59 | 49 | "name": "Build documentation", |
60 | 50 | "status": "DidNotRun", |
61 | | - "reason": "docs.ps1 is not present in this checkout — per CLAUDE.md it is installer-generated (Invoke-SetupDocs), not committed, and this session did not run that installer. The production Docusaurus build (onBrokenLinks: 'throw') cannot be reproduced locally without it; the 'Verify Documentation Build' check on the PR is where this answer comes from." |
| 51 | + "reason": "./docs.ps1 is not present in this checkout. It is generated by Invoke-SetupDocs rather than committed (CLAUDE.md, Docs Site), so the production Docusaurus build -- the only gate that resolves routes and heading anchors under onBrokenLinks: 'throw' -- cannot be run here. The Verify Documentation Build check on the pull request is where that answer comes from. A docs image was built directly from docs/Dockerfile during this slice to capture screenshots; that is a dev-server run, not this gate." |
62 | 52 | }, |
63 | 53 | { |
64 | 54 | "name": "Build and verify landing page", |
65 | 55 | "status": "Passed", |
66 | | - "detail": "npm --prefix src/engine run build then npm --prefix site run check (format:check, lint, typecheck, test [15], test:browser [11], test:build, test:merge) — all passed, including the built HTML entry point's static-metadata and Node-only-import checks." |
| 56 | + "detail": "npm --prefix src/engine run build (exit 0), then npm --prefix site run check (exit 0): prettier format:check, oxlint, tsc -b, 17 unit tests, 23 browser tests in Chromium, production build with verify-build.mjs ('Both built HTML entry points contain their required static metadata, and 3 bundle(s) are free of Node-only runtime references'), and verify-merge.mjs." |
67 | 57 | }, |
68 | 58 | { |
69 | 59 | "name": "Merge landing page into documentation build", |
70 | 60 | "status": "DidNotRun", |
71 | | - "reason": "npm --prefix site run merge failed with 'Documentation output ...\\artifacts\\docs has no protected docs subtree' because artifacts/docs does not exist — it is only produced by the 'Build documentation' step above, which itself did not run (docs.ps1 absent). This step has no independent input; it cannot be verified without that prerequisite." |
| 61 | + "reason": "npm --prefix site run merge exited 1 with \"Documentation output '...\\artifacts\\docs' has no protected 'docs' subtree.\" -- artifacts/docs does not exist because the Build documentation gate above could not run. This is a missing prerequisite, not a merge failure: the same merge logic is exercised against a fixture documentation output by site/scripts/verify-merge.mjs, which passed inside the landing-page gate." |
72 | 62 | }, |
73 | 63 | { |
74 | 64 | "name": "Test the host", |
75 | 65 | "status": "Passed", |
76 | | - "detail": "dotnet test src/host/SubZeroDev.GameEngine.Host.Tests/SubZeroDev.GameEngine.Host.Tests.csproj -c Release: 'Passed! - Failed: 0, Passed: 12, Skipped: 0, Total: 12'." |
| 66 | + "detail": "dotnet test src/host/SubZeroDev.GameEngine.Host.Tests/SubZeroDev.GameEngine.Host.Tests.csproj -c Release (net10.0): Failed 0, Passed 12, Skipped 0, Total 12. Restore resolved from cache, so the sibling-repo feed credential was not needed." |
77 | 67 | }, |
78 | 68 | { |
79 | 69 | "name": "Positive route and probe smoke", |
80 | 70 | "status": "DidNotRun", |
81 | | - "reason": "Requires building the host Docker image, which restores SubZeroDev.Platform.Hosting from a private GitHub Packages feed using the CI-only REGISTRY_TOKEN secret (host-image.yml). That credential is not available in this local session; the host-image workflow's own run on the PR is where this answer comes from." |
| 71 | + "reason": "The step depends on the preceding 'Build the image' step, which restores SubZeroDev.Platform.Hosting from GitHub Packages using the REGISTRY_TOKEN build secret. That credential is not available in this environment, so subzerodev-gameengine-host:smoke was never built and no container could be started to curl /, /roadmap/, /docs/, /health/live and /health/ready against. The host-image workflow check on the pull request is where this answer comes from." |
82 | 72 | }, |
83 | 73 | { |
84 | 74 | "name": "Negative fixture -- corrupted artifact must fail to start", |
85 | 75 | "status": "DidNotRun", |
86 | | - "reason": "Depends on the same host image built by the 'Positive route and probe smoke' step above, which did not run for the same reason (REGISTRY_TOKEN not available locally)." |
| 76 | + "reason": "tools/host-smoke/Dockerfile.negative-fixture builds FROM subzerodev-gameengine-host:smoke, the image the Positive route and probe smoke gate above could not build for want of the REGISTRY_TOKEN build secret. With no base image there is nothing to corrupt, so the must-exit-non-zero assertion was never made." |
87 | 77 | } |
88 | 78 | ] |
89 | 79 | } |
0 commit comments