docs(agent): close #76 — hibernate→resume V3 PASSED on TuringMachine
Some checks failed
Check / eval (push) Failing after 1m31s
Some checks failed
Check / eval (push) Failing after 1m31s
Bernardo ran the real power-cycle on the T14s (LUKS + btrfs @swap swapfile): hibernate → power off → single LUKS unlock → session restored. BACKLOG #76 deleted; HARDWARE-QUEUE resume entry pruned (outcome recorded in the remaining no-swap-notify entry, JOURNAL, and the ROADMAP ✓-entry); Decisions hibernation note marked shipped. The no-swap Hibernate notify check remains the one open leftover. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -28,37 +28,6 @@ in [`docs/ROADMAP.md`](../docs/ROADMAP.md); map in
|
|||||||
|
|
||||||
## NEXT
|
## NEXT
|
||||||
|
|
||||||
### 76. Hibernation default — all agent work shipped `[human]`
|
|
||||||
Hibernation + zram on by default (product intent, Bernardo 2026-07-10).
|
|
||||||
**All V0/V1/V2 slices done** (2026-07-10); only the V3 check remains.
|
|
||||||
**Unblocked 2026-07-11:** the dev box (TuringMachine T14s) now RUNS Nomarchy
|
|
||||||
(migrated per docs/MIGRATION.md) with exactly the target layout — step 1 of
|
|
||||||
the queue entry verified live (`/swap/swapfile` file-type swapon, zram0 prio
|
|
||||||
100, `resume=`+`resume_offset=` on cmdline). Remaining: Bernardo performs the
|
|
||||||
power-cycle (hibernate → power off → single LUKS unlock → session restored) —
|
|
||||||
steps in HARDWARE-QUEUE. Design record in
|
|
||||||
**ROADMAP § Hibernation + zram by default**. Shipped:
|
|
||||||
- zram default (`modules/nixos/oom.nix`, zstd/50%/prio 100) — `checks.zram-swap`.
|
|
||||||
- Installer/template already default new installs to a RAM-sized encrypted
|
|
||||||
`@swap` swapfile + `resume_offset` wiring; `swapSize=0` = no-swap opt-out.
|
|
||||||
- `docs/MIGRATION.md` enable-hibernation runbook (existing machines).
|
|
||||||
- `rofi.nix` Power → Hibernate: kept unconditional, **notifies on failure**.
|
|
||||||
- `checks.hibernate` VM test (V2 PASS) — hibernate→resume→crash round-trip
|
|
||||||
(swap partition); zram (prio 100) doesn't swallow the image, disk carries it.
|
|
||||||
- `checks.hibernate-swapfile` VM test (V2 PASS) — the installer's btrfs `@swap`
|
|
||||||
**swapfile** setup: NOCOW `mkswapfile`, file-type swapon, a valid
|
|
||||||
`map-swapfile -r` offset the kernel accepts (`/sys/power/resume_offset`),
|
|
||||||
zram above it. (Bounded proof of the swapfile+offset the partition test
|
|
||||||
can't reach; a full runtime-swapfile hibernate isn't headless-reachable —
|
|
||||||
systemd `CanHibernate=no` for undeclared swap.)
|
|
||||||
|
|
||||||
**V3 remaining (narrowed):** the literal encrypted-swapfile power-cycle —
|
|
||||||
`Hibernate → power off → unlock LUKS → resume session` on the LUKS+@swap
|
|
||||||
layout — plus the no-swap notify in a real session. QEMU can't feed a
|
|
||||||
runtime-computed `resume_offset` into the boot cmdline, and the dev box runs
|
|
||||||
exactly this layout (`/proc/cmdline` verified) but isn't Nomarchy. Steps in
|
|
||||||
HARDWARE-QUEUE. Close #76 on PASS.
|
|
||||||
|
|
||||||
### 89. Tray icon parity — themed overrides for SNI apps (Bernardo 2026-07-11)
|
### 89. Tray icon parity — themed overrides for SNI apps (Bernardo 2026-07-11)
|
||||||
The bar is monochrome; third-party tray icons aren't. EasyEffects 8's Qt
|
The bar is monochrome; third-party tray icons aren't. EasyEffects 8's Qt
|
||||||
SNI publishes IconName `com.github.wwmm.easyeffects` → Papirus full-color
|
SNI publishes IconName `com.github.wwmm.easyeffects` → Papirus full-color
|
||||||
@@ -206,8 +175,8 @@ decide. **Resolved** entries stay for history; agents treat them as closed.
|
|||||||
|
|
||||||
- **Hibernation** — **want by default** (product intent). Needs a
|
- **Hibernation** — **want by default** (product intent). Needs a
|
||||||
disk-backed swap (file or partition) sized for resume; not zram alone.
|
disk-backed swap (file or partition) sized for resume; not zram alone.
|
||||||
Implementation is a future/NEXT item when designed (installer +
|
**Shipped as #76**; V3 power-cycle PASSED on TuringMachine 2026-07-12
|
||||||
resume device + encrypted-root story).
|
(ROADMAP § Hibernation + zram by default).
|
||||||
|
|
||||||
### Resolved (2026-07-10, #76 design)
|
### Resolved (2026-07-10, #76 design)
|
||||||
|
|
||||||
|
|||||||
@@ -216,27 +216,11 @@ the **T14s** (webcam case).
|
|||||||
screenshot loaded. Check that the UI draws on the current theme palette
|
screenshot loaded. Check that the UI draws on the current theme palette
|
||||||
(tools colored properly) and hitting save places the screenshot in
|
(tools colored properly) and hitting save places the screenshot in
|
||||||
`~/Pictures/Screenshots/` while hitting copy places it in the clipboard.
|
`~/Pictures/Screenshots/` while hitting copy places it in the clipboard.
|
||||||
- [ ] **#76 hibernate→resume on a real Nomarchy install** — the V2 VM test
|
- [ ] **#76 no-swap Hibernate notify** (#76 itself is closed — the
|
||||||
proves the resume mechanism + zram coexistence, but QEMU can't feed a
|
hibernate→resume power-cycle **PASSED on TuringMachine 2026-07-12**:
|
||||||
boot-time `resume_offset` for a btrfs *swapfile* nor drive the LUKS
|
Bernardo ran the full hibernate → power off → single LUKS unlock →
|
||||||
initrd unlock, so this triple needs hardware. **The dev box qualifies
|
session-restored cycle "flawlessly"; this notify check is the one
|
||||||
since 2026-07-11**: TuringMachine (T14s) migrated to Nomarchy per
|
remaining leftover) — on a **Nomarchy** machine installed
|
||||||
docs/MIGRATION.md — it now exercises Nomarchy's oom.nix/rofi wiring,
|
|
||||||
not just the layout.
|
|
||||||
1. ✓ Confirm the wiring on the Nomarchy box: `swapon --show` lists
|
|
||||||
`/swap/swapfile` (Type file) **and** `/dev/zram0` at priority 100;
|
|
||||||
`cat /proc/cmdline` shows `resume_offset=…` + `resume=` the btrfs UUID.
|
|
||||||
(**Verified on TuringMachine 2026-07-11**: swapfile 34G file-type,
|
|
||||||
zram0 prio 100, `resume_offset=533760`.)
|
|
||||||
2. Open apps, note an unsaved in-RAM state. `nomarchy-menu → Power →
|
|
||||||
Hibernate` (or `systemctl hibernate`). Machine writes image, **powers
|
|
||||||
off**.
|
|
||||||
3. Power on: unlock LUKS **once** in the themed prompt; land back in the
|
|
||||||
**same session** — state restored, not a fresh login.
|
|
||||||
4. **Pass** = session restored after full power-off + single unlock.
|
|
||||||
Fail (fresh boot / stuck initrd) → NOW bug in BACKLOG (capture
|
|
||||||
`journalctl -b -1 | grep -i -E 'hibernat|resume|swap'`).
|
|
||||||
- [ ] **#76 no-swap Hibernate notify** — on a **Nomarchy** machine installed
|
|
||||||
with `swap = 0` (or temporarily `sudo swapoff -a` on one): `nomarchy-menu
|
with `swap = 0` (or temporarily `sudo swapoff -a` on one): `nomarchy-menu
|
||||||
→ Power → Hibernate` must surface a desktop notification ("Couldn't
|
→ Power → Hibernate` must surface a desktop notification ("Couldn't
|
||||||
hibernate — likely no swap is configured. See docs/MIGRATION.md →
|
hibernate — likely no swap is configured. See docs/MIGRATION.md →
|
||||||
|
|||||||
@@ -19,6 +19,19 @@ Template:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 2026-07-12 — #76 closed: hibernate V3 PASSED on TuringMachine (this commit)
|
||||||
|
- **Task:** BACKLOG #76 `[human]` closure — Bernardo reports the V3 check.
|
||||||
|
- **Did:** Bernardo ran the real power-cycle on the T14s (LUKS + btrfs
|
||||||
|
`@swap` swapfile): hibernate → power off → single LUKS unlock →
|
||||||
|
session restored, "flawlessly". Deleted #76; HARDWARE-QUEUE resume
|
||||||
|
entry pruned (outcome recorded here + ROADMAP ✓-entry updated);
|
||||||
|
Decisions note marked shipped. The **no-swap Hibernate notify** check
|
||||||
|
stays open in HARDWARE-QUEUE as the one leftover.
|
||||||
|
- **Verified:** V3 (human, real hardware). Docs-only commit otherwise.
|
||||||
|
- **Pending:** no-swap notify check (needs a swapless session or
|
||||||
|
temporary `swapoff -a`).
|
||||||
|
- **Next suggestion:** #89 slice 2 — the override-icon layer.
|
||||||
|
|
||||||
## 2026-07-12 — #90 tray submenu arrows: root cause was waybar CSS (this commit)
|
## 2026-07-12 — #90 tray submenu arrows: root cause was waybar CSS (this commit)
|
||||||
- **Task:** BACKLOG #90 `[stuck]` (interactive, Bernardo driving on T14s).
|
- **Task:** BACKLOG #90 `[stuck]` (interactive, Bernardo driving on T14s).
|
||||||
- **Did:** Diagnosis was wrong — Papirus-Dark resolves `pan-end-symbolic`
|
- **Did:** Diagnosis was wrong — Papirus-Dark resolves `pan-end-symbolic`
|
||||||
|
|||||||
@@ -354,7 +354,9 @@ Design/decision records and a running log of shipped work (items marked
|
|||||||
hibernate from a *runtime* swapfile isn't headless-reachable (systemd
|
hibernate from a *runtime* swapfile isn't headless-reachable (systemd
|
||||||
`CanHibernate=no` for undeclared swap; and a runtime-computed `resume_offset`
|
`CanHibernate=no` for undeclared swap; and a runtime-computed `resume_offset`
|
||||||
can't be fed into the boot cmdline), so the literal encrypted-swapfile
|
can't be fed into the boot cmdline), so the literal encrypted-swapfile
|
||||||
power-cycle + LUKS-initrd unlock stays a V3 laptop check.
|
power-cycle + LUKS-initrd unlock stayed a V3 laptop check — **V3 PASSED
|
||||||
|
2026-07-12** on TuringMachine (T14s, LUKS+`@swap` swapfile layout):
|
||||||
|
hibernate → power off → single LUKS unlock → session restored.
|
||||||
✓ **Doctor hibernate/sleep section (#77, `VISION § C`):** `nomarchy-doctor`
|
✓ **Doctor hibernate/sleep section (#77, `VISION § C`):** `nomarchy-doctor`
|
||||||
gained a read-only hibernate row group — resume device on the cmdline
|
gained a read-only hibernate row group — resume device on the cmdline
|
||||||
(+ `resume_offset` for a swapfile), disk swap ≥ RAM, zram active, and any
|
(+ `resume_offset` for a swapfile), disk swap ≥ RAM, zram active, and any
|
||||||
|
|||||||
Reference in New Issue
Block a user