Archive closed cb5 Saved Scenario UI gate with full-suite failures

This commit is contained in:
2026-09-13 01:16:54 -07:00
parent 5bd2c0bec8
commit d6dd2b0920
37 changed files with 37513 additions and 0 deletions
@@ -0,0 +1 @@
* -text -whitespace
@@ -0,0 +1,29 @@
# Closed Saved Scenario UI gate — cb5d50d
This archive preserves the completed Windows gate for source commit [cb5d50de03a002079da17e6f92ea44c32f7ece75](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/commit/cb5d50de03a002079da17e6f92ea44c32f7ece75). It is failed full-suite evidence, not UI acceptance. Parent ran the gate; this archive task ran no Cargo, compiler, tests or native input.
| Stage | Actual result |
| --- | --- |
| [List](original/list-receipt.json) | Cargo 0; 1,045 unique tests listed; exact focused membership 224/224. |
| [Focused](original/focused-receipt.json) | 224 passed, 0 failed, 0 ignored, 821 filtered; Cargo 0. |
| [Full desktop](original/all-receipt.json) | 1,040 passed, 2 failed, 3 ignored, 0 filtered; test time 974.39 seconds; Cargo 101. |
| Strict / GUI build | Not run after full-suite failure. |
List ran 2026-09-13 07:29:46–07:48:14 UTC; focused 07:49:56–07:52:04 UTC; full 07:54:24–08:10:47 UTC. The full receipt's selectionValid=false accompanies its failed-test outcomes. Independent archive verification found the full run's 1,045 unique names exactly equal the list, and focused membership exactly equal the selected 224. This is not the earlier wrong-module-path selection-oracle failure.
## Recorded failures
The [unaltered full log](original/all.log) records two Option::unwrap() panics:
- app::transition_context_tests::scenario_transition_focuses_requested_counterpart_and_preserves_unrelated_views_in_both_directions — app/transition_context_tests.rs:100:36.
- behavior::contextual_source_tests::contextual_source_empty_palette_lifeline_cannot_open_a_previous_owner_or_layer — behavior/contextual_source_tests.rs:900:42.
Diagnosis and corrections are separate work. This archive does not infer their causes or claim a later correction passed. The three ignored tests and exact result records remain in the receipt/raw log.
## Binding and scope
All seven complete-input captures contain the same 601 path/size/SHA-256 records at cb5d50d. Archive verification also checked every stage-bound script/input hash and raw-log hash against its receipt. The list, focused and full receipts bind the same desktop test executable: 149,771,264 bytes, SHA-256 d6922e9263106d8f0182670492c4ccd3a604fc7a274688bed6a9ceb650eca0a7. The executable itself is not copied here. Cache policy, toolchain versions, external environment bindings, parser checks and prior-failure provenance are preserved under original/; these describe the recorded environment, not a self-contained build installation.
[Server provenance](original/server-provenance.json) retains the verified 57 server tests from 37be410 because core/server/manifests were unchanged; no server execution occurred in this gate. It does not establish strict acceptance. Prior evidence remains separate: [83 list selection-oracle failure](../scenario-workspace-list-83e840e-20260913/README.md) and [83 focused recovery](../scenario-workspace-focused-recovery83-20260913/README.md).
All 34 original gate files, including preparation README, scripts, raw logs and receipts, are copied byte-for-byte. Their original preparation language is historical; the table above describes this closed attempt. [manifest.json](manifest.json) lists byte sizes, SHA-256 and Git blob identities. Archive metadata adds only this README, manifest and binary-preserving .gitattributes. No product source, DECISIONS entry or older archive is changed.
@@ -0,0 +1,222 @@
{
"sourceCommit": "cb5d50de03a002079da17e6f92ea44c32f7ece75",
"archiveBase": "5bd2c0bec82ebf0e3a94b9d37828f4a1f9b541ae",
"originalDirectory": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/scenario-workspace-gates-attempt3-20260913/",
"archivedAtUtc": "2026-09-13T08:15:09.757Z",
"files": [
{
"path": "original/README.md",
"bytes": 3383,
"sha256": "0b0dd4efb117715d65e4c3b4aef25487f94e3c80587448c893caee87fd719ff9",
"gitBlob": "b9920a716db7e61b1479aaf72344722c187e4d2b"
},
{
"path": "original/all-receipt.json",
"bytes": 195871,
"sha256": "81f34fe004c4ff6229d1d4214569b671a755cbd349ba51d58dca13aceb9ae285",
"gitBlob": "1e877a1be98e7aed9ab6822febf441a3cbdb58a6"
},
{
"path": "original/all.log",
"bytes": 122708,
"sha256": "36da5a271feb222b5fa5d496b0173632389e670bcefe5bef0a489bf7bb8243aa",
"gitBlob": "947878a5e04adbadd84d7b3efa09ff7bb69ec59d"
},
{
"path": "original/binary-inputs.ps1",
"bytes": 1214,
"sha256": "59da671a59d75ea0aa0c4662b1e48fd189823e45b71d0df98e65430becc7da83",
"gitBlob": "e1cb7efd79da716b279e1d2f681728a7355d7ab0"
},
{
"path": "original/cache-policy.json",
"bytes": 372,
"sha256": "bbce544b2f53cc47efa11584105f3cccb38756b681e0d8f60d6c4c3cfdcd6606",
"gitBlob": "600bfb84ec949c31436f8a1d2678b78bab347f19"
},
{
"path": "original/capture.ps1",
"bytes": 4110,
"sha256": "dae2631696b2c19063caa33918b0292949af05a376a4624c3f00f53c2eb1f60f",
"gitBlob": "a12f3c1b985e017f74795a49e20e1a7a85a180db"
},
{
"path": "original/enumerate-inputs.ps1",
"bytes": 1845,
"sha256": "7d6077468fba14d878d715f717e09855e910c1b152975976045e3cb8862761f1",
"gitBlob": "a301967b549c49b0c825ebe0ac241513dd81b35d"
},
{
"path": "original/enumeration.json",
"bytes": 73591,
"sha256": "4f7714ca587cb2af79e207887d10426bfbb3eb8b79456b066bd183d3d15167af",
"gitBlob": "693da7d98c53808cd98b0f0e512802e77c343195"
},
{
"path": "original/expected-inputs.json",
"bytes": 115634,
"sha256": "77c3b6581a24e6c484a31db1f7d06eca4e42b8f94008cf88493fdcaa49c7c073",
"gitBlob": "0707c753242ffad0a3ccc04022ff1078e7d5ea9e"
},
{
"path": "original/expected-tests.json",
"bytes": 143154,
"sha256": "ba4f8bdae78b3e871c0bf031e86f5e5d766eb7416f851fd91b99a6e9c4aee84b",
"gitBlob": "ddb3b915289c9bfd2daa928616c4b22f675448c6"
},
{
"path": "original/external-input-template.json",
"bytes": 1474,
"sha256": "56bf73748cf323212f73711a5c3cc75dd7a1771398a771eae208ff7348813598",
"gitBlob": "ba2c15b87faa4877bb885161cd0e0039048da7c9"
},
{
"path": "original/external-inputs.json",
"bytes": 1461,
"sha256": "f7f79b1fe96809c816beb13f054b860e513c1e80aa9dd64ae9bde8c71450d348",
"gitBlob": "f0a396abf98214c2fe3c1739886608da930e0ed9"
},
{
"path": "original/finalization.json",
"bytes": 611,
"sha256": "9c25d3204fb14ed8d81883a5769a0792e73ac3a493560ddd4d48a74f3338676b",
"gitBlob": "b3d50b25ec1ed7e655dd0419e56c784028918235"
},
{
"path": "original/finalize.ps1",
"bytes": 6001,
"sha256": "963bf164ed4362a3e97074fd6a9a4b68a3175bd0d6d614256b0534f3252fc7b4",
"gitBlob": "5b54b6834c40c71ae02067704a80fb5ea8fe2a6a"
},
{
"path": "original/focused-receipt.json",
"bytes": 119138,
"sha256": "e508e7c11e196c1ae1b848e3cf8877bf4efb7586e58f038fb8917696674b2329",
"gitBlob": "3eb61605816cd165e2cc8be84ac67390cae2394e"
},
{
"path": "original/focused.log",
"bytes": 27977,
"sha256": "10bffc9b5ab8363d7b88f1b4ce96a149e22bccd2d6dcee734e8bb644f1e65f35",
"gitBlob": "0326fe08a757a9f8e2c960ae32c9f3da19c24572"
},
{
"path": "original/inputs-complete-all-after.json",
"bytes": 117198,
"sha256": "97c08eeb457178136da5253c4ff8b042ccdbc63a1023ebf0b67ab9f1fe9f85df",
"gitBlob": "65c1e05f0d365f5ba1fee2f95c6e4debaddf2538"
},
{
"path": "original/inputs-complete-all-before.json",
"bytes": 117198,
"sha256": "fe3263a828835ed004eb080bbd25172c387d2e20277198119c5aacbf4aa8a653",
"gitBlob": "b3f31e8e19a1b8470d076dd105265467ee864794"
},
{
"path": "original/inputs-complete-before.json",
"bytes": 117198,
"sha256": "39aa11b2eb80c8e848a70e3f09e4fcfa7fdbf34b6abf10d25e448c679d0493fb",
"gitBlob": "4f2a106317788b64a7e21357eefdae8a734c1403"
},
{
"path": "original/inputs-complete-focused-after.json",
"bytes": 117198,
"sha256": "45660772c2e11c3aab0cc09b35e9df829319ac2be86f4c20abe8f07d5275207d",
"gitBlob": "7db792dbd98896c34ab18d480a40b66347cd6499"
},
{
"path": "original/inputs-complete-focused-before.json",
"bytes": 117198,
"sha256": "5915ef5c12a6e9e280e9e3e75bb2638580de855e138d5043acaae5df8cc4af4e",
"gitBlob": "fde6db70604b3ec65d90320dfe2bf08dbd6442f4"
},
{
"path": "original/inputs-complete-list-after.json",
"bytes": 117198,
"sha256": "a2f74ec6d77593511bb3db6d7ef3a5c1f3fb63f1fd069d5ef687de529ef2ee07",
"gitBlob": "9772a8a7866e3ab519c200474ad9cc2f57369991"
},
{
"path": "original/inputs-complete-list-before.json",
"bytes": 117198,
"sha256": "ff0ddad265213fd1ec362f8d12ce386610f77fa383da174ac6f3b542da728bc7",
"gitBlob": "98535797acef268638540eb7a558b83c8b364a86"
},
{
"path": "original/list-receipt.json",
"bytes": 145701,
"sha256": "79601d16e4b401853ec81461db65a698233c4214f829a1f455cc98c5ccc82896",
"gitBlob": "e6911a062f833ad28e506d3aad16aa277e5eb73a"
},
{
"path": "original/list.log",
"bytes": 114881,
"sha256": "2211838e02b434b589e21f767ffa720b908080421dcfc7e824e344b1d75ce1cf",
"gitBlob": "62cba92e179eb53f8fb515fc1083c55c5ef1b2c3"
},
{
"path": "original/parser-preparation-verification.json",
"bytes": 1109,
"sha256": "585178219ce16ca11d40c6742359149584d24161872dbacd39f4b741872378c0",
"gitBlob": "0f75fd80fd9c01f625e46e6ce9a8819d7cdaf5de"
},
{
"path": "original/parser-verification.json",
"bytes": 1109,
"sha256": "17e2f5aebc61da1a6a81079730917653104c541e4db0f20b46a0db8d80bdeb9d",
"gitBlob": "2f5a4322ca980e32294c8fbfc801aba3f8528120"
},
{
"path": "original/prior-failure-provenance.json",
"bytes": 1507,
"sha256": "ade88c6644625df2604252b6166e5d99203c47a0736700015fea98f97e336976",
"gitBlob": "b87c1851fc63d184be4584d420eea2e1d373c1c9"
},
{
"path": "original/run.ps1",
"bytes": 13046,
"sha256": "1e713ae7bcf69166d5752bbf3ea9ffd0393c64f1c44fb6d0cf29f8b6621d3a10",
"gitBlob": "17232e83b58deabfdba7b689c5e8aff365ffafd4"
},
{
"path": "original/server-provenance-template.json",
"bytes": 1306,
"sha256": "76a3144c85c45f8de80128b54ea0ce8635f4a2f86a2abf23ab6ef04844da8082",
"gitBlob": "e6d634e195f4c20c9c7cc02a6effa092d99484dd"
},
{
"path": "original/server-provenance.json",
"bytes": 1306,
"sha256": "3b89151c73a22036e04d1eef06c237670666937d253b4c95dfbf7547df7c162a",
"gitBlob": "2ff912590c04c95db5687cc591c664536b2c7ecc"
},
{
"path": "original/toolchain-versions.json",
"bytes": 2268,
"sha256": "31b3498b90e5ac72dd19e888fa8151a263c01f016bb96661eb5c69aee94e177f",
"gitBlob": "26d2b5d9d3d9679d40c96800e5174f7abe46f9e5"
},
{
"path": "original/validate-scripts.ps1",
"bytes": 487,
"sha256": "6d2ff701111f1a4d1f9c8c511f11ffe62424697cada429f0420e20e2c46bc838",
"gitBlob": "0547ba8dc0876e21617235c3d840466dd85a85ef"
},
{
"path": "original/verify-parser.ps1",
"bytes": 3442,
"sha256": "bfad3dfc88eddf6065b78a8bbd1a700e6de152c5b18ab35afa8d3313abca02be",
"gitBlob": "f93760763107fd13c3a078a4fd8afdaee9d3fa15"
}
],
"byteExact": true,
"verification": {
"captures": 7,
"sourceCount": 601,
"sourceFilesUnchanged": true,
"listCount": 1045,
"focusedCount": 224,
"fullMembershipExact": true,
"boundScriptsAndLogsMatchReceipts": true
}
}
@@ -0,0 +1,23 @@
# Saved Scenario workspace retry gate — pending reviewed pin
Prepared only. No Cargo, compiler/version invocation, cleanup, test binary, GUI or native staging is run by this preparation. Parent supplies the final reviewed source commit after the two focused failures and visibility correction are resolved. Closed attempts remain untouched.
`finalize.ps1 -SourceCommit <reviewed-40-character-pin>` requires the existing UI worktree to be clean at that exact commit. It performs read-only source/config enumeration and writes fresh manifests, the single initial capture, prior-failure provenance and script/parser checks. It refuses existing captures/runs and core/server changes relative to the already tested37 scope. It neither starts Cargo nor cleans anything. Inspect a partial-finalization failure; do not overwrite historical captures to retry.
Parent dispatch order, in separate PowerShell7 invocations:
1. `run.ps1 -Stage list`
2. `run.ps1 -Stage focused`
3. `run.ps1 -Stage all`
4. `run.ps1 -Stage clippy`
5. `run.ps1 -Stage build`
Every stage requires the exact successful predecessor and unchanged transitive recipe/source hashes. Stop after a failed focused run; no full/strict/build success is inferred. The pending-pin runner fails before any Cargo invocation. This retry deliberately **retains the existing root target/cache**; no package-clearance file or clean is requested. Existing task environment remains jobs1/incremental0 unless separately reviewed; retained Cargo artifacts are not a claim that rustc incremental mode is enabled.
The corrected recovery83 manifest supplies all224 focused names and the actual1045 desktop names, including `behavior::canvas_workspace::camera_policy_tests::{tiny_zoom_label_is_nonzero_and_changes_with_zoom,topology_retains_five_percent_floor}`. Full acceptance requires exactly three preexisting named ignores, no filtered tests and all listed tests accounted for. If the final source adds/removes/renames tests, parent must review/update the expected membership before finalization; a fresh actual listing must still match exactly.
Listing binds the actual `Running unittests ... (.exe)` path and resulting bytes/SHA256. Later stages hash that same test executable before/after; focused/full also require the logged executed path to match. Changing bytes or a missing/unexpected executable rejects acceptance. The final GUI build records its own executable bytes/hash/mtime. Source before/after captures independently compare Git/rg membership, source hashes and external Cargo config presence/bytes. No registry-wide dependency hash claim is made.
Strict runs **both desktop and server**: `cargo clippy -p oa-desktop -p oa-server --all-targets --locked --offline -- -D warnings`. The final build is `cargo build -p oa-desktop --bin arcadia-studio --locked --offline`. Prior unchanged server tests are reused only after source-scope comparison; prior server tests do not substitute for this combined strict stage.
`validate-scripts.ps1` parses all seven scripts without executing the gate. `verify-parser.ps1` extracts and executes the actual runner's result-parser block against synthetic focused/list logs, including missing/duplicate/zero/wrong-count/wrong-filtered controls. These are evaluator checks, not product tests. Native staging remains deferred until parent accepts the actual finalized build receipt.
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,20 @@
# Pure file/log readers. No executable is started by these helpers.
function Get-GateBinary([string]$Path,[string]$Target) {
$resolved=[IO.Path]::GetFullPath($Path)
$root=[IO.Path]::GetFullPath($Target).TrimEnd('\','/')+[IO.Path]::DirectorySeparatorChar
if(-not $resolved.StartsWith($root,[StringComparison]::OrdinalIgnoreCase)){throw 'Executable path escapes the parent-owned target.'}
$item=Get-Item -LiteralPath $resolved
[ordered]@{path=$resolved;bytes=$item.Length;sha256=(Get-FileHash -LiteralPath $resolved -Algorithm SHA256).Hash.ToLowerInvariant();mtimeUtc=$item.LastWriteTimeUtc.ToString('o')}
}
function Get-GateTestBinaries([string]$Log,[string]$Target) {
$paths=@([regex]::Matches($Log,'(?m)^\s*Running unittests .+? \(([^\r\n]+\.exe)\)\s*$')|ForEach-Object {$_.Groups[1].Value}|Sort-Object -Unique)
foreach($path in $paths){Get-GateBinary $path $Target}
}
function Same-GateBinaries($Left,$Right) {
$a=@($Left|Sort-Object path);$b=@($Right|Sort-Object path)
if($a.Count -eq 0 -or $a.Count -ne $b.Count){return $false}
for($i=0;$i -lt $a.Count;$i++){
if($a[$i].path -ine $b[$i].path -or $a[$i].bytes -ne $b[$i].bytes -or $a[$i].sha256 -cne $b[$i].sha256){return $false}
}
return $true
}
@@ -0,0 +1,7 @@
{
"base": "cb5d50de03a002079da17e6f92ea44c32f7ece75",
"retainExistingTarget": true,
"cleanRequested": false,
"target": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\target",
"scope": "Same-worktree development rebuild; parent requested no package clearance. Existing task env remains jobs1/incremental0. Source and executable binding are required."
}
@@ -0,0 +1,47 @@
#Requires -Version 7.0
param([Parameter(Mandatory=$true)][ValidatePattern('^(before|after|(list|focused|all|clippy|build)-(before|after))$')][string]$Stage)
Set-StrictMode -Version Latest
$ErrorActionPreference='Stop'
$taskWorkspace='C:\Users\User\Documents\Git\ARCADIA-Studio\.local\scenario-workspace-ytr83r-20260913'
$taskPin='cb5d50de03a002079da17e6f92ea44c32f7ece75'
function Hash-Input([string]$Path){(Get-FileHash -LiteralPath $Path -Algorithm SHA256).Hash.ToLowerInvariant()}
$taskOutput=Join-Path $PSScriptRoot ('inputs-complete-'+$Stage+'.json')
if(Test-Path -LiteralPath $taskOutput){throw 'Preserve existing input evidence; use a new directory for retries.'}
$pinRecord=Get-Content -Raw -LiteralPath (Join-Path $PSScriptRoot 'expected-inputs.json')|ConvertFrom-Json
$enumeration=Get-Content -Raw -LiteralPath (Join-Path $PSScriptRoot 'enumeration.json')|ConvertFrom-Json
$external=Get-Content -Raw -LiteralPath (Join-Path $PSScriptRoot 'external-inputs.json')|ConvertFrom-Json
if($pinRecord.base -cne $taskPin -or $enumeration.base -cne $taskPin -or $external.base -cne $taskPin){throw 'Wrong input pin.'}
Push-Location -LiteralPath $taskWorkspace
try {
$taskBase=git rev-parse HEAD
if($LASTEXITCODE -ne 0 -or $taskBase -cne $taskPin){throw 'Wrong source commit.'}
$status=@(git status --porcelain)
if($LASTEXITCODE -ne 0 -or $status.Count){throw 'Frozen worktree changed.'}
$taskRoots=@($enumeration.rootInputs);$taskScopes=@($enumeration.scopes)
$tracked=@(git ls-files -- @taskRoots @taskScopes)
if($LASTEXITCODE -ne 0){throw 'Git enumeration failed.'}
$tracked=@($tracked | ForEach-Object {$_.Replace('\','/')} | Sort-Object -Unique)
$present=@(rg --files @taskScopes)
if($LASTEXITCODE -ne 0){throw 'Actual input enumeration failed.'}
$taskPaths=@(($present+$taskRoots) | ForEach-Object {$_.Replace('\','/')} | Sort-Object -Unique)
if(@(Compare-Object $tracked $taskPaths).Count -or @(Compare-Object @($enumeration.gitPaths) $tracked).Count){throw 'Frozen input membership changed.'}
$taskEntries=@($taskPaths | ForEach-Object {$item=Get-Item -LiteralPath $_;[ordered]@{path=$_;bytes=$item.Length;sha256=(Hash-Input $_)}})
$externalNow=@(foreach($f in $external.files){
$present=Test-Path -LiteralPath $f.path
if($present -ne $f.present){throw ('External config presence changed: '+$f.path)}
if($present){$item=Get-Item -LiteralPath $f.path;$hash=Hash-Input $f.path;if($item.Length -ne $f.bytes -or $hash -cne $f.sha256){throw ('External input changed: '+$f.path)};[ordered]@{path=$f.path;present=$true;bytes=$item.Length;sha256=$hash}}
else{[ordered]@{path=$f.path;present=$false}}
})
$taskRecord=[ordered]@{capturedUtc=[DateTime]::UtcNow.ToString('o');workspace=$taskWorkspace;base=$taskBase;count=$taskEntries.Count;files=$taskEntries;externalInputs=$externalNow;expectedInputsSha256=(Hash-Input (Join-Path $PSScriptRoot 'expected-inputs.json'));enumerationSha256=(Hash-Input (Join-Path $PSScriptRoot 'enumeration.json'))}
$taskRecord|ConvertTo-Json -Depth 8|Set-Content -LiteralPath $taskOutput -Encoding utf8
if($taskEntries.Count -ne $pinRecord.count){throw 'Pinned dynamic count changed.'}
$expected=@{}
foreach($f in $pinRecord.files){if($expected.ContainsKey($f.path)){throw 'Duplicate pinned input.'};$expected[$f.path]=$f}
foreach($f in $taskEntries){if(-not $expected.ContainsKey($f.path)){throw 'Unexpected input.'};$old=$expected[$f.path];if($f.bytes -ne $old.bytes -or $f.sha256 -cne $old.sha256){throw ('Input changed: '+$f.path)};$expected.Remove($f.path)}
if($expected.Count){throw 'Missing input.'}
if($Stage -ne 'before'){
$baseline=Get-Content -Raw -LiteralPath (Join-Path $PSScriptRoot 'inputs-complete-before.json')|ConvertFrom-Json
if($baseline.base -cne $taskPin -or $baseline.count -ne $pinRecord.count -or $baseline.expectedInputsSha256 -cne $taskRecord.expectedInputsSha256 -or $baseline.enumerationSha256 -cne $taskRecord.enumerationSha256){throw 'Baseline binding changed.'}
}
Write-Output ('Captured and verified '+$taskEntries.Count+' inputs: '+$Stage)
} finally {Pop-Location}
@@ -0,0 +1,27 @@
#Requires -Version 7.0
$ErrorActionPreference='Stop'
if(Test-Path -LiteralPath (Join-Path $PSScriptRoot 'enumeration.json')){throw 'Preserve existing enumeration; use a new gate for retries.'}
Set-StrictMode -Version Latest
$workspace='C:\Users\User\Documents\Git\ARCADIA-Studio\.local\scenario-workspace-ytr83r-20260913'
$pin='cb5d50de03a002079da17e6f92ea44c32f7ece75'
Push-Location -LiteralPath $workspace
try {
$head=git rev-parse HEAD
if($LASTEXITCODE -ne 0 -or $head -cne $pin){throw 'Wrong frozen pin'}
$status=@(git status --porcelain)
if($LASTEXITCODE -ne 0 -or $status.Count){throw 'Frozen worktree is not clean'}
$scopes=@('crates','docs','examples','build','harness/fixtures','harness/experiments/textual-authoring-20260911')
$roots=@('Cargo.toml','Cargo.lock','rust-toolchain.toml')
$tracked=@(git ls-files -- @roots @scopes)
if($LASTEXITCODE -ne 0){throw 'Git enumeration failed'}
$tracked=@($tracked | ForEach-Object { $_.Replace('\','/') } | Sort-Object -Unique)
$present=@(rg --files @scopes)
if($LASTEXITCODE -ne 0){throw 'Independent rg enumeration failed'}
$present=@(($present+$roots) | ForEach-Object { $_.Replace('\','/') } | Sort-Object -Unique)
if(@(Compare-Object $tracked $present).Count){throw 'Git and actual file memberships differ'}
$gitTree=git rev-parse 'HEAD^{tree}'
if($LASTEXITCODE -ne 0){throw 'Tree identity unavailable'}
$record=[ordered]@{base=$head;tree=$gitTree;workspace=$workspace;capturedUtc=[DateTime]::UtcNow.ToString('o');scopes=$scopes;rootInputs=$roots;gitCount=$tracked.Count;rgCount=$present.Count;gitPaths=$tracked;rgPaths=$present}
$record|ConvertTo-Json -Depth 6|Set-Content -LiteralPath (Join-Path $PSScriptRoot 'enumeration.json') -Encoding utf8
Write-Output ('Verified Git/rg membership '+$tracked.Count+' at '+$head)
} finally {Pop-Location}
@@ -0,0 +1,44 @@
{
"base": "83e840e37f3c3d230382722e99e87bf865abb12e",
"status": "External environment/config provenance; these paths are not claimed version-controlled",
"files": [
{
"path": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/toolchain/env.ps1",
"present": true,
"bytes": 572,
"sha256": "be2226f08764bb6961b4be8513ce55bab076890cddd2fef0f54a4031f94a82d4"
},
{
"path": "C:/Users/User/Documents/Git/ARCADIA-Studio/.cargo/config",
"present": false
},
{
"path": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/.cargo/config",
"present": false
},
{
"path": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/scenario-workspace-ytr83r-20260913/.cargo/config",
"present": false
},
{
"path": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/toolchain/cargo/config",
"present": false
},
{
"path": "C:/Users/User/Documents/Git/ARCADIA-Studio/.cargo/config.toml",
"present": false
},
{
"path": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/.cargo/config.toml",
"present": false
},
{
"path": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/scenario-workspace-ytr83r-20260913/.cargo/config.toml",
"present": false
},
{
"path": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/toolchain/cargo/config.toml",
"present": false
}
]
}
@@ -0,0 +1,44 @@
{
"base": "cb5d50de03a002079da17e6f92ea44c32f7ece75",
"status": "Fresh external environment/config snapshot; not version-controlled inputs",
"files": [
{
"path": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/toolchain/env.ps1",
"present": true,
"bytes": 572,
"sha256": "be2226f08764bb6961b4be8513ce55bab076890cddd2fef0f54a4031f94a82d4"
},
{
"path": "C:/Users/User/Documents/Git/ARCADIA-Studio/.cargo/config",
"present": false
},
{
"path": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/.cargo/config",
"present": false
},
{
"path": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/scenario-workspace-ytr83r-20260913/.cargo/config",
"present": false
},
{
"path": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/toolchain/cargo/config",
"present": false
},
{
"path": "C:/Users/User/Documents/Git/ARCADIA-Studio/.cargo/config.toml",
"present": false
},
{
"path": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/.cargo/config.toml",
"present": false
},
{
"path": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/scenario-workspace-ytr83r-20260913/.cargo/config.toml",
"present": false
},
{
"path": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/toolchain/cargo/config.toml",
"present": false
}
]
}
@@ -0,0 +1,13 @@
{
"base": "cb5d50de03a002079da17e6f92ea44c32f7ece75",
"capturedUtc": "2026-09-13T07:27:22.9463727Z",
"sourceCount": 601,
"focusedCount": 224,
"desktopExpectedCount": 1045,
"cleanPerformed": false,
"cargoExecuted": false,
"sourceBeforeSha256": "39aa11b2eb80c8e848a70e3f09e4fcfa7fdbf34b6abf10d25e448c679d0493fb",
"selectionSha256": "ba4f8bdae78b3e871c0bf031e86f5e5d766eb7416f851fd91b99a6e9c4aee84b",
"parserSha256": "17e2f5aebc61da1a6a81079730917653104c541e4db0f20b46a0db8d80bdeb9d",
"status": "Prepared only; parent dispatches list, focused, all, clippy, build sequentially"
}
@@ -0,0 +1,52 @@
#Requires -Version 7.0
param([Parameter(Mandatory=$true)][ValidatePattern('^[0-9a-f]{40}$')][string]$SourceCommit)
Set-StrictMode -Version Latest
$ErrorActionPreference='Stop'
$workspace='C:/Users/User/Documents/Git/ARCADIA-Studio/.local/scenario-workspace-ytr83r-20260913'
$root='C:/Users/User/Documents/Git/ARCADIA-Studio'
if(Test-Path -LiteralPath (Join-Path $PSScriptRoot 'finalization.json')){throw 'Already finalized; preserve this gate.'}
foreach($name in @('enumeration.json','expected-inputs.json','external-inputs.json','inputs-complete-before.json','toolchain-versions.json','list.log','list-receipt.json')){
if(Test-Path -LiteralPath (Join-Path $PSScriptRoot $name)){throw ('Prior capture or run exists: '+$name)}
}
function Hash-Input([string]$Path){(Get-FileHash -LiteralPath $Path -Algorithm SHA256).Hash.ToLowerInvariant()}
function Save-Record([string]$Name,$Record){$Record|ConvertTo-Json -Depth 16|Set-Content -LiteralPath (Join-Path $PSScriptRoot $Name) -Encoding utf8}
Push-Location -LiteralPath $workspace
try {
$head=git rev-parse HEAD
if($LASTEXITCODE -ne 0 -or $head -cne $SourceCommit){throw 'Source is not at the reviewed pin.'}
$status=@(git status --porcelain)
if($LASTEXITCODE -ne 0 -or $status.Count){throw 'Source must be committed and clean.'}
$serverChanges=@(git diff --name-only 37be41092beb1c940f345072df1e017ce45fe2fc $SourceCommit -- crates/oa-core crates/oa-server Cargo.toml Cargo.lock rust-toolchain.toml)
if($LASTEXITCODE -ne 0 -or $serverChanges.Count){throw 'Core/server provenance changed; parent must revise gate scope.'}
} finally {Pop-Location}
foreach($name in @('run.ps1','capture.ps1','enumerate-inputs.ps1')){
$path=Join-Path $PSScriptRoot $name
$text=[IO.File]::ReadAllText($path)
if(-not $text.Contains('PENDING_REVIEWED_SOURCE_PIN')){throw 'Template was already modified; inspect before retry.'}
[IO.File]::WriteAllText($path,$text.Replace('PENDING_REVIEWED_SOURCE_PIN',$SourceCommit),[Text.UTF8Encoding]::new($false))
}
$selection=Get-Content -Raw -LiteralPath (Join-Path $PSScriptRoot 'expected-tests.json')|ConvertFrom-Json
if(@($selection.tests).Count -ne 224 -or @($selection.tests|Sort-Object -Unique).Count -ne 224 -or @($selection.desktop_tests).Count -ne 1045 -or @($selection.desktop_tests|Sort-Object -Unique).Count -ne 1045){throw 'Expected membership changed; parent must review selection.'}
if(@($selection.tests|Where-Object {$_ -cnotin $selection.desktop_tests}).Count){throw 'Focused test absent from expected desktop listing.'}
$selection.source_commit=$SourceCommit
Save-Record 'expected-tests.json' $selection
& (Join-Path $PSScriptRoot 'enumerate-inputs.ps1')
$enumeration=Get-Content -Raw -LiteralPath (Join-Path $PSScriptRoot 'enumeration.json')|ConvertFrom-Json
$inputs=@(foreach($relative in $enumeration.gitPaths){$path=Join-Path $workspace $relative;$item=Get-Item -LiteralPath $path;[ordered]@{path=$relative;bytes=$item.Length;sha256=(Hash-Input $path)}})
Save-Record 'expected-inputs.json' ([ordered]@{base=$SourceCommit;workspace=$workspace;count=$inputs.Count;files=$inputs})
$external=Get-Content -Raw -LiteralPath (Join-Path $PSScriptRoot 'external-input-template.json')|ConvertFrom-Json
$externalFiles=@(foreach($file in $external.files){$present=Test-Path -LiteralPath $file.path;if($present){$item=Get-Item -LiteralPath $file.path;[ordered]@{path=$file.path;present=$true;bytes=$item.Length;sha256=(Hash-Input $file.path)}}else{[ordered]@{path=$file.path;present=$false}}})
Save-Record 'external-inputs.json' ([ordered]@{base=$SourceCommit;status='Fresh external environment/config snapshot; not version-controlled inputs';files=$externalFiles})
$server=Get-Content -Raw -LiteralPath (Join-Path $PSScriptRoot 'server-provenance-template.json')|ConvertFrom-Json
$server.source=$SourceCommit
Save-Record 'server-provenance.json' $server
Save-Record 'cache-policy.json' ([ordered]@{base=$SourceCommit;retainExistingTarget=$true;cleanRequested=$false;target=(Join-Path $root 'target');scope='Same-worktree development rebuild; parent requested no package clearance. Existing task env remains jobs1/incremental0. Source and executable binding are required.'})
$recovery=Join-Path $root '.local/scenario-workspace-focused-recovery83-20260913'
$receipt=Get-Content -Raw -LiteralPath (Join-Path $recovery 'focused-receipt.json')|ConvertFrom-Json
$oldList=Join-Path $root '.local/scenario-workspace-gates-attempt2-20260913/list-receipt.json'
Save-Record 'prior-failure-provenance.json' ([ordered]@{source=$SourceCommit;previousSource=$receipt.base;scope='Original list1045 then corrected direct-executable focused222pass2fail; not acceptance';listReceiptPath=$oldList;listReceiptSha256=(Hash-Input $oldList);focusedReceiptPath=(Join-Path $recovery 'focused-receipt.json');focusedReceiptSha256=(Hash-Input (Join-Path $recovery 'focused-receipt.json'));focusedLogSha256=(Hash-Input (Join-Path $recovery 'focused.log'));correctedSelectionSha256=(Hash-Input (Join-Path $recovery 'expected-tests.json'));exitCode=$receipt.exitCode;inputsUnchanged=$receipt.inputsUnchanged;result=$receipt.testResultSummaries;failed=@($receipt.executedTests|Where-Object result -eq 'FAILED')})
& (Join-Path $PSScriptRoot 'capture.ps1') -Stage before
& (Join-Path $PSScriptRoot 'validate-scripts.ps1')
& (Join-Path $PSScriptRoot 'verify-parser.ps1')
Save-Record 'finalization.json' ([ordered]@{base=$SourceCommit;capturedUtc=[DateTime]::UtcNow.ToString('o');sourceCount=$inputs.Count;focusedCount=224;desktopExpectedCount=1045;cleanPerformed=$false;cargoExecuted=$false;sourceBeforeSha256=(Hash-Input (Join-Path $PSScriptRoot 'inputs-complete-before.json'));selectionSha256=(Hash-Input (Join-Path $PSScriptRoot 'expected-tests.json'));parserSha256=(Hash-Input (Join-Path $PSScriptRoot 'parser-verification.json'));status='Prepared only; parent dispatches list, focused, all, clippy, build sequentially'})
Write-Output ('Finalized source-only gate for '+$SourceCommit+' with '+$inputs.Count+' inputs; no Cargo or clean executed.')
File diff suppressed because one or more lines are too long
@@ -0,0 +1,231 @@
Finished `test` profile [unoptimized] target(s) in 7.23s
Running unittests src\main.rs (C:\Users\User\Documents\Git\ARCADIA-Studio\target\debug\deps\arcadia_studio-27db9628b266bf39.exe)
running 224 tests
test app::behavior_lifecycle_tests::incomplete_behavior_form_is_dirty_close_save_retains_it_and_cancel_allows_switching ... ok
test app::behavior_lifecycle_tests::passive_behavior_canvas_events_do_not_apply_property_drafts ... ok
test app::behavior_lifecycle_tests::pending_behavior_blocks_navigation_property_edits_and_model_history ... ok
test app::behavior_lifecycle_tests::pending_behavior_blocks_source_creation_and_source_history_replay ... ok
test app::behavior_lifecycle_tests::save_prepares_behavior_before_opening_destination_and_cancel_keeps_one_undo ... ok
test app::behavior_lifecycle_tests::source_writeback_failure_keeps_typed_behavior_form_for_repair_and_one_undo ... ok
test app::diagram_reveal::tests::actual_window_resize_before_first_measurement_retains_focus_for_the_new_context ... ok
test app::diagram_reveal::tests::all_reveal_surfaces_recenter_once_after_the_real_viewport_and_preserve_authored_state ... ok
test app::diagram_reveal::tests::malformed_or_wrong_stamp_measurements_cannot_poison_a_pending_reveal ... ok
test app::diagram_reveal::tests::user_camera_edit_and_navigation_cancel_deferred_focus_without_late_snapping ... ok
test app::diagram_selection_tests::changing_visible_view_follows_its_clean_inspector_without_a_model_edit ... ok
test app::diagram_selection_tests::diagram_switch_preserves_an_independent_semantic_inspection ... ok
test app::diagram_selection_tests::diagram_uuid_edit_follows_the_same_view_or_a_different_picker_target ... ok
test app::diagram_selection_tests::invalid_view_draft_blocks_the_switch_and_retains_raw_input ... ok
test app::diagram_selection_tests::stale_diagram_choice_never_applies_an_unrelated_valid_draft ... ok
test app::diagram_selection_tests::valid_pending_view_edit_applies_to_old_view_then_inspects_the_new_view ... ok
test app::diagram_usages::tests::accepted_new_chooser_retires_old_measurement_without_blocking_future_viewports ... ok
test app::diagram_usages::tests::allocation_navigation_keeps_relation_selection_and_exact_visual_work_lifetime ... ok
test app::diagram_usages::tests::asynchronous_lookup_is_loading_inert_and_retains_filter_until_completion ... ok
test app::diagram_usages::tests::caret_uses_exact_verified_alias_identity_and_preserves_source_cursor ... ok
test app::diagram_usages::tests::closed_lookup_keeps_slot_and_replacement_waits_for_exact_old_completion ... ok
test app::diagram_usages::tests::completion_after_cancel_releases_slot_without_reopening_or_moving ... ok
test app::diagram_usages::tests::completion_releases_worker_behind_busy_modal_without_navigation ... ok
test app::diagram_usages::tests::dirty_or_comment_caret_has_no_selected_object_fallback ... ok
test app::diagram_usages::tests::forged_completion_cannot_release_another_slot_or_admit_wrong_context ... ok
test app::diagram_usages::tests::old_panel_tokens_and_forged_targets_cannot_redirect_selection ... ok
test app::diagram_usages::tests::oversized_node_focus_stays_on_label_and_single_surface_query_excludes_other_views ... ok
test app::diagram_usages::tests::pending_source_behavior_and_modal_inputs_block_open_and_choose_without_loss ... ok
test app::diagram_usages::tests::port_navigation_selects_port_and_exact_visible_owner_without_editing_geometry ... ok
test app::diagram_usages::tests::query_presentation_snapshot_keeps_expansion_without_retaining_live_state ... ok
test app::diagram_usages::tests::repeated_preview_arrows_select_the_relation_and_highlight_the_exact_caller_link ... ok
test app::diagram_usages::tests::repeated_process_calls_reveal_the_chosen_caller_and_distinct_tile_camera ... ok
test app::diagram_usages::tests::repeated_scenario_messages_select_the_exact_occurrence_and_move_camera ... ok
test app::diagram_usages::tests::reset_keeps_old_worker_slot_and_only_new_document_results_are_admitted ... ok
test app::diagram_usages::tests::revision_retarget_and_document_change_make_old_destinations_inert ... ok
test app::diagram_usages::tests::saved_node_and_edge_navigation_preserve_whole_sources_and_actual_history ... ok
test app::diagram_usages::tests::saved_scenario::explicit_saved_layout_repair_undo_redo_requeries_authored_and_fallback_geometry_without_extra_history ... ok
test app::diagram_usages::tests::saved_scenario::retargeted_saved_view_cannot_reveal_a_former_owner_occurrence ... ok
test app::diagram_usages::tests::saved_scenario::saved_a_b_a_rejects_old_visit_and_panel_callbacks_before_deferred_measurement ... ok
test app::diagram_usages::tests::saved_scenario::saved_chooser_and_explicit_reveal_preserve_complete_source_and_actual_undo_redo ... ok
test app::diagram_usages::tests::saved_scenario::saved_queries_use_each_actual_presentation_and_keep_repeated_appearances_and_references_opaque ... ok
test app::diagram_usages::tests::saved_scenario::saved_reveal_and_chooser_refuse_source_property_and_behavior_drafts ... ok
test app::diagram_usages::tests::stale_caret_completion_never_opens_diagrams_for_current_selection ... ok
test app::diagram_usages::tests::stale_open_context_cannot_replace_a_panel ... ok
test app::diagram_usages::tests::stale_revision_completion_refreshes_asynchronously_without_activating ... ok
test app::diagram_usages::tests::state_row_navigation_has_exact_visual_row_without_retargeting_the_selected_relation ... ok
test app::diagram_usages::tests::tree_origin_captures_subject_and_never_falls_back_to_current_selection_or_name ... ok
test app::diagram_usages::tests::whole_surface_camera_fits_huge_extent_while_target_camera_remains_readable ... ok
test app::diagram_usages::tests::worker_failure_finishes_loading_and_can_be_retried_without_losing_sources ... ok
test app::direct_scenario_tests::direct_scenario_camera_details_and_real_resize_invalidate_only_pointer_context ... ok
test app::direct_scenario_tests::direct_scenario_creation_and_reorder_preserve_selection_and_each_undo_once ... ok
test app::direct_scenario_tests::direct_scenario_rejects_every_stale_context_and_preserves_property_drafts ... ok
test app::direct_scenario_tests::direct_scenario_source_failure_and_navigation_keep_form_until_success ... ok
test app::saved_scenario_dispatch_tests::forged_saved_usage_is_refused_without_selection_or_camera_changes ... ok
test app::saved_scenario_dispatch_tests::missing_export_target_does_not_apply_pending_properties_or_open_dialog ... ok
test app::saved_scenario_dispatch_tests::rejected_export_schedules_no_write_and_preserves_draft_history_and_busy_state ... ok
test app::saved_scenario_dispatch_tests::saved_picker_with_invalid_properties_and_reveal_with_pending_properties_do_not_apply ... ok
test app::saved_scenario_dispatch_tests::saved_scenario_cannot_use_architecture_controls_or_change_projection_by_toolbar ... ok
test app::saved_scenario_dispatch_tests::saved_scenario_does_not_start_the_existing_architecture_palette ... ok
test app::saved_scenario_dispatch_tests::semantic_scenario_preview_remains_available_and_saved_views_are_not_default_architecture ... ok
test app::scenario_diagram::adoption_tests::missing_and_deleted_picker_ids_cannot_apply_an_unrelated_valid_property_draft ... ok
test app::scenario_diagram::adoption_tests::source_cross_layer_owner_retarget_undo_redo_keeps_requested_saved_uuid ... ok
test app::scenario_diagram::adoption_tests::source_deleted_owner_and_saved_view_mount_unavailable_instead_of_another_behavior ... ok
test app::scenario_diagram::adoption_tests::source_same_layer_owner_retarget_undo_redo_keeps_requested_saved_uuid ... ok
test app::scenario_diagram::owner_navigation_tests::saved_scenario_direct_behavior_selection_enters_explicit_process_or_state_owner ... ok
test app::scenario_diagram::owner_navigation_tests::saved_scenario_guide_selection_returns_to_explicit_process_or_state_owner ... ok
test app::scenario_diagram::tests::arrangement_picker_rejects_previous_visit_and_switches_automatic_without_model_changes ... ok
test app::scenario_diagram::tests::leaving_and_reentering_saved_view_preserves_source_and_retires_passive_visit ... ok
test app::scenario_diagram::tests::saved_picker_applies_valid_old_draft_and_uuid_edit_follows_that_same_view ... ok
test app::scenario_diagram::tests::saved_reference_back_restores_exact_view_with_a_fresh_visit ... ok
test app::scenario_diagram::tests::saved_view_return_rejects_old_passive_events_without_an_intermediate_frame ... ok
test app::scenario_diagram::tests::saved_view_switches_are_distinct_passive_visits_and_preserve_actual_history ... ok
test app::source_rename::tests::navigation_union_tests::rename_then_exact_caret_diagram_navigation_preserves_complete_model_undo_redo_history ... ok
test behavior::canvas_workspace::camera_policy_tests::tiny_zoom_label_is_nonzero_and_changes_with_zoom ... ok
test behavior::canvas_workspace::camera_policy_tests::topology_retains_five_percent_floor ... ok
test behavior::canvas_workspace::tests::relative_camera_zoom_keeps_the_cursor_world_point_and_rejects_nonfinite_inputs ... ok
test behavior::canvas_workspace::tests::viewport_ordered_batch_uses_each_event_position_and_cancels_before_camera_motion ... ok
test behavior::direct_canvas_tests::direct_alt_execution_stops_each_operand_at_its_reply_and_marks_open_operand ... ok
test behavior::direct_canvas_tests::direct_execution_span_ends_at_its_correlated_reply_and_marks_an_open_call ... ok
test behavior::scenario::camera::tests::fit_remains_active_across_first_and_changed_viewport ... ok
test behavior::scenario::camera::tests::invalid_inputs_are_passive_and_large_finite_bounds_do_not_overflow_center ... ok
test behavior::scenario::camera::tests::negative_origin_fit_contains_independently_known_extremes ... ok
test behavior::scenario::camera::tests::pan_leaves_fit_from_displayed_position_and_zero_motion_preserves_fit ... ok
test behavior::scenario::camera::tests::tiny_fit_zoom_in_out_preserves_pointer_world_anchor_without_floor_jump ... ok
test behavior::scenario::data_contract_tests::large_payload_has_one_editor_with_reachable_field_and_authored_pages ... ok
test behavior::scenario::data_contract_tests::recursive_browsing_up_and_root_keep_values_and_report_the_depth_limit ... ok
test behavior::scenario::data_contract_tests::recursive_value_focus_exposes_authored_leaf_and_phase_changes_retain_surviving_keys ... ok
test behavior::scenario::data_contract_tests::reply_call_picker_previews_the_same_value_reset_as_selecting_another_exchange ... ok
test behavior::scenario::data_contract_tests::scenario_form_commits_two_reused_record_values_and_correlated_reply_atomically ... ok
test behavior::scenario::direct_tests::direct_busy_save_keeps_details_current_and_camera_for_the_next_pointer_gesture ... ok
test behavior::scenario::direct_tests::direct_clicked_occurrence_rejects_stale_slots_and_retains_recoverable_drafts ... ok
test behavior::scenario::direct_tests::direct_clicked_occurrences_use_root_and_operand_slots_with_exact_source_history ... ok
test behavior::scenario::direct_tests::direct_exchange_compatibility_browsing_preserves_final_slot_validation ... ok
test behavior::scenario::direct_tests::direct_exchange_picker_is_bounded_and_browsing_keeps_pending_values ... ok
test behavior::scenario::direct_tests::direct_five_hundred_exchange_choice_render_probe ... ok
test behavior::scenario::direct_tests::direct_form_keeps_the_same_canvas_in_the_widget_tree ... ok
test behavior::scenario::direct_tests::direct_middle_pair_insertion_is_one_exact_source_and_model_undo ... ok
test behavior::scenario::direct_tests::direct_operand_pair_keeps_parent_sequence_and_cannot_reorder_across_operands ... ok
test behavior::scenario::direct_tests::direct_reply_choices_cache_keeps_typing_fast_and_revalidates_changed_contexts ... ok
test behavior::scenario::direct_tests::direct_reply_choices_validate_the_actual_slot_and_reorder_rejects_reverse_order ... ok
test behavior::scenario::direct_tests::direct_scenario_reference_navigation_blocks_pending_drafts_and_stale_contexts ... ok
test behavior::scenario::direct_tests::direct_scenario_reference_navigation_retains_each_exact_caller_without_history ... ok
test behavior::scenario::direct_tests::direct_scenario_reference_return_survives_rename_and_rejects_deleted_or_changed_use ... ok
test behavior::scenario::operation_tests::operation_gui_async_picker_uses_request_root_and_nested_directions_without_erasing_rejected_values ... ok
test behavior::scenario::operation_tests::operation_gui_selects_two_parameterless_allocations_without_inventing_refinement_and_reply_derives_call ... ok
test behavior::scenario::operation_tests::operation_gui_unresolved_and_disabled_selection_recovery_preserves_rejected_raw_values ... ok
test behavior::scenario::presentation_tests::complete_fallback_scene_selects_but_cannot_capture_or_finish_coordinate_gestures ... ok
test behavior::scenario::presentation_tests::deleted_saved_identity_remains_unavailable_and_never_falls_into_derived_geometry ... ok
test behavior::scenario::presentation_tests::saved_caller_restores_exact_representation_with_fresh_visit_and_rejects_deleted_view ... ok
test behavior::scenario::presentation_tests::saved_camera_fits_actual_negative_origin_and_tiny_scale_without_authored_mutation ... ok
test behavior::scenario::presentation_tests::saved_visits_distinguish_same_owner_roundtrips_and_suspended_return_without_editing ... ok
test behavior::scenario::tests::fragment_operands_accept_paired_messages_through_normal_destination_picker ... ok
test behavior::scenario::tests::graphical_call_reply_is_atomic_correlated_and_source_equivalent ... ok
test behavior::scenario::tests::invalid_lifecycle_edit_keeps_draft_and_timer_has_no_global_exchange ... ok
test behavior::scenario::tests::lifeline_picker_uses_core_viewpoint_contract ... ok
test behavior::scenario::tests::reverse_communication_canvas_choices_and_correlated_reply_share_core_direction ... ok
test behavior::scenario::tests::scenario_reuse_requires_explicit_compatible_bindings ... ok
test behavior::scenario::tests::tagged_scenario_commit_is_not_redirected_by_other_editor_events ... ok
test behavior::scenario::usage::tests::scenario_operation_label_membership_excludes_ellipsis_only_and_normalizes_whitespace ... ok
test behavior::scenario::usage::tests::scenario_usage_counts_nested_occurrences_and_lifelines_but_keeps_reuse_opaque ... ok
test behavior::scenario::usage::tests::scenario_usage_keeps_repeated_messages_and_reveal_is_read_only_and_revalidated ... ok
test behavior::scenario::usage::tests::scenario_usage_only_reports_the_resolved_operation_fields_actually_in_the_label ... ok
test behavior::scenario::workspace::tests::new_scenario_form_resets_only_its_scroll_and_recovery_gets_a_fresh_session ... ok
test behavior::scenario::workspace::tests::production_empty_scenario_lifeline_tool_keeps_staged_source_inside_stable_canvas ... ok
test behavior::scenario::workspace::tests::production_scenario_camera_external_controls_bounds_and_retained_deltas_cancel_old_drags ... ok
test behavior::scenario::workspace::tests::production_scenario_canvas_keeps_bounds_draft_identity_and_camera_through_editing ... ok
test behavior::scenario::workspace::tests::production_scenario_canvas_pan_invalidates_a_pressed_creation_and_caller_restores_once ... ok
test behavior::scenario::workspace::tests::production_scenario_keyboard_enters_activates_draws_focus_and_returns_to_inspector ... ok
test behavior::scenario::workspace::tests::production_scenario_keyboard_reveals_and_activates_initially_offscreen_last_tool ... ok
test behavior::scenario::workspace::tests::production_scenario_retained_toolbar_intents_reject_chooser_dirty_and_picker_lifetimes ... ok
test behavior::scenario::workspace::tests::production_scenario_whole_glyph_drag_moves_one_occurrence_and_rejects_other_operand ... ok
test behavior::scenario::workspace::tests::scenario_form_focus_chained_apply_rechecks_live_review_owner ... ok
test behavior::scenario::workspace::tests::scenario_form_focus_missing_exact_target_leaves_other_inputs_untouched ... ok
test behavior::scenario::workspace::tests::scenario_form_focus_returns_from_back_use_and_escape_after_initial_focus_is_consumed ... ok
test behavior::scenario::workspace::tests::scenario_form_focus_saved_action_is_inert_on_replacement_child_review_and_changed_context ... ok
test behavior::scenario::workspace::tests::scenario_form_focus_targets_the_name_and_rejects_stale_sessions_or_modals ... ok
test behavior::scenario::workspace::tests::scenario_workspace_choosing_tools_preserves_valid_and_invalid_pending_editors ... ok
test behavior::scenario::workspace::tests::scenario_workspace_fit_uses_measured_inner_viewport_and_rejects_nonfinite_inputs ... ok
test behavior::scenario::workspace::tests::scenario_workspace_open_and_back_restore_owner_and_mounted_camera_after_preselection ... ok
test behavior::scenario::workspace::tests::scenario_workspace_same_size_owner_and_document_changes_remeasure_fit_viewport ... ok
test behavior::scenario::workspace::tests::scenario_workspace_scaled_and_panned_scene_keeps_clicked_slots_and_message_endpoints ... ok
test behavior::scenario::workspace::tests::scenario_workspace_scaled_nested_occurrences_and_reorder_keep_exact_sequence_identity ... ok
test behavior::scenario::workspace::tests::scenario_workspace_viewport_events_are_passive_guarded_and_do_not_apply_raw_forms ... ok
test behavior::scenario_activation::tests::a_fragment_cannot_make_crossed_calls_an_unambiguous_caller_execution ... ok
test behavior::scenario_activation::tests::activation_shoulders_under_label_backplates_select_their_call ... ok
test behavior::scenario_activation::tests::actual_canvas_pointer_selects_each_exposed_shoulder_under_zoom_and_pan ... ok
test behavior::scenario_activation::tests::alternative_and_parallel_operand_local_calls_do_not_nest_from_screen_order ... ok
test behavior::scenario_activation::tests::an_inactive_self_call_has_no_fabricated_parent_and_three_nested_calls_expose_three_columns ... ok
test behavior::scenario_activation::tests::call_uuid_order_does_not_choose_activation_columns_or_message_anchors ... ok
test behavior::scenario_activation::tests::inherited_execution_anchors_a_self_call_inside_an_operand_before_returning_after_the_fragment ... ok
test behavior::scenario_activation::tests::long_message_backplates_do_not_erase_selected_activation_border_pixels ... ok
test behavior::scenario_activation::tests::missing_reply_is_a_short_explicit_open_span_and_an_uncorrelated_reply_closes_nothing ... ok
test behavior::scenario_activation::tests::nested_calls_expose_both_bars_and_end_at_their_exact_replies_in_both_directions ... ok
test behavior::scenario_activation::tests::nested_correlations_returning_in_alternative_operands_remain_nested_before_the_fragment ... ok
test behavior::scenario_activation::tests::reentrant_call_uses_the_other_receiver_without_inventing_a_caller_execution ... ok
test behavior::scenario_activation::tests::self_call_receives_at_lower_loop_end_and_self_reply_returns_to_the_parent ... ok
test behavior::scenario_activation::tests::sequential_calls_reuse_column_and_crossed_replies_keep_their_correlations ... ok
test behavior::scenario_layout::presentation::tests::absent_and_empty_saved_layouts_remain_saved_ready_representations ... ok
test behavior::scenario_layout::presentation::tests::hard_failure_uses_complete_automatic_geometry_but_retains_each_saved_request_and_latent_notice ... ok
test behavior::scenario_layout::presentation::tests::missing_or_incompatible_identity_and_structural_coordinate_errors_are_unavailable ... ok
test behavior::scenario_layout::presentation::tests::passive_fallback_preserves_exact_document_source_and_one_step_undo_redo ... ok
test behavior::scenario_layout::presentation::tests::successful_crossing_diagnostic_keeps_authored_geometry_and_latent_identity ... ok
test behavior::scenario_layout::tests::absent_empty_and_explicit_baseline_saved_values_preserve_complete_scene_and_source ... ok
test behavior::scenario_layout::tests::authored_lanes_precede_headers_arrows_lifetimes_and_complete_bounds ... ok
test behavior::scenario_layout::tests::authored_send_bits_survive_baseline_delta_and_self_lifecycle_row_conversion ... ok
test behavior::scenario_layout::tests::complete_scope_plan_rejects_escape_preserves_overlap_and_keeps_headers_and_followers ... ok
test behavior::scenario_layout::tests::decimal_call_anchor_is_admitted_and_exact_in_plan_line_and_typed_activation ... ok
test behavior::scenario_layout::tests::earlier_receiver_death_and_prebirth_call_are_named_typed_failures_not_disappearing_bars ... ok
test behavior::scenario_layout::tests::exact_authored_lane_bits_survive_headers_and_tiny_distinct_lanes_are_not_coincident ... ok
test behavior::scenario_layout::tests::explicit_root_scope_failures_do_not_clamp_calls_or_lifecycle_but_async_can_be_negative ... ok
test behavior::scenario_layout::tests::independent_saved_appearances_of_reused_exchange_have_exact_anchors_and_no_ambient_state ... ok
test behavior::scenario_layout::tests::latent_message_becomes_exact_only_when_its_own_endpoint_is_completed ... ok
test behavior::scenario_layout::tests::moved_death_clips_actual_bar_and_preserves_unanswered_cue ... ok
test behavior::scenario_layout::tests::newly_skipped_sibling_scope_is_rejected_using_real_projector_diagnostics ... ok
test behavior::scenario_layout::tests::post_fragment_death_cannot_disappear_and_feasible_operand_spacing_retains_its_marker ... ok
test behavior::scenario_layout::tests::reply_crossing_is_a_specific_typed_failure ... ok
test behavior::scenario_layout::tests::same_x_distinct_lifelines_are_not_self_messages_in_either_bridge ... ok
test behavior::scenario_layout::tests::saved_direct_nested_message_uses_operand_scopes_without_reparenting_or_moving_followers ... ok
test behavior::scenario_layout::tests::self_call_receive_and_reply_send_drive_the_full_typed_execution ... ok
test behavior::scenario_layout::tests::self_lifecycle_saved_send_is_converted_once_to_the_actual_receive_marker ... ok
test behavior::scenario_layout::tests::timer_uses_implicit_effective_receiver_and_true_self_offset ... ok
test behavior::scenario_layout::tests::unfinished_coordinate_is_latent_and_zero_or_signed_zero_never_rewrites_source ... ok
test behavior::scenario_layout::tests::unsupported_expansion_duplicate_keys_and_foreign_identity_fail_without_mutating_input ... ok
test behavior::scenario_layout::tests::wide_gap_bounds_include_all_actual_shapes_and_typed_extensions ... ok
test behavior::scenario_lifecycle::render::tests::birth_label_clip_keeps_padded_world_bounds_at_each_scene_scale ... ok
test behavior::scenario_lifecycle::render::tests::birth_label_clip_preserves_parent_viewport_bounds ... ok
test behavior::scenario_lifecycle::render::tests::box_text_clip_intersects_parent_viewport_and_rejects_empty_interiors ... ok
test behavior::scenario_lifecycle::render::tests::panned_header_and_create_clips_use_screen_translation_and_actual_viewport ... ok
test behavior::scenario_lifecycle::render::tests::real_scene_birth_death_markers_align_endpoints_and_win_selection_without_mutating_source ... ok
test behavior::scenario_lifecycle::render::tests::real_scene_branch_delete_clips_only_its_activation_and_keeps_unanswered_call_visible ... ok
test behavior::scenario_lifecycle::render::tests::real_scene_conditional_repeated_and_parallel_scopes_do_not_claim_definite_continuation ... ok
test behavior::scenario_lifecycle::render::tests::real_scene_empty_and_create_only_use_visible_root_extents_not_insertion_bounds ... ok
test behavior::scenario_lifecycle::render::tests::real_scene_lifecycle_edit_undo_redo_restores_exact_source_and_changed_geometry ... ok
test behavior::scenario_lifecycle::render::tests::real_scene_long_header_title_and_detail_keep_names_and_have_bounded_clips ... ok
test behavior::scenario_lifecycle::render::tests::real_scene_minimum_zoom_marker_halos_do_not_steal_adjacent_capsule_or_header_hits ... ok
test behavior::scenario_lifecycle::render::tests::real_scene_minimum_zoom_near_ordinary_message_wins_over_lifecycle_halos ... ok
test behavior::scenario_lifecycle::render::tests::real_scene_panned_zoomed_program_keeps_header_birth_and_death_hit_identity ... ok
test behavior::scenario_lifecycle::render::tests::real_scene_self_delete_caption_clears_the_preceding_action_box ... ok
test behavior::scenario_lifecycle::render::tests::real_scene_self_lifecycle_elbows_end_on_recorded_marker_rows ... ok
test behavior::scenario_lifecycle::render::tests::real_scene_unassigned_lanes_and_explicit_incomplete_receiver_keep_real_marker_identity ... ok
test behavior::scenario_lifecycle::render::tests::real_scene_wide_latin_header_exceeds_old_character_budget ... ok
test behavior::scenario_lifecycle::render::tests::union_tests::admitted_calls_without_sender_polylines_still_have_logical_correlation_metadata ... ok
test behavior::scenario_lifecycle::render::tests::union_tests::admitted_death_and_incomplete_later_reply_do_not_fabricate_an_answered_execution ... ok
test behavior::scenario_lifecycle::render::tests::union_tests::admitted_delayed_create_nested_calls_replies_delete_share_one_geometry_pipeline ... ok
test behavior::scenario_lifecycle::render::tests::union_tests::admitted_self_lifecycle_and_self_call_keep_distinct_send_receive_rows ... ok
test behavior::scenario_lifecycle::render::tests::union_tests::admitted_unresolved_operand_keeps_unanswered_cue_without_any_visible_segment ... ok
test behavior::scenario_lifecycle::render::tests::union_tests::clipped_operand_preserves_original_nested_or_crossed_correlation_distinction ... ok
test behavior::scenario_lifecycle::render::tests::union_tests::conditional_death_then_recreate_never_revives_call_but_keeps_open_sibling ... ok
test behavior::scenario_lifecycle::render::tests::union_tests::invalid_prebirth_call_and_postdeath_reply_remain_rejected_with_defensive_scene_clipping ... ok
test behavior::scenario_lifecycle::render::tests::union_tests::test_only_upstream_row_offsets_update_lifetime_segments_and_endpoints_without_authoring ... ok
test behavior::scenario_lifecycle::tests::alternative_death_does_not_kill_its_displayed_sibling ... ok
test behavior::scenario_lifecycle::tests::conditional_birth_does_not_infer_absence_in_siblings_or_ancestors ... ok
test behavior::scenario_lifecycle::tests::explicit_receiver_is_authoritative_even_with_missing_exchange ... ok
test behavior::scenario_lifecycle::tests::lifecycle_free_fragments_do_not_poison_other_lanes ... ok
test behavior::scenario_lifecycle::tests::loop_lifetime_is_local_and_warning_bearing_loops_remain_drawable ... ok
test behavior::scenario_lifecycle::tests::missing_geometry_is_reported_without_nonfinite_or_guessed_markers ... ok
test behavior::scenario_lifecycle::tests::optional_cleanup_inside_loop_does_not_claim_balanced_or_definite_exit ... ok
test behavior::scenario_lifecycle::tests::projection_retains_exact_authored_source_and_does_not_enter_history ... ok
test behavior::scenario_lifecycle::tests::root_lifetime_has_exact_birth_death_boundaries_without_source_mutation ... ok
test behavior::scenario_lifecycle::tests::scenario_use_is_opaque_and_never_imports_callee_lifecycle_events ... ok
test diagram::tests::svg_accepts_populated_and_empty_architecture_views ... ok
test diagram::tests::svg_rejects_missing_diagram_without_mutation ... ok
test diagram::tests::svg_rejects_saved_scenario_with_absent_or_authored_layout_without_mutation ... ok
test workflow::saved_scenario_destination_tests::empty_transition_results_do_not_make_a_scenario_an_architecture_destination ... ok
test result: ok. 224 passed; 0 failed; 0 ignored; 0 measured; 821 filtered out; finished in 111.21s
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,52 @@
{
"status": "Synthetic actual-runner parser checks only; no Cargo or product tests",
"focusedCount": 224,
"runnerSha256": "b962e5deb66ba71af046cd54dc1d98813c045720de5d1fd5a0a4282e1af1ba01",
"cases": [
{
"case": "focused-exact",
"expected": true,
"actual": true
},
{
"case": "focused-zero",
"expected": false,
"actual": false
},
{
"case": "focused-duplicate",
"expected": false,
"actual": false
},
{
"case": "focused-missing",
"expected": false,
"actual": false
},
{
"case": "focused-wrong-total",
"expected": false,
"actual": false
},
{
"case": "focused-wrong-filtered",
"expected": false,
"actual": false
},
{
"case": "list-complete",
"expected": true,
"actual": true
},
{
"case": "list-missing-summary",
"expected": false,
"actual": false
},
{
"case": "list-duplicate",
"expected": false,
"actual": false
}
]
}
@@ -0,0 +1,52 @@
{
"status": "Synthetic actual-runner parser checks only; no Cargo or product tests",
"focusedCount": 224,
"runnerSha256": "1e713ae7bcf69166d5752bbf3ea9ffd0393c64f1c44fb6d0cf29f8b6621d3a10",
"cases": [
{
"case": "focused-exact",
"expected": true,
"actual": true
},
{
"case": "focused-zero",
"expected": false,
"actual": false
},
{
"case": "focused-duplicate",
"expected": false,
"actual": false
},
{
"case": "focused-missing",
"expected": false,
"actual": false
},
{
"case": "focused-wrong-total",
"expected": false,
"actual": false
},
{
"case": "focused-wrong-filtered",
"expected": false,
"actual": false
},
{
"case": "list-complete",
"expected": true,
"actual": true
},
{
"case": "list-missing-summary",
"expected": false,
"actual": false
},
{
"case": "list-duplicate",
"expected": false,
"actual": false
}
]
}
@@ -0,0 +1,33 @@
{
"source": "cb5d50de03a002079da17e6f92ea44c32f7ece75",
"previousSource": "83e840e37f3c3d230382722e99e87bf865abb12e",
"scope": "Original list1045 then corrected direct-executable focused222pass2fail; not acceptance",
"listReceiptPath": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-workspace-gates-attempt2-20260913\\list-receipt.json",
"listReceiptSha256": "332aacfcf2bbb6224ac142521a724eb685e5104ffd3bf2d09e7f9261b9a9b26b",
"focusedReceiptPath": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-workspace-focused-recovery83-20260913\\focused-receipt.json",
"focusedReceiptSha256": "2d8bcc900d5b5e3ccebddac201bc16b0b2a0f1ca6dc1257874c0478cac74823f",
"focusedLogSha256": "301ee596f81cd24c5040207ab2b51e5fae741954534aa432569a1c177de3dffa",
"correctedSelectionSha256": "856c24d3c678d09a25a3f810bdee51e3c26245332c4106401e6c7fd207eea9db",
"exitCode": 101,
"inputsUnchanged": true,
"result": [
{
"status": "FAILED",
"passed": 222,
"failed": 2,
"ignored": 0,
"measured": 0,
"filtered": 821
}
],
"failed": [
{
"name": "behavior::scenario::workspace::tests::production_scenario_camera_external_controls_bounds_and_retained_deltas_cancel_old_drags",
"result": "FAILED"
},
{
"name": "behavior::scenario::workspace::tests::production_scenario_canvas_keeps_bounds_draft_identity_and_camera_through_editing",
"result": "FAILED"
}
]
}
@@ -0,0 +1,133 @@
#Requires -Version 7.0
param([Parameter(Mandatory=$true)][ValidateSet('list','focused','all','clippy','build')][string]$Stage)
Set-StrictMode -Version Latest
$ErrorActionPreference='Stop'
$PSNativeCommandUseErrorActionPreference=$false
$taskWorkspace='C:\Users\User\Documents\Git\ARCADIA-Studio\.local\scenario-workspace-ytr83r-20260913'
$taskTarget='C:\Users\User\Documents\Git\ARCADIA-Studio\target'
$taskPin='cb5d50de03a002079da17e6f92ea44c32f7ece75'
if($taskPin -notmatch '^[0-9a-f]{40}$'){throw 'Final reviewed source pin and captures are not prepared; do not run this template.'}
$toolchainEnv='C:\Users\User\Documents\Git\ARCADIA-Studio\.local\toolchain\env.ps1'
function Hash-Input([string]$Path){(Get-FileHash -LiteralPath $Path -Algorithm SHA256).Hash.ToLowerInvariant()}
function Same-Names($Left,$Right){$a=@($Left|Sort-Object);$b=@($Right|Sort-Object);return $a.Count -eq $b.Count -and @(Compare-Object $a $b).Count -eq 0}
$taskLog=Join-Path $PSScriptRoot ($Stage+'.log')
$taskReceipt=Join-Path $PSScriptRoot ($Stage+'-receipt.json')
if((Test-Path -LiteralPath $taskLog)-or(Test-Path -LiteralPath $taskReceipt)){throw 'Do not replace evidence; prepare a new gate directory for retries.'}
$cache=Get-Content -Raw -LiteralPath (Join-Path $PSScriptRoot 'cache-policy.json')|ConvertFrom-Json
if($cache.base -cne $taskPin -or -not $cache.retainExistingTarget -or $cache.cleanRequested){throw 'Wrong reviewed cache policy.'}
. (Join-Path $PSScriptRoot 'binary-inputs.ps1')
$selection=Get-Content -Raw -LiteralPath (Join-Path $PSScriptRoot 'expected-tests.json')|ConvertFrom-Json
$expected=@($selection.tests|Sort-Object -Unique)
if($selection.source_commit -cne $taskPin -or $selection.expected_count -ne 224 -or $expected.Count -ne 224 -or @($selection.tests).Count -ne 224){throw 'Wrong exact focused membership.'}
$expectedCount=224
$commonFiles=@('run.ps1','capture.ps1','enumerate-inputs.ps1','binary-inputs.ps1','finalize.ps1','verify-parser.ps1','validate-scripts.ps1','parser-verification.json','finalization.json','expected-tests.json','expected-inputs.json','enumeration.json','external-inputs.json','inputs-complete-before.json','cache-policy.json','server-provenance.json','prior-failure-provenance.json')
$boundScripts=@{}
foreach($file in $commonFiles){$boundScripts[$file]=Hash-Input (Join-Path $PSScriptRoot $file)}
$previous=@{focused='list';all='focused';clippy='all';build='clippy'}
$priorBinding=$null
if($previous.ContainsKey($Stage)){
$priorName=$previous[$Stage]
$priorPath=Join-Path $PSScriptRoot ($priorName+'-receipt.json')
$prior=Get-Content -Raw -LiteralPath $priorPath|ConvertFrom-Json
if($prior.stage -cne $priorName -or $prior.base -cne $taskPin -or $prior.workspace -ine $taskWorkspace -or $prior.target -ine $taskTarget -or $prior.cargoExitCode -ne 0 -or -not $prior.selectionValid -or -not $prior.inputsUnchanged){throw 'Exact prior sequential stage did not pass.'}
foreach($file in $commonFiles){if($prior.boundScriptAndInputHashes.$file -cne $boundScripts[$file]){throw ('Prior recipe/input binding changed: '+$file)}}
foreach($property in $prior.boundScriptAndInputHashes.PSObject.Properties){if((Hash-Input (Join-Path $PSScriptRoot $property.Name)) -cne $property.Value){throw ('Prior transitive binding changed: '+$property.Name)};$boundScripts[$property.Name]=$property.Value}
if((Hash-Input (Join-Path $PSScriptRoot ($priorName+'.log'))) -cne $prior.rawLogSha256){throw 'Prior raw output changed.'}
$priorBinding=[ordered]@{stage=$priorName;receiptSha256=(Hash-Input $priorPath);rawLogSha256=$prior.rawLogSha256}
}
Push-Location -LiteralPath $taskWorkspace
try {
& (Join-Path $PSScriptRoot 'capture.ps1') -Stage ($Stage+'-before')
. $toolchainEnv
$env:CARGO_TARGET_DIR=$taskTarget
$env:CARGO_TERM_COLOR='never'
$PSNativeCommandUseErrorActionPreference=$false
$versionPath=Join-Path $PSScriptRoot 'toolchain-versions.json'
if($Stage -eq 'list'){
if(Test-Path -LiteralPath $versionPath){throw 'Preserve prior toolchain version evidence.'}
$cargoVersion=@(& cargo --version --verbose 2>&1);$cargoVersionExit=$LASTEXITCODE
$rustcVersion=@(& rustc --version --verbose 2>&1);$rustcVersionExit=$LASTEXITCODE
$clippyVersion=@(& cargo clippy --version 2>&1);$clippyVersionExit=$LASTEXITCODE
$clangVersion=@(& clang --version 2>&1);$clangVersionExit=$LASTEXITCODE
[ordered]@{base=$taskPin;capturedUtc=[DateTime]::UtcNow.ToString('o');externalEnvironmentPath=$toolchainEnv;externalEnvironmentSha256=(Hash-Input $toolchainEnv);cargo=@($cargoVersion|ForEach-Object {$_.ToString()});cargoExitCode=$cargoVersionExit;rustc=@($rustcVersion|ForEach-Object {$_.ToString()});rustcExitCode=$rustcVersionExit;clippy=@($clippyVersion|ForEach-Object {$_.ToString()});clippyExitCode=$clippyVersionExit;clang=@($clangVersion|ForEach-Object {$_.ToString()});clangExitCode=$clangVersionExit;cargoPath=(Get-Command cargo).Source;rustcPath=(Get-Command rustc).Source;clangPath=(Get-Command clang).Source;cargoHome=$env:CARGO_HOME;rustupHome=$env:RUSTUP_HOME;rustupToolchain=$env:RUSTUP_TOOLCHAIN;buildJobs=$env:CARGO_BUILD_JOBS;incremental=$env:CARGO_INCREMENTAL}|ConvertTo-Json -Depth 8|Set-Content -LiteralPath $versionPath -Encoding utf8
if($cargoVersionExit -ne 0 -or $rustcVersionExit -ne 0 -or $clippyVersionExit -ne 0 -or $clangVersionExit -ne 0){throw 'Toolchain version query failed.'}
}
$versionsHash=Hash-Input $versionPath
if($priorBinding -and $prior.toolchainVersionsSha256 -cne $versionsHash){throw 'Toolchain version receipt changed.'}
$taskArgs=switch($Stage){
'list' {@('test','-p','oa-desktop','--all-targets','--locked','--offline','--','--list')}
'focused' {@('test','-p','oa-desktop','--bin','arcadia-studio','--locked','--offline','--','--exact')+$expected+@('--test-threads=1')}
'all' {@('test','-p','oa-desktop','--all-targets','--locked','--offline','--','--test-threads=1')}
'clippy' {@('clippy','-p','oa-desktop','-p','oa-server','--all-targets','--locked','--offline','--','-D','warnings')}
'build' {@('build','-p','oa-desktop','--bin','arcadia-studio','--locked','--offline')}
}
$taskStart=[DateTime]::UtcNow.ToString('o')
$testExecutablesBefore=@()
if($Stage -ne 'list'){
$testExecutablesBefore=@($prior.testExecutables|ForEach-Object {Get-GateBinary $_.path $taskTarget})
if(-not (Same-GateBinaries @($prior.testExecutables) $testExecutablesBefore)){throw 'Previously bound test executable changed before this stage.'}
}
& cargo @taskArgs 2>&1|Tee-Object -FilePath $taskLog
$taskExit=$LASTEXITCODE
$taskEnd=[DateTime]::UtcNow.ToString('o')
$taskText=Get-Content -Raw -LiteralPath $taskLog
$taskValid=$true;$taskFailure=$null
$listed=@();$executed=@();$matched=@();$ignored=@();$summaries=@();$listSummaries=@()
if($Stage -eq 'list'){
$listed=@([regex]::Matches($taskText,'(?m)^([^\r\n]+): test\r?$')|ForEach-Object {$_.Groups[1].Value})
$matched=@($listed|Where-Object {$_ -cin $expected}|Sort-Object)
$listSummaries=@([regex]::Matches($taskText,'(?m)^(\d+) tests, (\d+) benchmarks\r?$')|ForEach-Object {[ordered]@{tests=[int]$_.Groups[1].Value;benchmarks=[int]$_.Groups[2].Value}})
$taskValid=$listed.Count -ge $expectedCount -and @($listed|Sort-Object -Unique).Count -eq $listed.Count -and (Same-Names $expected $matched) -and (Same-Names @($selection.desktop_tests) $listed) -and $listSummaries.Count -gt 0 -and ($listSummaries|ForEach-Object {$_.tests}|Measure-Object -Sum).Sum -eq $listed.Count -and ($listSummaries|ForEach-Object {$_.benchmarks}|Measure-Object -Sum).Sum -eq 0
}
if($Stage -in @('focused','all')){
$executed=@([regex]::Matches($taskText,'(?m)^test ([^\r\n]+?) \.\.\. (ok|FAILED|ignored)[^\r\n]*\r?$')|ForEach-Object {[ordered]@{name=$_.Groups[1].Value;result=$_.Groups[2].Value}})
$summaries=@([regex]::Matches($taskText,'test result: (ok|FAILED)\. (\d+) passed; (\d+) failed; (\d+) ignored; (\d+) measured; (\d+) filtered out;')|ForEach-Object {[ordered]@{status=$_.Groups[1].Value;passed=[int]$_.Groups[2].Value;failed=[int]$_.Groups[3].Value;ignored=[int]$_.Groups[4].Value;measured=[int]$_.Groups[5].Value;filtered=[int]$_.Groups[6].Value}})
$ignored=@($executed|Where-Object {$_.result -eq 'ignored'}|ForEach-Object {$_.name})
$passedCount=@($executed|Where-Object {$_.result -eq 'ok'}).Count
$failedCount=@($executed|Where-Object {$_.result -eq 'FAILED'}).Count
$taskValid=$summaries.Count -gt 0 -and $failedCount -eq 0 -and @($summaries|Where-Object {$_.status -ne 'ok' -or $_.failed -ne 0 -or $_.measured -ne 0}).Count -eq 0 -and ($summaries|ForEach-Object {$_. passed}|Measure-Object -Sum).Sum -eq $passedCount -and ($summaries|ForEach-Object {$_. ignored}|Measure-Object -Sum).Sum -eq $ignored.Count
if($Stage -in @('focused','all')){
$matched=@($executed|Where-Object {$_.name -cin $expected -and $_.result -eq 'ok'}|ForEach-Object {$_.name}|Sort-Object)
$taskValid=$taskValid -and (Same-Names $expected $matched)
}
if($Stage -eq 'focused'){$taskValid=$taskValid -and $executed.Count -eq $expectedCount -and $passedCount -eq $expectedCount -and $ignored.Count -eq 0 -and $summaries.Count -eq 1 -and $summaries[0].filtered -eq (@($prior.listedTests).Count - $expectedCount)}
if($Stage -eq 'all'){
$listPath=Join-Path $PSScriptRoot 'list-receipt.json'
$listHash=Hash-Input $listPath
$listReceipt=Get-Content -Raw -LiteralPath $listPath|ConvertFrom-Json
if($prior.priorStage.stage -cne 'list' -or $prior.priorStage.receiptSha256 -cne $listHash){throw 'Desktop listing changed after focused execution.'}
$boundScripts['list-receipt.json']=$listHash
$taskValid=$taskValid -and (Same-Names @($listReceipt.listedTests) @($executed|ForEach-Object {$_.name})) -and ($summaries|ForEach-Object {$_. filtered}|Measure-Object -Sum).Sum -eq 0 -and (Same-Names @($selection.ignored_tests) $ignored)
}
}
$inputsUnchanged=$false
try {
& (Join-Path $PSScriptRoot 'capture.ps1') -Stage ($Stage+'-after')
foreach($file in $boundScripts.Keys){if((Hash-Input (Join-Path $PSScriptRoot $file)) -cne $boundScripts[$file]){throw ('Gate recipe/input changed: '+$file)}}
if((Hash-Input $versionPath) -cne $versionsHash){throw 'Toolchain version receipt changed.'}
if($priorBinding -and (Hash-Input (Join-Path $PSScriptRoot ($priorBinding.stage+'-receipt.json'))) -cne $priorBinding.receiptSha256){throw 'Prior receipt changed during gate.'}
$inputsUnchanged=$true
}catch{$taskFailure=$_.Exception.Message}
$testExecutables=@();$testBinaryBindingValid=$false
try {
if($Stage -eq 'list'){
$testExecutables=@(Get-GateTestBinaries $taskText $taskTarget)
if($testExecutables.Count -ne 1){throw 'Expected exactly one actual desktop test executable from Cargo listing.'}
} else {
$testExecutables=@($testExecutablesBefore|ForEach-Object {Get-GateBinary $_.path $taskTarget})
if(-not (Same-GateBinaries $testExecutablesBefore $testExecutables)){throw 'Bound test executable changed during this stage.'}
if($Stage -in @('focused','all')){
$observed=@(Get-GateTestBinaries $taskText $taskTarget)
if(-not (Same-GateBinaries $testExecutables $observed)){throw 'Executed test path differs from the exact listed executable.'}
}
}
$testBinaryBindingValid=$true
} catch {$taskFailure=$_.Exception.Message}
$taskValid=$taskValid -and $testBinaryBindingValid
$binary=$null
if($Stage -eq 'build' -and $taskExit -eq 0){$path=Join-Path $taskTarget 'debug/arcadia-studio.exe';$item=Get-Item -LiteralPath $path;$binary=[ordered]@{path=$item.FullName;bytes=$item.Length;sha256=(Hash-Input $path);mtimeUtc=$item.LastWriteTimeUtc.ToString('o')}}
[ordered]@{stage=$Stage;command=('cargo '+($taskArgs -join ' '));arguments=$taskArgs;base=$taskPin;workspace=$taskWorkspace;target=$taskTarget;startUtc=$taskStart;endUtc=$taskEnd;cargoExitCode=$taskExit;selectionValid=$taskValid;inputsUnchanged=$inputsUnchanged;postflightFailure=$taskFailure;boundScriptAndInputHashes=$boundScripts;priorStage=$priorBinding;externalEnvironmentPath=$toolchainEnv;externalEnvironmentSha256=(Hash-Input $toolchainEnv);toolchainVersionsSha256=$versionsHash;rawLogSha256=(Hash-Input $taskLog);beforeCaptureSha256=(Hash-Input (Join-Path $PSScriptRoot ('inputs-complete-'+$Stage+'-before.json')));afterCaptureSha256=if(Test-Path -LiteralPath (Join-Path $PSScriptRoot ('inputs-complete-'+$Stage+'-after.json'))){Hash-Input (Join-Path $PSScriptRoot ('inputs-complete-'+$Stage+'-after.json'))}else{$null};listedTests=$listed;executedTests=$executed;testResultSummaries=$summaries;matchedRegressionTests=$matched;ignoredTests=$ignored;listSummaries=$listSummaries;testExecutablesBefore=$testExecutablesBefore;testExecutables=$testExecutables;testBinaryBindingValid=$testBinaryBindingValid;binary=$binary}|ConvertTo-Json -Depth 14|Set-Content -LiteralPath $taskReceipt -Encoding utf8
if($taskExit -ne 0){exit $taskExit}
if(-not $taskValid -or -not $inputsUnchanged){throw 'Gate membership or input binding failed; inspect receipt and raw output.'}
} finally {Pop-Location}
@@ -0,0 +1,44 @@
{
"status": "No repeated server stage: core/server/manifests unchanged from verified37 source",
"previous_source": "37be41092beb1c940f345072df1e017ce45fe2fc",
"source": "83e840e37f3c3d230382722e99e87bf865abb12e",
"changed_core_server_manifest_paths": [],
"prior_server_receipt_sha256": "5c0cd2af2b1f3c12528ad961e5b08c60f8865751cca95c1267e1211faf7e0900",
"prior_server_log_sha256": "7c7d847ac942b23a33081fdc3eb9ec53a2c054cd422810e30528b5930c574d71",
"prior_server_results": [
{
"status": "ok",
"passed": 4,
"failed": 0,
"ignored": 0,
"measured": 0,
"filtered": 0
},
{
"status": "ok",
"passed": 0,
"failed": 0,
"ignored": 0,
"measured": 0,
"filtered": 0
},
{
"status": "ok",
"passed": 51,
"failed": 0,
"ignored": 0,
"measured": 0,
"filtered": 0
},
{
"status": "ok",
"passed": 2,
"failed": 0,
"ignored": 0,
"measured": 0,
"filtered": 0
}
],
"strict_scope": "Required here: cargo clippy -p oa-desktop -p oa-server --all-targets --locked --offline -- -D warnings",
"prior_strict_limit": "37 stopped on desktop warnings; server57 tests are not server strict acceptance"
}
@@ -0,0 +1,44 @@
{
"status": "No repeated server stage: core/server/manifests unchanged from verified37 source",
"previous_source": "37be41092beb1c940f345072df1e017ce45fe2fc",
"source": "cb5d50de03a002079da17e6f92ea44c32f7ece75",
"changed_core_server_manifest_paths": [],
"prior_server_receipt_sha256": "5c0cd2af2b1f3c12528ad961e5b08c60f8865751cca95c1267e1211faf7e0900",
"prior_server_log_sha256": "7c7d847ac942b23a33081fdc3eb9ec53a2c054cd422810e30528b5930c574d71",
"prior_server_results": [
{
"status": "ok",
"passed": 4,
"failed": 0,
"ignored": 0,
"measured": 0,
"filtered": 0
},
{
"status": "ok",
"passed": 0,
"failed": 0,
"ignored": 0,
"measured": 0,
"filtered": 0
},
{
"status": "ok",
"passed": 51,
"failed": 0,
"ignored": 0,
"measured": 0,
"filtered": 0
},
{
"status": "ok",
"passed": 2,
"failed": 0,
"ignored": 0,
"measured": 0,
"filtered": 0
}
],
"strict_scope": "Required here: cargo clippy -p oa-desktop -p oa-server --all-targets --locked --offline -- -D warnings",
"prior_strict_limit": "37 stopped on desktop warnings; server57 tests are not server strict acceptance"
}
@@ -0,0 +1,47 @@
{
"base": "cb5d50de03a002079da17e6f92ea44c32f7ece75",
"capturedUtc": "2026-09-13T07:29:46.7906332Z",
"externalEnvironmentPath": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\toolchain\\env.ps1",
"externalEnvironmentSha256": "be2226f08764bb6961b4be8513ce55bab076890cddd2fef0f54a4031f94a82d4",
"cargo": [
"cargo 1.98.1 (797e8a9bc 2026-08-05)",
"release: 1.98.1",
"commit-hash: 797e8a9bca276c1c9f9f738d2a20f484fa4eea9d",
"commit-date: 2026-08-05",
"host: x86_64-pc-windows-gnullvm",
"libgit2: 1.9.4 (sys:0.21.0 vendored)",
"libcurl: 8.21.0-DEV (sys:0.4.90+curl-8.21.0 vendored ssl:Schannel)",
"os: Windows 10.0.26200 (Windows 11 Professional) [64-bit]"
],
"cargoExitCode": 0,
"rustc": [
"rustc 1.98.1 (48a229cea 2026-09-01)",
"binary: rustc",
"commit-hash: 48a229ceaefd4985c50990b14116b6d856af0985",
"commit-date: 2026-09-01",
"host: x86_64-pc-windows-gnullvm",
"release: 1.98.1",
"LLVM version: 22.1.8"
],
"rustcExitCode": 0,
"clippy": [
"clippy 0.1.98 (48a229ceae 2026-09-01)"
],
"clippyExitCode": 0,
"clang": [
"clang version 23.1.1 (https://github.com/llvm/llvm-project.git 6dfe1677ab8dffbc6ec13d53a1e0215d75147689)",
"Target: x86_64-w64-windows-gnu",
"Thread model: posix",
"InstalledDir: C:/Users/User/Documents/Git/ARCADIA-Studio/.local/toolchain/llvm-mingw-20260908-ucrt-x86_64/bin",
"Configuration file: C:/Users/User/Documents/Git/ARCADIA-Studio/.local/toolchain/llvm-mingw-20260908-ucrt-x86_64/bin/x86_64-w64-windows-gnu.cfg"
],
"clangExitCode": 0,
"cargoPath": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\toolchain\\cargo\\bin\\cargo.exe",
"rustcPath": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\toolchain\\cargo\\bin\\rustc.exe",
"clangPath": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\toolchain\\llvm-mingw-20260908-ucrt-x86_64\\bin\\clang.exe",
"cargoHome": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\toolchain\\cargo",
"rustupHome": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\toolchain\\rustup",
"rustupToolchain": "stable-x86_64-pc-windows-gnullvm",
"buildJobs": "1",
"incremental": "0"
}
@@ -0,0 +1,8 @@
#Requires -Version 7.0
$ErrorActionPreference='Stop'
foreach($file in @('enumerate-inputs.ps1','capture.ps1','run.ps1','binary-inputs.ps1','finalize.ps1','verify-parser.ps1','validate-scripts.ps1')){
$tokens=$null;$errors=$null
$null=[System.Management.Automation.Language.Parser]::ParseFile((Join-Path $PSScriptRoot $file),[ref]$tokens,[ref]$errors)
if($errors.Count){$errors|ForEach-Object {Write-Output $_};throw ('Parse failure: '+$file)}
Write-Output ('Parsed '+$file)
}
@@ -0,0 +1,33 @@
#Requires -Version 7.0
param([ValidateSet('parser-verification.json','parser-preparation-verification.json')][string]$OutputName='parser-verification.json')
Set-StrictMode -Version Latest
$ErrorActionPreference='Stop'
if(Test-Path -LiteralPath (Join-Path $PSScriptRoot $OutputName)){throw 'Preserve prior parser evidence; choose a fresh gate or preparation output.'}
$script=Get-Content -Raw -LiteralPath (Join-Path $PSScriptRoot 'run.ps1')
$begin=$script.IndexOf(' $taskValid=$true;$taskFailure=$null')
$end=$script.IndexOf(' $inputsUnchanged=$false',$begin)
if($begin -lt 0 -or $end -lt 0){throw 'Runner parser block not found'}
$block=[scriptblock]::Create($script.Substring($begin,$end-$begin))
$selection=Get-Content -Raw -LiteralPath (Join-Path $PSScriptRoot 'expected-tests.json')|ConvertFrom-Json
$expected=@($selection.tests|Sort-Object -Unique);$expectedCount=$expected.Count
function Same-Names($Left,$Right){$a=@($Left|Sort-Object);$b=@($Right|Sort-Object);return $a.Count -eq $b.Count -and @(Compare-Object $a $b).Count -eq 0}
$prior=[pscustomobject]@{listedTests=@($selection.desktop_tests)}
$filtered=@($prior.listedTests).Count-$expectedCount
$passLines=@($expected|ForEach-Object {'test '+$_+' ... ok'})
$summary='test result: ok. '+$expectedCount+' passed; 0 failed; 0 ignored; 0 measured; '+$filtered+' filtered out;'
$listLines=@($selection.desktop_tests|ForEach-Object {$_+': test'})
$listSummary=@($selection.desktop_tests).Count.ToString()+' tests, 0 benchmarks'
$cases=@(
[pscustomobject]@{name='focused-exact';stage='focused';valid=$true;text=(($passLines+@($summary)) -join "`n")},
[pscustomobject]@{name='focused-zero';stage='focused';valid=$false;text='test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out;'},
[pscustomobject]@{name='focused-duplicate';stage='focused';valid=$false;text=(($passLines+@($passLines[0],$summary)) -join "`n")},
[pscustomobject]@{name='focused-missing';stage='focused';valid=$false;text=(($passLines[1..($passLines.Count-1)]+@($summary)) -join "`n")},
[pscustomobject]@{name='focused-wrong-total';stage='focused';valid=$false;text=(($passLines+@('test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; '+$filtered+' filtered out;')) -join "`n")},
[pscustomobject]@{name='focused-wrong-filtered';stage='focused';valid=$false;text=(($passLines+@($summary.Replace(($filtered.ToString()+' filtered'), '0 filtered'))) -join "`n")},
[pscustomobject]@{name='list-complete';stage='list';valid=$true;text=(($listLines+@($listSummary)) -join "`n")},
[pscustomobject]@{name='list-missing-summary';stage='list';valid=$false;text=($listLines -join "`n")},
[pscustomobject]@{name='list-duplicate';stage='list';valid=$false;text=(($listLines+@($listLines[0],$listSummary)) -join "`n")}
)
$results=@(foreach($case in $cases){$Stage=$case.stage;$taskText=$case.text;. $block;if($taskValid -ne $case.valid){throw ('Unexpected parser decision: '+$case.name)};[ordered]@{case=$case.name;expected=$case.valid;actual=$taskValid}})
[ordered]@{status='Synthetic actual-runner parser checks only; no Cargo or product tests';focusedCount=$expectedCount;runnerSha256=(Get-FileHash -LiteralPath (Join-Path $PSScriptRoot 'run.ps1') -Algorithm SHA256).Hash.ToLowerInvariant();cases=$results}|ConvertTo-Json -Depth 6|Set-Content -LiteralPath (Join-Path $PSScriptRoot $OutputName) -Encoding utf8
Write-Output ('Verified '+$results.Count+' parser cases')