Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 25 additions & 25 deletions .claude/verify-report.json
Original file line number Diff line number Diff line change
@@ -1,29 +1,29 @@
{
"gates": [
{
"name": "Parse-check PowerShell scripts",
"status": "Passed",
"detail": "Parsed every *.ps1 under the repository with [System.Management.Automation.Language.Parser]::ParseFile. No parse errors."
},
{
"name": "Run Pester tests",
"status": "Passed",
"detail": "Invoke-Pester -Path tools -Output Detailed -PassThru\nTests completed in 110.75s\nTests Passed: 280, Failed: 0, Skipped: 0, Inconclusive: 0, NotRun: 0"
},
{
"name": "Validate the core/companion split",
"status": "Passed",
"detail": "./tools/Test-Companion.ps1\nCompanion split OK - 21 core(s) checked, 0 companion file(s) present, 21 core(s) with no companion.\nState: Valid, Findings: {}, CoreCount: 21, CompanionCount: 0, AbsentCount: 21. Exit 0."
},
{
"name": "Check the design state against the tree",
"status": "Passed",
"detail": "./tools/Test-DesignState.ps1\nFindings (0):\nReported (8, all non-blocking): [MirrorStale] work/8..work/14 - MirroredAt '394505aae8cdd82a2375a4956fc7ba93090db469' is not the current commit '66fb48a7f411a4bdbecbb6b3a846da80a95586f2'; [WorkStateDivergence] work/8: mirrored State 'OPEN' disagrees with tracker's 'CLOSED'.\nCould not evaluate (0):\nLargest closure: unit/script/test-designstate, 6122 bytes (ceiling 16384), largest contributor contract/test-designstate.\nExit code: 0."
},
{
"name": "Check the spec set",
"status": "DidNotRun",
"reason": "./tools/Test-SpecSet.ps1 exited 2, State=NotEvaluated, Reason=RegisterAbsent, Detail='No provisional-register region exists, so provisional-number checks could not run.' Documents=8, Declarations=936, Unchecked=1."
}
{
"name": "Parse-check PowerShell scripts",
"status": "Passed",
"detail": "Every *.ps1 under the repository parsed with [System.Management.Automation.Language.Parser]::ParseFile with zero parse errors returned."
},
{
"name": "Run Pester tests",
"status": "Passed",
"detail": "Invoke-Pester -Path tools -Output Detailed -PassThru: Tests Passed: 281, Failed: 0, Skipped: 0, Inconclusive: 0, NotRun: 0. The 5 failures present at 6ced5a2/bcd8fec were a single pre-existing cause (design/state-index.md's outstanding region stale against the live tracker after afb4cf0 updated WorkRef records without re-running the projector) and were cleared by 9ba4f50, which regenerates that projection. That commit changes only the projected `outstanding` table, no hand-authored content."
},
{
"name": "Validate the core/companion split",
"status": "Passed",
"detail": "./tools/Test-Companion.ps1: Companion split OK - 21 core(s) checked, 0 companion file(s) present, 21 core(s) with no companion. State: Valid. Exit code 0."
},
{
"name": "Check the design state against the tree",
"status": "Passed",
"detail": "./tools/Test-DesignState.ps1: Findings (0), CouldNotEvaluate (0), ExitCode 0. Largest closure: unit/script/test-designstate, 6122 bytes (ceiling 16384), largest contributor contract/test-designstate. The blocking ProjectionStale finding present before 9ba4f50 is gone."
},
{
"name": "Check the spec set",
"status": "DidNotRun",
"reason": "./tools/Test-SpecSet.ps1 returned State: NotEvaluated, Reason: RegisterAbsent, Detail: 'No provisional-register region exists, so provisional-number checks could not run.' Exit code 2. Not a defect: design/20-contract.md's Error semantics table names RegisterAbsent as an unchecked reason that forces exit 2 by design (SS5, 'If any check is unchecked, the run exits 2 regardless of findings'). The provisional-register region is S5's territory, not S2's, and main itself has been red for this same reason since S1 added this workflow step. design/30-slices.md's own Contract question 1 already flags SS5's all-unchecked-forces-2 semantics as possibly wrong for the permanent CrossRepositoryUnresolvable case; this run surfaces a second, narrower instance (RegisterAbsent, temporary, clears when S5 lands) that the recorded question's 'S1-S3 and S5-S7 are unaffected' line did not anticipate. That is a contract question for /contract, not a code fix here."
}
]
}
14 changes: 8 additions & 6 deletions design/state-index.md
Original file line number Diff line number Diff line change
Expand Up @@ -152,10 +152,12 @@ This document is a navigation view generated from `design/state/`. Edit the reco
| Rank | Issue | Title | Criteria | Mirrored at |
|---|---|---|---|---|
| 1 | #8 | S1 — The spec set is read end to end, or the run stops and points at the line | S1.1, S1.2, S1.3, S1.4, S1.5, S1.6, S1.7, S1.8, S1.9, S1.10 | `394505aae8cdd82a2375a4956fc7ba93090db469` |
| 2 | #9 | S2 — Every push runs the checks | S2.1, S2.2, S2.3, S2.4, S2.5 | `394505aae8cdd82a2375a4956fc7ba93090db469` |
| 3 | #10 | S3 — The two documents stop being able to disagree about the types they both describe | S3.1, S3.2, S3.3, S3.4, S3.5, S3.6, S3.7, S3.8, S3.9, S3.10 | `394505aae8cdd82a2375a4956fc7ba93090db469` |
| 4 | #11 | S4 — Every reference resolves, and every claim about the engine repository pins a commit | S4.1, S4.2, S4.3, S4.4, S4.5, S4.6 | `394505aae8cdd82a2375a4956fc7ba93090db469` |
| 5 | #12 | S5 — Every provisional number says why it is deferred and what would settle it | S5.1, S5.2, S5.3, S5.4, S5.5, S5.6 | `394505aae8cdd82a2375a4956fc7ba93090db469` |
| 6 | #13 | S6 — Everything the game keeps in state is counted, and told what it must say | S6.1, S6.2, S6.3, S6.4, S6.5 | `394505aae8cdd82a2375a4956fc7ba93090db469` |
| 7 | #14 | S7 — The missing lifecycles are written | S7.1, S7.2, S7.3 | `394505aae8cdd82a2375a4956fc7ba93090db469` |
| 9 | #9 | S2 — Every push runs the checks | S2.1, S2.2, S2.3, S2.4, S2.5 | `14a48c1a615cf682dc7e532eba983c49e6abc65d` |
| 10 | #10 | S3 — The two documents stop being able to disagree about the types they both describe | S3.1, S3.2, S3.3, S3.4, S3.5, S3.6, S3.7, S3.8, S3.9, S3.10 | `14a48c1a615cf682dc7e532eba983c49e6abc65d` |
| 11 | #11 | S4 — Every reference resolves, and every claim about the engine repository pins a commit | S4.1, S4.2, S4.3, S4.4, S4.5, S4.6 | `14a48c1a615cf682dc7e532eba983c49e6abc65d` |
| 12 | #12 | S5 — Every provisional number says why it is deferred and what would settle it | S5.1, S5.2, S5.3, S5.4, S5.5, S5.6 | `14a48c1a615cf682dc7e532eba983c49e6abc65d` |
| 13 | #13 | S6 — Everything the game keeps in state is counted, and told what it must say | S6.1, S6.2, S6.3, S6.4, S6.5 | `14a48c1a615cf682dc7e532eba983c49e6abc65d` |
| 14 | #14 | S7 — The missing lifecycles are written | S7.1, S7.2, S7.3 | `14a48c1a615cf682dc7e532eba983c49e6abc65d` |
| 19 | #19 | Restore missing design-state closure records | — | `14a48c1a615cf682dc7e532eba983c49e6abc65d` |
| 26 | #26 | Read-SpecSetIndex fails closed incorrectly for a shallow fixture path | — | `14a48c1a615cf682dc7e532eba983c49e6abc65d` |
<!-- outstanding:end -->
22 changes: 22 additions & 0 deletions tools/Test-CIWorkflow.Tests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,28 @@ Describe 'CI workflow: the Run Pester tests step is authenticated (#79)' {
}
}

Describe 'CI workflow: the Check the spec set step does not swallow a failing exit code (S2.4)' {

BeforeAll {
$script:WorkflowPath = Join-Path (Split-Path $PSScriptRoot -Parent) '.github/workflows/verify.yml'
$script:Lines = Get-Content -LiteralPath $script:WorkflowPath
}

It 'the "Check the spec set" step carries neither continue-on-error nor a swallowed exit code' {
$stepIndex = ($script:Lines | Select-String -Pattern '- name: Check the spec set').LineNumber
$stepIndex | Should -Not -BeNullOrEmpty

$nextStepIndex = ($script:Lines | Select-String -Pattern '^\s*- name:' |
Where-Object { $_.LineNumber -gt $stepIndex } |
Select-Object -First 1).LineNumber
$endIndex = if ($nextStepIndex) { $nextStepIndex - 1 } else { $script:Lines.Count }
$stepBody = $script:Lines[($stepIndex - 1)..($endIndex - 1)] -join "`n"

$stepBody | Should -Not -Match 'continue-on-error'
$stepBody | Should -Not -Match '\|\|\s*true'
}
}

Describe 'CI workflow: design-state pin ancestry is evaluable' {

BeforeAll {
Expand Down
Loading