From 549871f2f460ed8137239fa43970bb42e45409d7 Mon Sep 17 00:00:00 2001 From: gregoryfoster Date: Wed, 17 Jun 2026 22:41:04 +0000 Subject: [PATCH 1/4] chore: update skills submodules --- skills-vendor/obra-superpowers | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skills-vendor/obra-superpowers b/skills-vendor/obra-superpowers index 6fd4507..b62616f 160000 --- a/skills-vendor/obra-superpowers +++ b/skills-vendor/obra-superpowers @@ -1 +1 @@ -Subproject commit 6fd4507659784c351abbd2bc264c7162cfd386dc +Subproject commit b62616fc12f6a007c6fd5118146821d748da0d33 From 4fd829e68cc9845443902cac956e9062d06de30d Mon Sep 17 00:00:00 2001 From: gregoryfoster Date: Mon, 22 Jun 2026 15:46:19 +0000 Subject: [PATCH 2/4] #63 fix: self-heal stale watcher_item_id on WatchedItem 404 Distinguish a permanently deleted WatchedItem (HTTP 404) from a transient Watcher outage in the dashboard read/action paths. On a confirmed WatcherNotFound, NULL the stale watcher_item_id and fall back to the not_watching state (re-exposing "Begin Watching") instead of sticking in degraded forever. Transient failures (network/5xx) still render degraded and retain the link, so a brief outage never drops it. - _clear_stale_watcher_link helper clears the pointer and commits - _render_status_partial / _render_watcher_section catch WatcherNotFound ahead of the broad except; gain a session param (threaded to all callers) - check-now / toggle-watch-active flash an accurate "no longer watched" message and clear the link on 404 Keeps the one-way Archiver->Watcher control-plane model intact: Archiver reconciles lazily on its next read rather than requiring Watcher to notify it. Dashboard-only; no schema/SDK/API-contract change. Co-Authored-By: Claude Opus 4.8 (1M context) --- docs/UI.md | 8 +- src/dashboard/routes/info_items.py | 79 ++++++-- tests/dashboard/test_watcher_404_reconcile.py | 174 ++++++++++++++++++ 3 files changed, 245 insertions(+), 16 deletions(-) create mode 100644 tests/dashboard/test_watcher_404_reconcile.py diff --git a/docs/UI.md b/docs/UI.md index 14a0119..afccbf1 100644 --- a/docs/UI.md +++ b/docs/UI.md @@ -234,17 +234,17 @@ Logs a warning on degraded/failure. Auth-gated; unauthenticated requests redirec - *Rep Fields* — `x-data="repFieldsEditor()"` wrapper; HTMX-loaded `sortableChips` suggestions (`hx-trigger="load"`); `