From 91fa1b78f3c841c20afb894eeda221f8c52ce582 Mon Sep 17 00:00:00 2001 From: "sorokin.oleg.edu" Date: Sat, 12 Sep 2026 17:52:46 -0700 Subject: [PATCH] Record published rename preview and update integrated checkpoint --- .gitattributes | 1 + harness/STATE.md | 38 ++- .../README.md | 25 ++ .../RELEASE-NOTES.md | 9 + .../VALIDATION.md | 94 ++++++ .../bindings.json | 36 +++ .../create-first/events.jsonl | 2 + .../create-first/result.json | 52 ++++ .../final-publication-review.md | 21 ++ .../final-validation-review.json | 138 +++++++++ .../final-validation-review.md | 56 ++++ .../independent-static-review.md | 62 ++++ .../inspect-before-tag/result.json | 11 + .../package-records-push-result.json | 9 + ...publication-readiness-review-bindings.json | 33 +++ .../publication-readiness-review.md | 9 + .../publish-first/events.jsonl | 1 + .../publish-first/result.json | 78 +++++ .../publish.py | 269 ++++++++++++++++++ .../release-created.json | 6 + .../upload-first/events.jsonl | 6 + .../upload-first/result.json | 75 +++++ ...-source-alias-rename-published-20260912.md | 49 ++++ 23 files changed, 1076 insertions(+), 4 deletions(-) create mode 100644 harness/experiments/source-alias-rename-publication-20260912/README.md create mode 100644 harness/experiments/source-alias-rename-publication-20260912/RELEASE-NOTES.md create mode 100644 harness/experiments/source-alias-rename-publication-20260912/VALIDATION.md create mode 100644 harness/experiments/source-alias-rename-publication-20260912/bindings.json create mode 100644 harness/experiments/source-alias-rename-publication-20260912/create-first/events.jsonl create mode 100644 harness/experiments/source-alias-rename-publication-20260912/create-first/result.json create mode 100644 harness/experiments/source-alias-rename-publication-20260912/final-publication-review.md create mode 100644 harness/experiments/source-alias-rename-publication-20260912/final-validation-review.json create mode 100644 harness/experiments/source-alias-rename-publication-20260912/final-validation-review.md create mode 100644 harness/experiments/source-alias-rename-publication-20260912/independent-static-review.md create mode 100644 harness/experiments/source-alias-rename-publication-20260912/inspect-before-tag/result.json create mode 100644 harness/experiments/source-alias-rename-publication-20260912/package-records-push-result.json create mode 100644 harness/experiments/source-alias-rename-publication-20260912/publication-readiness-review-bindings.json create mode 100644 harness/experiments/source-alias-rename-publication-20260912/publication-readiness-review.md create mode 100644 harness/experiments/source-alias-rename-publication-20260912/publish-first/events.jsonl create mode 100644 harness/experiments/source-alias-rename-publication-20260912/publish-first/result.json create mode 100644 harness/experiments/source-alias-rename-publication-20260912/publish.py create mode 100644 harness/experiments/source-alias-rename-publication-20260912/release-created.json create mode 100644 harness/experiments/source-alias-rename-publication-20260912/upload-first/events.jsonl create mode 100644 harness/experiments/source-alias-rename-publication-20260912/upload-first/result.json create mode 100644 harness/release-source-alias-rename-published-20260912.md diff --git a/.gitattributes b/.gitattributes index c2ced0f1..3d00a7d3 100644 --- a/.gitattributes +++ b/.gitattributes @@ -80,3 +80,4 @@ harness/experiments/source-alias-rename-server-20260912/** -text whitespace=cr-a harness/experiments/source-alias-rename-package-20260912/** -text whitespace=cr-at-eol harness/experiments/source-alias-rename-packaged-runtime-20260912/** -text whitespace=cr-at-eol harness/experiments/source-alias-rename-package-native-20260912/** -text whitespace=cr-at-eol +harness/experiments/source-alias-rename-publication-20260912/** -text whitespace=cr-at-eol diff --git a/harness/STATE.md b/harness/STATE.md index bb4cec71..28ba0e95 100644 --- a/harness/STATE.md +++ b/harness/STATE.md @@ -1,6 +1,6 @@ # Integrated checkpoint — first release -Updated 2026-09-12 by Codex-9e8r6t `/root`, Windows host. +Updated 2026-09-13 UTC (September 12 locally) by Codex-9e8r6t `/root`, Windows host. **Full OA/SA release acceptance is incomplete. Linux work remains user-paused.** [PROJECT_GOAL.md](../PROJECT_GOAL.md) owns the application requirements. @@ -10,6 +10,35 @@ Instruction synchronization `b70bf1d` preserves the user specification and ## Delivered Windows milestone +[Source alias rename prerelease](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/releases/tag/v0.2.0-preview.rename.20260912) +was published and read back on September 13 at 00:47:52 UTC. Extract the whole ZIP +and run `arcadia-studio.exe`, keeping its sibling `libunwind.dll`. Studio, the +optional REST server, examples, offline help and dependency notices are included. + +Both executables come from **cbc49a7802fb1bba0dd284fd904c700a0703ae70**; the tag +identifies that exact source. Evidence-only checkpoint **506a349b** holds the +completed source/package/runtime/native reports and independent reviews. All +559 package files and all three downloaded release assets were verified. +The binaries use development profiles; this is a prerelease. + +The GUI adds F2 alias rename with a complete preview, explicit confirmation, +origin selection, immediate Undo Rename and explicit Save. Strict Clippy, +805 desktop tests, the isolated Confirm timing check and 501 core/server tests +passed. Actual packaged GUI checks covered minimum-size simple and 30-source +workflows, all six representative changed lines, Undo/Redo/Save and representative +reopening. Eight exact saved-state checks preserve model/identity/source and all +41 final physical fixture files. Normal GUI closure returned 0 with empty logs. +The packaged server separately passed 23 HTTP/disk persistence/restart checks. +Each result retains its precise scope. + +See the [publication record](release-source-alias-rename-published-20260912.md), +[package acceptance and limits](release-source-alias-rename-package-20260912.md), +and [source validation](release-source-alias-rename-validation-20260912.md). +A known P2 Details-to-Preview delayed-scroll-reset lifetime gap remains disclosed; +the separately owned correction/union is not part of this frozen package. + +## Previous Windows milestone + [Source navigation prerelease](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/releases/tag/v0.2.0-preview.navigation.20260911) was published and read back on September 12 at 10:54:02 UTC. Extract the whole ZIP and run `arcadia-studio.exe`; keep its sibling `libunwind.dll`. Studio, the optional REST @@ -66,7 +95,7 @@ The [integrated evaluation](release-text-navigation-integrated-20260911.md) link exact input archives, earlier full-test scope and independent findings. The published contextual preview remains unchanged. -The integrated release does not yet contain Text alias rename, newer peer canvas/chooser and +The latest rename release does not yet contain newer peer canvas/chooser and scenario-lifetime work, complete constraints/calculations, dimensional quantities, maintained model libraries. Those additions require coherent graphical/text/REST realization and validation. @@ -101,8 +130,9 @@ is the shared entrypoint. Durable decisions remain in [DECISIONS.md](DECISIONS.m and topic reports; the [text-navigation design](release-text-navigation-design-20260911.md) records the current bounded design and its falsifiers. The [Text alias-rename proposal](release-source-alias-rename-design-20260911.md) -and its [critique](release-source-alias-rename-critique-20260911.md) are design -preparation, not implemented or verified Text capability. +and [critique](release-source-alias-rename-critique-20260911.md) retain the original +design rationale; current implementation and verified scope are recorded in the +[published package report](release-source-alias-rename-package-20260912.md). Legacy TASK_LEDGER/PLAN live content was migrated once in [comment 408](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/1#issuecomment-408). diff --git a/harness/experiments/source-alias-rename-publication-20260912/README.md b/harness/experiments/source-alias-rename-publication-20260912/README.md new file mode 100644 index 00000000..a7338ebb --- /dev/null +++ b/harness/experiments/source-alias-rename-publication-20260912/README.md @@ -0,0 +1,25 @@ +# Confirmed rename prerelease publication records + +These exact originals record Gitea release 6, tag +`v0.2.0-preview.rename.20260912`, source +`cbc49a7802fb1bba0dd284fd904c700a0703ae70` and evidence checkpoint +`506a349b32f3f869ac027d8763c501b61cf79769`. + +`publish-first/result.json` confirms public prerelease visibility and all three +downloaded assets at 2026-09-13T00:47:52.474878Z; the terminal action finished at +00:47:52.873060Z. `create-first` and `upload-first` preserve earlier draft/upload +steps. API `published_at` reflects draft creation and is separately labeled. +Exact asset IDs, byte counts and hashes are in the final result and +[published report](../../release-source-alias-rename-published-20260912.md). + +The helper and bindings are historical executed evidence. Do not rerun the +publisher from this relocated directory. Acceptance receipts referenced by +absolute original paths live in the separately published package/runtime/native +archives. `sourceBranchHead` is the branch tip checked during publication, not a +promise that the evidence branch will never advance afterward. + +The initial static review identified Git tag-helper configuration hazards; the +parent used purpose-built Gitea MCP tag creation instead. The subsequent review +proves the API helper changed only its missing-tag message. Historical readiness +review pending wording precedes the final reviewed documents and bound receipts; +it does not negate the later successful executed results. diff --git a/harness/experiments/source-alias-rename-publication-20260912/RELEASE-NOTES.md b/harness/experiments/source-alias-rename-publication-20260912/RELEASE-NOTES.md new file mode 100644 index 00000000..5d99dee7 --- /dev/null +++ b/harness/experiments/source-alias-rename-publication-20260912/RELEASE-NOTES.md @@ -0,0 +1,9 @@ +# Source alias rename — Windows development preview + +Rename an alias from its declaration or reference in the Text editor with **F2**. Review the changed source lines, then confirm. Model identity is preserved; an immediate **Undo Rename** is available, and **Save all** remains explicit. File and row navigation reset the preview to the selected destination. Comments and descriptive prose remain unchanged. + +Download the Windows x86-64 ZIP and its SHA256 companion. Extract the entire ZIP and run `arcadia-studio.exe`, keeping `libunwind.dll` beside it. The bundle includes the optional REST server, examples, offline guide and dependency notices. See `START-HERE.txt`, `docs/windows-packaging.md` and `docs/server.md` inside the bundle. + +Both executables come from source **cbc49a7802fb1bba0dd284fd904c700a0703ae70**. Strict Clippy, 805 desktop tests, the isolated Confirm timing check, and 501 core/server tests passed. Independent verification covered all 559 package files, source/artifact bindings, dependency notices and documentation. Actual packaged-server persistence/restart checks and minimum-window desktop rename, Undo/Redo, Save and representative reopening passed. `VALIDATION.md` identifies the precise workflows, evidence and verification commands. + +This is a Windows **development-profile prerelease**, with debug assertions enabled. Full OA/SA acceptance, optimized builds, the compact Text workspace and newer peer diagram/palette work remain unfinished. A known scroll-state limitation can let a delayed preview reset affect a visit after switching Full details back to Preview; its isolated correction is tracked in [issue 9](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/9#issuecomment-743). Linux/WSL work remains paused at the user's request. diff --git a/harness/experiments/source-alias-rename-publication-20260912/VALIDATION.md b/harness/experiments/source-alias-rename-publication-20260912/VALIDATION.md new file mode 100644 index 00000000..561d94e0 --- /dev/null +++ b/harness/experiments/source-alias-rename-publication-20260912/VALIDATION.md @@ -0,0 +1,94 @@ +# Windows rename preview validation + +Candidate tag: `v0.2.0-preview.rename.20260912`. +Tested source: **cbc49a7802fb1bba0dd284fd904c700a0703ae70**. +Evidence checkpoint: **506a349b32f3f869ac027d8763c501b61cf79769**; +the later evidence commit does not change the tested binaries. + +The [complete package acceptance report](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/src/commit/506a349b32f3f869ac027d8763c501b61cf79769/harness/release-source-alias-rename-package-20260912.md) +records behavior, source/profile identities, failed attempts and precise limits. + +## Download and run + +ZIP: `ArcadiaStudio-0.2.0-preview.rename.20260912-x86_64-pc-windows-gnullvm.zip`, +33,074,937 bytes, SHA256 +`d2433b5b384256b551672bf115bab40b3496aeee115e067922aedb5becf34d7e`. +Compare `Get-FileHash -Algorithm SHA256 ` with this value and the +companion checksum file. Extract the entire ZIP into a fresh directory, then run +`arcadia-studio.exe`. Keep its sibling `libunwind.dll`; no compiler installation +is required by the packaged runtime dependencies. + +In Text, place the caret on a declaration alias or typed reference and press F2. +Enter a valid replacement, request Preview, inspect the changed lines and confirm. +Save all writes the accepted transaction; immediate Undo Rename is also available. + +For the optional server, run from the extracted directory: + +```powershell +.\arcadia-server.exe --bind 127.0.0.1:8787 --data-dir .\server-data +``` + +`docs/server.md` describes authentication, API usage and deployment; `START-HERE.txt` +and `docs/windows-packaging.md` describe the bundle. No remote service deployment +is claimed by this release. + +## Passed checks and immutable evidence + +| Evidence | Completed scope | Archive SHA256 | +| --- | --- | --- | +| [Desktop gates](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/src/commit/506a349b32f3f869ac027d8763c501b61cf79769/harness/experiments/source-alias-rename-scroll-20260912/) | Strict Clippy; 805 passed, 0 failed, 3 ignored; required isolated Confirm timing check; matching GUI; 517 raw source inputs | `4832e072da5db50dd2816d0246ba904dddb400b6eea5c16e18a1998c2fcfca57` | +| [Core/server gates](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/src/commit/506a349b32f3f869ac027d8763c501b61cf79769/harness/experiments/source-alias-rename-server-20260912/) | Strict Clippy; 501 passed, 0 failed, 1 optional scaling probe ignored; matching server; 517 raw source inputs | `2ff758c1a6fe9ef29dc1c9aede058749fdafb4b9a40a949f09d3022c18e51230` | +| [Independent package check](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/src/commit/506a349b32f3f869ac027d8763c501b61cf79769/harness/experiments/source-alias-rename-package-20260912/) | All 2,585 committed source files, 559 package files, binary/profile/dependency/notices/docs bindings, ZIP/extraction equality | `ca5c42cd6aa1a88dffbce8dbf12c9da67f2e3015b9359146566493435bcbb17f` | +| [Packaged server runtime](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/src/commit/506a349b32f3f869ac027d8763c501b61cf79769/harness/experiments/source-alias-rename-packaged-runtime-20260912/) | 23 checks, 13 HTTP exchanges; Unicode empty model/source/IDs, conditional alias update, no-op and restart persistence; package unchanged | `671c1d4fb18f51b58c2ead1a9730605f27f13014ba0fe2e7b4360f24b61386a7` | +| [Packaged native trial](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/src/commit/506a349b32f3f869ac027d8763c501b61cf79769/harness/experiments/source-alias-rename-package-native-20260912/) | Minimum 1100x700 client; simple and 30-source workflows; eight full saved-state oracle checks; 41 final physical files; normal exit 0; package/ZIP unchanged | `effc8ba718f89a1b2a8576a290ee2327ddd933e05a5a316a8ac94f36b3705a9a` | + +The simple GUI workflow tested first-key replacement and Text Undo, then Save, +model Undo/Save and Redo/Save. The representative workflow inspected all six +changed lines and row/file scroll destinations, tested dedicated Undo Rename, +Redo/Save, reopened and inspected the graphical alias. It did not test a +representative first key or reopen the simple fixture. The guide opened and was +readable at minimum size. Sixty-six capture states preserve 73 JPEGs; screenshots +and saved-state oracle results establish different aspects of acceptance. + +GUI closure: `2026-09-13T00:26:58.697468Z`, exit 0, both output logs empty. +The two server children instead used intentional Windows termination after +persistence checks, both exit 1. That is not graceful-shutdown or crash evidence. +Independent archive and document reviews are included at the linked evidence homes. + +## Rechecking the evidence and source + +Each archive README identifies its stored verifier and exact extraction command. +Those Python standard-library verifiers check stored bytes, CRCs and historical +receipt relationships without executing the archived application helpers. Large +external package/source/cache artifacts are explicitly hash-referenced where +omitted. These are evidence verification tools, not reproducible-build claims. + +The source gates used Rust/Cargo 1.98.1, Windows `x86_64-pc-windows-gnullvm`, +`clang.exe`, one Cargo build job and prepopulated locked offline dependencies. +Both binaries have opt level 0, debuginfo 0, debug assertions and overflow checks +enabled. Exact environment and commands are in the archived gate records. +From that source checkout with the recorded toolchain configured: + +```text +cargo clippy --locked --offline -p oa-desktop --all-targets -- -D warnings +cargo test --locked --offline -p oa-desktop --bin arcadia-studio -- --test-threads=1 +cargo test --locked --offline -p oa-desktop --bin arcadia-studio app::source_rename::timing_tests::accepted_release1_prepare_commit_sync_and_confirm_timing -- --ignored --nocapture --test-threads=1 +cargo build --locked --offline -p oa-desktop --bin arcadia-studio --message-format=json-render-diagnostics +cargo clippy --locked --offline -p oa-core -p oa-server --all-targets -- -D warnings +cargo test --locked --offline -p oa-core -p oa-server -- --test-threads=1 +cargo build --locked --offline -p oa-server --bin arcadia-server --message-format=json-render-diagnostics +``` + +## Remaining limitations + +This is a development-profile Windows prerelease, not completed OA/SA or optimized +performance acceptance. Full Details -> Preview can reuse a preview visit identity, +allowing an earlier delayed scroll reset to affect that visit; the static P2 finding +and isolated correction are tracked in [issue 9 comment 743](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/9#issuecomment-743). +It does not establish model/history corruption, and this trial did not exercise +the delayed-operation Details round-trip. The dense Text header, compact workspace, +inline annotations, palette and newer peer diagram work remain separate. +An older run's system-menu-triggered alias invalidation has an unproven cause; +border resizing in this trial does not prove it fixed. Capture pauses and process +lifetime are not native latency measurements. Comments/prose are intentionally +excluded from semantic alias changes. Linux/WSL work remains user-paused. diff --git a/harness/experiments/source-alias-rename-publication-20260912/bindings.json b/harness/experiments/source-alias-rename-publication-20260912/bindings.json new file mode 100644 index 00000000..e9b76db4 --- /dev/null +++ b/harness/experiments/source-alias-rename-publication-20260912/bindings.json @@ -0,0 +1,36 @@ +{ + "acceptanceReviewed": true, + "sourceBranch": "codex/release1-9e8r6t", + "sourceBranchHead": "506a349b32f3f869ac027d8763c501b61cf79769", + "sourceDirectory": null, + "packageDirectory": "C:/arcadia-rename-package-2/packages", + "releaseId": null, + "notesSha256": "272c1337920cb5dcd96fcd9adff87cdb0c8c12350e69d42e90d96741d3cc546b", + "validationSha256": "97fae7e742656f35a939b8e97fa060e1338314c3e2af146f03c306a59427cd4d", + "acceptanceEvidence": { + "sourceBinding": { + "path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\source-rename-package-review-20260912\\runs\\attempt-2\\result.json", + "bytes": 4699882, + "sha256": "20bfea2f1c0a9babe2a85f5a2ba158f07139ba18f9c04a971fd738e9daff24d9", + "reviewedPass": true + }, + "packageIntegrity": { + "path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\source-rename-package-review-20260912\\runs\\attempt-2\\result.json", + "bytes": 4699882, + "sha256": "20bfea2f1c0a9babe2a85f5a2ba158f07139ba18f9c04a971fd738e9daff24d9", + "reviewedPass": true + }, + "packagedServer": { + "path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\source-rename-server-runtime-20260912\\runs\\attempt-1\\result.json", + "bytes": 18679, + "sha256": "e42fb5fb8c15a9f603e9753e450613afce67caac5a0fbb806a9810ef272ec37a", + "reviewedPass": true + }, + "nativeClosure": { + "path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\source-rename-package-preparation-20260912\\trial-package-1\\closed.json", + "bytes": 373, + "sha256": "ed2a00dfa018b27a823d75605007adb0f1d997b79a807e6eb168f5a489409e7a", + "reviewedPass": true + } + } +} diff --git a/harness/experiments/source-alias-rename-publication-20260912/create-first/events.jsonl b/harness/experiments/source-alias-rename-publication-20260912/create-first/events.jsonl new file mode 100644 index 00000000..9e3ae969 --- /dev/null +++ b/harness/experiments/source-alias-rename-publication-20260912/create-first/events.jsonl @@ -0,0 +1,2 @@ +{"atUtc": "2026-09-13T00:46:38.281949+00:00", "step": "create-request-started"} +{"atUtc": "2026-09-13T00:46:38.511190+00:00", "step": "created-draft", "releaseId": 6} diff --git a/harness/experiments/source-alias-rename-publication-20260912/create-first/result.json b/harness/experiments/source-alias-rename-publication-20260912/create-first/result.json new file mode 100644 index 00000000..51254b89 --- /dev/null +++ b/harness/experiments/source-alias-rename-publication-20260912/create-first/result.json @@ -0,0 +1,52 @@ +{ + "started": "2026-09-13T00:46:36.353133+00:00", + "action": "create", + "tag": "v0.2.0-preview.rename.20260912", + "target": "cbc49a7802fb1bba0dd284fd904c700a0703ae70", + "success": true, + "bindings": { + "acceptanceReviewed": true, + "sourceBranch": "codex/release1-9e8r6t", + "sourceBranchHead": "506a349b32f3f869ac027d8763c501b61cf79769", + "sourceDirectory": null, + "packageDirectory": "C:/arcadia-rename-package-2/packages", + "releaseId": null, + "notesSha256": "272c1337920cb5dcd96fcd9adff87cdb0c8c12350e69d42e90d96741d3cc546b", + "validationSha256": "97fae7e742656f35a939b8e97fa060e1338314c3e2af146f03c306a59427cd4d", + "acceptanceEvidence": { + "sourceBinding": { + "path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\source-rename-package-review-20260912\\runs\\attempt-2\\result.json", + "bytes": 4699882, + "sha256": "20bfea2f1c0a9babe2a85f5a2ba158f07139ba18f9c04a971fd738e9daff24d9", + "reviewedPass": true + }, + "packageIntegrity": { + "path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\source-rename-package-review-20260912\\runs\\attempt-2\\result.json", + "bytes": 4699882, + "sha256": "20bfea2f1c0a9babe2a85f5a2ba158f07139ba18f9c04a971fd738e9daff24d9", + "reviewedPass": true + }, + "packagedServer": { + "path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\source-rename-server-runtime-20260912\\runs\\attempt-1\\result.json", + "bytes": 18679, + "sha256": "e42fb5fb8c15a9f603e9753e450613afce67caac5a0fbb806a9810ef272ec37a", + "reviewedPass": true + }, + "nativeClosure": { + "path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\source-rename-package-preparation-20260912\\trial-package-1\\closed.json", + "bytes": 373, + "sha256": "ed2a00dfa018b27a823d75605007adb0f1d997b79a807e6eb168f5a489409e7a", + "reviewedPass": true + } + } + }, + "assetHashes": { + "ArcadiaStudio-0.2.0-preview.rename.20260912-x86_64-pc-windows-gnullvm.zip": "d2433b5b384256b551672bf115bab40b3496aeee115e067922aedb5becf34d7e", + "ArcadiaStudio-0.2.0-preview.rename.20260912-x86_64-pc-windows-gnullvm.zip.sha256": "3b8d811c73ae0044ed0b451e8ff746f440af79b543dd52fe067a5a2e175b685f", + "VALIDATION.md": "97fae7e742656f35a939b8e97fa060e1338314c3e2af146f03c306a59427cd4d" + }, + "releaseId": 6, + "draft": true, + "prerelease": true, + "finished": "2026-09-13T00:46:39.121918+00:00" +} diff --git a/harness/experiments/source-alias-rename-publication-20260912/final-publication-review.md b/harness/experiments/source-alias-rename-publication-20260912/final-publication-review.md new file mode 100644 index 00000000..26532358 --- /dev/null +++ b/harness/experiments/source-alias-rename-publication-20260912/final-publication-review.md @@ -0,0 +1,21 @@ +# Independent final publication review + +PASS; no findings. This preserves the completed read-only local review, without repeating checks. No network, helper/runtime/build execution or Git mutation was performed. + +All **18 copied original files** in `harness/experiments/source-alias-rename-publication-20260912` were byte-identical to their private publication originals and run records. The new contextual README was reviewed separately. Copied release notes and VALIDATION matched the final receipt's bound hashes. + +The terminal publication result SHA256 is `c82b503e24f008796d5bd3a854a9f74455d33ded8ee0b46d5b176d8a398cab18`. It records success, release **6**, `draft=false`, `prerelease=true`, tag `v0.2.0-preview.rename.20260912` at source `cbc49a7802fb1bba0dd284fd904c700a0703ae70`, and exact downloaded assets **17/18/19**. Their documented byte counts and SHA256 values match. The executed helper performs byte-for-byte downloads before and after publication. + +The documents correctly distinguish API `published_at` / draft creation at **2026-09-13 00:46:38 UTC**, public-visibility readback at **00:47:52.474878 UTC**, and completed action at **00:47:52.873060 UTC**. The source/binary commit remains distinct from evidence-only checkpoint `506a349b32f3f869ac027d8763c501b61cf79769`; its successful push receipt precedes publication. Historical pending/draft review language is explicitly qualified by later closed execution records. + +STATE and the publication report retain the development-profile boundary, known Details-to-Preview P2, unfinished overall objective and paused Linux scope. They do not attribute the separate union correction to this frozen release. + +Exact document bindings from that completed review: + +| Reviewed file | SHA256 | +| --- | --- | +| `harness/release-source-alias-rename-published-20260912.md` | `11a23c65e48d846cfd8d86fa3b69ee5e0ded79cfab96368bd1653702cd6a8689` | +| `harness/STATE.md` | `5c737f57757901de9a9f12f987fb0768f0a6e9632068ae8a3a87a50bb3a00e4d` | +| `harness/experiments/source-alias-rename-publication-20260912/README.md` | `6f92cc1f10de2406c28922f4ad3ef86f8dc50b4a11970a416e9373b904135802` | + +This is consistency review of retained confirmed publication evidence, not a new independent network availability check. diff --git a/harness/experiments/source-alias-rename-publication-20260912/final-validation-review.json b/harness/experiments/source-alias-rename-publication-20260912/final-validation-review.json new file mode 100644 index 00000000..3bc62426 --- /dev/null +++ b/harness/experiments/source-alias-rename-publication-20260912/final-validation-review.json @@ -0,0 +1,138 @@ +{ + "status": "PASS", + "reviewer": "Codex-9e8r6t /root/diagnostic_input", + "reviewedAtUtc": "2026-09-13T00:45:44.1266544Z", + "scope": "Final document consistency; local committed-tree/link/byte checks only; no network/runtime/compiler/publication execution", + "sourceCommit": "cbc49a7802fb1bba0dd284fd904c700a0703ae70", + "evidenceCommit": "506a349b32f3f869ac027d8763c501b61cf79769", + "findings": [], + "finalDocuments": [ + { + "path": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/source-rename-prerelease-publication-20260912/RELEASE-NOTES.md", + "bytes": 1792, + "sha256": "272c1337920cb5dcd96fcd9adff87cdb0c8c12350e69d42e90d96741d3cc546b" + }, + { + "path": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/source-rename-prerelease-publication-20260912/VALIDATION.md", + "bytes": 7168, + "sha256": "97fae7e742656f35a939b8e97fa060e1338314c3e2af146f03c306a59427cd4d" + } + ], + "archives": [ + { + "path": "harness/experiments/source-alias-rename-scroll-20260912/evidence.zip", + "bytes": 6617942, + "sha256": "4832e072da5db50dd2816d0246ba904dddb400b6eea5c16e18a1998c2fcfca57", + "committedBlob": "6a249e40cc4cae4febdcdd362e273ed945285cfe" + }, + { + "path": "harness/experiments/source-alias-rename-server-20260912/evidence.zip", + "bytes": 2224422, + "sha256": "2ff758c1a6fe9ef29dc1c9aede058749fdafb4b9a40a949f09d3022c18e51230", + "committedBlob": "9e475ac59c40c1876c0a10115082a16984f03a51" + }, + { + "path": "harness/experiments/source-alias-rename-package-20260912/evidence.zip", + "bytes": 2223405, + "sha256": "ca5c42cd6aa1a88dffbce8dbf12c9da67f2e3015b9359146566493435bcbb17f", + "committedBlob": "4509dd40dc558d9a7e4901f6c392508c8a014ce6" + }, + { + "path": "harness/experiments/source-alias-rename-packaged-runtime-20260912/evidence.zip", + "bytes": 183262, + "sha256": "671c1d4fb18f51b58c2ead1a9730605f27f13014ba0fe2e7b4360f24b61386a7", + "committedBlob": "ec58283a906754efefd0deaab0e0bab83bcf7daa" + }, + { + "path": "harness/experiments/source-alias-rename-package-native-20260912/evidence.zip", + "bytes": 5897544, + "sha256": "effc8ba718f89a1b2a8576a290ee2327ddd933e05a5a316a8ac94f36b3705a9a", + "committedBlob": "7c7bb0e17cdf96349f8fe2cb087db5310ebfec77" + } + ], + "committedDocuments": [ + { + "path": "harness/release-source-alias-rename-package-20260912.md", + "bytes": 8260, + "sha256": "2b9e1c9d48af4a3125b869741feb3c167654d71d98463cb4cccd206ff81178a5", + "committedBlob": "ad316b498e9e2a3a10b41995efd2fd04666c814f" + }, + { + "path": "harness/release-source-alias-rename-validation-20260912.md", + "bytes": 28542, + "sha256": "fa7a06f754302973e06db3999f689ecae567ef0aebec6ecc6b9749334a0cc817", + "committedBlob": "63350508c92c3c4e26f94706b1fa1837631b7de0" + }, + { + "path": "harness/experiments/source-alias-rename-scroll-20260912/README.md", + "bytes": 1533, + "sha256": "d3383d73650f5e1cd879d89ba001af818a88f12f243460a93932ac851da09563", + "committedBlob": "dd71f928e61e38c297fb4281c8bf0731a316a260" + }, + { + "path": "harness/experiments/source-alias-rename-server-20260912/README.md", + "bytes": 1023, + "sha256": "2e76f8b5c10127179aa28aa62cf0520d5b739bd58facdcc323e87732123cc9bb", + "committedBlob": "cab7fa7cedaa8e83420a04efdfe7536b586114f7" + }, + { + "path": "harness/experiments/source-alias-rename-package-20260912/README.md", + "bytes": 1451, + "sha256": "a3bffb1cc195c8f7880b922c74dc64b81c42afaeb9450e5924b82ef7ecbeeb09", + "committedBlob": "cc67bce68ba1b277059dcc1477b011e404919bcc" + }, + { + "path": "harness/experiments/source-alias-rename-packaged-runtime-20260912/README.md", + "bytes": 1864, + "sha256": "fa0a8f91ad4dfd75b5e825ab7472191225e363fbe5c1d42ab2bc7c66ed60b65f", + "committedBlob": "3ac05ed119d73c071d7c0639c21a04b9bf96de38" + }, + { + "path": "harness/experiments/source-alias-rename-package-native-20260912/README.md", + "bytes": 2484, + "sha256": "bfbcebb64cb76c09ddd54f2dd2fc0cdea937a79da066da9397eb0dfde2a19377", + "committedBlob": "7934ff0cd878ec14aa2c54720a33378d02603973" + } + ], + "committedLinkTargets": [ + { + "commit": "506a349b32f3f869ac027d8763c501b61cf79769", + "path": "harness/release-source-alias-rename-package-20260912.md" + }, + { + "commit": "506a349b32f3f869ac027d8763c501b61cf79769", + "path": "harness/experiments/source-alias-rename-scroll-20260912" + }, + { + "commit": "506a349b32f3f869ac027d8763c501b61cf79769", + "path": "harness/experiments/source-alias-rename-server-20260912" + }, + { + "commit": "506a349b32f3f869ac027d8763c501b61cf79769", + "path": "harness/experiments/source-alias-rename-package-20260912" + }, + { + "commit": "506a349b32f3f869ac027d8763c501b61cf79769", + "path": "harness/experiments/source-alias-rename-packaged-runtime-20260912" + }, + { + "commit": "506a349b32f3f869ac027d8763c501b61cf79769", + "path": "harness/experiments/source-alias-rename-package-native-20260912" + } + ], + "checks": { + "draftMarkersAbsent": true, + "exactRecordedCargoCommands": 7, + "archiveHashesAndCommittedBytesMatch": 5, + "committedLinkTargetsExist": 6, + "readDocumentsMatchCommittedBytes": 7, + "scopeConsistentWithExistingReceiptsAndIndependentReviews": true, + "remoteHttpAvailabilityRechecked": false, + "runtimeOrArchiveEvaluatorsRerun": false + }, + "report": { + "path": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/source-rename-prerelease-publication-20260912/final-validation-review.md", + "bytes": 3594, + "sha256": "66e664c358c09075e0fa031a4db1b986ad51eda13f8806f85fb40873a22a57b1" + } +} diff --git a/harness/experiments/source-alias-rename-publication-20260912/final-validation-review.md b/harness/experiments/source-alias-rename-publication-20260912/final-validation-review.md new file mode 100644 index 00000000..73b16915 --- /dev/null +++ b/harness/experiments/source-alias-rename-publication-20260912/final-validation-review.md @@ -0,0 +1,56 @@ +# Final release validation text review + +**PASS — no concrete discrepancy found** in the final RELEASE-NOTES.md and +VALIDATION.md snapshots below. Reviewer: Codex-9e8r6t /root/diagnostic_input. +This was a bounded document/evidence review, using local file reads/hashes and +read-only Git object/tree checks. No runtime, GUI, compiler, publication helper, +network/API request, tag operation or Git mutation ran. + +| Final file | SHA256 | +| --- | --- | +| RELEASE-NOTES.md | `272c1337920cb5dcd96fcd9adff87cdb0c8c12350e69d42e90d96741d3cc546b` | +| VALIDATION.md | `97fae7e742656f35a939b8e97fa060e1338314c3e2af146f03c306a59427cd4d` | + +The fixed tested source remains cbc49a7802fb1bba0dd284fd904c700a0703ae70; +the evidence checkpoint is separately identified as +506a349b32f3f869ac027d8763c501b61cf79769. All six commit-based document/directory +links resolve in that exact Git tree. Each of the five linked evidence ZIPs was +checked against its committed blob with `git hash-object --no-filters` and its +actual SHA256; all five match the values printed in VALIDATION.md. The package +report, source validation record and five archive READMEs read during this review +also match their committed bytes. This establishes committed-tree link targets, +not a new HTTP availability check; the parent's remote checkpoint readback remains +separate evidence. + +The seven documented Cargo commands exactly match the actual desktop attempt-8 +and server attempt-1 command arrays, in order. Their recorded toolchains report +Rust/Cargo 1.98.1, Windows GNU LLVM, clang.exe and one build job. Actual artifact +records support opt level 0, debuginfo 0, debug assertions and overflow checks. +The loopback server invocation uses supported options from docs/server.md at the +tested source. Bundle launch/dependency wording agrees with the independently +verified package inventory and committed package report. Both final documents +are free of either publication/runtime pending marker. + +Counts and scope agree with existing exact receipts and the completed independent +documentation/archive reviews: 805 desktop tests, 501 core/server tests, 517 captured +inputs per gate, 2,585 committed package-source files, 559 package files, 23 runtime +checks, 13 HTTP exchanges, 66 capture states/73 JPEGs, eight saved-state oracle +checks and 41 final physical files. Prior valid evidence was reused; all runtimes +and archived evaluators were not rerun for this final text review. + +The text distinguishes the Unicode empty-model server scenario from GUI rename +and nonempty model acceptance; intentional Windows server terminate()/exit 1 from +the GUI's normal exit 0; the simple first-key/Text Undo workflow from representative +Undo Rename/reopen; and captured GUI state from saved-disk oracles. It does not +claim representative first-key testing or simple reopen. The guide wording is +restricted to opening/readability at minimum size. The known delayed Details to +Preview reset issue remains explicit as an untested static P2, with its correction +outside the tested source. Paused Linux, development profile, broader OA/SA and +separate Text/peer work remain qualified. Screenshots, process lifetime and pauses +are not presented as native latency measurements. + +Ready for the parent's exact final-text hash binding and sole-owner tag/release +workflow after the four acceptance receipts are bound. This review does not itself +bind acceptance, authorize a new scope, create a tag/release, or claim publication. +Exact checked archive blobs, hashes, document identities and local-tree link paths +are recorded in final-validation-review.json. diff --git a/harness/experiments/source-alias-rename-publication-20260912/independent-static-review.md b/harness/experiments/source-alias-rename-publication-20260912/independent-static-review.md new file mode 100644 index 00000000..5c7c2198 --- /dev/null +++ b/harness/experiments/source-alias-rename-publication-20260912/independent-static-review.md @@ -0,0 +1,62 @@ +# Independent static review of rename publication preparation + +Reviewer: Codex-9e8r6t /root/diagnostic_input, 2026-09-12. Parent is the sole execution and publication owner. This review read and hashed local files and installed primary Git documentation. It did not import or execute either helper, inspect credentials or Git configuration, contact any service, run Git/Cargo/GUI, or alter publication inputs. This report is the only review output. No package/runtime/native or publication acceptance is claimed. + +## Result + +Two configuration-dependent correctness findings must be resolved or explicitly constrained by the parent before tag-helper execution. Both patterns are inherited from the previous navigation helper; they are not rename-specific regressions. No additional blocking finding was identified in the API draft/upload/publish flow under the existing reviewed single-executor protocol. Current acceptance bindings intentionally refuse all remote mutations. + +### P2: the explicit refspec does not enforce a one-tag push + +`push-tag.py:27-32,58` removes inherited GIT_ environment variables but still reads normal Git configuration files. Its `git push TARGET:refs/tags/TAG` honors `push.followTags=true`. With an additional local annotated tag pointing to TARGET or a reachable ancestor that is absent remotely, Git can publish that additional tag along with the reserved rename tag. The helper checks only the reserved ref afterwards and can report success without detecting the extra mutation. + +The installed primary manual explicitly states that follow-tags adds reachable missing annotated tags (`git-push.html:690-697`) and that `push.followTags=true` enables it by default; `--no-follow-tags` overrides it (`git-push.html:1993-1997`). The narrow correction is to add `--no-follow-tags` to this push invocation. This finding is a documented counterexample, not a claim that the current machine has the option enabled or that an extra tag was pushed. + +### P2: push-only URL rewriting escapes the checked repository + +`push-tag.py:27-39,45,53,58` supplies a literal repository URL, but does not reject or bind effective Git URL rewriting from configuration files. A `url..pushInsteadOf=` rule leaves the API requests and fetch-direction `ls-remote` checks pointed at the intended repository while redirecting the actual push to another destination. The after-check may fail because the intended tag remains missing, but the unintended destination has already been mutated. An `insteadOf` rule can also rewrite Git read requests before the authenticated Git subprocess returns. `http.followRedirects=false` addresses HTTP redirects, not Git's URL rewriting. + +Installed primary documentation describes both mechanisms at `git-config.html:10570-10602`, including the push-only distinction. Before authenticated Git remote operations, narrowly reject applicable effective rewrite settings or validate the actual fetch and push destinations through an equivalent controlled configuration path. Preserve the expected exact repository URL and origin; a successful API check alone is insufficient. No broad transport rewrite is requested. This is a static configuration counterexample; this review deliberately did not inspect local/global/system Git configuration or assert that such a rule is currently installed. + +Both findings were sent directly to native_archive and the parent before saving this report. + +## Reviewed protocol properties + +- Identity is fixed to source `cbc49a7802fb1bba0dd284fd904c700a0703ae70`, tag `v0.2.0-preview.rename.20260912`, rename title, package2 ZIP name, 33,074,937 bytes, ZIP SHA256 `d2433b5b384256b551672bf115bab40b3496aeee115e067922aedb5becf34d7e`, and companion SHA256 `3b8d811c73ae0044ed0b451e8ff746f440af79b543dd52fe067a5a2e175b685f`. TARGET remains fixed in commit/tag checks, ownership receipt, release metadata and push refspec. +- Mutable sourceBranchHead is a separately reviewed binding. The remote branch must match it exactly while the tag must match the fixed TARGET; there is no silent retarget to branch head or branch push. The read-only API target-commit check requires the exact source snapshot to exist. Git tag collision handling accepts an existing lightweight or annotated tag only at the exact final commit, and the push is nonforce. +- All mutating action branches call `inputs()` before constructing the credential-bearing Client. The four exact acceptance-evidence roles must each have reviewedPass true, an absolute existing path, matching byte count and SHA256; parent acceptanceReviewed must be true. Final notes and validation must match bound hashes and lack either pending marker. ZIP/checksum/validation bytes are loaded and bound before mutation. The separate tag helper calls the same gate. Evidence semantic correctness remains the parent's explicit review duty; hashes alone are not represented as acceptance. +- The initial bindings leave acceptance false, all four receipts unbound, sourceBranchHead null, final-document hashes null and releaseId null. The shipped draft markers accurately describe incomplete package/runtime/native acceptance. `inspect` is the explicitly read-only exception and does not confer permission to mutate. +- The explicit non-assert `if not __debug__` guard remains before imports in publish.py. Python optimized mode cannot remove safety assertions and then continue; importing it from the tag helper inherits this refusal. +- Authenticated release enumeration includes drafts, refuses multiple matching tags and fails closed at its pagination bound. Existing-release mutation requires either an explicitly parent-bound releaseId or the exclusive successful-create receipt. Matching title or tag does not establish ownership. Notes, target, name and prerelease flag are rechecked. +- Creation requests only a draft prerelease and persists ownership immediately after a valid create response. An uncertain create without its ownership receipt cannot be silently adopted on retry. The parent must inspect and explicitly bind ownership. Each attempt uses a fresh exclusive directory; terminal receipts and request-started events identify possibly partial outcomes. No automatic retry, deletion, overwrite or force push exists. +- Upload permits exactly the package ZIP, its checksum and VALIDATION.md. Existing attachments must have unique names and IDs, allowed names, exact sizes and downloaded bytes; missing names alone are uploaded. Each new upload is immediately downloaded and the completed set is downloaded again. A retry after an uncertain upload reconciles already-existing attachments instead of overwriting them. +- Publication verifies all three assets before visibility change, rechecks the fixed source/tag and owned notes, then verifies public prerelease metadata and all attachments again, including unchanged IDs/names/size/hash/URL tuples. An already-public owned release can be accepted after complete readback, covering an uncertain previous PATCH. apiPublishedAt and visibilityVerifiedAt remain distinct; no exact server transition time is invented. +- API calls enforce exact scheme/netloc without userinfo, disable proxy discovery and refuse redirects. Credentials are supplied in headers; the Git helper uses process-local environment configuration rather than token-bearing command arguments or config-file writes. Error paths redact raw tokens and, for Git, the Basic credential, then exit generically without rethrowing the original exception. These are static data-flow conclusions, not dynamic credential-leak fault injection. Git destination enforcement remains subject to the second finding above. + +The existing single-writer limitation remains: server reads and writes are separate requests, without conditional attachment/upload/publication locking. A competing actor could change draft state or attachments between checks; postchecks detect many changes but cannot prove an incorrect state was never transiently public. This review retains the parent's reserved, sequential execution assumption and does not request new coordination infrastructure. + +## Exact reviewed snapshots + +All eight entries in preparation-bindings.json matched current local byte counts and hashes at final review readback. The two prior navigation helper snapshots were compared with the rename versions. Historical static review, optimization follow-up and source-advance review were read for protocol context. + +| File | SHA256 | +| --- | --- | +| publish.py | f9104cef03187d8f1ab3a5e177ef05945c1212624962883d1198208191e33816 | +| push-tag.py | 446c2f02653228e1a231e41bdc8c4653433b2b2b2b128fedb29de0745d4630c140 | +| bindings.json | af8f82c0a00a6502acc38f04e777796c2a4605f11165432b95df38476e1303d4 | +| README.md | be06ce330b9e31e290d6a1f4cb5d5a7f1a30354baba26afd38294f87011cf216 | +| RELEASE-NOTES.draft.md | bcde198d0aa11122849cd87a21b7629e11036bd462e26aae8f425fbe25462cd1 | +| VALIDATION.draft.md | 0ea80dbc151cf8019f00670120e354605344f98b1e4bbfa46953e027b8c6885c | +| preparation-bindings.json | dff0caa0eac72a184784f1dec8677192a45914df5a958e820caf227d4a95447f | +| ../navigation-prerelease-publication-20260911/publish.py | 2e2f5286b958479e27d113cf65036ca1bf3af4c2380a0985d82bfc2d793cabdd | +| ../navigation-prerelease-publication-20260911/push-tag.py | 5911ecb7924596918e59ab983952e7094b122dc21008b7913b4d1dc017683a27 | +| C:/Program Files/Git/mingw64/share/doc/git-doc/git-push.html | 143ef38871b392e89fa9d91e80a7a25de181e0fb1106ba0715bb5770b16d4000 | +| C:/Program Files/Git/mingw64/share/doc/git-doc/git-config.html | 5bba19fbfcf41f134c549bb018e7e0ad81db8bcf9ae33eae2091d6b5a65beb81 | + +Scope of final-document review: pending markers, identity, provenance boundaries and required closure sections were checked for consistency with this protocol; their underlying build/test/runtime/native factual claims were not independently revalidated in this bounded script review. Final accepted RELEASE-NOTES.md, VALIDATION.md, evidence bindings and any corrected scripts need their own reviewed hash snapshot before execution. + +## Parent disposition after findings + +The parent accepted both tag-helper findings and selected the purpose-built Gitea MCP create_tag operation with the reserved tag and exact TARGET after actual acceptance. The reviewed push-tag.py is superseded for this release and must not be invoked. This avoids the reviewed Git-configuration path; no alternate Git-isolation implementation is requested. The original findings and their exact script snapshot are preserved above. This report does not independently execute or validate the MCP operation; the parent owns its acceptance checks, authorization, collision handling and readback. + +The bounded review of publish.py's API draft/create/upload/download/publish path is complete: no additional blocking finding was identified under the stated sequential owner workflow. The immutable TARGET, independently pinned branch head, four acceptance receipts, final notes/validation hashes, explicit release ownership, exact three assets and public readback checks remain required. Current unbound acceptance still blocks those mutating API actions. Author changes to README/deprecation wording are subsequent to this reviewed snapshot and are not silently included in its hashes. diff --git a/harness/experiments/source-alias-rename-publication-20260912/inspect-before-tag/result.json b/harness/experiments/source-alias-rename-publication-20260912/inspect-before-tag/result.json new file mode 100644 index 00000000..e35d1a89 --- /dev/null +++ b/harness/experiments/source-alias-rename-publication-20260912/inspect-before-tag/result.json @@ -0,0 +1,11 @@ +{ + "started": "2026-09-13T00:42:51.097855+00:00", + "action": "inspect", + "tag": "v0.2.0-preview.rename.20260912", + "target": "cbc49a7802fb1bba0dd284fd904c700a0703ae70", + "success": true, + "release": null, + "remoteTag": null, + "scope": "Read-only inspection; no acceptance or mutation", + "finished": "2026-09-13T00:42:51.827075+00:00" +} diff --git a/harness/experiments/source-alias-rename-publication-20260912/package-records-push-result.json b/harness/experiments/source-alias-rename-publication-20260912/package-records-push-result.json new file mode 100644 index 00000000..12e75280 --- /dev/null +++ b/harness/experiments/source-alias-rename-publication-20260912/package-records-push-result.json @@ -0,0 +1,9 @@ +{ + "started": "2026-09-13T00:40:29.950251+00:00", + "target": "506a349b32f3f869ac027d8763c501b61cf79769", + "ref": "refs/heads/codex/release1-9e8r6t", + "before": "d12b0a6b7509ea7e942adfb7b79928574d8cd053\trefs/heads/codex/release1-9e8r6t", + "after": "506a349b32f3f869ac027d8763c501b61cf79769\trefs/heads/codex/release1-9e8r6t", + "success": true, + "finished": "2026-09-13T00:40:36.531899+00:00" +} diff --git a/harness/experiments/source-alias-rename-publication-20260912/publication-readiness-review-bindings.json b/harness/experiments/source-alias-rename-publication-20260912/publication-readiness-review-bindings.json new file mode 100644 index 00000000..99b95180 --- /dev/null +++ b/harness/experiments/source-alias-rename-publication-20260912/publication-readiness-review-bindings.json @@ -0,0 +1,33 @@ +{ + "atUtc": "2026-09-13T00:34:17.637496+00:00", + "scope": "Read-only static publisher delta and release-note consistency review; no publisher/helper/network execution", + "reviewedPublisherReconstructionSha256": "f9104cef03187d8f1ab3a5e177ef05945c1212624962883d1198208191e33816", + "onlyPublisherDelta": "Missing-tag assertion explanatory string refers to parent Gitea MCP instead of superseded Git helper", + "bindings": { + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\source-rename-prerelease-publication-20260912\\publish.py": { + "bytes": 14559, + "sha256": "6c91f9c34045f31fa4de6d2cbe576166204aef4d981ac6053abd5197fe8af37f" + }, + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\source-rename-prerelease-publication-20260912\\push-tag.py": { + "bytes": 3794, + "sha256": "9f2b12e0a08a9d0ce48ffff677d0d9a5f4b123ddc44883debecf7cd7feed456a" + }, + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\source-rename-prerelease-publication-20260912\\independent-static-review.md": { + "bytes": 11299, + "sha256": "ea7a31a13b7338db77cb3f16fde7b952cd6537c82376a9dfad97e14ca5c724a8" + }, + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\source-rename-prerelease-publication-20260912\\RELEASE-NOTES.md": { + "bytes": 1792, + "sha256": "272c1337920cb5dcd96fcd9adff87cdb0c8c12350e69d42e90d96741d3cc546b" + }, + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\source-rename-prerelease-publication-20260912\\bindings.json": { + "bytes": 664, + "sha256": "af8f82c0a00a6502acc38f04e777796c2a4605f11165432b95df38476e1303d4" + }, + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\harness\\release-source-alias-rename-package-20260912.md": { + "bytes": 8260, + "sha256": "2b9e1c9d48af4a3125b869741feb3c167654d71d98463cb4cccd206ff81178a5" + } + }, + "validationFileExists": false +} diff --git a/harness/experiments/source-alias-rename-publication-20260912/publication-readiness-review.md b/harness/experiments/source-alias-rename-publication-20260912/publication-readiness-review.md new file mode 100644 index 00000000..f09923d5 --- /dev/null +++ b/harness/experiments/source-alias-rename-publication-20260912/publication-readiness-review.md @@ -0,0 +1,9 @@ +# Scoped publication readiness review + +Reviewed read-only on 2026-09-13T00:34:17Z. Current publish.py SHA256 `6c91f9c34045f31fa4de6d2cbe576166204aef4d981ac6053abd5197fe8af37f` has exactly one change from the independently reviewed publisher: the missing-tag assertion message now directs the parent to Gitea MCP. Replacing that one string reconstructs the exact reviewed SHA256 `f9104cef03187d8f1ab3a5e177ef05945c1212624962883d1198208191e33816`. No API acceptance, ownership, asset, upload or publication logic changed. The former Git tag helper is immediately disabled; the prior independent findings remain preserved and the parent-selected MCP path avoids executing that helper. + +Final RELEASE-NOTES.md SHA256 `272c1337920cb5dcd96fcd9adff87cdb0c8c12350e69d42e90d96741d3cc546b` is consistent with the current package acceptance report SHA256 `2b9e1c9d48af4a3125b869741feb3c167654d71d98463cb4cccd206ff81178a5`: exact CBC source, Windows launch/dependency instructions, 805 desktop/501 core-server passing tests, 559 independently checked package files, actual packaged server persistence/restart, and bounded minimum-window desktop rename/Undo/Redo/Save/representative reopening. It does not import simple reopen or representative first-key coverage from the older native trial. Development-profile/full-application limits and the confirmed Details-to-Preview delayed-reset lifetime gap are explicitly disclosed. No additional concrete note inconsistency was found. This is a document-to-record consistency review, not a new native or server execution. + +**Publication remains blocked at this reviewed snapshot.** acceptanceReviewed is false; all four receipt pins/review flags, final document hashes and published branch-head pin remain unbound. VALIDATION.md does not yet exist, and the final evidence commit is not bound. The notes' reference to VALIDATION.md is therefore a required delivery item, not an already available attachment. Parent must complete and review that file, bind the immutable public evidence and actual acceptance receipts, and perform the exact tag/draft/upload/download/publication readbacks. This review does not authorize or claim completed publication readiness, tag creation or any release/asset mutation. + +Exact input hashes are retained in publication-readiness-review-bindings.json. No publisher/helper import or execution, credential read, API/Git mutation, binding edit or asset action was performed. diff --git a/harness/experiments/source-alias-rename-publication-20260912/publish-first/events.jsonl b/harness/experiments/source-alias-rename-publication-20260912/publish-first/events.jsonl new file mode 100644 index 00000000..76e065c9 --- /dev/null +++ b/harness/experiments/source-alias-rename-publication-20260912/publish-first/events.jsonl @@ -0,0 +1 @@ +{"atUtc": "2026-09-13T00:47:41.051855+00:00", "step": "publish-request-started", "releaseId": 6} diff --git a/harness/experiments/source-alias-rename-publication-20260912/publish-first/result.json b/harness/experiments/source-alias-rename-publication-20260912/publish-first/result.json new file mode 100644 index 00000000..d95e4a70 --- /dev/null +++ b/harness/experiments/source-alias-rename-publication-20260912/publish-first/result.json @@ -0,0 +1,78 @@ +{ + "started": "2026-09-13T00:47:28.911940+00:00", + "action": "publish", + "tag": "v0.2.0-preview.rename.20260912", + "target": "cbc49a7802fb1bba0dd284fd904c700a0703ae70", + "success": true, + "bindings": { + "acceptanceReviewed": true, + "sourceBranch": "codex/release1-9e8r6t", + "sourceBranchHead": "506a349b32f3f869ac027d8763c501b61cf79769", + "sourceDirectory": null, + "packageDirectory": "C:/arcadia-rename-package-2/packages", + "releaseId": null, + "notesSha256": "272c1337920cb5dcd96fcd9adff87cdb0c8c12350e69d42e90d96741d3cc546b", + "validationSha256": "97fae7e742656f35a939b8e97fa060e1338314c3e2af146f03c306a59427cd4d", + "acceptanceEvidence": { + "sourceBinding": { + "path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\source-rename-package-review-20260912\\runs\\attempt-2\\result.json", + "bytes": 4699882, + "sha256": "20bfea2f1c0a9babe2a85f5a2ba158f07139ba18f9c04a971fd738e9daff24d9", + "reviewedPass": true + }, + "packageIntegrity": { + "path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\source-rename-package-review-20260912\\runs\\attempt-2\\result.json", + "bytes": 4699882, + "sha256": "20bfea2f1c0a9babe2a85f5a2ba158f07139ba18f9c04a971fd738e9daff24d9", + "reviewedPass": true + }, + "packagedServer": { + "path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\source-rename-server-runtime-20260912\\runs\\attempt-1\\result.json", + "bytes": 18679, + "sha256": "e42fb5fb8c15a9f603e9753e450613afce67caac5a0fbb806a9810ef272ec37a", + "reviewedPass": true + }, + "nativeClosure": { + "path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\source-rename-package-preparation-20260912\\trial-package-1\\closed.json", + "bytes": 373, + "sha256": "ed2a00dfa018b27a823d75605007adb0f1d997b79a807e6eb168f5a489409e7a", + "reviewedPass": true + } + } + }, + "assetHashes": { + "ArcadiaStudio-0.2.0-preview.rename.20260912-x86_64-pc-windows-gnullvm.zip": "d2433b5b384256b551672bf115bab40b3496aeee115e067922aedb5becf34d7e", + "ArcadiaStudio-0.2.0-preview.rename.20260912-x86_64-pc-windows-gnullvm.zip.sha256": "3b8d811c73ae0044ed0b451e8ff746f440af79b543dd52fe067a5a2e175b685f", + "VALIDATION.md": "97fae7e742656f35a939b8e97fa060e1338314c3e2af146f03c306a59427cd4d" + }, + "assets": [ + { + "id": 17, + "name": "ArcadiaStudio-0.2.0-preview.rename.20260912-x86_64-pc-windows-gnullvm.zip", + "bytes": 33074937, + "sha256": "d2433b5b384256b551672bf115bab40b3496aeee115e067922aedb5becf34d7e", + "url": "http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/releases/download/v0.2.0-preview.rename.20260912/ArcadiaStudio-0.2.0-preview.rename.20260912-x86_64-pc-windows-gnullvm.zip" + }, + { + "id": 18, + "name": "ArcadiaStudio-0.2.0-preview.rename.20260912-x86_64-pc-windows-gnullvm.zip.sha256", + "bytes": 140, + "sha256": "3b8d811c73ae0044ed0b451e8ff746f440af79b543dd52fe067a5a2e175b685f", + "url": "http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/releases/download/v0.2.0-preview.rename.20260912/ArcadiaStudio-0.2.0-preview.rename.20260912-x86_64-pc-windows-gnullvm.zip.sha256" + }, + { + "id": 19, + "name": "VALIDATION.md", + "bytes": 7168, + "sha256": "97fae7e742656f35a939b8e97fa060e1338314c3e2af146f03c306a59427cd4d", + "url": "http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/releases/download/v0.2.0-preview.rename.20260912/VALIDATION.md" + } + ], + "url": "http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/releases/tag/v0.2.0-preview.rename.20260912", + "apiPublishedAt": "2026-09-13T00:46:38Z", + "visibilityVerifiedAt": "2026-09-13T00:47:52.474878+00:00", + "releaseId": 6, + "draft": false, + "prerelease": true, + "finished": "2026-09-13T00:47:52.873060+00:00" +} diff --git a/harness/experiments/source-alias-rename-publication-20260912/publish.py b/harness/experiments/source-alias-rename-publication-20260912/publish.py new file mode 100644 index 00000000..5176a79d --- /dev/null +++ b/harness/experiments/source-alias-rename-publication-20260912/publish.py @@ -0,0 +1,269 @@ +"""Root-executed, hash-bound draft/upload/publication. Import has no side effects.""" +if not __debug__: + raise RuntimeError('Publication requires Python assertions; optimized execution is refused.') + +import argparse +from datetime import datetime, timezone +import hashlib +import json +from pathlib import Path +import re +import tomllib +import urllib.error +import urllib.parse +import urllib.request +import uuid + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parents[1] +ORIGIN = 'http://217.177.34.108:3000' +API = ORIGIN + '/api/v1/repos/sorokin.oleg.edu/ARCADIA-Studio' +TAG = 'v0.2.0-preview.rename.20260912' +TARGET = 'cbc49a7802fb1bba0dd284fd904c700a0703ae70' +TITLE = 'Source alias rename — Windows development preview' +ZIP = 'ArcadiaStudio-0.2.0-preview.rename.20260912-x86_64-pc-windows-gnullvm.zip' +ZIP_SHA = 'd2433b5b384256b551672bf115bab40b3496aeee115e067922aedb5becf34d7e' +CHECKSUM_SHA = '3b8d811c73ae0044ed0b451e8ff746f440af79b543dd52fe067a5a2e175b685f' + +def now(): + return datetime.now(timezone.utc).isoformat() + +def digest(raw): + return hashlib.sha256(raw).hexdigest() + +def read(path): + return json.loads(path.read_text(encoding='utf-8')) + +def exclusive(path, value): + with path.open('x', encoding='utf-8', newline='\n') as stream: + json.dump(value, stream, indent=2, ensure_ascii=False) + stream.write('\n') + +class Attempt: + def __init__(self, action, name): + assert re.fullmatch(r'[a-z0-9][a-z0-9-]{0,47}', name), 'Use a fresh simple attempt name' + self.path = HERE / 'runs' / (action + '-' + name) + self.path.mkdir(parents=True, exist_ok=False) + self.value = {'started': now(), 'action': action, 'tag': TAG, 'target': TARGET, 'success': False} + + def event(self, step, **fields): + event = {'atUtc': now(), 'step': step, **fields} + with (self.path / 'events.jsonl').open('a', encoding='utf-8', newline='\n') as stream: + stream.write(json.dumps(event, ensure_ascii=False) + '\n') + + def finish(self): + self.value['finished'] = now() + exclusive(self.path / 'result.json', self.value) + print(json.dumps(self.value, ensure_ascii=False), flush=True) + +class NoRedirect(urllib.request.HTTPRedirectHandler): + def redirect_request(self, req, fp, code, msg, headers, newurl): + raise RuntimeError('Unexpected redirect; authorization not forwarded') + +class Client: + def __init__(self): + config = tomllib.loads((Path.home() / '.codex/config.toml').read_text(encoding='utf-8')) + self.token = config['mcp_servers']['gitea']['env']['GITEA_ACCESS_TOKEN'] + self.opener = urllib.request.build_opener(urllib.request.ProxyHandler({}), NoRedirect) + + def redact(self, text): + return text.replace(self.token, '[redacted]') + + def request(self, url, data=None, method=None, headers=None, binary=False, missing=False): + parsed = urllib.parse.urlsplit(url) + expected = urllib.parse.urlsplit(ORIGIN) + assert (parsed.scheme, parsed.netloc) == (expected.scheme, expected.netloc) + assert parsed.username is None and parsed.password is None + request = urllib.request.Request(url, data=data, method=method, + headers={'Authorization': 'token ' + self.token, **(headers or {})}) + try: + with self.opener.open(request, timeout=120) as response: + body = response.read() + return body if binary else json.loads(body) + except urllib.error.HTTPError as error: + detail = self.redact(error.read(2000).decode('utf-8', 'replace')) + if missing and error.code == 404: + return None + raise RuntimeError(f'HTTP {error.code}: {detail}') from None + + def json(self, url, value, method): + return self.request(url, json.dumps(value).encode('utf-8'), method, + {'Content-Type': 'application/json'}) + + def release(self): + # Listing authenticated drafts catches a reserved-tag collision even + # before a server has made its Git tag visible to the by-tag endpoint. + matches = [] + for page in range(1, 21): + items = self.request(API + f'/releases?limit=50&page={page}') + assert isinstance(items, list) + matches.extend(item for item in items if item['tag_name'] == TAG) + if len(items) < 50: + break + else: + raise RuntimeError('Release collision scan exceeded its bound') + assert len(matches) <= 1, 'Multiple releases claim the reserved tag' + return matches[0] if matches else None + + def tag(self): + return self.request(API + '/tags/' + urllib.parse.quote(TAG, safe=''), missing=True) + +def inputs(): + bindings = read(HERE / 'bindings.json') + assert bindings['acceptanceReviewed'] is True, 'Parent must finish and explicitly review actual acceptance first' + assert isinstance(bindings['sourceBranch'], str) and bindings['sourceBranch'] + assert re.fullmatch(r'[0-9a-f]{40}', bindings['sourceBranchHead'] or ''), 'Pin current published branch head separately from release target' + assert set(bindings['acceptanceEvidence']) == {'sourceBinding', 'packageIntegrity', 'packagedServer', 'nativeClosure'} + for key, item in bindings['acceptanceEvidence'].items(): + assert item['reviewedPass'] is True, 'Missing parent acceptance review: ' + key + assert isinstance(item['sha256'], str) and re.fullmatch(r'[0-9a-f]{64}', item['sha256']), 'Missing acceptance receipt pin: ' + key + path = Path(item['path'] or '') + assert path.is_absolute() and path.is_file(), 'Missing acceptance receipt: ' + key + raw = path.read_bytes() + assert len(raw) == item['bytes'] and digest(raw) == item['sha256'], 'Acceptance receipt changed: ' + key + for key in ('notesSha256', 'validationSha256'): + assert isinstance(bindings[key], str) and re.fullmatch(r'[0-9a-f]{64}', bindings[key]), 'Final notes and VALIDATION hashes must be reviewed and bound first' + notes = (HERE / 'RELEASE-NOTES.md').read_bytes() + validation = (HERE / 'VALIDATION.md').read_bytes() + assert digest(notes) == bindings['notesSha256'] + assert digest(validation) == bindings['validationSha256'] + for raw in (notes, validation): + text = raw.decode('utf-8') + assert all(marker not in text for marker in ('PUBLICATION-PENDING', 'PACKAGE-RUNTIME-ACCEPTANCE-PENDING')) + package = Path(bindings['packageDirectory']) + assert package.is_absolute() and package.is_dir() + assets = {ZIP: (package / ZIP).read_bytes(), ZIP + '.sha256': (package / (ZIP + '.sha256')).read_bytes(), 'VALIDATION.md': validation} + assert len(assets[ZIP]) == 33074937 and digest(assets[ZIP]) == ZIP_SHA + assert digest(assets[ZIP + '.sha256']) == CHECKSUM_SHA + assert assets[ZIP + '.sha256'].decode('utf-8').strip() == ZIP_SHA + ' ' + ZIP + return bindings, notes.decode('utf-8'), assets + +def source_and_tag(client, require_tag=True): + bindings = read(HERE / 'bindings.json') + branch = client.request(API + '/branches/' + urllib.parse.quote(bindings['sourceBranch'], safe='')) + assert branch['commit']['id'] == bindings['sourceBranchHead'], 'Published source branch changed' + target_commit = client.request(API + '/git/commits/' + TARGET) + assert target_commit['sha'] == TARGET, 'Exact source snapshot is unavailable' + tag = client.tag() + if tag is None: + assert not require_tag, 'Parent must create the reviewed exact-target tag through Gitea MCP first' + else: + assert tag['name'] == TAG and tag['commit']['sha'] == TARGET, 'Tag collision' + return tag + +def owned_release(value, bindings, notes): + expected_id = bindings.get('releaseId') + state = HERE / 'release-created.json' + if state.exists(): + saved = read(state) + assert saved['tag'] == TAG and saved['target'] == TARGET + assert expected_id in (None, saved['releaseId']) + expected_id = saved['releaseId'] + assert expected_id is not None and value['id'] == expected_id, 'Existing release is not bound to this run; inspect and review before setting releaseId' + assert value['tag_name'] == TAG and value['target_commitish'] == TARGET + assert value['prerelease'] is True and value['name'] == TITLE and value['body'] == notes + +def verify_assets(client, release_id, assets, allow_missing=False): + remote = client.request(API + f'/releases/{release_id}/assets') + names = [item['name'] for item in remote] + assert len(names) == len(set(names)) and len({a['id'] for a in remote}) == len(remote) + assert set(names) <= set(assets) + if not allow_missing: + assert set(names) == set(assets), 'Exactly three assets required' + verified = [] + for item in remote: + expected = assets[item['name']] + assert item['size'] == len(expected) + received = client.request(item['browser_download_url'], binary=True) + assert received == expected, 'Existing asset bytes differ; no overwrite or deletion permitted' + verified.append({'id': item['id'], 'name': item['name'], 'bytes': len(received), 'sha256': digest(received), 'url': item['browser_download_url']}) + return verified + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument('action', choices=('inspect', 'create', 'upload', 'publish')) + parser.add_argument('--attempt', required=True) + args = parser.parse_args() + attempt = Attempt(args.action, args.attempt) + client = None + try: + if args.action == 'inspect': + client = Client() + release, tag = client.release(), client.tag() + attempt.value.update(success=True, release=release, remoteTag=tag, + scope='Read-only inspection; no acceptance or mutation') + return + bindings, notes, assets = inputs() + attempt.value['bindings'] = bindings + attempt.value['assetHashes'] = {name: digest(raw) for name, raw in assets.items()} + client = Client() + source_and_tag(client) + release = client.release() + if args.action == 'create': + if release is not None: + owned_release(release, bindings, notes) + assert release['draft'] is True + attempt.event('existing-owned-draft', releaseId=release['id']) + else: + assert not (HERE / 'release-created.json').exists() and bindings.get('releaseId') is None + attempt.event('create-request-started') + release = client.json(API + '/releases', {'tag_name': TAG, 'target_commitish': TARGET, + 'name': TITLE, 'body': notes, 'draft': True, 'prerelease': True}, 'POST') + assert release['tag_name'] == TAG and release['target_commitish'] == TARGET and release['draft'] is True + # Persist ownership immediately; a failed readback can be retried safely. + exclusive(HERE / 'release-created.json', {'releaseId': release['id'], 'tag': TAG, 'target': TARGET, 'atUtc': now()}) + attempt.event('created-draft', releaseId=release['id']) + fresh = client.release() + owned_release(fresh, bindings, notes) + assert fresh['draft'] is True + verify_assets(client, fresh['id'], assets, allow_missing=True) + else: + assert release is not None, 'Create the hash-bound draft first' + owned_release(release, bindings, notes) + endpoint = API + f'/releases/{release["id"]}' + if args.action == 'upload': + assert release['draft'] is True, 'Never upload into a public release' + existing = verify_assets(client, release['id'], assets, allow_missing=True) + for name, raw in assets.items(): + if any(item['name'] == name for item in existing): + attempt.event('existing-asset-verified', name=name, sha256=digest(raw)) + continue + boundary = 'ArcadiaRename' + uuid.uuid4().hex + prefix = (f'--{boundary}\r\nContent-Disposition: form-data; name="attachment"; filename="{name}"\r\nContent-Type: application/octet-stream\r\n\r\n').encode() + attempt.event('upload-request-started', name=name, sha256=digest(raw)) + result = client.request(endpoint + '/assets?' + urllib.parse.urlencode({'name': name}), + prefix + raw + f'\r\n--{boundary}--\r\n'.encode(), 'POST', + {'Content-Type': 'multipart/form-data; boundary=' + boundary}) + assert result['name'] == name and result['size'] == len(raw) + assert client.request(result['browser_download_url'], binary=True) == raw + attempt.event('uploaded-and-downloaded', name=name, assetId=result['id'], sha256=digest(raw)) + attempt.value['assets'] = verify_assets(client, release['id'], assets) + else: + # Download all three afresh immediately before changing visibility. + before = verify_assets(client, release['id'], assets) + source_and_tag(client) + fresh = client.release() + owned_release(fresh, bindings, notes) + if fresh['draft']: + attempt.event('publish-request-started', releaseId=fresh['id']) + client.json(endpoint, {'draft': False, 'prerelease': True, 'body': notes}, 'PATCH') + final = client.release() + owned_release(final, bindings, notes) + assert final['draft'] is False + source_and_tag(client) + after = verify_assets(client, final['id'], assets) + assert sorted(before, key=lambda x: x['id']) == sorted(after, key=lambda x: x['id']) + attempt.value.update(assets=after, url=final['html_url'], apiPublishedAt=final['published_at'], visibilityVerifiedAt=now()) + fresh = client.release() + owned_release(fresh, bindings, notes) + attempt.value.update(success=True, releaseId=fresh['id'], draft=fresh['draft'], prerelease=True) + except BaseException as error: + message = str(error) + attempt.value['error'] = client.redact(message) if client else message + attempt.value['remoteOutcome'] = 'May be partial if a request started; inspect before retry. No automatic overwrite/delete.' + raise SystemExit(1) from None + finally: + attempt.finish() + +if __name__ == '__main__': + main() diff --git a/harness/experiments/source-alias-rename-publication-20260912/release-created.json b/harness/experiments/source-alias-rename-publication-20260912/release-created.json new file mode 100644 index 00000000..e80427a8 --- /dev/null +++ b/harness/experiments/source-alias-rename-publication-20260912/release-created.json @@ -0,0 +1,6 @@ +{ + "releaseId": 6, + "tag": "v0.2.0-preview.rename.20260912", + "target": "cbc49a7802fb1bba0dd284fd904c700a0703ae70", + "atUtc": "2026-09-13T00:46:38.509160+00:00" +} diff --git a/harness/experiments/source-alias-rename-publication-20260912/upload-first/events.jsonl b/harness/experiments/source-alias-rename-publication-20260912/upload-first/events.jsonl new file mode 100644 index 00000000..b4df38e7 --- /dev/null +++ b/harness/experiments/source-alias-rename-publication-20260912/upload-first/events.jsonl @@ -0,0 +1,6 @@ +{"atUtc": "2026-09-13T00:46:50.710913+00:00", "step": "upload-request-started", "name": "ArcadiaStudio-0.2.0-preview.rename.20260912-x86_64-pc-windows-gnullvm.zip", "sha256": "d2433b5b384256b551672bf115bab40b3496aeee115e067922aedb5becf34d7e"} +{"atUtc": "2026-09-13T00:47:06.323846+00:00", "step": "uploaded-and-downloaded", "name": "ArcadiaStudio-0.2.0-preview.rename.20260912-x86_64-pc-windows-gnullvm.zip", "assetId": 17, "sha256": "d2433b5b384256b551672bf115bab40b3496aeee115e067922aedb5becf34d7e"} +{"atUtc": "2026-09-13T00:47:06.323846+00:00", "step": "upload-request-started", "name": "ArcadiaStudio-0.2.0-preview.rename.20260912-x86_64-pc-windows-gnullvm.zip.sha256", "sha256": "3b8d811c73ae0044ed0b451e8ff746f440af79b543dd52fe067a5a2e175b685f"} +{"atUtc": "2026-09-13T00:47:06.786063+00:00", "step": "uploaded-and-downloaded", "name": "ArcadiaStudio-0.2.0-preview.rename.20260912-x86_64-pc-windows-gnullvm.zip.sha256", "assetId": 18, "sha256": "3b8d811c73ae0044ed0b451e8ff746f440af79b543dd52fe067a5a2e175b685f"} +{"atUtc": "2026-09-13T00:47:06.786063+00:00", "step": "upload-request-started", "name": "VALIDATION.md", "sha256": "97fae7e742656f35a939b8e97fa060e1338314c3e2af146f03c306a59427cd4d"} +{"atUtc": "2026-09-13T00:47:07.255449+00:00", "step": "uploaded-and-downloaded", "name": "VALIDATION.md", "assetId": 19, "sha256": "97fae7e742656f35a939b8e97fa060e1338314c3e2af146f03c306a59427cd4d"} diff --git a/harness/experiments/source-alias-rename-publication-20260912/upload-first/result.json b/harness/experiments/source-alias-rename-publication-20260912/upload-first/result.json new file mode 100644 index 00000000..586ec261 --- /dev/null +++ b/harness/experiments/source-alias-rename-publication-20260912/upload-first/result.json @@ -0,0 +1,75 @@ +{ + "started": "2026-09-13T00:46:48.232488+00:00", + "action": "upload", + "tag": "v0.2.0-preview.rename.20260912", + "target": "cbc49a7802fb1bba0dd284fd904c700a0703ae70", + "success": true, + "bindings": { + "acceptanceReviewed": true, + "sourceBranch": "codex/release1-9e8r6t", + "sourceBranchHead": "506a349b32f3f869ac027d8763c501b61cf79769", + "sourceDirectory": null, + "packageDirectory": "C:/arcadia-rename-package-2/packages", + "releaseId": null, + "notesSha256": "272c1337920cb5dcd96fcd9adff87cdb0c8c12350e69d42e90d96741d3cc546b", + "validationSha256": "97fae7e742656f35a939b8e97fa060e1338314c3e2af146f03c306a59427cd4d", + "acceptanceEvidence": { + "sourceBinding": { + "path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\source-rename-package-review-20260912\\runs\\attempt-2\\result.json", + "bytes": 4699882, + "sha256": "20bfea2f1c0a9babe2a85f5a2ba158f07139ba18f9c04a971fd738e9daff24d9", + "reviewedPass": true + }, + "packageIntegrity": { + "path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\source-rename-package-review-20260912\\runs\\attempt-2\\result.json", + "bytes": 4699882, + "sha256": "20bfea2f1c0a9babe2a85f5a2ba158f07139ba18f9c04a971fd738e9daff24d9", + "reviewedPass": true + }, + "packagedServer": { + "path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\source-rename-server-runtime-20260912\\runs\\attempt-1\\result.json", + "bytes": 18679, + "sha256": "e42fb5fb8c15a9f603e9753e450613afce67caac5a0fbb806a9810ef272ec37a", + "reviewedPass": true + }, + "nativeClosure": { + "path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\source-rename-package-preparation-20260912\\trial-package-1\\closed.json", + "bytes": 373, + "sha256": "ed2a00dfa018b27a823d75605007adb0f1d997b79a807e6eb168f5a489409e7a", + "reviewedPass": true + } + } + }, + "assetHashes": { + "ArcadiaStudio-0.2.0-preview.rename.20260912-x86_64-pc-windows-gnullvm.zip": "d2433b5b384256b551672bf115bab40b3496aeee115e067922aedb5becf34d7e", + "ArcadiaStudio-0.2.0-preview.rename.20260912-x86_64-pc-windows-gnullvm.zip.sha256": "3b8d811c73ae0044ed0b451e8ff746f440af79b543dd52fe067a5a2e175b685f", + "VALIDATION.md": "97fae7e742656f35a939b8e97fa060e1338314c3e2af146f03c306a59427cd4d" + }, + "assets": [ + { + "id": 17, + "name": "ArcadiaStudio-0.2.0-preview.rename.20260912-x86_64-pc-windows-gnullvm.zip", + "bytes": 33074937, + "sha256": "d2433b5b384256b551672bf115bab40b3496aeee115e067922aedb5becf34d7e", + "url": "http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/releases/download/v0.2.0-preview.rename.20260912/ArcadiaStudio-0.2.0-preview.rename.20260912-x86_64-pc-windows-gnullvm.zip" + }, + { + "id": 18, + "name": "ArcadiaStudio-0.2.0-preview.rename.20260912-x86_64-pc-windows-gnullvm.zip.sha256", + "bytes": 140, + "sha256": "3b8d811c73ae0044ed0b451e8ff746f440af79b543dd52fe067a5a2e175b685f", + "url": "http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/releases/download/v0.2.0-preview.rename.20260912/ArcadiaStudio-0.2.0-preview.rename.20260912-x86_64-pc-windows-gnullvm.zip.sha256" + }, + { + "id": 19, + "name": "VALIDATION.md", + "bytes": 7168, + "sha256": "97fae7e742656f35a939b8e97fa060e1338314c3e2af146f03c306a59427cd4d", + "url": "http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/releases/download/v0.2.0-preview.rename.20260912/VALIDATION.md" + } + ], + "releaseId": 6, + "draft": true, + "prerelease": true, + "finished": "2026-09-13T00:47:16.254617+00:00" +} diff --git a/harness/release-source-alias-rename-published-20260912.md b/harness/release-source-alias-rename-published-20260912.md new file mode 100644 index 00000000..083978ab --- /dev/null +++ b/harness/release-source-alias-rename-published-20260912.md @@ -0,0 +1,49 @@ +# Published Windows source-alias rename preview + +[Download the prerelease](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/releases/tag/v0.2.0-preview.rename.20260912). +Publication and complete asset readback finished on September 13, 2026 at +**00:47:52.873060 UTC** (September 12 on the Windows host). Gitea release ID **6** +is public, marked prerelease, with exact source tag +`v0.2.0-preview.rename.20260912` at +**cbc49a7802fb1bba0dd284fd904c700a0703ae70**. + +Extract the complete Windows ZIP and run `arcadia-studio.exe`, retaining the +sibling `libunwind.dll`. The optional REST server, examples, offline guide and +dependency notices are included. The attached +[VALIDATION.md](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/releases/download/v0.2.0-preview.rename.20260912/VALIDATION.md) +provides exact launch/recheck commands and immutable evidence links. + +| Public asset | ID | Bytes | SHA256 | +| --- | ---: | ---: | --- | +| Windows ZIP | 17 | 33,074,937 | `d2433b5b384256b551672bf115bab40b3496aeee115e067922aedb5becf34d7e` | +| ZIP checksum | 18 | 140 | `3b8d811c73ae0044ed0b451e8ff746f440af79b543dd52fe067a5a2e175b685f` | +| `VALIDATION.md` | 19 | 7,168 | `97fae7e742656f35a939b8e97fa060e1338314c3e2af146f03c306a59427cd4d` | + +The [package acceptance report](release-source-alias-rename-package-20260912.md) +and its independent reviews were published at evidence-only commit +**506a349b32f3f869ac027d8763c501b61cf79769** before creating the tag. The +[publication records](experiments/source-alias-rename-publication-20260912/) +preserve exact reviewed notes, validation, receipt pins, helper and terminal +create/upload/publish results. Each asset was downloaded and compared byte for +byte before and after publication. No existing release or asset was overwritten. + +Gitea's `published_at` is **00:46:38 UTC**, corresponding to draft creation. +The separate public-visibility readback is **00:47:52.474878 UTC**; it is not +backdated to the API field. Tag creation used Gitea MCP with the exact source +target. The reviewed API helper then verified tag/branch identity, created an +owned draft and performed sequential upload/download/publication checks. The +earlier Git tag helper was disabled after independent configuration findings +and was never executed. + +This delivers bounded Text alias rename, preview, origin selection, Undo/Redo, +Save/reopen and corresponding packaged-server persistence evidence. Strict +Clippy, 805 desktop tests, the isolated Confirm timing check and 501 core/server +tests passed. Native evidence covers the precise simple/representative workflows +in the package report; it does not infer untested interactions. + +The binaries use development profiles. Full OA/SA release acceptance remains +incomplete, including compact Text UX, newer peer diagram/palette integration, +quantities/calculations and maintained libraries. The known Details-to-Preview +delayed-scroll-reset P2 remains explicitly disclosed and tracked in issue 9; +the separately reviewed union correction is not included here. Linux/WSL work +remains user-paused. This release does not close the overall project objective.