Some checks failed
Check / eval (push) Has been cancelled
nomarchy-what-changed wraps nvd into "N added, M removed, K updated" summaries. nomarchy-rebuild / nomarchy-home print full nvd and toast the one-liner; System › What changed? offers toast + floating report. checks.what-changed fixtures nvd via NOMARCHY_NVD. Verified: V2 — flake check --no-build; checks.what-changed green; local smoke on real HM generations.
37 KiB
37 KiB
Journal — append-only iteration log
One entry per iteration, newest first. This is the loop's short-term memory: the next session reads the last 3–5 entries to orient. Keep an entry under ~15 lines; durable lessons go to MEMORY.md, not here. When this file grows past ~25 entries, rotate the tail to JOURNAL-ARCHIVE.md (history, never edited).
Template:
## YYYY-MM-DD — <task title> (<commit sha, or "no commit">)
- **Task:** which BACKLOG item (or QA sweep / bootstrap / escalation)
- **Did:** what changed, in 2–4 lines
- **Verified:** tier reached (V0/V1/V2) + the actual commands/checks run
- **Pending:** V3 queued? follow-ups filed? anything [stuck]?
- **Next suggestion:** what the following iteration should probably take
2026-07-11 — #82 generation readability
- Task: NEXT #82 — plain-language “what changed last rebuild”.
- Did:
pkgs/nomarchy-what-changed(nvd → “N added, M removed, K updated”); wired into lifecycle post-nomarchy-rebuild/nomarchy-home(full nvd + notify toast); System › What changed? (toast + floating full report).checks.what-changedwith NOMARCHY_NVD fixture. Closed #82. - Verified: V2 — checks.what-changed green; local smoke on real HM gens (“Desktop: 1 added, 1 removed”) + fixture counts.
- Pending: —
- Next suggestion: #83 doctor pre-activate fail flag or #85 docs.
2026-07-11 — #81 first-boot welcome toast
- Task: NEXT #81 — dismissible “you're set” card (
VISION § B). - Did:
pkgs/nomarchy-first-boot+ user oneshot (modules/home/first-boot.nix): notify once with SUPER+M/T/? + Network- Doctor pointers; marker
settings.firstBootShownvia theme-sync--no-switch(in-checkout state). Skip live hostname. Optionnomarchy.firstBootWelcome.enable(default on).checks.first-boot. ROADMAP/VISION/README; closed #81.
- Doctor pointers; marker
- Verified: V2 —
nix flake check --no-build;checks.first-bootgreen (toast + marker + silent re-run + live skip); local shim smoke; downstream-template-home carries the user unit. - Pending: V3 — real swaync rendering on first installed login (toast body is pure text; not queued unless it misbehaves).
- Next suggestion: #82 generation readability or #85 docs hall of fame.
2026-07-11 — #80 doctor battery health readout
- Task: NEXT #80 — battery health in
nomarchy-doctor(VISION § C). - Did: Doctor row:
cycle_count+ retained capacity (charge_full/designorenergy_*) as% of design; system batteries only; soft warn <70% design; skip when attrs absent.NOMARCHY_POWER_SUPPLY_ROOTfor the VM fixture. Extendedchecks.doctor(fake BAT0 + Device-scope MOUSE0 ignore). HARDWARE §10, ROADMAP ✓, VISION ✓; closed #80. - Verified: V2 —
nix flake check --no-build;checks.doctorgreen; local smoke on real BAT0 (342 cycles, 81% via energy_*) + fixture. - Pending: Power-menu surface left optional/out of scope (doctor is the product surface for report-only health).
- Next suggestion: #81 first-boot welcome card (highest product ROI) or #85 docs-only hall of fame.
2026-07-11 — Triage: VISION-gap PROPOSED → NEXT #80–#85 (Bernardo)
- Task: Bernardo promoted five of the six fresh VISION-gap pitches (all but the wallpapers split, which stays LATER).
- Did: NEXT gains #80 battery health readout, #81 first-boot welcome
card, #82 generation readability, #83 doctor pre-activate fail flag,
#84 dock life polish
[big], #85 hardware hall of fame. PROPOSED placeholder left. No implementation started (explicit instruction). - Verified: V0 (backlog only).
- Pending: —
- Next suggestion: #80 (smallest) or #81 (highest product ROI); #84 must be split first.
2026-07-11 — Quick wins: exit-node locations + geo tooltip
- Task: BACKLOG LATER "VPN exit-node richer display" + a geo-mode tooltip nit from the previous iteration (human asked for quick wins).
- Did: Tailscale Exit node picker rows now "hostname — Country City", sliced by the header's fixed-width column offsets (COUNTRY/CITY are multi-word; never field-split), locationless nodes stay bare, pick strips back to hostname at the first space. Nightlight Waybar tooltip says "follows your location" in geo mode. Queue's VPN entry updated.
- Verified: V1 — awk proven against a fabricated 3-case fixture (Mullvad 1-word + multi-word city + bare node); flake check exit 0; downstream-template-home builds (writeShellScriptBin syntax-gates both scripts). Real tailscale output is V3 (existing VPN queue entry).
- Pending: V3 VPN menu live paths (extended, not new).
- Next suggestion: wallpapers artifact split (LATER, decided).
2026-07-11 — Night-light geo mode (lat/long → wlsunset)
- Task: BACKLOG LATER "Night-light geo mode" (human-picked).
- Did:
nomarchy.nightlight.latitude/.longitude(both set = geo mode):services.wlsunset(location-computed sunrise/sunset,.temperature→ night temp) replaces hyprsunset; the toggle script'sunit=and the live-state ExecCondition follow via oneunitlet-binding. Template example lines, README row, ROADMAP ✓. Newchecks.nightlight-geo: pure-eval asserts on the rendered units (coords + temp in ExecStart, ExecCondition present, hyprsunset off). Declarative-only (no menu writer — coords are machine config like keyboard layout). - Verified: V1 —
nix flake check --no-buildexit 0 (evals the new asserts + option-docs); builtdownstream-template-home(default hyprsunset path unregressed) + the check drv. Caught en route: HM rendersExecStartas a list (toStringneeded in eval asserts). - Pending: V3 queued (HARDWARE-QUEUE § Any machine): visible warm shift at location night + toggle/persistence on the swapped unit.
- Next suggestion: wallpapers artifact split (LATER, decided).
2026-07-11 — Sync-sweep rule + grooming + zram user docs (human-requested)
- Task: Bernardo: groom stale items and codify the check so they don't recur; close the zram user-doc gap.
- Did: LOOP.md §5 gains step 4 Sync sweep (grep item/feature across
agent/+docs/ on ship; prune recorded
[x]queue entries) + an AGENTS.md rule line. Applied it: BACKLOG PROPOSED pruned (auto-theme pitch was stale — shipped as #79; shipped/promoted placeholders removed; v1.0 pointer rewritten; FUTURE promoted-stub dropped). HARDWARE-QUEUE pruned 29 checked[x]entries (363→~250 lines), dangling refs reworded, prune rule in header. README §3 now documents the zram default + hibernation out-of-the-box + MIGRATION pointer. - Verified: V0 (docs/meta only) — grep sweep for dangling refs clean.
- Pending: night-light geo mode next (same session).
- Next suggestion: wallpapers artifact split (LATER, decided).
2026-07-11 — Vendor-neutral agent docs restructure (human-requested)
- Task: Bernardo: de-vendor the agent instructions (multi-model repo), clean stale files, better docs/agent/.claude structure.
- Did: New root
AGENTS.mdentry (CLAUDE.md → symlink). Skill bodies moved toagent/: VERIFICATION.md (enforcement, ex-nomarchy skill), DELEGATION.md (tiers light/standard/frontier + scout/runner contracts + fan-out; consolidates CLAUDE.md table + LOOP §economy + skill §6.5), THEME-DESIGN.md (ex-theme skill, now with frontmatter’d shim)..claude/is a thin adapter (shims route intoagent/). Maps updated (agent/, docs/, README tree). Stale:.gitignoreold_distro entry dropped; local result*/pycache removed. JOURNAL rotated (29 kept, 120 → JOURNAL-ARCHIVE.md). - Verified: V0 —
nix flake check --no-buildexit 0 with the symlink tracked; vendor-name grep clean outside DELEGATION's mapping table. - Pending: nothing; other harnesses add their own adapter row when used.
- Next suggestion: #76/#79 remain [blocked:hw]; otherwise groom PROPOSED.
2026-07-11 — #76 checks.hibernate-swapfile (VM-verify the swapfile+offset)
- Task: Bernardo — push #76's swapfile-resume residual into a VM (like the auto-theme sunset trick).
- Did: Tried a full runtime-swapfile hibernate→resume test; it hit a
bounded, definitive
CanHibernate=no— systemd won't hibernate to a swap that isn't declared in the boot config, and a runtime-computedresume_offsetcan't reach the boot cmdline (the genuine chicken-and-egg). First cut also had an unboundedwait_for_shutdownthat hung → killed it, bounded the wait in a thread (180s) + aCanHibernatepre-check, which is what surfaced the clean verdict. Pivotedchecks.hibernate-swapfileto what a VM can prove deterministically and the partition test can't: the installer swapfile build + offset — NOCOWmkswapfile, file-type swapon, validmap-swapfile -roffset accepted by/sys/power/resume_offset, zram above it. (Device fix:/dev/vdbonceuseNixStoreImagewas dropped.) - Verified: V2 PASS (fresh build, exit 0). BACKLOG/ROADMAP updated; #76 residual narrowed to the literal encrypted power-cycle (dev box runs it).
- Lesson: the sunset-trick spirit applies but not always the full cycle —
when systemd/kernel gates the behaviour (CanHibernate), verify the
construction deterministically and leave only the physical cycle to HW.
Always bound
wait_for_shutdown(no timeout param → thread + join). - Next suggestion: #76/#79 both
[blocked:hw]; QA / PROPOSED otherwise.
2026-07-11 — Code-review fixes (parallel review of the session batch)
- Task: Bernardo asked for parallel work; spawned a fresh-eyes opus
review of
2055842..HEAD(static). It found the batch sound — 2 real LOW edge bugs, 1 false positive, 1 cosmetic. - Did: (1)
cmd_auto— inverted sunrise/sunset (sunrise > sunset) went perpetually day; replaced thenot betweenshortcut with a real wrap-aroundmins >= sunrise or mins < sunset, so a cross-midnight day window switches both ways. (2)rofi.nixautotheme HH:MM guard tightened[0-2][0-9]→[01][0-9]|2[0-3]so 24–29 are rejected. Dismissed thebreezefinding (papirus DOES ship breeze/breeze-dark — verified) and the cosmetic doctor-RAM one. - Verified: py_compile; boundary truth-table (normal + wrap-around);
HH:MM case table (23:00/19:59/20:00 accept, 24/25/30:00 reject);
auto --whichnormal-case unchanged; menu bash -n; flake check green. Normal case unchanged sochecks.auto-themestill holds. - Pending: hibernate-swapfile VM test still running (uncommitted flake.nix).
- Next suggestion: land hibernate-swapfile once its VM test returns.
2026-07-10 — #79 V2: checks.auto-theme (simulated sunset) — was mis-framed V3
- Task: Bernardo challenged the "V3 real-session" framing — a simulated sunset IS VM-testable. He's right; I'd conflated "needs a real desktop" with "needs the generic home-manager switch."
- Did: Added
checks.auto-themerunNixOSTest: installs nomarchy-theme-sync, pointsNOMARCHY_DEFAULT_THEMESat presets, stubs the switch viaNOMARCHY_REBUILD(a marker), configures the pair+schedule, then walks the VM clock 19:55→20:05→20:06→next-day 07:30 asserting slug goes summer-day → night (1 rebuild) → night (idempotent, still 1) → day (2). The self-gating I relied on: presets via env, wallpaper/notify no-op headless, run_switch honors NOMARCHY_REBUILD + waybar nudge is check=False. - Verified: V2 PASS —
nix build .#checks…auto-themefresh, exit 0. Dropped #79's[blocked:hw]; it's done (V2). Updated ROADMAP. - Lesson: don't default "timer/session feature" to V3 — stub only the generic step (the real HM switch, covered elsewhere) and simulate the rest (clock) headlessly. Only the literal timer-fires-on-OnCalendar is on-HW, and its schedule is systemd-analyze-validated.
- Next suggestion: NEXT head #76
[blocked:hw]; else QA / PROPOSED.
2026-07-10 — #79 slice 3: Look & Feel › Auto theme menu (#79 complete)
- Task: BACKLOG #79 slice 3 — the menu; completes the feature.
- Did:
rofi.nix— "Auto theme (on/off)" row in Look & Feel + anautotheme)submenu: toggle, pick day/night (fromnomarchy-theme-sync list), set sunrise/sunset (HH:MM input, validated). Enable writes the flag + defaults the summer pair--no-switch, thenexec auto --force— one rebuild installs the timer AND applies the right theme. Disable is instant--no-switch(autoself-gates; the lingering timer no-ops). Day/night/times are live--no-switch. - Verified: V1 — HM generation builds (
writeShellScriptBinbash -n on nomarchy-menu passes) + bash -n on the built menu. Logic test (stubbed rofi/theme-sync/notify): selecting "Auto theme (off)" runs exactlyset day summer-day,set night summer-night,set enable true(all--no-switch), thenauto --force— the intended one-rebuild path. Disable path is static-clear (set false--no-switch, noauto); a stateful-stub dynamic test would loop (stub doesn't reflect the flip). V0 flake check green. #79 collapsed to[blocked:hw](all 3 slices done; only live-session switch remains, needs a Nomarchy machine). - Pending: V3 real-session (timer switches day↔night across sunset).
- Next suggestion: NEXT head #76/#79 both
[blocked:hw]; QA/PROPOSED.
2026-07-10 — #79 slice 2: auto-theme systemd timer
- Task: BACKLOG #79 slice 2 — the timer/hook.
- Did:
modules/home/autotheme.nix(imported in home default.nix):systemd.user.{service,timer}.nomarchy-auto-theme, install gated onconfig.nomarchy.settings.autoTheme.enable or false(state-driven, like updates.nix gates on its enable). Service runsnomarchy-theme-sync autowith a PATH forhome-manager; timerOnStartupSec=1min+OnCalendar=*:0/15+Persistent. Chose periodic over exact sunrise/sunset timers — robust to suspend/DST, andautois idempotent so ticks are cheap (rebuild only at the transition). - Verified: V1 — real-config eval (state temp-enabled, restored):
settings.autoTheme.enable→true, timerOnCalendar=*:0/15, service ExecStart=… nomarchy-theme-sync auto; disabled→no units (isolation eval condition=false).systemd-analyze calendar '*:0/15'valid. V0 flake check green. (Gotcha: a new .nix file is invisible to the flake untilgit add— flake eval only sees tracked files.) - Pending: live timer→
home-manager switchon a real Nomarchy session (needs a Nomarchy machine, like #76). Slice 3 (menu) next. - Next suggestion: #79 slice 3 — Look & Feel › Auto theme menu.
2026-07-10 — #79 slice 1: auto time-of-day theme CLI primitive
- Task: Split BACKLOG #79 (
VISION § D,[big]) into 3 slices (CLI / timer / menu); took slice 1. - Did:
nomarchy-theme-sync auto— readssettings.autoTheme.{enable,day,night,sunrise,sunset}, computes day/night by the local clock, and applies the matching preset only if different (idempotent → the slice-2 timer won't rebuild needlessly).--whichprints the decision without switching;--force/--no-switchtoo. Factoredcmd_apply's core intoapply_namedsoautoreuses the exact same one engine (GOALS: no second pipeline). - Verified: V1 package builds; functional tests on the built bin
against scratch state: wide-day→day slug, 00:00–00:01 window→night,
disabled→no-op, missing day/night→die,
auto --no-switchwrites state, re-run→"already on" no-op, plainapplystill writes (refactor intact). V0 py_compile + flake check +checks.theme-sync-validategreen. - Pending: slices 2 (systemd sunrise/sunset timers + login apply, V2) and 3 (Look & Feel menu) remain under #79.
- Next suggestion: #79 slice 2 — the timer/hook (V2 runNixOSTest).
2026-07-10 — #78 Omarchy migrant doc (docs/OMARCHY.md)
- Task: BACKLOG #78 (promoted from PROPOSED) — Omarchy→Nomarchy
one-pager (
VISION § F). - Did: New
docs/OMARCHY.md: leads with the config-model shift (imperative dotfiles → declarative flake + menu, rollback via generations), then install (ISO/nomarchy-installor MIGRATION.md), a familiar-bindings table, theming (SUPER+T/nomarchy-theme-sync), packages (home.packages /nix shell, no AUR), update+rollback (nomarchy-pull/-rebuild/-home, boot-menu generations,nomarchy-doctor). Added todocs/README.mdmap + VISION § F ✓. - Verified: V0 (docs). Grounded Nomarchy side in code: pulled real
binds from
keybinds.nix; confirmed all 7 cited commands, thensearchalias, and the named slugs (gruvbox/rose-pine/nord) exist. Kept Omarchy-side claims to known facts (Arch, dotfiles, pacman/AUR). - Pending: none.
- Next suggestion: NEXT head #76
[blocked:hw]; last open PROPOSED is auto time-of-day theme pair (§D,[big]— needs splitting).
2026-07-10 — #77 doctor hibernate/sleep section (V2 PASS)
- Task: BACKLOG #77 (promoted from PROPOSED by Bernardo) — read-only
hibernate section in nomarchy-doctor (
VISION § C, #76 follow-on). - Did: Added a hibernate/sleep row group to
nomarchy-doctor.sh: resume device on cmdline (+resume_offsetfor a swapfile), disk swap ≥ RAM, zram active, previous-boot suspend/hibernate error. Self-gates (skipon swap=0); only ok/warn/skip → never fails the sheet. Addedhibernateto thechecks.doctorprobe list. - Verified: V2 PASS —
checks.doctorVM test green (fresh build, exit 0; asserts the hibernate row renders + healthy run still 0). V1 — ran on this box's real LUKS+@swap layout: all threeokrows render (resume set, swap 34G ≥ RAM, zram 16G) and the sheet reaches its verdict. V0 bash -n + flake check. - Gotcha (fixed + MEMORY): the doctor runs
set -euo pipefail; my first cut aborted before the verdict because a no-matchgrepinside$(…)and acond && actionboth trip set -e. Fixed with|| true/|| echo 0and anif. First VM run caught it (exit 1, no verdict) — the test earned its keep. - Pending: none — fully agent-verifiable (read-only checks, no V3).
- Next suggestion: NEXT head is #76
[blocked:hw]; remaining PROPOSED (Omarchy doc §F, auto time-of-day theme §D) await triage.
2026-07-10 — QA sweep (clean) + VISION-gap pass → 3 PROPOSED
- Task: Bernardo — QA/drift sweep, then a VISION-gap pass with proposals.
- Did (sweep): Fanned out two subagents (Bernardo OK'd spawning for
efficiency): nomarchy-runner ran the deterministic checks +
bash -n/py_compile(all PASS; the 4 "needs-args" scripts pass via their flake derivations); nomarchy-scout hunted fuzzy drift (dead code, stale refs, TODOs, changed-area contradictions, count/version) — all clean. Spot-checked scout's count claim myself: 24 theme JSONs / 24 previews / README "24 presets" — consistent. Eval sweep green. No fixes needed. - Did (VISION): Verified candidate gaps against the tree before
proposing (killed two false gaps — nomarchy-rebuild/home already tail logs
- point at doctor on failure = §A shipped;
nvd diff= §B covered; System › Firmware menu already exists). Filed 3 PROPOSED (verified open): doctor hibernate/sleep section (§C, top Day-2 pick, #76 follow-on), Omarchy migrant one-pager (§F), auto time-of-day theme pair (§D,[big]).
- point at doctor on failure = §A shipped;
- Verified: V0 (agent-notes/docs only). Sweep evidence above.
- Pending: none. Proposals await Bernardo's triage into a tier.
- Next suggestion: if a PROPOSED is promoted, the doctor hibernate
section is the cleanest next build; else NEXT #76 stays
[blocked:hw].
2026-07-10 — Icon overrides: user-facing docs (OVERRIDES.md)
- Task: Bernardo asked whether the session's features need user docs.
- Did: Hibernation already covered (README swapfile line, MIGRATION.md
runbook, discoverable Power-menu row) — no gap. Icons had one: the only
doc was the template comment. Added an "Icon pack" subsection to
docs/OVERRIDES.md§ Appearance —nomarchy-theme-sync set icons "<name>", the known-packs table, the ~1 GiB/opt-in rationale, and that the choice is sticky acrossapply(presets carry no icon field; verifieddeep_merge). - Verified: command path confirmed (
cmd_setwrites any dotted key;iconsis a schema key). Built all 4 packs and listed real theme dirs to fix the examples — caught Qogir using capitalQogir-Dark/Light(lowercase would silently fall back to hicolor). Docs-only (V0). - Pending: none.
- Next suggestion: NEXT #76
[blocked:hw]; LATER/QA-sweep next.
2026-07-10 — Icon themes: opt-in cross-pack overrides (no default bloat)
- Task: LATER "per-theme icon overrides / more icon packs". Recon found papirus is already ~1 GiB and ships only Papirus/Dark/Light (no free variety); real variety needs extra packs at ~hundreds of MB each. Bernardo chose the opt-in, no-default-bloat shape (over shipping packs).
- Did:
theme.nixresolvesnomarchy.theme.iconThemePackagefrom a smalliconPacksregistry (papirus·tela·qogir·reversal·numix, by name prefix). Default themes namePapirus-*→ resolves to the plain papirus derivation (no symlinkJoin, identical closure); only a theme naming another pack's set symlinkJoins that one pack in.stylix.nixuses it (mkDefault). Opt-in note intemplates/downstream/home.nix; ROADMAP § Icon themes updated (incl. the deliberate no-default-packs decision). - Verified: V1 — HM activationPackage builds (exit 0). Eval proofs:
default
iconThemePackage= plainpapirus-icon-theme-*(zero delta); withicons="Tela-dark"→nomarchy-icon-themessymlinkJoin (papirus+tela) and name flows, without building tela. All 5 pack attrs exist in the pinned nixpkgs.template-sot+option-docs+flake checkgreen. - Pending: none. No default visual change (identical papirus), so no screenshot needed; the opt-in render is the downstream user's to see.
- Next suggestion: NEXT still #76
[blocked:hw]; LATER/QA-sweep next.
2026-07-10 — #76 slice 3: hibernate VM test (V2 PASS) → #76 agent-complete
- Task: BACKLOG #76 slice 3 — the mandatory V2 hibernate test + V3 queue.
- Did: Added
checks.hibernate(flake.nix), modeled on nixpkgs' hibernate.nix but wired to Nomarchy's #76 risk: imports oom.nix (zram default-on), disk swap at lower priority + explicitboot.resumeDevice, systemd-initrd. Test drives hibernate→power-off→resume→crash: ramfs marker survives resume, a crash-boot loses it (real resume, not a survivor), and asserts zram@100 + disk-swap<100 so the image lands on disk not volatile zram. Queued the V3 laptop steps (real LUKS+@swap+offset resume + no-swap notify) in HARDWARE-QUEUE. Collapsed #76 to a[blocked:hw]stub; design record → ROADMAP § "Hibernation + zram by default". - Verified: V2 PASS —
nix build .#checks.x86_64-linux.hibernatebuilt the driver fresh and exited 0 (all assertions held).nix flake check --no-buildgreen. - Pending: only V3 (dev box / laptop) — #76's last check; close on PASS.
- Next suggestion: #76 is now blocked:hw; NEXT head falls to LATER/ PROPOSED triage or a QA sweep — pick per LOOP.md orientation next session.
2026-07-10 — #76 slice 2: Hibernate notify-on-failure
- Task: BACKLOG #76 remaining slice 2 — per the settled "keep row, notify on failure" call.
- Did:
modules/home/rofi.nixpower menu Hibernate arm now runssystemctl hibernate 2>/dev/null || notify-send "Hibernate" "…see docs/MIGRATION.md". On success the call blocks until resume, so the notify only fires on a genuine failure (e.g. swap=0 no-swap machine). Row stays unconditional (no hiding). - Verified: V1 —
nix build …homeConfigurations.nomarchy.activationPackagegreen (rebuildsnomarchy-menu.drv;writeShellScriptBinruns bash -n at build). Control-flow proof on the arm extracted from the built script: failingsystemctl→ notify fires; succeeding → no notify.nix flake check --no-buildgreen. - Pending: slice 3 = the V2 hibernate→resume VM test + V3 laptop (Hibernate→power off→resume on the LUKS+@swap machine; plus confirm the no-swap notify surfaces in a real session). Both remain open on #76.
- Next suggestion: slice 3 — add a
checks.*hibernate VM test (as far as QEMU allows) and queue the V3 laptop steps in HARDWARE-QUEUE.
2026-07-10 — #76 slice 1: MIGRATION.md hibernation runbook
- Task: BACKLOG #76 remaining slice 1 — docs runbook for enabling hibernation on an existing machine (per the settled "docs not tool" call).
- Did: Added § "Enabling hibernation on an existing machine (no reinstall)"
to
docs/MIGRATION.md: create@swapsubvol (subvolid=5) +mkswapfile(NOCOW), readmap-swapfile -roffset, wirefileSystems."/swap"+swapDevices+resumeDevice+resume_offsetinto system.nix. Flagged the mount as required on the hand-edit path (installer gets it from disko-gen hardware-config). Notes zram-priority reservation, no-LUKS variant,swap=0opt-out. Worked example = this dev machine. - Verified: V0 — read-only commands run live against this machine's
real LUKS(
cryptroot)+btrfs(@)+/swap/swapfilelayout (RAM 31G, fsuuid,findmnt SOURCE,mkswapfileflags, zram@100 vs swapfile@-1 confirms the design intent).nix flake check --no-buildgreen. - Pending: slice 2 — Hibernate row notify-on-failure (V1/V2); then the V2 hibernate VM test + V3 laptop.
- Next suggestion: slice 2 (menu notify-on-failure).
2026-07-10 — #76 hibernation design calls (no commit yet → this bookkeeping)
- Task: BACKLOG #76 design slice — Bernardo made the open calls.
- Did: Recon showed the hibernation half is already built for new
installs (installer defaults swap=RAM hibernation-ready
@swapswapfile;patch-template.pywrites swapDevices/resumeDevice/resume_offset; Power menu Hibernate row + LUKS/hyprlock handling exist). Settled 3 calls: (1) swap sizing = exactly RAM (no change); (2) migration = docs runbook in MIGRATION.md, not a tool; (3) no-swap Hibernate = keep row, notify on failure. Folded into BACKLOG #76 (design ✓, re-sliced remaining: MIGRATION.md runbook + notify-on-failure menu) and Decisions. - Verified: V0 —
nix flake check --no-buildgreen (docs-only). - Pending: two remaining slices below; V2 hibernate VM test + V3 laptop.
- Next suggestion: slice 1 —
docs/MIGRATION.mdhibernation-enable runbook (V0), then slice 2 — Hibernate notify-on-failure (V1/V2).
2026-07-10 — #76 zram slice: compressed-RAM swap default
- Task: BACKLOG #76 (
[big]) — split; took the low-risk zram-default slice. - Did:
zramSwapon by default inmodules/nixos/oom.nix(zstd, 50% RAM, priority 100) as the memory-pressure layer before earlyoom, following the earlyoom mkDefault precedent (no toggle). High priority keeps day-to-day paging in zram so a disk swapfile stays reserved for #76's hibernate image. Addedchecks.zram-swaprunNixOSTest (imports oom.nix). Split #76 in BACKLOG → remainder is the hibernation half (swapfile/resume/installer). - Verified: V2 —
nix build .#checks…zram-swapPASS: /dev/zram0 active in /proc/swaps,[zstd]comp_algorithm, priority 100. V1 full distro toplevel builds. V0 flake check --no-build green. - Pending: hibernation half of #76 still open (needs hibernate→resume VM test + V3 laptop). No V3 for zram (under-load tuning is secondary).
- Next suggestion: #76 hibernation half — design default swapSize + the resume/installer wiring; it's the boot-critical, V2-hibernate + V3 part.
2026-07-10 — #41 hardware-confirmed: OpenFile portal floats (V3 close)
- Task: BACKLOG #41 — final on-hardware confirmation (Bernardo reported PASS).
- Did: #41 already out of NEXT + portal rule shipped
(
hyprland.nixxdg-desktop-portal-gtk float/center). Bernardo verified the GTK OpenFile file-picker floats on real hardware; dropped the "OpenFile not re-probed / optional residual" caveats in HARDWARE-QUEUE — #41 fully closed. - Verified: V3 (Bernardo, Latitude). No code change. Bookkeeping only;
QA-sweep guards run green this session:
nix flake check --no-build, option-docs/template-sot/theme-sync-validate builds, contrast 24×7. - Pending: none for #41. NEXT head is #76 (hibernation + zram,
[big]). - Next suggestion: split #76 — take the low-risk zram-default slice (V2-testable headlessly) before the boot-critical hibernate/resume work.
2026-07-10 — Close #41 GTK portal float rule
- Task: BACKLOG #41 residual (GTK file-chooser portal class).
- Did: Added float+center for
xdg-desktop-portal-gtk/.xdg-desktop-portal-gtk-wrapped(desktop + libexec name from package). Polkit already PASS on Latitude. Removed #41 from NEXT; only #20 remains. - Verified: V0 windowrule-syntax check path unchanged; class from
package
xdg-desktop-portal-gtk.desktop/ community configs. SoftGL still cannot materialize portal dialogs. - Pending: optional hardware spot-check OpenFile floats (HARDWARE-QUEUE).
- Next suggestion: #20 is
[human]only — or LATER/PROPOSED triage.
2026-07-10 — Product calls: charge live, identity, btop, NVIDIA skip
- Task: Bernardo decisions on remaining PROPOSED.
- Did: (1) Instant charge-limit: udev GROUP=users on threshold,
menu/powermgmt live sysfs + state, oneshot reads live theme-state +
AC re-apply. (2) Look & Feel already had Theme/wallpaper/night light;
added Reset wallpaper (auto). (3) NVIDIA first-class deferred past v1
(HARDWARE.md). (4) Identity retunes: white L-steps, lumon subtext,
hackerman surface+UI warn/bad, matte-black subtext, miasma bad.
(5) Hand
btop.themefor 9 identity/whole-swap slugs from palette map. - Verified: V0 contrast 24×7; V1 battery-charge-limit VM (udev restart). V3 live charge write on real laptop (HARDWARE-QUEUE).
- Next suggestion: only #20/#41 blocked, or Decisions.
2026-07-10 — Summer pair polish + status CSS + preview recapture
- Task: finish agent-able PROPOSED theme leftovers.
- Did: summer-day/night — JSON hierarchy (night subtext/muted/overlay
ladder; day overlay≠muted); waybar CSS tokens track JSON roles; font
13px both; day battery 25/10; VPN pill + full status states
(.recording/.available/.on/.activated/battery warn). Recaptured
executive-slate + neon-glass
preview.pngvia theme-shot desktop (480×270). Closed those PROPOSED lines. - Verified: V0 contrast 24×7 + wholeswap; V2 theme-shot summer-day/night/executive-slate/neon-glass — viewed bar crops + previews. Identity taste retunes stay PROPOSED.
- Next suggestion: only blocked NEXT (#20/#41) or product Decisions.
2026-07-10 — #74 matrix flags + #75 V2 install (default arm)
- Task: NEXT #74 unattended matrix · #75 SoT V2 install after ISO.
- Did:
NOMARCHY_TEST_SWAP_GB/NOMARCHY_TEST_NO_LUKSdrivetools/test-install.shgo.sh + first-boot LUKS skip; nixpkgs OVMF fallback. Full offline install V2 (SWAP=2 LUKS) after live ISO rebuild with starter packages — first-boot themed Boreal, no red banner. Closed #74/#75. Other matrix arms scripted (not full-ISO re-run). - Verified: V2 — install powered off ~460s; first-boot.png
viewed (
/tmp/nomarchy-vm-75/first-boot.png): themed wallpaper + waybar (logo, clock, modules), doctor glyph, no autogen banner. - Next suggestion: NEXT only #20 [human] + #41 [blocked:hw].
2026-07-10 — Loop batch land #64–#73 (parallel worktrees)
- Task: agent-actionable NEXT #64–#73 via worktree agents; land on main.
- Did: #64 MIGRATION snapshots · #65 real-uid chown · #66 theme-state fail-closed reader · #67/#68 theme fidelity+ANSI · #69/#70 audit+import tools · #71 IR portal docs · #72 template-sot check · #73 MOTD/first-boot fingerprint+doctor tips. Agents did not push; parent cherry-picked (stripped agent BACKLOG races). Closed #64–#73.
- Verified: V0/V1 — theme-contrast 24×7 pass; template-sot green; bash -n install; flake check --no-build green.
- Next suggestion: #74 unattended matrix + #75 V2 install (KVM).
2026-07-10 — Promote agent-actionable PROPOSED → NEXT #64–#75
- Task: Bernardo: bump non-hw/non-human PROPOSED categories 1+2.
- Did: #64 MIGRATION snapshots · #65 installer chown · #66 mkFlake theme-state errors · #67 theme fidelity nits · #68 #52 residual ANSI · #69 audit identity exemptions · #70 import-pipeline hierarchy · #71 IR portal docs (a) · #72 template SoT CI · #73 hardware hints residual · #74 unattended install matrix · #75 SoT V2 install. Breadcrumbs in PROPOSED; actionable items sit above #20/#41 in NEXT.
- Verified: V0 (backlog only).
- Next suggestion: queue head #64 (docs) or batch #67/#68 themes.
2026-07-10 — PROPOSED cleanup (stale exam residue)
- Task: Bernardo: clean stale PROPOSED items after A/B/C + #52 ship.
- Did: Rewrote PROPOSED to open work only — dropped #52 shipped high-ROI bullets, neon-glass quarantine, empty/shipped installer audit sections, template seed drift (keys already present), soft gaps fixed by #50, and “no action” kanagawa/boreal notes. Kept product day-2, installer follow-ups, theme polish residuals, tooling.
- Verified: V0 (backlog hygiene); spot-checked template keys, latte/mocha #52 fixes, usbutils, package exports.
- Next suggestion: triage the lean PROPOSED list or HARDWARE-QUEUE.
2026-07-10 — Pending closeout: #14, #57 V2, #41 slice
- Task: pending V2/CI/float leftovers after A/B/C batch.
- Did: #14 closed — first scheduled lock bump landed
8fded63(2026-07-06 Mon 05:20 UTC) asnomarchy-bump/chore(lock): scheduled upstream bump(Actions token push works). #57 V2 —checks.live-install-entryasserts live HM gen hasnomarchy-install.desktop(Name/Terminal/Exec) + installer bin + Tools menu gate innomarchy-menu. #41 slice — float/center rules for hyprpolkitagent + pinentry-qt from package app-id strings;tools/capture-float-classes.nixharness (softGL empty clients); residual GTK portal stays NEXT#41 [blocked:hw]. HARDWARE-QUEUE float confirm steps added. - Verified: V2 live-install-entry green; windowrule-syntax green.
SoftGL class capture inconclusive (empty clients). V3 float confirm
- fingerprint/#60 still HARDWARE-QUEUE. #20 still
[human].
- fingerprint/#60 still HARDWARE-QUEUE. #20 still
- Next suggestion: Bernardo: #20 KVM runner, or HARDWARE-QUEUE pass.
2026-07-10 — #55 fingerprint menu + #56 human rebuild errors
- Task: NEXT #55 (System › Fingerprint) + #56 (rebuild failure UX).
- Did: #55 — System row self-gated on fprintd-list; enroll/list/verify/
delete-all terminal flows; Use for login writes
settings.fingerprint.pam(hardware.nix default from stateFile); HARDWARE.md §5 + HARDWARE-QUEUE V3 enroll. #56 — sys-update / sys-rebuild / home-update tee last 40 lines + nomarchy-doctor pointer; theme-sync run_switch notify/die text. Closed #55/#56. - Verified: V1 — HM template rebuild (menu + theme-sync); option-docs green; failure-footer shell smoke. V3 pending: real fingerprint enroll (queue). V2 pending: forced bad sys-rebuild in VM (footer text pure/logic covered).
- Next suggestion: queue was A–C; remaining NEXT is blocked items (#14/#20/#41) or PROPOSED triage.
2026-07-10 — #58 nomarchy-detect-hw CLI
- Task: NEXT #58 — post-install re-probe package (HARDWARE.md §8).
- Did:
pkgs/nomarchy-detect-hwwrapping installer’s hardware-db; human report + snippets +--rawprotocol; overlay + systemPackages; HARDWARE.md §8 updated. Closed #58. - Verified: V1 — package builds; ran on this AMD laptop: correct MODULE/NOMARCHY lines (amd cpu/gpu, laptop, ssd, fingerprint, IR cam, NPU) and printable system.nix snippets.
- Next suggestion: #55 fingerprint menu or #56 human rebuild errors.
2026-07-10 — #57 live Install Nomarchy affordance
- Task: NEXT #57 — durable live-ISO install surface (not only toast).
- Did:
xdg.desktopEntries.nomarchy-install(Terminal=true) on live HM; Tools › Install Nomarchy self-gated oncommand -v nomarchy-install; welcome toast wording updated. Closed #57. - Verified: V1 — live config eval exposes entry name/exec;
downstream-template-homerebuilds with menu gate. V2 pending: ISO rebuild + smoke that the .desktop appears in the session. - Next suggestion: #58
nomarchy-detect-hwCLI.
2026-07-10 — #63 generated Waybar logo + powermenu
- Task: NEXT #63 — reverse parity: generated bar lacked whole-swap logo → menu and power icon → power menu.
- Did:
custom/nomarchy(left, Nomarchy.ttf U+F000) +custom/powermenu(right, U+F011 →nomarchy-menu power) in generated settings/style. Fixed Nix\uf000pitfall (no\uescapes — use literal UTF-8). Whole-swaps already had both; no JSON/CSS edits. Closed #63. - Verified: V2 —
THEME=tokyo-nighttheme-shot: left monogram N, right power glyph, accent styling; config modules-left/right correct. Crop paths under/tmp/theme-shot-tn2-*.png. - Next suggestion: product path #55 fingerprint menu (or #57 live install).