R2 + local cache health checklist (sky orgs joint doctrine, reconstructed 2026-08-01)
Ratified 2026-07-10 by both sky orgs. This document was RECONSTRUCTED on 2026-08-01 after the original gist 404'd: the item list below is the ratified scope recorded verbatim in the binary-lsp-php-server CLAUDE.md; the commands and thresholds were re-derived from the repos' release tooling (ship.sh both repos, release-preflight.sh) and validated end-to-end during the acuity 0.1.44 + skyline 1.2.3 release of 2026-08-01. Items whose original wording may have differed are the checks, not the scope. The addendum at the bottom is post-ratification field knowledge, kept separate on purpose.
Run this after ANY release or daemon promote, and in the weekly sweep.
The channel index must describe the bytes it serves.
- acuity:
curl -s https://lsp.skylence.be/php-mcp/index.json: the released version present for every platform, each entry carryingsha256+size. Download one binary andshasum -a 256it against the index entry (php-serverscripts/ship.sh --verify-only VERSIONdoes index poll + download + matrix in one command). - skyline:
npm view @skylence-ai/skyline versionAND every platform package (skyline-darwin-arm64,skyline-win32-x64,skyline-win32-arm64) equal the target (skylinescripts/ship.shnpm-verify stage).
The index can be ahead of the edge (or one edge ahead of another) right after publish. Poll until stable: ship.sh polls every 15s up to 600s. On a skew suspicion, fetch the index twice ~30s apart and from a second network path before concluding corruption.
The box's LSP/MCP binary cache must not silently pin agents to an old build.
- Cache location: skyline's autofetch cache (newest cached version dir wins).
- After an acuity release:
pkill -x acuity-mcp-serverso daemon children respawn and lazily adopt the new version (php-server ship.sh refresh stage does this; it does NOT touch the daemon itself). - Verify adoption: one live PHP tool call through skyline, then check the spawned child is the new version.
skyline daemon status(orcurl -s http://127.0.0.1:7333/api/version): version == released target, persist == installed, uptime sane.- Env contract: daemon children inherit the DAEMON's env, not any pane's. Anything the children need (workspace roots, pack dirs) must be in the launchd plist / daemon env, never assumed from a shell.
- Check
last panicin daemon status output; a fresh panic after promote is a rollback signal.
df -g /: release builds on the self-hosted runner (this box) want
= 15 GB free (release-preflight.sh MIN_FREE_GB). Reclaim order: own build targets (
cargo cleanon dev checkouts and discarded-workspace leftovers), then worktree debris (item 6), never shared caches mid-release.
ls ~/Code/skylence-be/sky-binaries-wt/ (and *-workspaces/ dirs).
Delete ONLY what is provably safe: clean tree AND branch merged into (or HEAD
ancestor of) its repo's origin default branch. Keep anything dirty, unmerged,
or unproven; it is another org's (or a human's) work in progress.
git -C <wt> status --porcelain + git merge-base --is-ancestor HEAD origin/main is the proof pair. Registered worktrees leave via
git worktree remove, skyrift workspaces via workspace_discard, never rm.
Accuracy-bench and proving-ground runs pin binary versions; after a release,
stale pins silently bench the old build. Check the bench configs/workflow pins
reference the released version (or an explicit intentional pin), and that
accuracy-bench.yml / proving-ground matrices in CI run against the version
they claim to.
BEFORE any daemon promote: know the license/terms gate state. skyline
ship.sh runs a canary boot of the new binary on a scratch port (7401+ base,
never 7333) and aborts the promote if the terms gate blocks it.
--accept-license records assent and is the OPERATOR'S call exclusively; a
release must never pass it silently. A canary abort on the terms gate is a
question for the operator, not a failure to work around.
- 2026-08-01: daemon-spawned shells resolve
python3to macOS system 3.9; php-server'srun_matrix.pyneeds >= 3.10. PrefixPATH=/opt/homebrew/binfor any artifact-verify run driven from a daemon shell. - 2026-08-01: this box's proving-ground baseline is 22/24 (magic-model-clean, vendor-declared-at-contained) because two lock packages have no published vendor packs in the channel. Diff matrix results against the PREVIOUS released binary before reading a red as a regression.
- 2026-08-01: both sky-binaries release repos gitignore
.skyrift/.skyrift-workspace, so ship preflight clean-tree checks pass from skyrift workspace clones. Cutting a release from a clone of committed main is the sanctioned route around a dirty shared checkout. - 2026-08-01: skyline
ship.sh --detachis MANDATORY when driven from a session whose MCP transport rides the 7333 daemon; the promote tail logs to$TMPDIR/ship-promote-<version>.logand survives the transport drop. - 2026-08-09: disk headroom now has tooling with known gaps. The runner-gc workflow (binary-skyline, dispatch-only) reclaims cargo target/ debris from the runner work area, BUT (binary-skyline#899): its guard misses cross-compiled release layouts (per-triple target dirs with dist/distrib siblings), and one dispatch sweeps only whichever runner picks up the job; this box registers three skylence-be runners. Until fixed, the reliable form is a guard-identical manual sweep across ~/actions-runners/*/_work during a verified idle window (zero queued/in-progress runs on all repos).
- 2026-08-09: the detached promote tail now exits nonzero when its own verify fails (binary-skyline#766, merged in PR #909). The tail log's exit code is finally meaningful; a 0 no longer needs independent confirmation of the verify section.