Skip to content

docs(adr): propose Core updating itself as a static binary - #1309

Open
frahlg wants to merge 3 commits into
masterfrom
1308-adr-self-updating-binary
Open

frahlg wants to merge 3 commits into
masterfrom
1308-adr-self-updating-binary

Conversation

@frahlg

@frahlg frahlg commented Sep 18, 2026

Copy link
Copy Markdown
Member

Problem

The update path is ~6 000 lines of Go plus ~4 300 of tests, ~2 000 of CI and ~2 100 of scripts, of which ~2 800 lines are one-time transition code. It took 73 of the last 867 commits, produced 20 betas between 7 and 18 September, and has 10 open issues. Almost none of it is what keeps a box safe. It is delivery mechanics that follow from Docker being the way in. Details and the measurements are in #1308.

Proposal

ADR 0007, status proposed. Core downloads its next release tarball (which every release already publishes, with a sha256), verifies it, unpacks it into a slot, and a small launcher runs it as a trial. The new Core commits itself after readiness or the launcher falls back. Rollback is the same swap in reverse. No process holds the Docker socket, the Pi image drops the Docker engine, Docker becomes a plain image with the button off, and betas go weekly.

The rollback point (state.db + config, the #1302 form), the readiness gate and immutable tags stay in every step.

docs/self-update.md gets a three-line pointer to the ADR and keeps describing what ships today.

Versions

The ADR also decides the version scheme, tracked in #1314: the binary line returns to 0.x, starting at v0.131.0 where the 0.x counter stopped, with no major bumps and minors approved by the owner. The reset costs nothing because it rides the same reinstall. The stable channel defect (#1313, stable resolves to v2.3.2 while beta is at 3.5.x) is independent and should land first.

How to assess it

  • Read the ADR's What is lost and Alternatives considered first. Those are the parts that need an owner's decision.
  • The evidence list at the end names what must be shown on the home box before the status moves from proposed to accepted.

Docs only. No changeset needed (allowlisted path). No hardware evidence is claimed; this is a proposal per CONTRIBUTING.

Closes nothing. Tracks #1308 and #1314.

🤖 Generated with Claude Code

ADR 0007 measures the update path as it stands, names where the
complexity comes from, and proposes a two-slot self-update of the
existing release tarball with a launcher that falls back on a failed
trial. Docker becomes a plain image without a sidecar, the Pi image
drops the Docker engine, and betas go weekly. Status: proposed.

self-update.md gets a pointer and keeps describing what ships.

Tracks #1308.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

The brand check flags the old product name in active copy. The ADR
only needs to say that the alias goes, not spell it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Adds a Versions section: the binary line returns to 0.x at v0.131.0,
the reset rides the cutover so no epoch rule is needed, major bumps go,
and a minor needs the owner's approval. Records how 1.0.0 to 3.0.0
came from removal changesets, and that the stable channel is a major
behind beta (#1313).

Tracks #1314.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

@miravoss26 miravoss26 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ADR 0007 (status: proposed) + a 3-line pointer in self-update.md. Docs-only, no changeset needed (CI confirms: changeset-check passed as auto-exempt, all code-touching jobs skipped, docs/hygiene checks green).

Correctness: does what it says — adds the ADR, doesn't touch any code path, self-update.md still describes what actually ships today and just points forward to the proposal. The measurements table, the "what is lost" / alternatives-considered sections and the explicit evidence-required-before-acceptance list make this an honest proposal, not a fait accompli merged as docs.

Security: nothing to screen — no code, no secrets, no new deps or network surface.

Safe to merge from my read (docs-only, CI green). The actual call here is an architecture decision for a human owner, not something my review settles — this is just confirming the PR is what it claims to be.

@HuggeK

HuggeK commented Sep 18, 2026

Copy link
Copy Markdown
Contributor

While you are one it, it would be great if we could also upgrade the bug report template here on github for the actually ways we ship ftw in:
image

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.

3 participants