From 68c1d8b859b20a5a6858c59d3e320c0d1079bb0c Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Mon, 20 Jul 2026 15:51:02 -0500 Subject: docs: close resume-idempotency cluster task --- todo.org | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/todo.org b/todo.org index b9d7265..d00c708 100644 --- a/todo.org +++ b/todo.org @@ -1653,7 +1653,9 @@ The goal is a single place to edit each config, not two. :END: Once-yearly systematic inventory of known deficiencies and friction points in current toolset -** TODO [#D] Installer resume-idempotency cluster :bug:solo: +** DONE [#D] Installer resume-idempotency cluster :bug:solo: +CLOSED: [2026-07-20 Mon] +Fixed in 8917f2f: extracted crontab_append_once (dedup guard), zfs_scrub_timer_units (one timer per pool, warn on none instead of @.timer), and enable_user_service (wants-symlink; gamemode now uses it and syncthing folds into the shared helper). TDD via tests/installer-steps/test_idempotency_cluster.py. Grading: Minor severity x rare edge case (re-run after a mid-step failure) = P4 = [#D]. Group of small non-idempotent / wrong-target spots. crontab log-cleanup line duplicates on resume (archsetup:1713 — guard on absence); zfs scrub timer picks an arbitrary pool via =head -1= and yields =@.timer= when empty (archsetup:1857); gamemode enabled via =systemctl --user= which the script itself documents fails at install time (archsetup:2419 — use the manual wants-symlink like syncthing). See findings doc (S2, S3). ** TODO [#D] Installer unguarded chmod/cp after non-fatal ops :bug:solo:quick: -- cgit v1.2.3