# 2026.08.23.02 — deploy report **5 of 5 target hosts succeeded.** Two hosts were not targets: `officer-dev` (the rollout ran from it) and `edge-pertento-bridge` (deliberately skipped in `docs/servers.md`). Every target went the same way, in the plan's order: `git fetch origin --tags`, `git merge --ff-only deploy/2026.08.23.02`, `bun db:push`, `bun run plugins:update`, `pm2 restart officer`. No tree was dirty in tracked files, so no host was skipped for that. Every host fast-forwarded cleanly to `0a8fe1c2` — the tag commit, and exactly that commit on all five. The tag and `package.json` agree (`2026.08.23.02`), and the plan file was present at the tag. ## Per host | Host | HEAD before | HEAD after | db:push | plugins:update | `officer` restart_time | Result | | ---------------------------- | ----------- | ---------- | ------- | -------------- | ---------------------- | ------- | | `alpha` | `e6f1388a` | `0a8fe1c2` | applied | 12/12 in 47s | 67 → 68, online | ok | | `fofos` | `e6f1388a` | `0a8fe1c2` | applied | 1/1 in 7s | 21 → 22, online | ok | | `macbookpro` | `b22e9d86` | `0a8fe1c2` | applied | no plugins | 8 → 9, online | ok | | `production-pertento-bridge` | `68d60e40` | `0a8fe1c2` | applied | 1/1 in 5s | 0 → 1, online | ok | | `deadpool-rezio-bridge` | `e6f1388a` | `0a8fe1c2` | applied | 2/2 in 7s | 6 → 7, online | ok | | `officer-dev` | — | — | — | — | — | SKIPPED | | `edge-pertento-bridge` | — | — | — | — | — | SKIPPED | `bun db:push` reported `Changes applied` on all five. It prompted for nothing — `sendoff_devices` and `sendoff_senders` are new tables, so the diff was additive. ## What restarted, beyond what the plan asked for The plan named `officer` only, and `officer` is the only process this deploy restarted deliberately. `bun run plugins:update` restarts each plugin's own sidecar as it goes — that is the script's behaviour, not a fault, and it is the larger part of what moved: - `alpha` — twelve plugin sidecars bounced during the plugins step (atelier, bitcoin-wallet, email, gitea, invoices, jellyfin, music, offscale, photos, soulseek, transmission, vault). - `fofos` — one (`officer-gitea`). - `production-pertento-bridge` — one (`officer-gitea`). - `deadpool-rezio-bridge` — two (`officer-email`, `officer-offscale`). - `macbookpro` — none; no plugins are installed there. After each restart, `pm2 jlist` showed `officer` `online` with `restart_time` incremented, and no process on any host was `errored`. ## Hosts the plan flagged - **`production-pertento-bridge`** was one release behind (`68d60e40`, which is `deploy/2026.08.22.02`) and fast-forwarded past `deploy/2026.08.23.01` to this tag in one step. Its `known_hosts` entry was absent as expected; the first connection pinned the ED25519 key it offered. Expected, per the plan. - **`edge-pertento-bridge`** was not contacted at all. Nothing was spent on it. - **`macbookpro`** was awake and needed the documented PATH append (`/opt/homebrew/bin`) for the `bun` steps, with `pm2` run separately through `$SHELL -ic`. ## Things worth knowing, none of them failures - `fofos` carries one untracked file, `scripts/chk.ts`. A note, not a skip — a fast-forward cannot touch it, and it was left alone. - `production-pertento-bridge` prints an nvm/`.npmrc` `globalconfig` warning before every command run through `$SHELL -ic`. It is noise; every command it prefixed succeeded. - `macbookpro` prints `command not found: starship` on stderr from `.zshrc`. Harmless, but it corrupts `pm2 jlist` output if stderr is merged into stdout — read that host's JSON with `2>/dev/null`. ## What was not done - **`officer-dev` was not deployed.** Its checkout is already at `0a8fe1c2` (the release was cut here), but nothing was pulled, no schema was pushed, no plugin was updated and no process was restarted. The rollout ran from this machine, and restarting `officer` here ends the agent doing it. That host needs a deliberate `bun db:push`, `bun run plugins:update` and `pm2 restart officer` from the owner before `/sendoff` will work on it — the schema change means the missing `bun db:push` is not cosmetic. - No host got `bun install`. The plan forbade it: `bun.lock` is unchanged across this release.