Archive failed first Scenario workspace compile gate
This commit is contained in:
@@ -0,0 +1 @@
|
||||
* -text -whitespace
|
||||
@@ -0,0 +1,14 @@
|
||||
# Closed first saved Scenario workspace compile gate
|
||||
|
||||
Source: [2c9cd2b3e661ef85f11590c7128dcb2f502d0c26](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/commit/2c9cd2b3e661ef85f11590c7128dcb2f502d0c26). The first list stage is **closed failed**, Cargo exit 101, from 2026-09-13 06:17:48.6934273 UTC to 06:34:21.8214194 UTC. Compilation failed before any tests were listed or executed. Focused/full tests, strict lint and GUI build did not run; no UI runtime pass is claimed.
|
||||
|
||||
The unchanged [raw log](original/list.log) and [receipt](original/list-receipt.json) record exactly two compiler errors:
|
||||
|
||||
- E0433: unavailable futures::executor in crates/oa-desktop/src/app/scenario_diagram/adoption_tests.rs:171:20.
|
||||
- E0063: missing Scope.scenario_view in crates/oa-desktop/src/app/process_canvas.rs:63:25.
|
||||
|
||||
All three captures contain identical 601-file source/configuration records and external-input observations; before/after verification succeeded with no postflight failure. The prepared listing/focused membership in expected-tests.json is an expectation, not a test result. Server tests were not repeated: [server-provenance.json](original/server-provenance.json) retains the exact passed 37be410 server receipt/log because its core/server/root-manifest scope was unchanged.
|
||||
|
||||
All 21 original gate files are preserved byte-for-byte under original/, including scripts, the preparation README, raw logs, receipt, package-clearance evidence, tool versions and captures. [manifest.json](manifest.json) records every original byte count, SHA-256 and Git blob SHA-1. Archive verification independently checked copied bytes, receipt script/input/raw-log/capture bindings and the three equal 601-file captures. Local -text attributes preserve original line endings in Git. The explicit 601-file scope and separately bound environment/configuration observations do not claim to hash every possible toolchain or registry input.
|
||||
|
||||
The two-site correction at [83e840e37f3c3d230382722e99e87bf865abb12e](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/commit/83e840e37f3c3d230382722e99e87bf865abb12e) was submitted to a fresh gate. It is source-only at this archive checkpoint; this failed attempt does not establish compilation, test, strict-lint, GUI or native acceptance for the corrected source. Original failed evidence is retained without replacement.
|
||||
@@ -0,0 +1,137 @@
|
||||
{
|
||||
"sourceCommit": "2c9cd2b3e661ef85f11590c7128dcb2f502d0c26",
|
||||
"archiveBase": "c26ee6d2634376b41a64b50230a68a640559c67d",
|
||||
"originalDirectory": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/scenario-workspace-gates-20260913/",
|
||||
"archivedAtUtc": "2026-09-13T06:37:11.342Z",
|
||||
"files": [
|
||||
{
|
||||
"path": "original/README.md",
|
||||
"bytes": 4907,
|
||||
"sha256": "b9fd5902a04aba3bfc3b0495b06f750b33ff8dd5955e80a805a211180ce8b608",
|
||||
"gitBlob": "a39d982f67e491c831d1ebf3d7b1a30f17132400"
|
||||
},
|
||||
{
|
||||
"path": "original/capture.ps1",
|
||||
"bytes": 4063,
|
||||
"sha256": "5a0a727cfc2e05f5f13313ac58a22791b961cf6f423b4fa167e8a0716b6b3d4d",
|
||||
"gitBlob": "a7cf360b1d86ab361e130515c1d31f97d4ee3060"
|
||||
},
|
||||
{
|
||||
"path": "original/enumerate-inputs.ps1",
|
||||
"bytes": 1818,
|
||||
"sha256": "2f3e9fcb5b3c38f91c3ea84c3a283bbd01d598fb825cd1fa73051f7623331c55",
|
||||
"gitBlob": "b985c34df113d42b23a58810269cf7478e5f3fce"
|
||||
},
|
||||
{
|
||||
"path": "original/enumeration.json",
|
||||
"bytes": 73591,
|
||||
"sha256": "aa4dcbc2290a2568461ae9033643a3eff988bf694e52a4d6492e4dce264773da",
|
||||
"gitBlob": "652d404b30c1cef026eabc83bf7f304759eab482"
|
||||
},
|
||||
{
|
||||
"path": "original/expected-inputs.json",
|
||||
"bytes": 112836,
|
||||
"sha256": "faa678ee1213a52fa61dd9d9633f651d25a507fca90aa33039505ad89a2c41ac",
|
||||
"gitBlob": "0be9facea64783a2960f741b4e5d77e26928be0c"
|
||||
},
|
||||
{
|
||||
"path": "original/expected-tests.json",
|
||||
"bytes": 161858,
|
||||
"sha256": "4e5af01c09702c6c254c2ac09207990ddcdb60b319e6e3890931c21479f4c19f",
|
||||
"gitBlob": "8d71b89666f7d065317d2373395c6937f5b42d8a"
|
||||
},
|
||||
{
|
||||
"path": "original/external-inputs.json",
|
||||
"bytes": 1430,
|
||||
"sha256": "4a7fd183489fb6bd867ff2ea7ec53ebdf84b9d173848621008b837f4f50af98e",
|
||||
"gitBlob": "5791337a97a17c0543d6184665ba3060157df268"
|
||||
},
|
||||
{
|
||||
"path": "original/inputs-complete-before.json",
|
||||
"bytes": 117198,
|
||||
"sha256": "b682313252b98870ea53d27666c2efabeaf55ec99b7c3d3e1887fff70fc9b3fc",
|
||||
"gitBlob": "ff3557cc49fc38df025bfd27255481a3c6f97640"
|
||||
},
|
||||
{
|
||||
"path": "original/inputs-complete-list-after.json",
|
||||
"bytes": 117198,
|
||||
"sha256": "838c867a67a7441187cb5a58a9bd49682bf6a4fd885b9bb6fdc91da02f7a08f6",
|
||||
"gitBlob": "b52d88140aa6ddfad644d2fc503e33cf9fb8ebeb"
|
||||
},
|
||||
{
|
||||
"path": "original/inputs-complete-list-before.json",
|
||||
"bytes": 117198,
|
||||
"sha256": "b3e88eb1eccd2ca5df4048140a9899042fd7a8464c22d049f8cab35091d5af6a",
|
||||
"gitBlob": "75d2925d1dc5363f393075b33ec8ac57ca292163"
|
||||
},
|
||||
{
|
||||
"path": "original/list-receipt.json",
|
||||
"bytes": 2375,
|
||||
"sha256": "6817e5baeeb72c9557440090059a99671cba6345e54a997aa6ea217c1c7c360d",
|
||||
"gitBlob": "de107960eda527082a57a41244354765af234522"
|
||||
},
|
||||
{
|
||||
"path": "original/list.log",
|
||||
"bytes": 1916,
|
||||
"sha256": "84fbcdcbab5620245d186927f8f8057e4d3ba988a0e9eb75e006bbccb2690c3b",
|
||||
"gitBlob": "967bf6f04a5b988fba3f832c6c245ca75b0faed1"
|
||||
},
|
||||
{
|
||||
"path": "original/package-clearance.json",
|
||||
"bytes": 482,
|
||||
"sha256": "2817742f139a64faff8e1eb9b9442d4a356da053f1644a83cfe6c44ec95d04b9",
|
||||
"gitBlob": "3cf988082e8ef74f22c4f0a38df77ec10409e8da"
|
||||
},
|
||||
{
|
||||
"path": "original/package-clearance.log",
|
||||
"bytes": 40,
|
||||
"sha256": "106a67b5863f667c164bffae31fd2a2cb713f1a3154fb3f5af8648920339db54",
|
||||
"gitBlob": "e2200c670c9b375fd02e8a8335f36bbe983d922e"
|
||||
},
|
||||
{
|
||||
"path": "original/parser-verification.json",
|
||||
"bytes": 1022,
|
||||
"sha256": "1596b2bc8dbe7b62e66808a8e68630dda5a9bbe9948f6c49df14c9cd1fc38d4f",
|
||||
"gitBlob": "71d340cb476a0c84c6e5096215b2d80e52f69131"
|
||||
},
|
||||
{
|
||||
"path": "original/preparation.json",
|
||||
"bytes": 2406,
|
||||
"sha256": "7e334c9ee3ec01c6de28bb4a1b1791ae356b42cf3d3847bd27fce27e09d51a36",
|
||||
"gitBlob": "62b6a6c764f371b283f8e913a720a7a7e5d7ac7a"
|
||||
},
|
||||
{
|
||||
"path": "original/run.ps1",
|
||||
"bytes": 11421,
|
||||
"sha256": "c8d0cacd7236b440bdb2e55edd71e4f73db845473bbe24caa468e1ddb65ab256",
|
||||
"gitBlob": "fbff9caa3deec60c87819954dcc687c12bc947bd"
|
||||
},
|
||||
{
|
||||
"path": "original/server-provenance.json",
|
||||
"bytes": 1031,
|
||||
"sha256": "cd11fd6431ed30e545b12a3a8605a81bb1b59cb5bbd03a7a05120324dc1d948b",
|
||||
"gitBlob": "608327ad3995f351d455e08bac0822fa4db6e850"
|
||||
},
|
||||
{
|
||||
"path": "original/toolchain-versions.json",
|
||||
"bytes": 2268,
|
||||
"sha256": "d5cd7c7c8d2ac4b586bfb1cff5c7bece19a8e82c47631e073a78fe58b57494ce",
|
||||
"gitBlob": "6e9a0bcd877d207379af960e96c6f9655d9614da"
|
||||
},
|
||||
{
|
||||
"path": "original/validate-scripts.ps1",
|
||||
"bytes": 445,
|
||||
"sha256": "ee356f8930de3a21c424deae4ba72af1c39dd4c77b89d10662a4e831b8a00857",
|
||||
"gitBlob": "c01ef461446bdd55bd5a71ccd6e5cf86c157fae4"
|
||||
},
|
||||
{
|
||||
"path": "original/verify-parser.ps1",
|
||||
"bytes": 3028,
|
||||
"sha256": "31d79e325aef50871dbd7a3482105b717630368de35f547d813f25b761266b7a",
|
||||
"gitBlob": "9b7f7084cdc4b027188504317032f34ec3064646"
|
||||
}
|
||||
],
|
||||
"byteExact": true,
|
||||
"receiptBindingsVerified": true,
|
||||
"allThreeCapturesMatch601": true
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
# Prepared saved Scenario workspace Windows gate
|
||||
|
||||
Prepared at `2c9cd2b3e661ef85f11590c7128dcb2f502d0c26` in `.local/scenario-workspace-ytr83r-20260913`. No Cargo, compiler/version command, cleanup, server, application build or native launch was executed during preparation. Parent alone dispatches each stage. This directory contains no product pass claim.
|
||||
|
||||
Run in order with PowerShell 7: `pwsh -NoProfile -File .local/scenario-workspace-gates-20260913/run.ps1 -Stage list`, then separate invocations for `focused`, `all`, `clippy`, `build`. A later stage requires its exact successful predecessor, unchanged source/config/recipe hashes and preserved prior raw log. The runner carries transitive prior bindings, including the actual listing receipt, through later stages. Existing logs/receipts/captures are never overwritten; failure/retry needs a new directory.
|
||||
|
||||
Before dispatch, parent supplies current-pin `package-clearance.json` with base, successful cargoExitCode 0, absolute root target directory and dependenciesRetained=true. Recommended parent clearance is limited to oa-desktop/oa-server/oa-core because this gate moves to a different worktree; no cleanup is performed by preparation or run.ps1. Shared root target and existing dependency outputs remain parent-owned.
|
||||
|
||||
## Exact source and test selection
|
||||
|
||||
Fresh Git and independent rg enumeration agree on **601** source/build/fixture/config files, rather than inheriting the old 591 count. `enumeration.json` records both complete memberships and tree; `expected-inputs.json` records independently computed byte lengths/SHA-256. The initial `inputs-complete-before.json` is captured once, after clean pinned source verification. Every stage re-enumerates and captures before/after, rejecting changed membership or bytes.
|
||||
|
||||
Focused selection is **224 unique tests**: the previous 87 renderer/dispatch tests (one dispatch name explicitly changed), all 35 new tests, and affected existing Scenario/direct/workspace/operation/usage, canvas control, diagram selection/usage/reveal and behavior lifecycle cases. `expected-tests.json` contains every exact qualified name and the prefix rationale. All selected leaf test functions were found in current Rust source, including async tokio tests; selected additions are bound to their module files. New 35 comprise 5 presentation adapter, 5 controller, 5 camera+2 shared camera/control, 6 App routing, 4 adoption, 2 owner navigation and 6 saved usage tests.
|
||||
|
||||
The previous actual 1010-name listing, one explicit rename and 35 registered additions predict **1045 desktop tests**. This is a membership expectation, not an execution result: the actual `--list` must match the complete exact name set, with unique names and consistent list summaries. Focused must execute each 224 exactly once, pass all with no ignores and match the actual listing's remaining count (predicted 821 filtered). Full desktop must match the actual listed multiset, run all 224 focused tests successfully, have zero filtered tests and exactly the three existing ignored timing/scale probes named in the manifest. There is no zero-match success path.
|
||||
|
||||
One old dispatch filter changes from `app::saved_scenario_dispatch_tests::unsupported_saved_picker_and_reveal_do_not_apply_pending_properties` to `app::saved_scenario_dispatch_tests::saved_picker_with_invalid_properties_and_reveal_with_pending_properties_do_not_apply`; its replacement remains in the retained 87 membership.
|
||||
|
||||
`server-provenance.json` records unchanged core/server/root-manifest scope relative to 37 and binds its passed server receipt/log. The UI gate does not repeat server tests. The parent-owned old 37 strict failure is preserved separately; this source includes its style-only correction. The new strict stage runs `cargo clippy -p oa-desktop --all-targets --locked --offline -- -D warnings`. The final GUI build records root/target/debug/arcadia-studio.exe bytes/hash/mtime; no GUI is presently built or launched by this preparation.
|
||||
|
||||
## Environment and script checks
|
||||
|
||||
The external toolchain env script and all eight Cargo config candidates are freshly recorded in `external-inputs.json`; the env script is present and the config candidates absent. `env.ps1` sets build jobs 1, incremental 0, stable-x86_64-pc-windows-gnullvm, clang linker and the configured cargo/rustup homes. This is the standard gate, not an incremental development trial. First list invocation records cargo/rustc/clippy/clang version output and selected runtime environment; later stages retain that binding. No registry-wide hashing is claimed.
|
||||
|
||||
PowerShell parsing checks all five scripts. `verify-parser.ps1` executes only the actual runner's output parser against synthetic complete/missing/duplicate/wrong-total/wrong-filtered/zero logs; it does not execute Cargo. Script and parser results are preparation evidence only. The original beforecapture is protected from replacement.
|
||||
@@ -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='2c9cd2b3e661ef85f11590c7128dcb2f502d0c26'
|
||||
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}
|
||||
+27
@@ -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='2c9cd2b3e661ef85f11590c7128dcb2f502d0c26'
|
||||
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}
|
||||
+1227
File diff suppressed because it is too large
Load Diff
+3013
File diff suppressed because it is too large
Load Diff
+1518
File diff suppressed because it is too large
Load Diff
+44
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"base": "2c9cd2b3e661ef85f11590c7128dcb2f502d0c26",
|
||||
"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
|
||||
}
|
||||
]
|
||||
}
|
||||
+3055
File diff suppressed because it is too large
Load Diff
+3055
File diff suppressed because it is too large
Load Diff
+3055
File diff suppressed because it is too large
Load Diff
+48
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"stage": "list",
|
||||
"command": "cargo test -p oa-desktop --all-targets --locked --offline -- --list",
|
||||
"arguments": [
|
||||
"test",
|
||||
"-p",
|
||||
"oa-desktop",
|
||||
"--all-targets",
|
||||
"--locked",
|
||||
"--offline",
|
||||
"--",
|
||||
"--list"
|
||||
],
|
||||
"base": "2c9cd2b3e661ef85f11590c7128dcb2f502d0c26",
|
||||
"workspace": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-workspace-ytr83r-20260913",
|
||||
"target": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\target",
|
||||
"startUtc": "2026-09-13T06:17:48.6934273Z",
|
||||
"endUtc": "2026-09-13T06:34:21.8214194Z",
|
||||
"cargoExitCode": 101,
|
||||
"selectionValid": false,
|
||||
"inputsUnchanged": true,
|
||||
"postflightFailure": null,
|
||||
"boundScriptAndInputHashes": {
|
||||
"inputs-complete-before.json": "b682313252b98870ea53d27666c2efabeaf55ec99b7c3d3e1887fff70fc9b3fc",
|
||||
"run.ps1": "c8d0cacd7236b440bdb2e55edd71e4f73db845473bbe24caa468e1ddb65ab256",
|
||||
"server-provenance.json": "cd11fd6431ed30e545b12a3a8605a81bb1b59cb5bbd03a7a05120324dc1d948b",
|
||||
"package-clearance.json": "2817742f139a64faff8e1eb9b9442d4a356da053f1644a83cfe6c44ec95d04b9",
|
||||
"enumeration.json": "aa4dcbc2290a2568461ae9033643a3eff988bf694e52a4d6492e4dce264773da",
|
||||
"external-inputs.json": "4a7fd183489fb6bd867ff2ea7ec53ebdf84b9d173848621008b837f4f50af98e",
|
||||
"expected-inputs.json": "faa678ee1213a52fa61dd9d9633f651d25a507fca90aa33039505ad89a2c41ac",
|
||||
"expected-tests.json": "4e5af01c09702c6c254c2ac09207990ddcdb60b319e6e3890931c21479f4c19f",
|
||||
"capture.ps1": "5a0a727cfc2e05f5f13313ac58a22791b961cf6f423b4fa167e8a0716b6b3d4d"
|
||||
},
|
||||
"priorStage": null,
|
||||
"externalEnvironmentPath": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\toolchain\\env.ps1",
|
||||
"externalEnvironmentSha256": "be2226f08764bb6961b4be8513ce55bab076890cddd2fef0f54a4031f94a82d4",
|
||||
"toolchainVersionsSha256": "d5cd7c7c8d2ac4b586bfb1cff5c7bece19a8e82c47631e073a78fe58b57494ce",
|
||||
"rawLogSha256": "84fbcdcbab5620245d186927f8f8057e4d3ba988a0e9eb75e006bbccb2690c3b",
|
||||
"beforeCaptureSha256": "b3e88eb1eccd2ca5df4048140a9899042fd7a8464c22d049f8cab35091d5af6a",
|
||||
"afterCaptureSha256": "838c867a67a7441187cb5a58a9bd49682bf6a4fd885b9bb6fdc91da02f7a08f6",
|
||||
"listedTests": [],
|
||||
"executedTests": [],
|
||||
"testResultSummaries": [],
|
||||
"matchedRegressionTests": [],
|
||||
"ignoredTests": [],
|
||||
"listSummaries": [],
|
||||
"binary": null
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
Compiling http v1.5.0
|
||||
Compiling http-body v1.1.0
|
||||
Compiling hyper v1.11.1
|
||||
Compiling http-body-util v0.1.5
|
||||
Compiling hyper-util v0.1.20
|
||||
Compiling oa-core v0.2.0 (C:\Users\User\Documents\Git\ARCADIA-Studio\.local\scenario-workspace-ytr83r-20260913\crates\oa-core)
|
||||
Compiling axum-core v0.5.6
|
||||
Compiling tower-http v0.6.11
|
||||
Compiling oa-server v0.2.0 (C:\Users\User\Documents\Git\ARCADIA-Studio\.local\scenario-workspace-ytr83r-20260913\crates\oa-server)
|
||||
Compiling axum v0.8.9
|
||||
Compiling hyper-rustls v0.27.9
|
||||
Compiling oa-desktop v0.2.0 (C:\Users\User\Documents\Git\ARCADIA-Studio\.local\scenario-workspace-ytr83r-20260913\crates\oa-desktop)
|
||||
Compiling reqwest v0.12.28
|
||||
error[E0433]: cannot find `executor` in `futures`
|
||||
--> crates\oa-desktop\src\app\scenario_diagram\adoption_tests.rs:171:20
|
||||
|
|
||||
171 | iced::futures::executor::block_on(async {
|
||||
| ^^^^^^^^ could not find `executor` in `futures`
|
||||
|
|
||||
note: found an item that was configured out
|
||||
--> C:\Users\User\Documents\Git\ARCADIA-Studio\.local\toolchain\cargo\registry\src\index.crates.io-1949cf8c6b5b557f\futures-0.3.34\src\lib.rs:150:9
|
||||
|
|
||||
148 | #[cfg(feature = "executor")]
|
||||
| -------------------- the item is gated behind the `executor` feature
|
||||
149 | #[cfg_attr(docsrs, doc(cfg(feature = "executor")))]
|
||||
150 | pub mod executor {
|
||||
| ^^^^^^^^
|
||||
|
||||
error[E0063]: missing field `scenario_view` in initializer of `canvas_workspace::Scope`
|
||||
--> crates\oa-desktop\src\app\process_canvas.rs:63:25
|
||||
|
|
||||
63 | let scope = canvas_workspace::Scope {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^ missing `scenario_view`
|
||||
|
||||
Some errors have detailed explanations: E0063, E0433.
|
||||
For more information about an error, try `rustc --explain E0063`.
|
||||
error: could not compile `oa-desktop` (bin "arcadia-studio" test) due to 2 previous errors
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"startedUtc": "2026-09-13T06:16:32.5821832Z",
|
||||
"completedUtc": "2026-09-13T06:16:35.7079384Z",
|
||||
"command": "cargo clean -p oa-desktop -p oa-server -p oa-core --target-dir <verified root target>",
|
||||
"target": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\target",
|
||||
"base": "2c9cd2b3e661ef85f11590c7128dcb2f502d0c26",
|
||||
"workspacePackagesCleared": [
|
||||
"oa-desktop",
|
||||
"oa-server",
|
||||
"oa-core"
|
||||
],
|
||||
"dependenciesRetained": true,
|
||||
"cargoExitCode": 0
|
||||
}
|
||||
+1
@@ -0,0 +1 @@
|
||||
Removed 161 files, 561.1MiB total
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"status": "Synthetic actual-runner parser checks only; no Cargo or product tests",
|
||||
"focusedCount": 224,
|
||||
"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
|
||||
}
|
||||
]
|
||||
}
|
||||
+81
@@ -0,0 +1,81 @@
|
||||
{
|
||||
"source": "2c9cd2b3e661ef85f11590c7128dcb2f502d0c26",
|
||||
"status": "Prepared and verified only; no Cargo, toolchain-version invocation, cleanup or native execution",
|
||||
"input_count": 601,
|
||||
"focused_count": 224,
|
||||
"new_tests": 35,
|
||||
"predicted_desktop_count": 1045,
|
||||
"expected_ignored_count": 3,
|
||||
"before_capture_count": 1,
|
||||
"before_independently_verified": true,
|
||||
"stages": [
|
||||
"list",
|
||||
"focused",
|
||||
"all",
|
||||
"clippy",
|
||||
"build"
|
||||
],
|
||||
"parent_must_supply": "Current-pin successful package-clearance.json before list",
|
||||
"files": [
|
||||
{
|
||||
"path": "run.ps1",
|
||||
"bytes": 11421,
|
||||
"sha256": "c8d0cacd7236b440bdb2e55edd71e4f73db845473bbe24caa468e1ddb65ab256"
|
||||
},
|
||||
{
|
||||
"path": "capture.ps1",
|
||||
"bytes": 4063,
|
||||
"sha256": "5a0a727cfc2e05f5f13313ac58a22791b961cf6f423b4fa167e8a0716b6b3d4d"
|
||||
},
|
||||
{
|
||||
"path": "enumerate-inputs.ps1",
|
||||
"bytes": 1818,
|
||||
"sha256": "2f3e9fcb5b3c38f91c3ea84c3a283bbd01d598fb825cd1fa73051f7623331c55"
|
||||
},
|
||||
{
|
||||
"path": "verify-parser.ps1",
|
||||
"bytes": 3028,
|
||||
"sha256": "31d79e325aef50871dbd7a3482105b717630368de35f547d813f25b761266b7a"
|
||||
},
|
||||
{
|
||||
"path": "validate-scripts.ps1",
|
||||
"bytes": 445,
|
||||
"sha256": "ee356f8930de3a21c424deae4ba72af1c39dd4c77b89d10662a4e831b8a00857"
|
||||
},
|
||||
{
|
||||
"path": "expected-inputs.json",
|
||||
"bytes": 112836,
|
||||
"sha256": "faa678ee1213a52fa61dd9d9633f651d25a507fca90aa33039505ad89a2c41ac"
|
||||
},
|
||||
{
|
||||
"path": "expected-tests.json",
|
||||
"bytes": 161858,
|
||||
"sha256": "4e5af01c09702c6c254c2ac09207990ddcdb60b319e6e3890931c21479f4c19f"
|
||||
},
|
||||
{
|
||||
"path": "external-inputs.json",
|
||||
"bytes": 1430,
|
||||
"sha256": "4a7fd183489fb6bd867ff2ea7ec53ebdf84b9d173848621008b837f4f50af98e"
|
||||
},
|
||||
{
|
||||
"path": "enumeration.json",
|
||||
"bytes": 73591,
|
||||
"sha256": "aa4dcbc2290a2568461ae9033643a3eff988bf694e52a4d6492e4dce264773da"
|
||||
},
|
||||
{
|
||||
"path": "inputs-complete-before.json",
|
||||
"bytes": 117198,
|
||||
"sha256": "b682313252b98870ea53d27666c2efabeaf55ec99b7c3d3e1887fff70fc9b3fc"
|
||||
},
|
||||
{
|
||||
"path": "parser-verification.json",
|
||||
"bytes": 1022,
|
||||
"sha256": "1596b2bc8dbe7b62e66808a8e68630dda5a9bbe9948f6c49df14c9cd1fc38d4f"
|
||||
},
|
||||
{
|
||||
"path": "server-provenance.json",
|
||||
"bytes": 1031,
|
||||
"sha256": "cd11fd6431ed30e545b12a3a8605a81bb1b59cb5bbd03a7a05120324dc1d948b"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
#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='2c9cd2b3e661ef85f11590c7128dcb2f502d0c26'
|
||||
$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.'}
|
||||
$clearancePath=Join-Path $PSScriptRoot 'package-clearance.json'
|
||||
$clearance=Get-Content -Raw -LiteralPath $clearancePath|ConvertFrom-Json
|
||||
if($clearance.base -cne $taskPin -or $clearance.cargoExitCode -ne 0 -or [IO.Path]::GetFullPath($clearance.target) -ine $taskTarget -or -not $clearance.dependenciesRetained){throw 'Parent-owned successful current-pin package clearance is required.'}
|
||||
$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','expected-tests.json','expected-inputs.json','enumeration.json','external-inputs.json','inputs-complete-before.json','package-clearance.json','server-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','--all-targets','--locked','--offline','--','-D','warnings')}
|
||||
'build' {@('build','-p','oa-desktop','--bin','arcadia-studio','--locked','--offline')}
|
||||
}
|
||||
$taskStart=[DateTime]::UtcNow.ToString('o')
|
||||
& 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}
|
||||
$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;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}
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"status": "No repeated server stage: core/server/manifests unchanged from verified37 source",
|
||||
"previous_source": "37be41092beb1c940f345072df1e017ce45fe2fc",
|
||||
"source": "2c9cd2b3e661ef85f11590c7128dcb2f502d0c26",
|
||||
"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
|
||||
}
|
||||
]
|
||||
}
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"base": "2c9cd2b3e661ef85f11590c7128dcb2f502d0c26",
|
||||
"capturedUtc": "2026-09-13T06:17:48.6325747Z",
|
||||
"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"
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
#Requires -Version 7.0
|
||||
$ErrorActionPreference='Stop'
|
||||
foreach($file in @('enumerate-inputs.ps1','capture.ps1','run.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)
|
||||
}
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
#Requires -Version 7.0
|
||||
Set-StrictMode -Version Latest
|
||||
$ErrorActionPreference='Stop'
|
||||
$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;cases=$results}|ConvertTo-Json -Depth 6|Set-Content -LiteralPath (Join-Path $PSScriptRoot 'parser-verification.json') -Encoding utf8
|
||||
Write-Output ('Verified '+$results.Count+' parser cases')
|
||||
Reference in New Issue
Block a user