Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
# Changelog

## 3.3.1 — 2026-10-19

- **A change on probation becomes the default before
the old state goes.** `rules/way-back.md` makes
"permanent after proof" a step with its own proof:
read the setting back, then reload or reboot once
without the probation. A one-shot boot joins the
failures that show later, because the boot after
it takes the old default again.
- **heinzel works with the disk the server has.** It
never grows a disk, volume or VM at the provider or
in the hypervisor, and does not propose it unless
the user brings it up.

## 3.3.0 — 2026-10-19

- **heinzel knows NetBSD.** `uname -s` = `NetBSD` used
Expand Down
6 changes: 6 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,12 @@ list. Never write, move or delete that file.
that restores the old state, and disarm it only
after a fresh login worked. Read
`rules/rollback-timer.md`.
- **Work with the disk the server has.** Never grow
a disk, volume or VM at the provider or in the
hypervisor, and do not propose it as a way out of
a space problem: it costs money and is the user's
decision at the provider. Only when the user
brings it up, take it into the plan.
- **Never remove or block the SSH port** — 22, or
any other port sshd listens on. If the user
asks, explain the risk and refuse. Offer
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.3.0
3.3.1
18 changes: 17 additions & 1 deletion rules/way-back.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,14 @@ verified from outside. A mistake then undoes itself.
- a new service on a second port before the proxy
switches to it.

Making it permanent is a step of its own, with its
own proof: read the stored setting back, then
reload or reboot once without the probation and
check the result. Do it before anything removes
the old state. Until then a plain reload or reboot
returns to the old state, so removing it first
leaves the default pointing at nothing.

**B. A dead man's switch** when the failure cuts
off the access needed to repair it: a timer on the
host restores the old state unless a fresh login
Expand All @@ -54,7 +62,10 @@ stops it. Recipe: `rules/rollback-timer.md`.
`/var/backups/heinzel/`;
- DNS TTLs drop a day before a move;
- before deleting, a copy whose readability is
proven (`rules/backups.md`).
proven (`rules/backups.md`);
- the old system stays until the new one is the
permanent default (technique A) and has come up
that way once.

## No way back

Expand Down Expand Up @@ -92,6 +103,11 @@ provider the user takes.
- A changed renewal or rotation config: run its dry
run (`certbot renew --dry-run`,
`logrotate -d`).
- A one-shot boot (`BootNext`, `grub-reboot`,
`bootctl set-oneshot`): the boot after it takes
the old default again. Set the default, read it
back and reboot once without the one-shot before
relying on it.

Boot loaders, partition tables and EFI entries are
Heinzel Pro's work (`CLAUDE.md` → What Heinzel does
Expand Down
Loading