2 Commits
Author SHA1 Message Date
ekklesiaandClaude Opus 5.5 4413114d2a docs: what a person checks before 0.2.6.6 goes to stable, and the file it is
Six boxes on the laptop: the reboot that waits for an idle, silent
computer, and the television switched on after the computer. The exact
file and its sha256, so that promotion names the bytes canary ran.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-29 18:39:37 -05:00
ekklesiaandClaude Opus 5.5 897a5f28ed fix: the gate installs a fresh machine as the stable room it is
A fresh device.conf says CHANNEL=stable, and the gate asked the fresh
install's updater about canary's manifest, which that machine never reads.
Found running the gate on 0.2.6.6: the updater check failed before any
upgrade was tried. The package was not at fault.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-29 18:16:10 -05:00
3 changed files with 39 additions and 3 deletions
+30
View File
@@ -3,6 +3,36 @@
Run against the exact artifact published to canary, on the real endpoint,
before promoting to stable with `./update_stable.sh`.
## Before 0.2.6.6 goes to stable
The container gate and the lab passed both of these. Neither can prove
them on real hardware, so a person does, on the prayer-room laptop, which
takes 0.2.6.6 from canary. If every box is ticked, 0.2.6.6 is promoted
**as the same file**, never rebuilt:
```
ekklesia-classroom_0.2.6.6_amd64.deb
sha256 2b972391974265ba220c58ae0a8f287664a42228f062278956b89017bd5a54f7
./update_stable.sh 0.2.6.6 2b972391974265ba220c58ae0a8f287664a42228f062278956b89017bd5a54f7
```
**Waiting to reboot (since 0.2.6.5)** — details under [OTA](#ota):
- [ ] Using the computer after an update has installed: it does not restart
- [ ] A video playing with sound, mouse left alone: it does not restart
- [ ] Left untouched and silent, it restarts about 30 minutes later, on
the new version
- [ ] Switched off before that restart: it starts normally next time, on
the new version, and does not restart again
**The television arriving late (0.2.6.6)** — details under
[the television switched on after a night-time reboot](#the-television-switched-on-after-a-night-time-reboot):
- [ ] Rebooted with the television off at the set (if the room allows it),
then switched on: the classroom's landscape, not Plasma's purple
- [ ] The panel is the room's own: same launchers, same order, clock bottom
right
## Boot
- [ ] Cold boot reaches the classroom shell with no terminal or window junk
+5 -2
View File
@@ -272,8 +272,11 @@ check("the repository copy is proven to be the gated file",
gate = (root / "tools/release-gate.sh").read_text()
gate_code = "\n".join(line for line in gate.splitlines()
if not line.lstrip().startswith("#"))
check("the gate runs a fresh install",
'"$ROOT/tools/validate-trixie-release.sh" "$candidate"\n' in gate_code)
check("the gate runs a fresh install, as the stable room a new machine is",
'env VALIDATION_CHANNEL=stable \\\n "$ROOT/tools/validate-trixie-release.sh" "$candidate"\n'
in gate_code)
check("which is what a fresh device.conf says",
"CHANNEL=stable" in (root / "lib/classroom_config.py").read_text())
check("and the upgrade from what canary and stable serve, as rooms of each",
"for channel in canary stable" in gate_code
and 'VALIDATION_CHANNEL="$channel"' in gate_code)
+4 -1
View File
@@ -118,7 +118,10 @@ run() {
record "PASS $label ($(( (SECONDS - started) / 60 )) min)"
}
run "fresh install of $version" \
# A new machine is a stable room: that is what a fresh device.conf says,
# so that is the manifest its updater is asked about.
run "fresh install of $version (a new machine, on stable)" \
env VALIDATION_CHANNEL=stable \
"$ROOT/tools/validate-trixie-release.sh" "$candidate"
for channel in canary stable; do