Skip to content

Opt-in automatic bot updates from master - #65

Closed
phroi wants to merge 1 commit into
masterfrom
bot-auto-update
Closed

phroi wants to merge 1 commit into
masterfrom
bot-auto-update

Conversation

@phroi

@phroi phroi commented Oct 25, 2026 •

Copy link
Copy Markdown
Member

Three commented lines in each tracked unit and one README paragraph.

A unit alone on its checkout that uncomments them runs git pull --ff-only and pnpm install --frozen-lockfile as ExecStartPre before every turn. The update lands between turns, so it costs no ready window, and it needs no timer that would have to stop a running turn. What reaches the bot is exactly what passed the gate and the merge rules, so the repository's merge protection is the update policy; the two-account rule, when it lands, hardens both at once.

The - prefix lets the turn run when the pull fails; the install line has none, so a turn never runs new source on old node_modules and waits until the install completes, which an offline no-op install never blocks. git and pnpm are native binaries, so the updater never depends on the Node it replaces: an install interrupted mid Node bump, which removes the checkout's only Node, is finished by the next turn's install instead of looping forever. timeout caps a fetch against an unreachable GitHub at a minute; TimeoutStartSec gives a cold install the time a new Node needs.

The tracked examples keep the lines commented: a development checkout must not move under whoever works in it, and two actors on one host get one clone each. The mainnet VM is the first host meant to opt in. Also here: the README's host install names the Node-free pnpm binary, since pnpm is what fetches Node.

Rejected: a timer unit; an updater written in TypeScript, which two reviews showed cannot recover from the interrupted install it exists to survive; signed release tags verified on the host, a second key that belongs only to a setup where GitHub no longer holds the first.

@phroi
phroi force-pushed the bot-auto-update branch 2 times, most recently from 6a6cb9d to 09b46de Compare October 25, 2026 23:38
Three commented lines in each tracked unit: a start timeout, `git pull
--ff-only` under `timeout` with the `-` prefix, and `pnpm install
--frozen-lockfile` without it. A unit alone on a checkout of master that
uncomments them updates between turns, costing no ready window, from the
one channel the repository already guards with its merge rules. A failed
pull lets the turn run; a failed install does not, so a turn never runs new
source on old node_modules and waits until the install completes, which an
offline no-op install never blocks. git and pnpm are native binaries, so an
install interrupted mid Node bump, which removes the checkout's only Node,
is finished by the next start rather than looping forever, which is why no
Node-based updater can do this job. The tracked examples keep the lines
commented: a development checkout, like the laptop runners, must not move
under the operator, and two actors on one host get a clone each (user
decision 2026-10-26). The README's host install names the Node-free pnpm
binary, since pnpm is what fetches Node.
@phroi
phroi marked this pull request as ready for review October 25, 2026 23:46
@phroi phroi closed this Oct 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant