Tray SNI inventory run live on the T14s: nm-applet, udiskie, Telegram and EasyEffects are name-based (icon-lookup overridable); Signal and ZapZap publish pixmaps only (slice 3). Method: watcher's RegisteredStatusNotifierItems + busctl get-property. #76: the dev box now runs Nomarchy (migrated 2026-07-11), so the 'not a Nomarchy machine' blocker is gone — retagged [human]; queue step 1 (swapfile/zram/resume_offset wiring) verified live, only the power-cycle test remains. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
11 KiB
Backlog — the prioritized task queue
This is the only executable work list for agents. Product themes and
v1.0 intent live in docs/VISION.md; design history
in docs/ROADMAP.md; map in
docs/README.md and agent/README.md.
Rules:
- Agents take the topmost actionable item (see LOOP.md). Finished items are deleted here — the journal + git log are the record; durable design notes get a ✓-entry in docs/ROADMAP.md (and/or a note in VISION) if worth keeping.
- Item numbers are stable IDs — never renumbered or reused. A gap in the sequence means shipped (or dropped) work; new items take the next free number regardless of tier.
- Tags:
[blocked:hw]needs real hardware (see HARDWARE-QUEUE.md) ·[human]needs Bernardo ·[stuck]two failed attempts, needs help ·[big]must be split before starting. - Agents may append to PROPOSED and Decisions freely (include
VISION § …orROADMAP § …when relevant); only Bernardo moves items out of PROPOSED into the tiers.
NOW
(empty — NEXT's top item is the queue head)
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
@swapswapfile +resume_offsetwiring;swapSize=0= no-swap opt-out. docs/MIGRATION.mdenable-hibernation runbook (existing machines).rofi.nixPower → Hibernate: kept unconditional, notifies on failure.checks.hibernateVM test (V2 PASS) — hibernate→resume→crash round-trip (swap partition); zram (prio 100) doesn't swallow the image, disk carries it.checks.hibernate-swapfileVM test (V2 PASS) — the installer's btrfs@swapswapfile setup: NOCOWmkswapfile, file-type swapon, a validmap-swapfile -roffset 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 — systemdCanHibernate=nofor 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)
The bar is monochrome; third-party tray icons aren't. EasyEffects 8's Qt
SNI publishes IconName com.github.wwmm.easyeffects → Papirus full-color
blue (T14s V3, 2026-07-11); Signal / Telegram / ZapZap (all flatpaks on
the T14s) likely worse. Goal: every tray icon reads like part of the bar.
Slices:
- Inventory — DONE (T14s live session, 2026-07-11):
app IconName pixmap? verdict nm-applet nm-signal-*(state-varying)no name-based — override the nm-*familyudiskie drive-removable-media-usb-panelno name-based Telegram org.telegram.desktop[-mute/-attention]-symbolicyes (fallback) name-based — ship all state names Signal Signal_status_icon_1(generated, not a real theme name)yes pixmap — slice 3 ZapZap (empty) yes pixmap — slice 3; check its own tray-style setting first EasyEffects 8 com.github.wwmm.easyeffects(prior T14s finding)— name-based; NB --gapplication-servicealone registers no SNI - Override layer: an HM-managed shadow icon dir that wins the XDG
lookup for the session icon theme (e.g.
xdg.dataFile "icons/<theme-iconset>/…"shadowing the store copy, or aNomarchy-traytheme inheriting the active set — pick whichever survives theme whole-swaps; icons must follow the active theme per THEME-DESIGN, not hardcode one palette). Ship monochrome SVGs for the name-based offenders found in slice 1. Waybar restart re-resolves. - Pixmap apps: document (or wire, where a setting exists) per-app monochrome/tray options; what can't be fixed goes in the item's record, not silent scope creep.
V-path: V1 eval + icon file lands in the right lookup dir; V3 screenshot of the tray on a real session (headless VM has no flatpak chat apps).
LATER
- Wallpapers artifact split (ROADMAP § Faster switches — decided,
deferred): pinned
Nomarchy-wallpapersinput so a state write stops re-copying 86 MB. Follow-on: pre-built theme variants if switches are still slow after. - Installer round 2 (ROADMAP § Installer): multi-disk BTRFS RAID, impermanence, BIOS/legacy boot.
- Boot-from-snapshot: a systemd-boot equivalent of grub-btrfs.
- MIPI/IPU software-ISP camera support (no-UVC machines).
- NixOS release bump → v2
[human]: deliberate, hand-edited, never automated; the previous attempt was discarded (2026-06-22) over a Hyprland OOM blocker — see MEMORY.md before retrying (NOW#3 should also soften that blocker class).
FUTURE (decided deferred — not the agent queue head)
Work we intend someday but explicitly not NEXT. Agents do not pick these unless Bernardo promotes one into NEXT/NOW.
20. KVM runner → VM suite in CI [human]
Status (2026-07-10): keep eval-only CI on the current Gitea
stack (act_runner in docker-compose on the 4c/4 GB IONOS VPS). Nested
KVM + RAM headroom on that host are a poor fit next to Gitea; full
checks.* VMs stay local / promotion-time until a separate
KVM-capable machine exists.
When ready: register a second runner (host-mode nix + /dev/kvm,
label nix-kvm — not the existing docker eval runner), then uncomment
the vm-checks job in .gitea/workflows/check.yml (runs-on: nix-kvm,
nix flake check + toplevel/HM builds). Do not enable the job until
that label is online (Gitea queues forever otherwise).
Formatter — adopt later [human]
Intent: add a Nix formatter (likely nixfmt-rfc-style) in a dedicated
pass: reformat the tree once, document in CONVENTIONS, optional CI
check. Not the queue head — no drive-by reformats until that pass.
PROPOSED (agent suggestions — await human triage)
Agents: append here with a one-paragraph pitch (what/why/cost). Do not implement. Bernardo moves accepted items into a tier.
Open work only. Shipped exam/A–C items (#47–#63, #14, #52 theme high-ROI, etc.) live in the journal + ROADMAP — not here.
Product / day-2
-
NVIDIA first-class options — deferred past v1 (Bernardo 2026-07-10). Keep #59 commented install guidance; no
nomarchy.hardware.nvidia.*until a hybrid maintainer + queue. -
Post-install hardware hints (
VISION § B) — After the general “you're set” card (#81), optionally fire one additional self-gated notify when the machine actually has the hardware: (a)fwupdmgron PATH → “System › Firmware to check LVFS updates”; (b)fprintd-liston PATH → “System › Fingerprint to enroll”. One-shot markers insettings.*(same in-checkout discipline asfirstBootShown); never a permanent MOTD nag. Cost: small — extendnomarchy-first-bootor a sibling oneshot +checks.first-bootfixture. Control-center / MOTD already mention these; the gap is the silent first graphical session for people who never open those. -
Fingerprint or password, in parallel (2026-07-11, Bernardo) —
fingerprint.pamgives pam_fprintd's sequential UX: sudo waits on the reader, password only after failure/timeout. Bernardo wants either factor accepted at the same prompt (type the password or touch the sensor, whichever comes first). Stock PAM can't express this; needs a parallel-conversation module (e.g.pam-any, not in nixpkgs — would be a new package +fingerprint.pam = "any"mode). Cost: medium (package + PAM wiring + careful lockout testing on real hardware). Security note: keep sudo fallback sane if fprintd hangs.
(#80–#83 + #85–#88 shipped 2026-07-11. Theme A day-2 + neon-glass finish shipped — VISION ✓. Dock/hibernate V3 → HARDWARE-QUEUE.)
v1.0 pointer
See VISION. Open PROPOSED: post-install hardware hints; NVIDIA deferred past v1; IR portal (b)/(c) need T14s (HARDWARE-QUEUE § T14s). Standing calls: browser = Chromium; power = PPD.
Decisions [human]
Open calls only Bernardo can make; agents add options/evidence but never decide. Resolved entries stay for history; agents treat them as closed.
Resolved (2026-07-10)
- Docs site vs Markdown-in-repo — markdown in-repo for now
(
docs/, README). A rendered docs site is FUTURE if wanted. - Default browser — ship Chromium in
templates/downstream/home.nix; mime →chromium-browser.desktop. Opt out: delete the line / override mime. - Default power backend — keep PPD (
nomarchy.system.power.backenddefault). TLP remains the one-line opt-in. Rationale: stability + live profile API for menu/Waybar; Omarchy’s TLP experiment reverted.
Resolved (2026-07-10, more)
-
Formatter adoption — yes, but not now. Tracked as FUTURE (below). Nix-source style only (
nixfmt-rfc-styleor similar); one bulk reformat + CI/check when promoted. Until then: hand-aligned style per CONVENTIONS. -
Hibernation — want by default (product intent). Needs a disk-backed swap (file or partition) sized for resume; not zram alone. Implementation is a future/NEXT item when designed (installer + resume device + encrypted-root story).
Resolved (2026-07-10, #76 design)
- Swap sizing — exactly RAM (installer default, unchanged). Hibernate
image ≤ RAM; zram takes day-to-day paging.
swapSize=0stays no-swap. - Migration — docs runbook (
docs/MIGRATION.md), not a tool. - No-swap Hibernate — keep the menu row; notify on failure.