aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-07-20 15:56:41 -0500
committerCraig Jennings <c@cjennings.net>2026-07-20 15:56:41 -0500
commitdb6ca439938e4a57e6d1f8d7487346a67f7c439e (patch)
tree0026678bf960be76da8accda1621df16b9ae066f
parenta29769e0f46aa2e2b9ed3662d58d1395a665b5d5 (diff)
downloadarchsetup-db6ca439938e4a57e6d1f8d7487346a67f7c439e.tar.gz
archsetup-db6ca439938e4a57e6d1f8d7487346a67f7c439e.zip
docs: close normalize-notify atomicity task
-rw-r--r--todo.org4
1 files changed, 3 insertions, 1 deletions
diff --git a/todo.org b/todo.org
index c5d06c0..ba6112e 100644
--- a/todo.org
+++ b/todo.org
@@ -1663,7 +1663,9 @@ CLOSED: [2026-07-20 Mon]
Fixed in dd41036: extracted install_executable (guarded cp + chmod +x) for the two zfs scripts; guarded the two hypr-live-update-guard chmods inline with error_warn. TDD via tests/installer-steps/test_install_executable.py.
Grading: Minor severity x rare edge case (only when a preceding non-fatal cp/clone failed) = P4 = [#D].
With set -e off, unguarded chmod/cp hit missing/partial files silently: hypr-live-update-guard chmods (archsetup:2108/2144), zfs-replicate cp (archsetup:1820) leaving a service with a dead ExecStart, zfs-pre-snapshot cp (archsetup:1943) leaving a broken pacman hook. Fix: wrap each in =(...) >> log 2>&1 || error_warn=. See findings doc (S2, S3).
-** TODO [#D] normalize-notify-sounds temp/atomicity can corrupt tracked file :bug:solo:quick:
+** DONE [#D] normalize-notify-sounds temp/atomicity can corrupt tracked file :bug:solo:quick:
+CLOSED: [2026-07-20 Mon]
+Fixed in a29769e: resolves the real target via readlink -f, stages the temp beside it, guards on a non-empty encode, and atomically mv's into place (preserving the stow symlink); an EXIT trap cleans a leaked temp. TDD via tests/normalize-notify/ with fake ffmpeg.
Grading: Minor severity (corrupts a repo-tracked sound file, recoverable via git) x rare (ffmpeg failure/interrupt) = P4 = [#D].
scripts/normalize-notify-sounds.sh:39-46 has no EXIT trap on the mktemp and does =cat "$tmp" > "$f"= (truncate-first) where $f is a stow symlink into the repo; a zero-byte/failed encode writes a corrupt file. Fix: EXIT trap; =[ -s "$tmp" ]= guard; write $f.tmp and overwrite on success. See findings doc (S4).
** TODO [#D] Installer + scripts refactor opportunities :refactor: