You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
pm-aggregator deploy path: install.sh unit cp fails on the home-manager symlink; hand-unblocked pulls skip pm-git-sync redeploys #5396
Found while deploying #5389/#5391 (2026-11-04). Two composed gaps in the aggregator's deploy path on amd-6:
install.sh can no longer complete on this machine. Its cp "$UNIT_SRC" "$UNIT_DST" writes through ~/.config/systemd/user/pm-aggregator.service, which is now a home-manager store symlink (units went NixOS-managed), and cp dies with Read-only file system. The manual install path has therefore been broken since the unit became store-managed; only pm-git-sync's restart-only redeploy (dep step + systemctl restart, lines ~166-172 of pm-stack/scripts/pm-git-sync.sh) still works. install.sh should detect the symlink case (skip the unit render when the destination is store-managed, or replace the symlink deliberately) instead of failing mid-install after the env file has already been re-rendered.
Context: #5389 close-out has the full timeline. Neither gap blocks anything today (the aggregator is current and the sync is cycling normally); both will bite the next hand-unblock or manual install.
Verdict: both gaps in issue #5396 are still live at origin/main 04f78696ab — confirmed fresh on the laptop clone, not just from the packet.
install.sh unit cp (gap 1) — LIVE.pm-stack/aggregator/install.sh:123 still runs an unconditional cp "$UNIT_SRC" "$UNIT_DST", with no symlink/store-managed check anywhere in the script. The live destination ~/.config/systemd/user/pm-aggregator.service is a symlink into the Nix store (-> /nix/store/…-home-manager-files/.config/systemd/user/pm-aggregator.service, verified by ls -l this run), so the cp still dies on the read-only store exactly as filed — and it fails after the env file has already been re-rendered.
pm-git-sync deployed-head baseline (gap 2) — LIVE.pm-stack/scripts/pm-git-sync.sh takes old="$(git rev-parse HEAD)" at startup (~line 149); if old already equals origin/main it exits "up to date" (~line 152), and its redeploy diffs cover only the $old..$new range of a pull it performs itself. There is no persisted last-deployed head anywhere in the script (grep for deployed finds none), so a HEAD moved by a hand pull still queues no redeploys for the hand-pulled range.
Routing: one small_fix follow-up task enqueued for issue #5396 covering both halves (they are one deploy path, and the issue tracks them as a set). Acceptance for the fix: install.sh detects a store-managed/symlinked unit destination and skips or deliberately replaces it instead of failing mid-install; pm-git-sync persists the last deployed head and diffs redeploys from it, so any HEAD movement — its own pull or a hand pull — queues the subtree redeploys it implies. Extend the existing venues pm-stack/scripts/pm-git-sync.test.sh and pm-stack/scripts/deploy-install-smoke.test.sh rather than inventing new ones; per fleet policy, verification runs in CI/on the laptop, never as a build on the sandbox.
Nothing here needs Drew: no hard-stop labels on issue #5396, no decision pending. Issue stays open for the fix task.
Expectation: the bound worker session works task 10472 to a terminal queue state and must not claim another task. It revalidates the issue/PR before acting.
Expectation: the bound worker session works task 10472 to a terminal queue state and must not claim another task. It revalidates the issue/PR before acting.
Expectation: the bound worker session works task 10472 to a terminal queue state and must not claim another task. It revalidates the issue/PR before acting.
Activity
dezren39 commentedon Nov 5, 2026
🤖 Agent note · picked up
dezren39 commentedon Nov 5, 2026
🤖 Agent note · triage verdict (task 10033, lane code-g, 2026-11-05)
Verdict: both gaps in issue #5396 are still live at origin/main
04f78696ab— confirmed fresh on the laptop clone, not just from the packet.pm-stack/aggregator/install.sh:123still runs an unconditionalcp "$UNIT_SRC" "$UNIT_DST", with no symlink/store-managed check anywhere in the script. The live destination~/.config/systemd/user/pm-aggregator.serviceis a symlink into the Nix store (-> /nix/store/…-home-manager-files/.config/systemd/user/pm-aggregator.service, verified byls -lthis run), so the cp still dies on the read-only store exactly as filed — and it fails after the env file has already been re-rendered.pm-stack/scripts/pm-git-sync.shtakesold="$(git rev-parse HEAD)"at startup (~line 149); ifoldalready equalsorigin/mainit exits "up to date" (~line 152), and its redeploy diffs cover only the$old..$newrange of a pull it performs itself. There is no persisted last-deployed head anywhere in the script (grep fordeployedfinds none), so a HEAD moved by a hand pull still queues no redeploys for the hand-pulled range.Routing: one
small_fixfollow-up task enqueued for issue #5396 covering both halves (they are one deploy path, and the issue tracks them as a set). Acceptance for the fix: install.sh detects a store-managed/symlinked unit destination and skips or deliberately replaces it instead of failing mid-install; pm-git-sync persists the last deployed head and diffs redeploys from it, so any HEAD movement — its own pull or a hand pull — queues the subtree redeploys it implies. Extend the existing venuespm-stack/scripts/pm-git-sync.test.shandpm-stack/scripts/deploy-install-smoke.test.shrather than inventing new ones; per fleet policy, verification runs in CI/on the laptop, never as a build on the sandbox.Nothing here needs Drew: no hard-stop labels on issue #5396, no decision pending. Issue stays open for the fix task.
dezren39 commentedon Nov 5, 2026
🤖 Agent note · triage complete (task 10033, lane code-g)
dezren39 commentedon Nov 5, 2026
🤖 Agent note · handed off
dezren39 commentedon Nov 5, 2026
Agent note - handed off
ses_e5e53865bb3ffe0IdG6QonKtetdezren39 commentedon Nov 5, 2026
Agent note - handed off
ses_e5e53619c7affeeYkKlUs7lF71dezren39 commentedon Nov 5, 2026
Agent note - handed off
ses_e5e5345c5c5ffegyIbSDQdbZbS