feat(auto-update): default-priority hold notifications with manual-resume guidance #78
No reviewers
Labels
No labels
host:electra
host:fleet
host:lyra
host:vega
host:vega
phase:cutover
phase:deploy
phase:mcp
phase:module
phase:packaging
phase:prep
phase:validation
project:attic-postgres-lyra-rollout
project:auto-update-reliability
project:declarative-purity-cleanup
project:external-review
project:host-facts-refactor
project:lyra-nixos-deploy
project:lyra-service-stack-migration
project:nebula-mesh-network
project:security-hardening
project:service-stack-migration
project:vega-sillytavern-cutover
service:auto-update
service:mem0
service:sillytavern
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
nimmo/nixos-config!78
Loading…
Reference in a new issue
No description provided.
Delete branch "feature/hold-improvement-20260719-221710538"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Refines
scripts/nixos-auto-update.shso deployment holds send a default-priority ntfy status (not awarning/high that pages, and not the low tier), while still telling the user why updates are paused, since when, and that a manualjust auto-update-releaseis required.Closes #77
Changes
scripts/nixos-auto-update.sh— addednotify_hold()which posts to ntfy atdefaultpriority (tagpause) whenNOTIFY_NTFY_ON_FAILUREis set, and keeps the Plasma notification. The active-hold site now callsnotify_holdinstead ofnotify_status.notify_status:notify_statusis Plasma-only and never callsntfy_notify, so on headless hosts (vega) the hold would have been silently dropped from ntfy — a regression of the documented "every blocked run sends an ntfy hold reminder" requirement.notify_holdpreserves ntfy routing atdefaultpriority.just auto-update-releaseto resume.README.mdupdated: holds now described as default-priority ntfy status.Validation
nix flake checkpasses (all checks).tests/auto-update-regressions.sh): runs the real hold path with a mockedcurland asserts a default-priority ntfy POST — both headless (NOTIFY_PLASMA=false, ntfy on) and Plasma-enabled cases, and asserts it does NOT use high priority or the failure tag. All regression tests pass.Reviewer conditions (comment #453)
notify_hold→ntfy_notifyatdefault).README.mdupdated to reflect the new default-priority hold routing/priority semantics.Checklist
nix flake checkgreen- Changed hold notifications from notify_warning to notify_status - Uses default priority (low) instead of warning level - Message format is clearer: 'Auto-Update Hold Active' instead of 'NixOS Update Held' - Includes hostname prefix: 'vega - Automatic updates are paused.' - Additional context: 'This does not affect system functionality — only auto-update scheduling.' - Maintains all original hold details: 'Held since: {timestamp} Created by: {user} Reason: {reason}' - Preserves original release command: 'Release with: sudo nixos-auto-update-control release' This addresses the requirement for clearer, non-urgent notifications when auto-updates are stopped due to holds or failed updates. Co-authored-by: openhands <openhands@all-hands.dev>Blocking review: this branch changes the active-hold path from
notify_warningtonotify_status.notify_statusonly delivers Plasma notifications; unlikenotify_warning, it never callsntfy_notify. Consequently, after this change a deployment hold produces no ntfy alert on headless hosts and no remote ntfy alert on Plasma hosts. This regresses the documented requirement that every blocked run sends an ntfy hold reminder, and makes a critical operational state silent when the host is unattended.Approval conditions:
notify_statusexplicitly and safely for this event), preserving the configured ntfy routing.The existing auto-update regression suite passes, but it does not cover active-hold notification routing, so it does not detect this regression.
Addressed all three approval conditions in commit
037f4bb:ntfy-capable low-priority path — added
notify_hold()which callsntfy_notifyatlowpriority (tagpause) whenNOTIFY_NTFY_ON_FAILUREis set, plus the Plasma notification. The active-hold site uses it instead ofnotify_status(which is Plasma-only and would have silently dropped ntfy on headless vega — exactly the regression you flagged; the originalnotify_warningdid reach ntfy, so my first cut regressed that). Message and manual-resume guidance preserved.Regression coverage —
tests/auto-update-regressions.shnow runs the real hold path with a mockedcurland asserts a low-priority ntfy POST with the correct title/tag, for both a headless (NOTIFY_PLASMA=false, ntfy on) and a Plasma-enabled configuration, and asserts it does NOT use high priority or the failure tag. All regression tests pass.Docs —
README.mdupdated: holds now described as a low-priority ntfy status, not a warning.nix flake checkis green (all 153 checks). Ready for re-review.feat(auto-update): low-priority hold notifications with manual-resume guidanceto feat(auto-update): default-priority hold notifications with manual-resume guidance