7.7 KiB
Standalone CLI Windows packaging — 2026-09-11
Owner: Codex-9e8r6t /root/palette_finish. Root authorized implementation and isolated packaging; native acceptance, independent review, publication and credentials remain outside this worker's lease.
Implementation and safety boundary
scripts/package-cli-windows.ps1 creates a distinct ArcadiaCLI-<version>-<target>.zip from the prebuilt arcadia.exe. It requires an explicit build-evidence file and target, preserves the existing output-claim/no-overwrite behavior, checks the executable and runtime imports before staging, rechecks inspected hashes while copying, writes notices and checksums, and performs full deterministic ZIP membership/hash readback. Its returned acceptance status remains Pending.
The shared ordinary PE32+ reader, system-DLL allowlist, target/runtime selection and recursive ordinary-import check now live in package-common.ps1. The existing Studio packager has only the mechanical call-site replacement. Required files receive the existing ordinary-file/reparse check before inspection. Unknown imports, including unknown transitive runtime imports, still fail. Dynamic/delay imports remain a runtime-acceptance boundary. Common staging, notice, checksum and build-evidence helpers are reused; the new ZIP helper uses the existing reviewed Windows archive/readback algorithm.
Get-ArcadiaNotices adds only oa-cli to its allowed roots. Its default remains exactly oa-desktop,oa-server; the CLI entry point explicitly requests oa-cli. All locked/offline graph, local-source, crate archive, embedded-font, checksum-bound supplement, Rust and runtime requirements remain active. No registry dependencies or new license fallback were added.
The document helper accepts --product cli; omitted/default studio retains its original roots. CLI roots contain the CLI contract, language source/HTML, complete text-first example and complete linked release1 model/evidence. This avoids shipping the release1 walkthrough without the model it tells readers to copy. Relative document links are traversed and checked using the existing helper. The CLI README distinguishes packaged executable usage from source-checkout Cargo instructions and from Studio-specific example controls. No parser, core, CLI executable source, desktop behavior, common guide or grammar edits were made.
Focused verification
Commands use the configured PowerShell and bundled Python, without Cargo or native application execution:
& scripts/test-package-cli-windows.ps1
& scripts/test-windows-notices.ps1
& 'C:\Users\User\.cache\codex-runtimes\codex-primary-runtime\dependencies\python\python.exe' scripts/test-package-artifacts.py
- 15 inert Windows/CLI assertions passed: system imports, CLI-only binary set, missing Studio/server inputs, gnullvm runtime requirement, unsupported target, unknown direct/transitive imports, wrong PE architecture, runtime/license closure, build-evidence hash/target mismatch, exact deterministic ZIP, overwrite refusal preserving bytes, and input mutation after inspection.
- 13 Python packaging tests passed, including the original ELF/archive/document/notice invariants, explicit CLI transitive document closure and refusal, complete linked modular example selection, and exact default-versus-explicit Studio document roots. Initial run 0.954 seconds; after complete-example/readme refinement, final 1.252 seconds.
- Expanded existing notice suite passed, including explicit CLI graph selection, unchanged desktop/server defaults and unknown-root rejection, together with prior normal/build/dev selection, Linux-server notices, runtime/source/font/supplement safety cases.
- The extracted helper was also applied to the actual frozen D4D9 Studio, EFEE server and F456 runtime. Its complete import lists match the prior frozen Studio package metadata exactly.
Logs are under .local/cli-packaging-20260911/: windows-initial.log, notices-initial.log, artifacts-initial.log, artifacts-final.log. No failed compiler/package gate is hidden here; none has occurred at this checkpoint. The source diff's two whitespace-only helper lines were removed before staging.
Exact source and artifact assembly
The semantic source basis is published commit 01b76a1e89e93b7992f39e63560aa8b2ca2f69e0. An isolated checkout at .local/cli-packaging-20260911/source adds packaging-only auxiliary commits 8619708105c1851df58690c605001e22100a26ea and a0a48e82bd43be181caca1fe2c1514c21f2bc405. The latter is the assembly basis, not an original compiler-input claim. Main-tree packaging edits remain for root integration; these private commits do not publish anything.
prepare.py independently verified six recorded CLI input hashes (root Cargo manifest/lock, CLI manifest, library, main and integration test), and 95 unchanged core/shared build input hashes. It copied and rehashed the frozen executable and runtime. preparation.json retains these input comparisons. Original evidence is .local/source-cli-20260911/verified/manifest.json; original build command was cargo build --locked --offline -p oa-cli --bin arcadia, successful at 2026-09-11T11:45:43.6035381Z, duration 9.7336637 seconds. Prior author 12-test/strict-Clippy gates and independent 183 assertions/21 process invocations are recorded in their respective source-CLI reports, not rerun or reattributed by packaging.
| Input | Bytes | SHA256 |
|---|---|---|
.local/source-cli-20260911/verified/arcadia.exe |
20312064 | bad169f8be78dcfa74b32714569c886dd2132727080684fc2ba618d5822e3559 |
.local/source-cli-20260911/verified/libunwind.dll |
190976 | f45604a12e8bcd839fd86f667c1be1cc7c4f9da2b3c69ff381ac708f0e1ae7d4 |
Compiler evidence is Rust 1.98.1 commit 48a229ceaefd4985c50990b14116b6d856af0985, Windows gnullvm, LLVM22.1.8; the frozen executable embeds that compiler path. Prior inventory compared the current toolchain and 58 target-library hashes. This is preserved development-profile output, not a release-profile or reproducible-build claim. build-evidence.json distinguishes the semantic source and later packaging assembly basis explicitly.
Strict package and frozen handoff
After release_audit's final GUI/format gates terminated, it explicitly granted the metadata slot. The isolated invocation .local/cli-packaging-20260911/package.ps1 passed on its first run, starting 2026-09-11T12:36:52.6900250Z, finishing 12:37:33.7683084Z, duration 41.084165 seconds. No semantic binary build or native application execution occurred. The slot was explicitly released at terminal completion.
Frozen archive: .local/cli-packaging-20260911/packages/ArcadiaCLI-0.2.0-preview.authoring.20260911-x86_64-pc-windows-gnullvm.zip.
| Result | Measured value |
|---|---|
| ZIP bytes | 5091267 |
| Package files | 114 |
| SHA256 | 2b051f8ce1ea4f59ee7e233e1fbd516d423aadbfbca5d549755cbe78fcde1af6 |
| Strict notice graph | 27 packages, sole declared root oa-cli |
| Original CLI lock hash | 2b960242c33eb839ff008d01731f6d5cdb4e047ca8cd6e13151cbf9c09913510 |
| Checked local documentation links | 9 |
| Full ZIP membership/hash readback | PASS |
| Native acceptance returned by script | Pending |
assembly.json records final packaging-file hashes after the explicit-entry README correction and supersedes the initial packaging-file subset in preparation.json; both retain the original semantic input comparison. package-initial.log, package-initial-result.json, build-evidence.json, the package directory and sibling checksum retain the measured run. The ZIP and stage are frozen. Root and the independent reviewer received the exact identity and source boundary. Clean extracted CLI execution and independent review belong to that reviewer; publication belongs to root. Neither is claimed by this author result.