Verify Windows contextual authoring and preserve postboot evidence
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
# Source-card postboot failure and reviewed correction
|
||||
|
||||
Codex-9e8r6t /root/release_audit, 2026-09-11. This is a bounded raw-evidence archive, separate from the earlier reboot archive and original GUI52 native evidence.
|
||||
|
||||
`focused3.log` and its status are an **actual terminal failure**, not a reboot interruption: Cargo exit 101, 25 passed / 1 failed / 653 filtered out in 0.35 seconds, following 2 minutes 13 seconds compilation. The command finished at 13:57:36 UTC, before the second reboot at 13:59:33 UTC. Only the fixture's requirement that the long parent paragraph itself exceed the field viewport failed. The strengthened fixture has not yet run at this archive checkpoint.
|
||||
|
||||
The failed source is bound by [inputs3](../contextual-source-layout-reboot-20260911/inputs3.json) and root's ca53f574 checkpoint. It is not duplicated here. `inputs4.json`, `input-delta.json`, `postboot2-input-check.json`, and the exact `source_draft.rs.snapshot` preserve the correction: of 238 input files, only source_draft.rs changed, in five test-only hunks. Production remained unchanged. The correction increases the authored long parent from 8 to 32 repetitions and observes real scroll-content bounds; it retains the same 340 by 215 host, real Paragraph, Name/all-kind/parent-first-line/footer/raw-state assertions and strict paragraph overflow condition. Additional scroll-content overflow and full-parent containment are required. Independent source readback closed without a material finding; see [review](../../release-contextual-source-layout-independent-20260911.md).
|
||||
|
||||
`run-gates4.ps1` and `stage-final.ps1` are prepared reproduction scripts, not execution evidence. Run from the repository root only after coordinating the Windows Cargo lease and restoring the designated local toolchain. The gate script serializes the affected contextual_source filter, strict desktop all-target Clippy, workspace formatting and matching GUI build; each writes fresh .local logs/statuses and refuses overwrites. Staging requires all terminal successes and unchanged input hashes, then copies the matching test/GUI executables and verified libunwind.dll into distinct local folders. No executables, rlibs, caches, credentials or 238-file source duplicate are included here. No full 679-test run, final GUI, Clippy or formatting pass is claimed by this archive.
|
||||
|
||||
`copy-provenance.json` lists the exact original paths, sizes and hashes of the seven copied raw records. `manifest.json` hashes every other file in this directory; it excludes itself. Raw copies retain original bytes, including CRLF and terminal log whitespace. Root must add the narrow attribute rule `harness/experiments/contextual-source-layout-postboot-20260911/** -text whitespace=-blank-at-eof,cr-at-eol` before committing, so Git does not normalize these measured bytes. The previous archive remains untouched.
|
||||
|
||||
The evolving execution/acceptance record is [the owned layout report](../../release-contextual-source-layout-review-20260911.md). Later gate results must be explicitly distinguished from this frozen pre-run checkpoint and original GUI52 acceptance.
|
||||
@@ -0,0 +1,44 @@
|
||||
[
|
||||
{
|
||||
"file": "focused3.log",
|
||||
"source": ".local/contextual-source-layout-20260911/focused3.log",
|
||||
"sha256": "0FDAC9E2999AD5225876D499BFAE075C786AE3A107B8E43D1A1ADCD8EA44530B",
|
||||
"bytes": 4469
|
||||
},
|
||||
{
|
||||
"file": "focused3-status.json",
|
||||
"source": ".local/contextual-source-layout-20260911/focused3-status.json",
|
||||
"sha256": "FCA1451CF134A395EFC2A3A2525FC1BE20353346EEEFFE0FA6C1AF7D97E039AF",
|
||||
"bytes": 295
|
||||
},
|
||||
{
|
||||
"file": "inputs4.json",
|
||||
"source": ".local/contextual-source-layout-20260911/inputs4.json",
|
||||
"sha256": "669724858967D83AB7DA5F78BFAFB6065E2BCAB3BAD0E68D0A74FEB86C7195E7",
|
||||
"bytes": 44198
|
||||
},
|
||||
{
|
||||
"file": "postboot2-input-check.json",
|
||||
"source": ".local/contextual-source-layout-20260911/postboot2-input-check.json",
|
||||
"sha256": "5C1C62C0EDC78BA5932BB674CDA7F81E63A2C1D5BE41B9CA65DD6B5B6DAB8091",
|
||||
"bytes": 371
|
||||
},
|
||||
{
|
||||
"file": "run-gates4.ps1",
|
||||
"source": ".local/contextual-source-layout-20260911/run-gates4.ps1",
|
||||
"sha256": "E0D0A80EB69F5AA2834D5F9D6598F1E37D33A4CA1E2C457C55A32021D12E1A5D",
|
||||
"bytes": 1263
|
||||
},
|
||||
{
|
||||
"file": "stage-final.ps1",
|
||||
"source": ".local/contextual-source-layout-20260911/stage-final.ps1",
|
||||
"sha256": "68D691FD045532FA7BCF1AD1AA8CFB891BB6000F2B1DC6FD1410E2563EA2700E",
|
||||
"bytes": 2683
|
||||
},
|
||||
{
|
||||
"file": "source_draft.rs.snapshot",
|
||||
"source": "crates/oa-desktop/src/behavior/source_draft.rs",
|
||||
"sha256": "85D543CC288E48B4C13001E4E386B5B54D9B1E349A5AC31E4E307572F2D8FB3C",
|
||||
"bytes": 39485
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"started": "2026-09-11T13:55:21.2269665Z",
|
||||
"finished": "2026-09-11T13:57:36.2607858Z",
|
||||
"exitCode": 101,
|
||||
"args": [
|
||||
"test",
|
||||
"--locked",
|
||||
"-p",
|
||||
"oa-desktop",
|
||||
"--bin",
|
||||
"arcadia-studio",
|
||||
"contextual_source",
|
||||
"--",
|
||||
"--test-threads=1"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
Compiling oa-desktop v0.2.0 (C:\Users\User\Documents\Git\ARCADIA-Studio\crates\oa-desktop)
|
||||
Finished `test` profile [unoptimized] target(s) in 2m 13s
|
||||
Running unittests src\main.rs (.local\target-gnullvm\debug\deps\arcadia_studio-58e30cee1fd51a8b.exe)
|
||||
|
||||
running 26 tests
|
||||
test behavior::contextual_source_tests::contextual_source_app_checkpoint_restores_inner_raw_draft_without_model_adoption ... ok
|
||||
test behavior::contextual_source_tests::contextual_source_app_empty_actions_and_child_open_refuse_other_raw_editors ... ok
|
||||
test behavior::contextual_source_tests::contextual_source_app_modal_escape_then_child_back_then_parent_cancel_preserve_accepted_source ... ok
|
||||
test behavior::contextual_source_tests::contextual_source_back_remains_available_after_owner_deletion_and_with_dirty_editors ... ok
|
||||
test behavior::contextual_source_tests::contextual_source_back_retains_parent_and_rejects_late_child_event ... ok
|
||||
test behavior::contextual_source_tests::contextual_source_default_consumer_name_has_stable_alias_and_correlated_selection ... ok
|
||||
test behavior::contextual_source_tests::contextual_source_deleted_owner_view_retains_draft_instead_of_panicking_or_using_fallback ... ok
|
||||
test behavior::contextual_source_tests::contextual_source_empty_history_reports_no_change_and_success_requires_a_real_history_step ... ok
|
||||
test behavior::contextual_source_tests::contextual_source_existing_choice_prunes_staged_dependency ... ok
|
||||
test behavior::contextual_source_tests::contextual_source_failed_source_budget_preserves_both_drafts_and_accepted_bytes ... ok
|
||||
test behavior::contextual_source_tests::contextual_source_incomplete_recovered_kind_reports_error_without_panicking ... ok
|
||||
test behavior::contextual_source_tests::contextual_source_inserts_work_on_the_exact_guarded_link_and_refuses_exchange_identity_conflict ... ok
|
||||
test behavior::contextual_source_tests::contextual_source_lifelines_stage_exact_separate_records_and_one_history_entry ... ok
|
||||
test behavior::contextual_source_tests::contextual_source_machine_before_any_owner_creates_optional_view_atomically ... ok
|
||||
test behavior::contextual_source_tests::contextual_source_mounted_small_editor_keeps_back_and_use_outside_field_scroll ... ok
|
||||
test behavior::contextual_source_tests::contextual_source_nested_semantic_parent_is_explicit_and_revalidated ... ok
|
||||
test behavior::contextual_source_tests::contextual_source_new_callee_lifeline_preserves_caller_bindings_as_an_explicit_warning ... ok
|
||||
test behavior::contextual_source_tests::contextual_source_old_empty_action_cannot_open_a_previous_owner_or_layer ... ok
|
||||
test behavior::contextual_source_tests::contextual_source_original_document_remains_bound_after_back_or_choosing_existing ... ok
|
||||
test behavior::contextual_source_tests::contextual_source_owner_first_can_return_to_an_unnamed_machine_without_losing_source ... ok
|
||||
test behavior::contextual_source_tests::contextual_source_recovery_keeps_inner_raw_fields_and_refuses_deleted_or_changed_owner ... ok
|
||||
test behavior::contextual_source_tests::contextual_source_second_system_and_role_machine_owner_refuse_without_fallback ... ok
|
||||
test behavior::contextual_source_tests::contextual_source_work_uses_reserved_contribution_and_link_ids_and_one_undo ... ok
|
||||
test behavior::source_draft::layout_tests::contextual_source_layout_initial_essentials_fit_short_composed_host_with_real_paragraphs ... ok
|
||||
test behavior::source_draft::layout_tests::contextual_source_layout_long_parent_wraps_after_visible_name_without_losing_raw_data ... FAILED
|
||||
test behavior::source_draft::layout_tests::contextual_source_layout_visible_kind_click_keeps_choice_explicit_and_name_input_works ... ok
|
||||
|
||||
failures:
|
||||
|
||||
---- behavior::source_draft::layout_tests::contextual_source_layout_long_parent_wraps_after_visible_name_without_losing_raw_data stdout ----
|
||||
|
||||
thread 'behavior::source_draft::layout_tests::contextual_source_layout_long_parent_wraps_after_visible_name_without_losing_raw_data' (3960) panicked at crates\oa-desktop\src\behavior\source_draft.rs:933:9:
|
||||
Exercise genuinely overflowing parent text
|
||||
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
|
||||
|
||||
|
||||
failures:
|
||||
behavior::source_draft::layout_tests::contextual_source_layout_long_parent_wraps_after_visible_name_without_losing_raw_data
|
||||
|
||||
test result: FAILED. 25 passed; 1 failed; 0 ignored; 0 measured; 653 filtered out; finished in 0.35s
|
||||
|
||||
error: test failed, to rerun pass `-p oa-desktop --bin arcadia-studio`
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"previousManifest": "../contextual-source-layout-reboot-20260911/inputs3.json",
|
||||
"previousManifestSHA256": "6B3F3088FF18AF3899C3764B3F3671DA9240A5DE184D871BF08F8012456E556B",
|
||||
"currentManifest": "inputs4.json",
|
||||
"currentManifestSHA256": "669724858967D83AB7DA5F78BFAFB6065E2BCAB3BAD0E68D0A74FEB86C7195E7",
|
||||
"inputCount": 238,
|
||||
"unchangedCount": 237,
|
||||
"changed": [
|
||||
{
|
||||
"path": "crates/oa-desktop\\src\\behavior\\source_draft.rs",
|
||||
"before": {
|
||||
"path": "crates/oa-desktop\\src\\behavior\\source_draft.rs",
|
||||
"sha256": "C8D36BD6BCD0818AAD2FBBC404B29085F4ADCAF8191B95A04208A7C2346C36E0",
|
||||
"bytes": 38949
|
||||
},
|
||||
"after": {
|
||||
"path": "crates/oa-desktop\\src\\behavior\\source_draft.rs",
|
||||
"sha256": "85D543CC288E48B4C13001E4E386B5B54D9B1E349A5AC31E4E307572F2D8FB3C",
|
||||
"bytes": 39485
|
||||
}
|
||||
}
|
||||
],
|
||||
"scope": "Five test-only hunks; production identical. Independent source review closed; execution pending."
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"created": "2026-09-11T14:32:47.9340077Z",
|
||||
"scope": "Frozen postboot failure and independently reviewed test-only correction; next gates unexecuted",
|
||||
"inventoryExcludes": "manifest.json",
|
||||
"files": [
|
||||
{
|
||||
"file": "copy-provenance.json",
|
||||
"bytes": 1562,
|
||||
"sha256": "66D5A216EC7338FC77FD6DB6F90E25F259A8DA101BB6026A963217704B24DE91"
|
||||
},
|
||||
{
|
||||
"file": "focused3-status.json",
|
||||
"bytes": 295,
|
||||
"sha256": "FCA1451CF134A395EFC2A3A2525FC1BE20353346EEEFFE0FA6C1AF7D97E039AF"
|
||||
},
|
||||
{
|
||||
"file": "focused3.log",
|
||||
"bytes": 4469,
|
||||
"sha256": "0FDAC9E2999AD5225876D499BFAE075C786AE3A107B8E43D1A1ADCD8EA44530B"
|
||||
},
|
||||
{
|
||||
"file": "input-delta.json",
|
||||
"bytes": 1001,
|
||||
"sha256": "BE475C9CEEEFF5F2EEBA2995D4C9277CCD3E62ACFC2B69EC4F84AC88A9E5D588"
|
||||
},
|
||||
{
|
||||
"file": "inputs4.json",
|
||||
"bytes": 44198,
|
||||
"sha256": "669724858967D83AB7DA5F78BFAFB6065E2BCAB3BAD0E68D0A74FEB86C7195E7"
|
||||
},
|
||||
{
|
||||
"file": "postboot2-input-check.json",
|
||||
"bytes": 371,
|
||||
"sha256": "5C1C62C0EDC78BA5932BB674CDA7F81E63A2C1D5BE41B9CA65DD6B5B6DAB8091"
|
||||
},
|
||||
{
|
||||
"file": "README.md",
|
||||
"bytes": 3113,
|
||||
"sha256": "3A0EF96B2A96B91CD84AA929CD8E4B8EA3E8680A487C068ADBAF5B6FB30FB46D"
|
||||
},
|
||||
{
|
||||
"file": "run-gates4.ps1",
|
||||
"bytes": 1263,
|
||||
"sha256": "E0D0A80EB69F5AA2834D5F9D6598F1E37D33A4CA1E2C457C55A32021D12E1A5D"
|
||||
},
|
||||
{
|
||||
"file": "source_draft.rs.snapshot",
|
||||
"bytes": 39485,
|
||||
"sha256": "85D543CC288E48B4C13001E4E386B5B54D9B1E349A5AC31E4E307572F2D8FB3C"
|
||||
},
|
||||
{
|
||||
"file": "stage-final.ps1",
|
||||
"bytes": 2683,
|
||||
"sha256": "68D691FD045532FA7BCF1AD1AA8CFB891BB6000F2B1DC6FD1410E2563EA2700E"
|
||||
}
|
||||
]
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"timestamp": "2026-09-11T14:08:40.7056016Z",
|
||||
"unchangedInputCount": 237,
|
||||
"changedInputs": [
|
||||
"crates/oa-desktop\\src\\behavior\\source_draft.rs"
|
||||
],
|
||||
"sourceHash": "85D543CC288E48B4C13001E4E386B5B54D9B1E349A5AC31E4E307572F2D8FB3C",
|
||||
"compiler": "held pending root capacity release",
|
||||
"focused3": "actual terminal test failure, not interrupted"
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
$ErrorActionPreference = 'Stop'
|
||||
. ./.local/toolchain/env.ps1
|
||||
$env:CARGO_BUILD_JOBS = '1'
|
||||
$evidenceRoot = Join-Path (Get-Location) '.local/contextual-source-layout-20260911'
|
||||
$gates = @(
|
||||
@{name='focused4'; args=@('test','--locked','-p','oa-desktop','--bin','arcadia-studio','contextual_source','--','--test-threads=1')},
|
||||
@{name='clippy1'; args=@('clippy','--locked','-p','oa-desktop','--all-targets','--','-D','warnings')},
|
||||
@{name='fmt1'; args=@('fmt','--all','--','--check')},
|
||||
@{name='gui1'; args=@('build','--locked','-p','oa-desktop','--bin','arcadia-studio')}
|
||||
)
|
||||
foreach ($gate in $gates) {
|
||||
$logPath = Join-Path $evidenceRoot ($gate.name + '.log')
|
||||
$statusPath = Join-Path $evidenceRoot ($gate.name + '-status.json')
|
||||
if ((Test-Path -LiteralPath $logPath) -or (Test-Path -LiteralPath $statusPath)) { throw "Refusing to overwrite $($gate.name)" }
|
||||
$started = [DateTime]::UtcNow.ToString('o')
|
||||
$gateArgs = $gate.args
|
||||
& cargo @gateArgs 2>&1 | Tee-Object -FilePath $logPath
|
||||
$gateExit = $LASTEXITCODE
|
||||
[ordered]@{started=$started;finished=[DateTime]::UtcNow.ToString('o');exitCode=$gateExit;args=$gateArgs} | ConvertTo-Json -Depth 4 | Set-Content -LiteralPath $statusPath
|
||||
if ($gateExit -ne 0) { exit $gateExit }
|
||||
}
|
||||
|
||||
|
||||
|
||||
+1034
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,33 @@
|
||||
$ErrorActionPreference = 'Stop'
|
||||
$evidenceRoot = Join-Path (Get-Location) '.local/contextual-source-layout-20260911'
|
||||
foreach ($gate in 'focused4','clippy1','fmt1','gui1') {
|
||||
$status = Get-Content -LiteralPath (Join-Path $evidenceRoot ($gate + '-status.json')) -Raw | ConvertFrom-Json
|
||||
if ($status.exitCode -ne 0) { throw "$gate has not passed" }
|
||||
}
|
||||
$inputs = Get-Content -LiteralPath (Join-Path $evidenceRoot 'inputs4.json') -Raw | ConvertFrom-Json
|
||||
foreach ($inputFile in $inputs.inputs) {
|
||||
if ((Get-FileHash -LiteralPath $inputFile.path -Algorithm SHA256).Hash -ne $inputFile.sha256) { throw "Input changed: $($inputFile.path)" }
|
||||
}
|
||||
$testLog = Get-Content -LiteralPath (Join-Path $evidenceRoot 'focused4.log') -Raw
|
||||
if ($testLog -notmatch 'Running unittests[^\r\n]+\(([^\r\n]+\.exe)\)') { throw 'No executed test binary in focused4 log' }
|
||||
$testPath = $Matches[1]
|
||||
$runtimePath = Join-Path (Get-Location) '.local/contextual-source-20260911/tests-verified/libunwind.dll'
|
||||
if ((Get-FileHash -LiteralPath $runtimePath -Algorithm SHA256).Hash -ne 'F45604A12E8BCD839FD86F667C1BE1CC7C4F9DA2B3C69FF381AC708F0E1AE7D4') { throw 'Runtime hash mismatch' }
|
||||
$stages = @(
|
||||
@{directory='tests-final';source=$testPath;name='arcadia-studio-tests.exe';scope='Affected 26 contextual-source tests including three real-paragraph layout tests; no full 679 suite acceptance'},
|
||||
@{directory='gui-verified';source='.local/target-gnullvm/debug/arcadia-studio.exe';name='arcadia-studio.exe';scope='Final matching Windows GUI build, strictClippy and formatting passed; native acceptance pending root'}
|
||||
)
|
||||
foreach ($stage in $stages) {
|
||||
$destination = Join-Path $evidenceRoot $stage.directory
|
||||
if (Test-Path -LiteralPath $destination) { throw "Refusing to overwrite $destination" }
|
||||
New-Item -ItemType Directory -Path $destination | Out-Null
|
||||
Copy-Item -LiteralPath $stage.source -Destination (Join-Path $destination $stage.name)
|
||||
Copy-Item -LiteralPath $runtimePath -Destination (Join-Path $destination 'libunwind.dll')
|
||||
$artifacts = foreach ($filename in $stage.name,'libunwind.dll') {
|
||||
$item = Get-Item -LiteralPath (Join-Path $destination $filename)
|
||||
[ordered]@{file=$filename;sha256=(Get-FileHash -LiteralPath $item.FullName -Algorithm SHA256).Hash;bytes=$item.Length}
|
||||
}
|
||||
[ordered]@{created=[DateTime]::UtcNow.ToString('o');scope=$stage.scope;sourceInputs='../inputs4.json';predecessorGuiSha256='52DE82E434B636E18DB02D381842AA6DB84B721CFFD5502063F784F37246ACCE';artifacts=@($artifacts)} | ConvertTo-Json -Depth 6 | Set-Content -LiteralPath (Join-Path $destination 'manifest.json')
|
||||
Get-Content -LiteralPath (Join-Path $destination 'manifest.json') -Raw
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user