fix(preflight): asset mode retries a move that fails, names the cause and rolls back (#197)
CI / verify (push) Successful in 6m14s
CI / pwsh (push) Successful in 2m23s
Release / release (push) Successful in 35s

A part of the stack that will not move from the unpack folder into place is
retried for about 30 seconds; each retry removes what reached the target and
unpacks the entry afresh from the archive, so the entry ends up there once and
whole. If it still fails, both scripts take back everything they moved and exit 1
with the system's message and "nothing was installed". New test hook
CHEMENU_PREFLIGHT_MOVE_FAIL=<entry>:<n>[:partial].

Files changed:
- CHANGES.md
- INSTALL.md
- VERSION
- instructions/preflight.md
- tools/CONTRACT.md
- tools/chemenu/tests/conftest.py
- tools/chemenu/tests/test_preflight.py
- tools/chemenu/tests/test_preflight_pwsh.py
- tools/preflight.ps1
- tools/preflight.sh

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SnAJ7Z3CpVD3PRbN73QtU2
This commit is contained in:
torbenandClaude Opus 5.5 committed 2026-10-07 12:23:13 +02:00
1 parent 5915b07383
commit 5c9be38aa8
10 files changed
+379 -47

No files matched your search

+5
View File
@@ -133,6 +133,11 @@ are done; then it checks again. It may not work around the stop or install anyth
connection and let it try again; the agent does not look for another way to download. Without a
direct download you can put the tarball and its `.sha256` from the release page side by side
yourself; the agent then runs the script with `--archive <tarball>`.
- **A part of the stack could not be moved into place** (exit 1, "could not move ... into").
Usually a virus scanner briefly holding a freshly unpacked file open; the script has already
waited about 30 seconds for it. If the message says "nothing was installed", the script has
taken everything back - let the agent run it again. If it names entries it could not take
back, empty the folder yourself (keep `.git`), then run it again.
**In the unpacked tree** (every further run is `tools/preflight.sh`, or under PowerShell
`pwsh -NoProfile -ExecutionPolicy Bypass -File tools/preflight.ps1`):