diff --git a/harness/experiments/cli-prerelease-20260911/README.md b/harness/experiments/cli-prerelease-20260911/README.md new file mode 100644 index 00000000..85ddcc59 --- /dev/null +++ b/harness/experiments/cli-prerelease-20260911/README.md @@ -0,0 +1,47 @@ +# CLI prerelease publication records — 2026-09-11 + +These four files are exact byte copies from `.local/cli-packaging-20260911/`. +They contain sanitized publication results and release prose only. No credential, +configuration, authentication helper or upload script is included. + +| File | Bytes | SHA256 | +| --- | ---: | --- | +| `upload-binaries-verified.json` | 678 | `e945e2724020c48bfe15be7b4258861bd6c01291b98eae036eca786bb022ebde` | +| `upload-validation-verified.json` | 277 | `73581acbb5b5fe4aca1fda1b626f80a28bcb3d6c036f7ce793c62bf5a8ef4a72` | +| `published-verified.json` | 382 | `b5fe8a38579fb8399c78bca9db9fd91b64e8b7b7de7c664049cf5e615a671100` | +| `RELEASE-NOTES.md` | 2010 | `86a1b5b0744c8f63f6ed640e14b23bdbcb34b63a25320d67eb1fa7da4128a0a5` | + +All four originals use CRLF. `preserve.py` rereads source and destination bytes, +refuses any unequal existing destination, and records the inventory in +`manifest.json`. It does not upload or execute application binaries. Running it +again requires the original private source records and preserved MCP readbacks. + +`mcp-release-readback.json` and `mcp-tag-readback.json` are locally serialized +parsed responses from fresh read-only Gitea MCP calls. They are observations, +not original HTTP wire bytes. Release 2 is published as a prerelease at +`cli-v0.2.0-preview.authoring.20260911`, pointing to integration commit +`27df4a3945ebc97cd7cbde61f6aeea7a91c680d3`. + +The publisher's `notes_sha256` is +`1b83b9c904a79ff7acbde421851c9da9b520f3fa0aea920bf55fb71bea392a9d`. +It binds the **1988-byte UTF-8 LF public body**, not the raw CRLF Markdown file +above. Converting only CRLF to LF makes the preserved prose exactly equal to +the MCP public body, including its final newline. `preservation.log` records +the corrected successful check. `preservation-initial-failure.txt` discloses +the initial checker assumption and its correction; no publication changed. + +The asset readback PASS fields are the original publisher's downloaded-asset +verification, preserved without re-downloading or repeating runtime checks. +The semantic source (`01b76a1`), packaging assembly (`a0a48e8`) and release +integration (`27df4a3`) remain distinct in `manifest.json` and the report. + +Proposed repository attribute rule for root integration: + +```gitattributes +harness/experiments/cli-prerelease-20260911/** -text +``` + +The preserving worker did not edit `.gitattributes` or Git state. Root must +apply the rule before adding these exact evidence bytes and verify index or +checkout hashes. The standalone report is +`harness/release-cli-prerelease-published-20260911.md`. diff --git a/harness/experiments/cli-prerelease-20260911/RELEASE-NOTES.md b/harness/experiments/cli-prerelease-20260911/RELEASE-NOTES.md new file mode 100644 index 00000000..18dec809 --- /dev/null +++ b/harness/experiments/cli-prerelease-20260911/RELEASE-NOTES.md @@ -0,0 +1,22 @@ +Standalone Windows x64 tools for `.arcadia` projects: `check`/`lint`, missing-ID stabilization and semantic alias rename. Editing commands preview by default; `--write` saves through the shared source conflict/recovery guards. Studio and a server are not required. + +Extract the complete ArcadiaCLI ZIP, keep `libunwind.dll` beside `arcadia.exe`, and open a terminal in that folder: + +```powershell +.\arcadia.exe --help +.\arcadia.exe check examples/text-first/project.arcadia +``` + +Copy a complete example folder before editing. Read `docs/source-cli.md` for command, diagnostic and exit-code contracts. Preview IDs remain provisional until saved; a later invocation can generate different missing IDs. + +Verified: 12 source CLI tests, strict lint/format/build, independent 183 semantic assertions across 21 processes, all 114 packaged files and 27 dependency packages, plus independent source/default compatibility and 156 assertions across 10 clean extracted CLI invocations. Preview, exact stabilization/rename, preserved identities/comments/Unicode/CRLF, no-op timestamps and invalid-source refusal passed. ZIP, checksum and validation asset were downloaded and hash-verified after upload. + +This is a development-profile Windows preview. It does not provide a saved-plan/digest protocol, complete large-model text ergonomics or current Linux runtime acceptance. It is separate from the [Studio preview](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/releases/tag/v0.2.0-preview.authoring.20260911). The full OA/SA release remains under development. + +Release checkpoint: [27df4a3](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/commit/27df4a3945ebc97cd7cbde61f6aeea7a91c680d3). Preserved semantic build source is `01b76a1`; packaging-only assembly is `a0a48e8`. Attached `VALIDATION.md` records exact evidence and the distinct source/build roles. + +ZIP size: **5,091,267 bytes**. SHA256: + +```text +2B051F8CE1EA4F59EE7E233E1FBD516D423AADBFBCA5D549755CBE78FCDE1AF6 +``` diff --git a/harness/experiments/cli-prerelease-20260911/manifest.json b/harness/experiments/cli-prerelease-20260911/manifest.json new file mode 100644 index 00000000..69408b45 --- /dev/null +++ b/harness/experiments/cli-prerelease-20260911/manifest.json @@ -0,0 +1,96 @@ +{ + "scope": "Publication evidence preservation and read-only MCP release/tag comparison; no runtime tests or asset re-download.", + "release_id": 2, + "tag": "cli-v0.2.0-preview.authoring.20260911", + "publication_url": "http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/releases/tag/cli-v0.2.0-preview.authoring.20260911", + "published_at": "2026-09-11T12:50:39Z", + "source_roles": { + "semantic_source": "01b76a1e89e93b7992f39e63560aa8b2ca2f69e0", + "packaging_assembly": "a0a48e82bd43be181caca1fe2c1514c21f2bc405", + "release_integration": "27df4a3945ebc97cd7cbde61f6aeea7a91c680d3" + }, + "assets": [ + { + "id": 4, + "name": "ArcadiaCLI-0.2.0-preview.authoring.20260911-x86_64-pc-windows-gnullvm.zip", + "bytes": 5091267, + "sha256": "2b051f8ce1ea4f59ee7e233e1fbd516d423aadbfbca5d549755cbe78fcde1af6", + "url": "http://217.177.34.108:3000/attachments/024ac74c-8806-4da2-9ca4-726c01a7735f", + "readback": "PASS" + }, + { + "id": 5, + "name": "ArcadiaCLI-0.2.0-preview.authoring.20260911-x86_64-pc-windows-gnullvm.zip.sha256", + "bytes": 140, + "sha256": "0dc3f12d2f79edfb735e311298d1528cbdb828b775ec885b3badde24e66bceef", + "url": "http://217.177.34.108:3000/attachments/24af1b92-ce23-41e3-bc25-60fed95a6270", + "readback": "PASS" + }, + { + "id": 6, + "name": "VALIDATION.md", + "bytes": 50297, + "sha256": "5a0206b493bf1ca98fe931243452a9092cdf2acf10f4e3fd0a7ee9a7d8f56ec8", + "url": "http://217.177.34.108:3000/attachments/628863de-e4ff-4fc7-afdb-45b071705d7b", + "readback": "PASS" + } + ], + "files": [ + { + "path": "upload-binaries-verified.json", + "source": ".local/cli-packaging-20260911/upload-binaries-verified.json", + "bytes": 678, + "sha256": "e945e2724020c48bfe15be7b4258861bd6c01291b98eae036eca786bb022ebde", + "crlf_sequences": 17, + "bare_lf_sequences": 0, + "method": "exact byte copy; source and destination reread equal" + }, + { + "path": "upload-validation-verified.json", + "source": ".local/cli-packaging-20260911/upload-validation-verified.json", + "bytes": 277, + "sha256": "73581acbb5b5fe4aca1fda1b626f80a28bcb3d6c036f7ce793c62bf5a8ef4a72", + "crlf_sequences": 9, + "bare_lf_sequences": 0, + "method": "exact byte copy; source and destination reread equal" + }, + { + "path": "published-verified.json", + "source": ".local/cli-packaging-20260911/published-verified.json", + "bytes": 382, + "sha256": "b5fe8a38579fb8399c78bca9db9fd91b64e8b7b7de7c664049cf5e615a671100", + "crlf_sequences": 9, + "bare_lf_sequences": 0, + "method": "exact byte copy; source and destination reread equal" + }, + { + "path": "RELEASE-NOTES.md", + "source": ".local/cli-packaging-20260911/RELEASE-NOTES.md", + "bytes": 2010, + "sha256": "86a1b5b0744c8f63f6ed640e14b23bdbcb34b63a25320d67eb1fa7da4128a0a5", + "crlf_sequences": 22, + "bare_lf_sequences": 0, + "method": "exact byte copy; source and destination reread equal" + }, + { + "path": "mcp-release-readback.json", + "bytes": 2495, + "sha256": "e0a1d9324cd7a115e22c87c7905489aec81d30277a17b4480866380cbec8edb1", + "method": "MCP read-only parsed response, locally serialized as UTF-8 JSON; not original HTTP wire bytes" + }, + { + "path": "mcp-tag-readback.json", + "bytes": 196, + "sha256": "bb770f30f292b65ca4af28d688f0f1dc1d04fb918b10f527a56ba847d44e9b2e", + "method": "MCP read-only parsed response, locally serialized as UTF-8 JSON; not original HTTP wire bytes" + } + ], + "checks": { + "four_exact_copies": true, + "release_and_tag_match": true, + "published_flags_and_time_match": true, + "normalized_notes_hash_matches_publisher_record": true, + "notes_match_public_body_after_CRLF_to_LF_only": true, + "asset_records_are_original_publisher_readbacks": true + } +} diff --git a/harness/experiments/cli-prerelease-20260911/mcp-release-readback.json b/harness/experiments/cli-prerelease-20260911/mcp-release-readback.json new file mode 100644 index 00000000..4e315d46 --- /dev/null +++ b/harness/experiments/cli-prerelease-20260911/mcp-release-readback.json @@ -0,0 +1,13 @@ +{ + "author": "Codex-9e8r6t", + "body": "Standalone Windows x64 tools for `.arcadia` projects: `check`/`lint`, missing-ID stabilization and semantic alias rename. Editing commands preview by default; `--write` saves through the shared source conflict/recovery guards. Studio and a server are not required.\n\nExtract the complete ArcadiaCLI ZIP, keep `libunwind.dll` beside `arcadia.exe`, and open a terminal in that folder:\n\n```powershell\n.\\arcadia.exe --help\n.\\arcadia.exe check examples/text-first/project.arcadia\n```\n\nCopy a complete example folder before editing. Read `docs/source-cli.md` for command, diagnostic and exit-code contracts. Preview IDs remain provisional until saved; a later invocation can generate different missing IDs.\n\nVerified: 12 source CLI tests, strict lint/format/build, independent 183 semantic assertions across 21 processes, all 114 packaged files and 27 dependency packages, plus independent source/default compatibility and 156 assertions across 10 clean extracted CLI invocations. Preview, exact stabilization/rename, preserved identities/comments/Unicode/CRLF, no-op timestamps and invalid-source refusal passed. ZIP, checksum and validation asset were downloaded and hash-verified after upload.\n\nThis is a development-profile Windows preview. It does not provide a saved-plan/digest protocol, complete large-model text ergonomics or current Linux runtime acceptance. It is separate from the [Studio preview](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/releases/tag/v0.2.0-preview.authoring.20260911). The full OA/SA release remains under development.\n\nRelease checkpoint: [27df4a3](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/commit/27df4a3945ebc97cd7cbde61f6aeea7a91c680d3). Preserved semantic build source is `01b76a1`; packaging-only assembly is `a0a48e8`. Attached `VALIDATION.md` records exact evidence and the distinct source/build roles.\n\nZIP size: **5,091,267 bytes**. SHA256:\n\n```text\n2B051F8CE1EA4F59EE7E233E1FBD516D423AADBFBCA5D549755CBE78FCDE1AF6\n```\n", + "created_at": "2026-09-11T12:50:39Z", + "draft": false, + "html_url": "http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/releases/tag/cli-v0.2.0-preview.authoring.20260911", + "id": 2, + "prerelease": true, + "published_at": "2026-09-11T12:50:39Z", + "tag_name": "cli-v0.2.0-preview.authoring.20260911", + "target": "27df4a3945ebc97cd7cbde61f6aeea7a91c680d3", + "title": "Arcadia CLI — standalone Windows authoring preview" +} diff --git a/harness/experiments/cli-prerelease-20260911/mcp-tag-readback.json b/harness/experiments/cli-prerelease-20260911/mcp-tag-readback.json new file mode 100644 index 00000000..acec68e6 --- /dev/null +++ b/harness/experiments/cli-prerelease-20260911/mcp-tag-readback.json @@ -0,0 +1,5 @@ +{ + "commit_sha": "27df4a3945ebc97cd7cbde61f6aeea7a91c680d3", + "message": "Package standalone source CLI with verified runtime and notices\n", + "name": "cli-v0.2.0-preview.authoring.20260911" +} diff --git a/harness/experiments/cli-prerelease-20260911/preservation-initial-failure.txt b/harness/experiments/cli-prerelease-20260911/preservation-initial-failure.txt new file mode 100644 index 00000000..f0cfb7ab --- /dev/null +++ b/harness/experiments/cli-prerelease-20260911/preservation-initial-failure.txt @@ -0,0 +1,16 @@ +Initial preservation checker stopped after copying the four files unchanged: + +Traceback (most recent call last): + File "C:\Users\User\Documents\Git\ARCADIA-Studio\harness\experiments\cli-prerelease-20260911\preserve.py", line 35, in + assert hashlib.sha256(notes).hexdigest() == publication['notes_sha256'] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AssertionError + +The checker incorrectly assumed notes_sha256 meant local raw Markdown bytes. +Read-only comparison established that it instead exactly matches the LF public +release body. Local CRLF bytes remain preserved unchanged; CRLF-to-LF conversion +alone yields the public body and the publisher's recorded hash. The corrected +checker records both identities, without changing any publication asset or the +four source records. A subsequent temporary PowerShell comparison command had +an empty-pipeline parse error and was corrected before producing the comparison; +it made no file changes. diff --git a/harness/experiments/cli-prerelease-20260911/preservation.log b/harness/experiments/cli-prerelease-20260911/preservation.log new file mode 100644 index 00000000..382867a5 --- /dev/null +++ b/harness/experiments/cli-prerelease-20260911/preservation.log @@ -0,0 +1,42 @@ +{ + "result": "PASS", + "copied_files": [ + { + "path": "upload-binaries-verified.json", + "source": ".local/cli-packaging-20260911/upload-binaries-verified.json", + "bytes": 678, + "sha256": "e945e2724020c48bfe15be7b4258861bd6c01291b98eae036eca786bb022ebde", + "crlf_sequences": 17, + "bare_lf_sequences": 0, + "method": "exact byte copy; source and destination reread equal" + }, + { + "path": "upload-validation-verified.json", + "source": ".local/cli-packaging-20260911/upload-validation-verified.json", + "bytes": 277, + "sha256": "73581acbb5b5fe4aca1fda1b626f80a28bcb3d6c036f7ce793c62bf5a8ef4a72", + "crlf_sequences": 9, + "bare_lf_sequences": 0, + "method": "exact byte copy; source and destination reread equal" + }, + { + "path": "published-verified.json", + "source": ".local/cli-packaging-20260911/published-verified.json", + "bytes": 382, + "sha256": "b5fe8a38579fb8399c78bca9db9fd91b64e8b7b7de7c664049cf5e615a671100", + "crlf_sequences": 9, + "bare_lf_sequences": 0, + "method": "exact byte copy; source and destination reread equal" + }, + { + "path": "RELEASE-NOTES.md", + "source": ".local/cli-packaging-20260911/RELEASE-NOTES.md", + "bytes": 2010, + "sha256": "86a1b5b0744c8f63f6ed640e14b23bdbcb34b63a25320d67eb1fa7da4128a0a5", + "crlf_sequences": 22, + "bare_lf_sequences": 0, + "method": "exact byte copy; source and destination reread equal" + } + ], + "release_target": "27df4a3945ebc97cd7cbde61f6aeea7a91c680d3" +} diff --git a/harness/experiments/cli-prerelease-20260911/preserve.py b/harness/experiments/cli-prerelease-20260911/preserve.py new file mode 100644 index 00000000..81db33fa --- /dev/null +++ b/harness/experiments/cli-prerelease-20260911/preserve.py @@ -0,0 +1,62 @@ +"""Preserve four sanitized publication records; never read credentials or upload.""" +import hashlib +import json +from pathlib import Path + +destination = Path(__file__).resolve().parent +repository = destination.parents[2] +source = repository / '.local/cli-packaging-20260911' +names = ['upload-binaries-verified.json', 'upload-validation-verified.json', + 'published-verified.json', 'RELEASE-NOTES.md'] +records = [] +for name in names: + data = (source / name).read_bytes() + target = destination / name + if not target.exists(): + with target.open('xb') as output: + output.write(data) + assert target.read_bytes() == data + records.append({'path': name, 'source': '.local/cli-packaging-20260911/' + name, + 'bytes': len(data), 'sha256': hashlib.sha256(data).hexdigest(), + 'crlf_sequences': data.count(b'\r\n'), + 'bare_lf_sequences': data.count(b'\n') - data.count(b'\r\n'), + 'method': 'exact byte copy; source and destination reread equal'}) +def read(name): + return json.loads((destination / name).read_text(encoding='utf-8-sig')) +publication = read('published-verified.json') +release = read('mcp-release-readback.json') +tag = read('mcp-tag-readback.json') +assert publication['id'] == release['id'] == 2 +assert publication['tag'] == release['tag_name'] == tag['name'] == 'cli-v0.2.0-preview.authoring.20260911' +assert publication['draft'] is release['draft'] is False +assert publication['prerelease'] is release['prerelease'] is True +assert release['target'] == tag['commit_sha'] == '27df4a3945ebc97cd7cbde61f6aeea7a91c680d3' +assert publication['published_at'] == release['published_at'] == '2026-09-11T12:50:39Z' +notes = (destination / 'RELEASE-NOTES.md').read_bytes() +# The publisher's recorded hash binds the LF public body, not the local CRLF +# file. Keep both exact identities and prove the sole normalization explicitly. +normalized_notes = notes.decode('utf-8-sig').replace('\r\n', '\n') +assert hashlib.sha256(normalized_notes.encode('utf-8')).hexdigest() == publication['notes_sha256'] +assert normalized_notes == release['body'] +assets = read('upload-binaries-verified.json') + read('upload-validation-verified.json') +assert len(assets) == publication['asset_count'] == 3 +assert all(item['readback'] == 'PASS' for item in assets) +assert assets[0]['sha256'] == '2b051f8ce1ea4f59ee7e233e1fbd516d423aadbfbca5d549755cbe78fcde1af6' +assert assets[0]['bytes'] == 5091267 +for name in ['mcp-release-readback.json', 'mcp-tag-readback.json']: + data = (destination / name).read_bytes() + records.append({'path': name, 'bytes': len(data), 'sha256': hashlib.sha256(data).hexdigest(), + 'method': 'MCP read-only parsed response, locally serialized as UTF-8 JSON; not original HTTP wire bytes'}) +result = {'scope': 'Publication evidence preservation and read-only MCP release/tag comparison; no runtime tests or asset re-download.', + 'release_id': 2, 'tag': tag['name'], 'publication_url': release['html_url'], + 'published_at': release['published_at'], 'source_roles': { + 'semantic_source': '01b76a1e89e93b7992f39e63560aa8b2ca2f69e0', + 'packaging_assembly': 'a0a48e82bd43be181caca1fe2c1514c21f2bc405', + 'release_integration': release['target']}, + 'assets': assets, 'files': records, + 'checks': {'four_exact_copies': True, 'release_and_tag_match': True, + 'published_flags_and_time_match': True, 'normalized_notes_hash_matches_publisher_record': True, + 'notes_match_public_body_after_CRLF_to_LF_only': True, + 'asset_records_are_original_publisher_readbacks': True}} +(destination / 'manifest.json').write_text(json.dumps(result, indent=2) + '\n', encoding='utf-8', newline='\n') +print(json.dumps({'result': 'PASS', 'copied_files': records[:4], 'release_target': release['target']}, indent=2)) diff --git a/harness/experiments/cli-prerelease-20260911/published-verified.json b/harness/experiments/cli-prerelease-20260911/published-verified.json new file mode 100644 index 00000000..d100660f --- /dev/null +++ b/harness/experiments/cli-prerelease-20260911/published-verified.json @@ -0,0 +1,10 @@ +{ + "id": 2, + "tag": "cli-v0.2.0-preview.authoring.20260911", + "url": "http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/releases/tag/cli-v0.2.0-preview.authoring.20260911", + "draft": false, + "prerelease": true, + "asset_count": 3, + "notes_sha256": "1b83b9c904a79ff7acbde421851c9da9b520f3fa0aea920bf55fb71bea392a9d", + "published_at": "2026-09-11T12:50:39Z" +} \ No newline at end of file diff --git a/harness/experiments/cli-prerelease-20260911/upload-binaries-verified.json b/harness/experiments/cli-prerelease-20260911/upload-binaries-verified.json new file mode 100644 index 00000000..7c85e413 --- /dev/null +++ b/harness/experiments/cli-prerelease-20260911/upload-binaries-verified.json @@ -0,0 +1,18 @@ +[ + { + "id": 4, + "name": "ArcadiaCLI-0.2.0-preview.authoring.20260911-x86_64-pc-windows-gnullvm.zip", + "bytes": 5091267, + "sha256": "2b051f8ce1ea4f59ee7e233e1fbd516d423aadbfbca5d549755cbe78fcde1af6", + "url": "http://217.177.34.108:3000/attachments/024ac74c-8806-4da2-9ca4-726c01a7735f", + "readback": "PASS" + }, + { + "id": 5, + "name": "ArcadiaCLI-0.2.0-preview.authoring.20260911-x86_64-pc-windows-gnullvm.zip.sha256", + "bytes": 140, + "sha256": "0dc3f12d2f79edfb735e311298d1528cbdb828b775ec885b3badde24e66bceef", + "url": "http://217.177.34.108:3000/attachments/24af1b92-ce23-41e3-bc25-60fed95a6270", + "readback": "PASS" + } +] \ No newline at end of file diff --git a/harness/experiments/cli-prerelease-20260911/upload-validation-verified.json b/harness/experiments/cli-prerelease-20260911/upload-validation-verified.json new file mode 100644 index 00000000..398ab7b0 --- /dev/null +++ b/harness/experiments/cli-prerelease-20260911/upload-validation-verified.json @@ -0,0 +1,10 @@ +[ + { + "id": 6, + "name": "VALIDATION.md", + "bytes": 50297, + "sha256": "5a0206b493bf1ca98fe931243452a9092cdf2acf10f4e3fd0a7ee9a7d8f56ec8", + "url": "http://217.177.34.108:3000/attachments/628863de-e4ff-4fc7-afdb-45b071705d7b", + "readback": "PASS" + } +] \ No newline at end of file diff --git a/harness/release-cli-prerelease-published-20260911.md b/harness/release-cli-prerelease-published-20260911.md new file mode 100644 index 00000000..b7573f7b --- /dev/null +++ b/harness/release-cli-prerelease-published-20260911.md @@ -0,0 +1,52 @@ +# Published standalone CLI prerelease — 2026-09-11 + +Owner: Codex-9e8r6t /root/palette_finish. This task preserves publication evidence and independently checks read-only release/tag metadata. It performs no production edits, Git operations, compiler or native input, credential access, upload, asset download or repeated runtime tests. + +## Published milestone + +[Arcadia CLI — standalone Windows authoring preview](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/releases/tag/cli-v0.2.0-preview.authoring.20260911) is release **2**, published **2026-09-11 12:50:39 UTC**, `draft: false`, `prerelease: true`. Fresh Gitea MCP `get_release(id:2)` and `get_tag` readbacks independently agree on tag `cli-v0.2.0-preview.authoring.20260911` and target `27df4a3945ebc97cd7cbde61f6aeea7a91c680d3`. + +The publication roles are deliberately distinct: + +| Role | Commit | Meaning | +| --- | --- | --- | +| Semantic source | `01b76a1e89e93b7992f39e63560aa8b2ca2f69e0` | Preserved source CLI implementation, workspace and lock corresponding to the verified BAD169F8 executable | +| Packaging assembly | `a0a48e82bd43be181caca1fe2c1514c21f2bc405` | Isolated packaging-only changes used to assemble the verified ZIP | +| Release integration | `27df4a3945ebc97cd7cbde61f6aeea7a91c680d3` | Published tag checkpoint integrating the packaging files and evidence; not relabeled as original compiler inputs | + +## Preserved upload results + +Root's original readback records report three uploaded assets, each downloaded and hash-verified by the publisher. This preservation task does not repeat those downloads. + +| Asset / id | Bytes | SHA256 | +| --- | ---: | --- | +| `ArcadiaCLI-0.2.0-preview.authoring.20260911-x86_64-pc-windows-gnullvm.zip` / 4 | 5091267 | `2b051f8ce1ea4f59ee7e233e1fbd516d423aadbfbca5d549755cbe78fcde1af6` | +| ZIP `.sha256` / 5 | 140 | `0dc3f12d2f79edfb735e311298d1528cbdb828b775ec885b3badde24e66bceef` | +| `VALIDATION.md` / 6 | 50297 | `5a0206b493bf1ca98fe931243452a9092cdf2acf10f4e3fd0a7ee9a7d8f56ec8` | + +The ZIP contains 114 files and the exact BAD169F8 CLI plus F456 runtime, with 27 dependency packages. Author packaging and independent runtime gates are documented in `release-cli-packaging-20260911.md` and `release-cli-packaging-review-20260911.md`; the latter records 156 assertions across 10 fresh extracted CLI processes. These existing results are attributed to those runs, not newly executed here. + +## Exact-byte evidence + +New durable directory: `harness/experiments/cli-prerelease-20260911/`. `README.md` and `manifest.json` inventory the exact copies, source paths, byte lengths and hashes: + +| Copied record | Bytes | SHA256 | +| --- | ---: | --- | +| `upload-binaries-verified.json` | 678 | `e945e2724020c48bfe15be7b4258861bd6c01291b98eae036eca786bb022ebde` | +| `upload-validation-verified.json` | 277 | `73581acbb5b5fe4aca1fda1b626f80a28bcb3d6c036f7ce793c62bf5a8ef4a72` | +| `published-verified.json` | 382 | `b5fe8a38579fb8399c78bca9db9fd91b64e8b7b7de7c664049cf5e615a671100` | +| `RELEASE-NOTES.md` | 2010 | `86a1b5b0744c8f63f6ed640e14b23bdbcb34b63a25320d67eb1fa7da4128a0a5` | + +All four copies match their private originals byte for byte and retain CRLF. Only these sanitized records were copied; no credentials or upload helpers were read or included. Additional files hold the preserving checker, its result, disclosed initial checker failure, parsed MCP observations and the inventory. + +One evidence distinction was verified explicitly: `published-verified.json` stores `notes_sha256 = 1b83b9c904a79ff7acbde421851c9da9b520f3fa0aea920bf55fb71bea392a9d`, which matches the **1988-byte LF public release body**. It does not equal the 2010-byte raw CRLF Markdown hash above. CRLF-to-LF conversion alone reproduces the public body exactly, including the final newline. An initial checker incorrectly assumed this was a raw-file hash and stopped; its failure is retained, and the corrected check passed without changing any source record or public content. A temporary comparison command also had a corrected PowerShell syntax error and made no changes. + +Recommended exact-byte rule for root to add before Git integration: + +```gitattributes +harness/experiments/cli-prerelease-20260911/** -text +``` + +This worker did not edit attributes or Git state. Root owns integration, common ledger/Wiki updates and any further publication work. + +This is a development-profile Windows CLI milestone. It is not full OA/SA product acceptance, current Linux runtime acceptance, a saved-plan/digest protocol, or complete large-model textual ergonomics acceptance.