forked from akai/readest
b76e3a3718
The assemble-manifest job promoted the manifest with single-file `rclone copyto` + `moveto`. Before a single-file upload rclone issues a CreateBucket probe (PUT /<bucket>), which the object-scoped RELEASE_R2_* token can't satisfy -> 403 AccessDenied, so nightly/latest.json was never published (the build legs and the stable release flow were fine because they use a directory `rclone copy`, which PUTs the object directly without that probe). Mirror the release flow (upload-to-r2.yml): copy a one-file directory into nightly/. R2 PutObject is atomic, so the .tmp + server-side move added nothing. Verified against the live bucket with the current token: directory copy -> 200 OK; single-file copyto -> CreateBucket 403. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>