Files
Nomarchy/agent/BACKLOG.md
Bernardo Magri 71786bda6b
Some checks failed
Check / eval (push) Has been cancelled
feat(doctor): battery health readout (#80)
Report-only cycle_count + retained capacity (charge_* or energy_*) as
% of design on system batteries; soft warn below 70% of design; skip
when attrs missing. NOMARCHY_POWER_SUPPLY_ROOT for the checks.doctor
fixture (test_power has no cycle/design attrs).

Verified: V2 — nix flake check --no-build; checks.doctor green (fake
BAT0 cycles/% + Device-scope ignore); local BAT0 smoke (energy_*).
2026-07-11 10:06:13 +01:00

8.9 KiB
Raw Blame History

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 § … or ROADMAP § … 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 [blocked:hw]

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 — on a machine actually running Nomarchy (the dev box runs Bernardo's own NixOS, not Nomarchy, so it can't close it). 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.

81. First-boot welcome card (VISION § B)

One dismissible "you're set" toast on the first session (SUPER+M menu, SUPER+T themes, SUPER+? keys, network pointer) — a notification, not a wizard. Needs a one-shot marker that respects "no state outside the checkout": key off HM generation №1 or a settings.firstBootShown write. VM assert on the gate.

82. Generation readability (VISION § B)

"What changed last rebuild" in plain language: post-switch nvd / nix store diff-closures summary (n packages up/down/added) surfaced as a toast and/or a "What changed?" row beside System Rollback. Rollback lists generations but the story is incomplete. VM assert on the diff text.

83. Doctor first-boot section: pre-activate fail flag (VISION § A)

The installer leaves /var/log/nomarchy-hm-preactivate.log on the target when the theme bake fails, but nothing on the installed system points at it. Doctor gains a first-boot line: if the log shows failure and the HM generation is missing, print the recovery one-liner.

84. Dock life polish (VISION § C) [big]

Split before starting: (a) clamshell — lid closed with external monitor connected must not suspend (logind lidSwitchDocked/ExternalPower audit + display-profile interplay), wake behaves; (b) default audio sink follows dock/undock (dock sink on plug, internal on unplug — WirePlumber policy or a udev hook). Display profiles + auto-switch already exist; this is the remaining edge-case pass.

85. Hardware hall of fame (VISION § F)

A HARDWARE.md "install-tested machines" table (model, DMI, profile, date, notes) seeded from the Latitude/dev-box sessions + a short "send your DMI line" PR invite. Docs-only.

LATER

  • Wallpapers artifact split (ROADMAP § Faster switches — decided, deferred): pinned Nomarchy-wallpapers input 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/4GB 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/AC items (#47#63, #14, #52 theme high-ROI, etc.) live in the journal + ROADMAP — not here.

Product / day-2

  • NVIDIA first-class optionsdeferred past v1 (Bernardo 2026-07-10). Keep #59 commented install guidance; no nomarchy.hardware.nvidia.* until a hybrid maintainer + queue.

(#80 battery health shipped 2026-07-11. Remaining promoted: first-boot card, generation readability, pre-activate flag, dock life, hall of fame → NEXT #81#85.)

v1.0 pointer

See VISION. Open PROPOSED: NVIDIA wrappers deferred past v1; IR portal (b)/(c) need T14s hardware (HARDWARE-QUEUE § T14s). Standing calls: browser default = Chromium; power backend = 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-repomarkdown in-repo for now (docs/, README). A rendered docs site is FUTURE if wanted.
  • Default browsership Chromium in templates/downstream/home.nix; mime → chromium-browser.desktop. Opt out: delete the line / override mime.
  • Default power backendkeep PPD (nomarchy.system.power.backend default). TLP remains the one-line opt-in. Rationale: stability + live profile API for menu/Waybar; Omarchys TLP experiment reverted.

Resolved (2026-07-10, more)

  • Formatter adoptionyes, but not now. Tracked as FUTURE (below). Nix-source style only (nixfmt-rfc-style or similar); one bulk reformat + CI/check when promoted. Until then: hand-aligned style per CONVENTIONS.

  • Hibernationwant 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 sizingexactly RAM (installer default, unchanged). Hibernate image ≤ RAM; zram takes day-to-day paging. swapSize=0 stays no-swap.
  • Migrationdocs runbook (docs/MIGRATION.md), not a tool.
  • No-swap Hibernate — keep the menu row; notify on failure.