Files
ARCADIA-Studio/harness/release-contextual-source-windows-update-plan-20260911.md
T

54 lines
11 KiB
Markdown

# Windows contextual-source update preparation — 2026-09-11
Owner: Codex-9e8r6t `/root/release_audit`. Read-only audit coordinated in Gitea issue 1 comment 374; root owns version selection, preparation, acceptance and publication. Linux remains user-paused. This report creates no package, compiler result or release.
## Recommendation
Prepare a fresh Windows prerelease combining GUI **5657BAB5** with the preserved server **EFEEB89C**, using the existing `scripts/package-windows.ps1`. No server source or dependency change requiring a rebuild was found. Describe the server as the unchanged September 7 artifact with its original provenance, not as newly built with the GUI. Keep the separately published CLI release separate.
Suggested unreserved version: `0.2.0-preview.contextual.20260911`, tag `v0.2.0-preview.contextual.20260911`. The currently published Studio release is `v0.2.0-preview.authoring.20260911` (D4D9/EFEE, 559 files, ZIP SHA256 `664f30b6217689aca1492eb263b3d15777067d732fa890eeb028f435209dadfa`). It must remain unchanged. Gitea readback found that Studio prerelease and the separate CLI prerelease; no competing update publication was claimed.
## Artifact and server-input evidence
Paths are relative to the repository. The existing GUI gate manifest is `.local/contextual-source-layout-20260911/gui-verified/manifest.json`; exact source admission is `.local/contextual-source-layout-20260911/inputs4.json`, also archived under `harness/experiments/contextual-source-layout-postboot-20260911/` (SHA256 `669724858967d83ab7da5f78bfafb6065e2bcab3bad0e68d0a74feb86c7195e7`). All **238 current files** matched that manifest in this audit.
| Proposed immutable input | Bytes | SHA256 |
| --- | ---: | --- |
| `.local/contextual-source-layout-20260911/gui-verified/arcadia-studio.exe` | 112,239,104 | `5657bab5c841939b66f901efe6c0ffb2d7cbbe8cc5f111a0ca3de8073d3846ce` |
| `.local/native-qa/bin-source7-post-routing/arcadia-server.exe` | 39,743,488 | `efeeb89c0d2e0f93df4472cb3e9f48b2b722a37ae1043c90a5a56f2e845fe665` |
| GUI sibling `libunwind.dll` | 190,976 | `f45604a12e8bcd839fd86f667c1be1cc7c4f9da2b3c69ff381ac708f0e1ae7d4` |
Server reuse rests on actual inputs, not matching API versions:
- All **120 recorded core/server files** in `.local/authoring-prerelease-20260911/inventory.json` match current bytes. The prior strict notice inventories' complete local file sets also match: **100 core files and 20 server files**, with no additions or omissions. This includes both crate manifests, build scripts, all source and test files, and core examples. Every current GUI-recorded core/server input is covered.
- The preserved source tar `.local/linux-qa/runtime/source7-20260907T082753190288Z.tar.gz` was freshly rehashed: 2,089,801 bytes, SHA256 `cbb371a93a562e1e641d7629fe351e016d63e66fc9112499b3fed6d5cd171f78`. The original inventory records all 120 files' equality with that tar and the earlier release source. The tar's name does not itself attest the Windows executable; separate Windows binary/build records supply that connection.
- Root `Cargo.toml` differs only by the local `crates/oa-cli` workspace member. Parsed lock comparison finds **463 unchanged existing package records**, no removal or changed dependency/checksum record, and one added `oa-cli 0.2.0` entry with `oa-core`, `serde`, `serde_json`. The CLI manifest adds no feature or build-dependency request; these requests are already present in the server/core graph. Resolver, workspace dependency declarations and development profile are unchanged. Raw whole-manifest equality is explicitly **not** claimed.
- Shared `build/windows_manifest.rs`, `build/windows.manifest`, `build/windows.rc`, `LICENSE`, and the embedded raw `docs/openapi.json` match the prior inventory. OpenAPI SHA256 remains `c6ae512f791a939eaf6ec5e5e78e9468bdee0e028092d00098bd90ad9498d967`. These shared inputs are checked separately because the 238-file GUI manifest does not include every build resource.
The reference strict inventory is `.local/authoring-prerelease-20260911/packages/ArcadiaStudio-0.2.0-preview.authoring.20260911-x86_64-pc-windows-gnullvm/dependency-notices.json`, SHA256 `98fab15c1a2bb3aa727c6d52d5c69435b15efa56b6668ed717e7a04cf86f9b52`. Fresh read-only hashing matched **263 registry archive checksums, all 12,361 recorded registry source-file hashes, and all 58 Rust target-library hashes**, plus both preserved EFEE copies and the GUI/runtime table above. The recorded compiler is Rust 1.98.1, commit `48a229ceaefd4985c50990b14116b6d856af0985`, Windows gnullvm, LLVM 22.1.8. No rustc or Cargo command was run in this audit. This desktop/server dependency graph is a conservative superset; it does not assert every inventoried package is linked into the server.
All **263 registry source file sets** also match, excluding the packager's top-level `target/` and `.cargo-ok`. The first audit enumerator mistakenly excluded any directory named `target`, reporting four `cc-1.4.5/src/target/*.rs` files absent; all four recorded hashes had already passed. Correcting that audit-only exclusion produced zero set differences. This was not a source or package defect; no production file changed.
Original server evidence remains `.local/source7-post-routing-gates-status.json`, `.local/native-qa/source7-post-routing-binary-hashes.json`, and `harness/experiments/textual-authoring-20260911-local/provenance.json`: September 7 workspace binary build exit 0, recorded server 56/56, formatting and strict Clippy. The previous clean-package server review exercised health, exact OpenAPI, persistence and restart. These are historical results, not reruns by this audit. Neither embedded compiler paths nor source equality proves every historical linker/environment input or a reproducible build. Reusing the exact accepted artifact requires no such new claim.
## Exact source preservation before packaging
Root committed the verified checkpoint during this audit. Fresh readback of **`b2c3e54001fc19a05423bcd5808ceea78d13ff59`** matches **227/238 Git blobs** to GUI5657's raw inputs. All eleven remaining differences are newline-only: `behavior/creation.rs`, `behavior/scenario/workspace.rs`, `behavior/topology/contextual.rs`, `guide.rs`, six `semantic_review` files (`artifacts_view.rs`, `attachments_view.rs`, `keyed_rows.rs`, `keyed_tests.rs`, `keyed.rs`, `ordered.rs`), and `docs/openapi.json`. Rust paths here are under `crates/oa-desktop/src/`.
The initial comparison against `ca53f574e57381a523e946d5277b4081cff74355` had one additional real difference: the reviewed postboot **test-only** overflow-fixture correction. It is now committed: `behavior/source_draft.rs` Git bytes match required SHA256 `85d543cc288e48b4c13001e4e386b5b54d9b1e349a5ac31e4e307572f2d8fb3c` and the archived raw snapshot.
Ten newline cases reproduce by LF→CRLF. **`behavior/creation.rs` has mixed newlines**: only copying its exact frozen raw bytes reproduces SHA256 `0fb19be3a5688c4bd3ca3643c47a97da7e7f85add8a860cd046a0d9cb3ce9dfc`; uniform conversion does not. Do not reuse the previous release's seven-file restoration list blindly.
Use that exact verified checkpoint, or recompute differences if root selects another commit. In a new isolated package source tree, preserve only the identified exact raw inputs with precise `-text` attributes and a recorded reconstruction commit. Validate all 238 GUI inputs, the 120-file server closure, shared build resources and subsequent Git checkout bytes. Preserve the original build manifests and explain that the reconstruction commit records matching inputs; it is not the original build commit. Main-tree newline policy need not change. Newer documentation may ship from the verified checkpoint with its own packaging inventory, without pretending it was compiled into the older server.
## Smallest authorized next execution
1. Root selects/reserves the version and source commit, then authorizes an isolated directory such as `.local/contextual-prerelease-20260911/`. Prepare exact source as above and copy the three immutable inputs into a fresh private binary directory. Recheck hashes before and after copying. Existing `.local/authoring-prerelease-20260911/{inventory.py,prepare.py,verify-committed.py,package.ps1}` provide the prior mechanism, but contain old paths, hashes, version and seven-file assumptions; they must not be rerun unchanged or overwrite old evidence.
2. Write new build-evidence JSON with exact target and binary hashes. Explain GUI5657's current gate, unchanged EFEE's historical build, reconstructed source identity and the development profile. `Read-PackageBuildEvidence` checks target/binary hashes; its source/profile/compiler prose is a caller assertion, so include the actual comparisons and original records.
3. Obtain the short metadata lease and invoke the existing isolated `scripts/package-windows.ps1` with `-Target x86_64-pc-windows-gnullvm`, the new `-Version`, private `-BinaryDirectory`, verified LLVM-MinGW root, new `-BuildEvidence`, explicit bundled Python path and fresh `-OutputRoot`. The script performs one locked offline Cargo metadata operation, strict notices and PE/runtime checks; it does not build/download. Generate fresh notices from the new source snapshot rather than relabeling the old inventory. Keep checksum-bound fonts, ordinary-file containment, refusal to overwrite, deterministic archive/readback and package-local document closure intact. No packaging redesign is needed.
4. Record actual archive checksum/count, logs and source/artifact provenance. The packager's success remains `NativeAcceptancePending`. Root verifies fresh extraction with clean PATH/profile: desktop startup/help and a bounded contextual-source action, server startup/health and exact OpenAPI plus persistence/restart using the existing accepted smoke procedure. Publish the new ZIP/checksum/validation record only after these gates, with download readback; publication belongs to root.
The currently observed scripts are pinned by SHA256: `package-windows.ps1` `28997ff78565619ed9c9b185f66dc922808f1f0be17f522b430c6c415448663d`; `package-common.ps1` `d859453a8230b4f305d822c8742b371a71e35df698109a5d55c948f6dfaf0640`; `windows-notices.ps1` `a5328c05579e1b9ca09142ee99e87c12994d12764f7c69448e392883d718ef01`; supplement manifest `93d47a4d91b9a888e7baef55e827fd462fb71c5892e4b6a89787d4fb227e62c2`.
Release notes can cite the actual current **679/679**, zero failed/ignored, immutable test SHA256 `75ab0e151d85473631d5a145527f3f6b9768a3cd61ce66a0603a574e09557017`, plus focused 26/26, strict all-target desktop Clippy, fmt and matching GUI build. Full-run evidence is `harness/experiments/contextual-source-layout-full-20260911/`. GUI5657 recovery/Lifeline/Machine evidence is separately archived by the native owner; do not transfer GUI52-only Chain results into a GUI5657 claim. This remains a Windows development-profile prerelease, not complete OA/SA product acceptance, optimized-build acceptance, peer-feature integration or Linux acceptance.