Twinned from https://github.com/cfsh/ninefold/issues/1029 by tools/beads/import_github.py's reconcile pass.
Handoff from a chat-driven chunk in the argo worktree. Aedan asked to push
a live release including the orbit-view globe PR; this got most of the way
there and then stopped mid-flight for a fresh session to pick up. Everything
below is exact state as of this comment, not a plan — verify before acting
on any of it, state may have moved.
- PR #1011 (orbit-view globe terrain — continents/patches, 2x2 Game
Pixel rendering, GameState.Time, the Game Pixel/Real Pixel terminology
sweep) is merged to main at 0ec0682. Reviewer PASS (12/12), human
approved. Nothing further needed on it.
- Godot 4.7.1-stable mono export templates are now installed on this
box at /root/.local/share/godot/export_templates/4.7.1.stable.mono/
(~1.9 GB). They were empty before today — a release had never been
attempted from a Linux box here. Notably: the official template package
bundles BOTH platforms' binaries in one archive
(windows_release_x86_64.exe sits right next to linux_release.x86_64),
so "Windows export templates are Windows-side" (the old framing in
notes/machines.md) undersold it — the templates aren't platform-pinned,
only release.py's engine-lookup glob is. Whether a full win+linux
cross-export actually completes cleanly from a Linux host is still
unverified.
- PR #1028 — https://github.com/cfsh/ninefold/pull/1028 — adds
--linux-only to tools/release/release.py, deciding #570's open
question ("whether a Linux box can cut the full release, or only the
Linux half"): skips the Windows export/manifest/sync entirely rather than
touching the Windows-pinned Godot glob. Also fixes notes/machines.md's
now-stale "Releases cannot be cut" line. State right now:
- presubmit.py passes; python3 -m unittest tools.tests.test_release —
28/28 pass, including 2 new tests for --linux-only.
- rev:off removed, review requested from aedanpope, review_now.py was
kicked off and was still rev:pending (no verdict posted yet) when this
session stopped — check ./tools/pr/thread.sh 1028, it may have landed
on its own, or may need ./tools/pr/review_now.py 1028 run again.
- tools/release/* is always outside the Tier-1 perimeter (governance),
so this needs Aedan's real GitHub approval regardless of the reviewer
verdict — same gate PR #1011 hit.
- Separately: PR #1011's own review also hit a real bug worth knowing
about if you see it again — filed as unclaimed issue #1025
(ninefold-reviewer posts risk=risk:feel instead of the charter's
tier=<1|2|3>, so tools/nflib/verdict.py's parser can't recognize an
actual PASS). #1011 was merged past it with
UNCONVERGED_OK=1 ./tools/pr/merge_pr.py, justified because the PASS
was independently confirmed by reading the verdict body directly. Watch
for the same false "no verdict" refusal on #1028.
Once #1028 is merged:
1. Fetch fresh origin/main into a real main checkout — a **dedicated
worktree pinned to origin/main**, not cwal (that's another dev's
live checkout — don't touch it) and not this argo worktree (mid-chunk,
different branch). git worktree add --detach <path> origin/main is
what this session used before stopping; clean it up when done, same as
rebuild_f5.py's own worktree pattern.
2. rclone is not installed on this box at all (which rclone finds
nothing). find_rclone() checks $RCLONE_BIN, then PATH, then a
Windows-only fallback path that won't exist here — needs a real Linux
rclone binary one way or another before anything past find_rclone()
can run.
3. R2 credentials are not set anywhere on this box — checked the
current shell env and .bashrc/.profile/.zshrc//etc/environment,
all empty. release.py's r2_env() requires all three
(R2_ACCOUNT_ID, R2_ACCESS_KEY_ID, R2_SECRET_ACCESS_KEY) unconditionally
— even a --dry-run needs them, since rclone sync --dry-run still
authenticates against the real bucket to compute a diff. CREDS_HELP in
release.py has the exact setx-style recipe (Linux needs the export
equivalent); Aedan has these credentials, this box has never had them.
4. Once rclone + credentials + the merged --linux-only flag are all in
place: `GODOT_BIN=/opt/godot/Godot_v4.7.1-stable_mono_linux.x86_64
python3 tools/release/release.py --linux-only` for a dry run first
(proves the export/manifest steps work end to end without uploading
anything), then the same with --yes for the real, live, public push.
--linux-only was not yet run for real — this session validated it
only via unit tests with fakes, not a real end-to-end pass, per
DEV_PRINCIPLES.md E5 ("do not report a change as working until you
have watched it work") — that watching is what's left.
5. Report back to Aedan the version string and per-platform transfer
numbers per .claude/commands/release.md's Step 4 — this is a
Linux-only release, so say that plainly rather than letting "done"
imply Windows shipped too.
- Whether a full win+linux cross-export can actually work from a Linux host, now that the templates are confirmed to bundle both platforms — a real question, genuinely unverified, separate from today's Linux-only need. Worth a careful, isolated dry-run test (never live) before ever trusting it for a public sync.
Unclaimed — Aedan is assigning a fresh session to this.
None.
No comments.