hermes-agent/plugins
Teknium a98aee47ce fix(kanban): move descendant invalidation to domain layer, make it non-silent
Ancestor-reopen descendant invalidation previously lived only in the
dashboard plugin (_set_status_direct), so board semantics diverged by
surface and the retraction was silent: completed work snapped back to
todo and live workers were killed with no operator-visible signal.

Move it into kanban_db.invalidate_descendants_for_parent_reopen as THE
single domain implementation (recursive-CTE discovery and per-run
_retry_status_for_run handling preserved). It composes under a caller's
open transaction via write_txn(allow_nested=True) — the ancestor flip
and the descendant retractions must commit atomically — and opens its
own transaction standalone. The dashboard shim now delegates; the CLI
deliberately has no done-reopen verb (reopen-review is review-phase
only), so the DB-layer function being the single implementation is the
fix, documented in its docstring.

Non-silent: every invalidated descendant gets a descendant_invalidated
event ({ancestor, prior_status, new_status, resume_status}), the legacy
status event for existing live-feed consumers, and a task comment
naming the reopened ancestor. Running descendants keep the termination
behavior (a child building on a retracted premise is wasted spend), but
the events/comment are committed BEFORE the kill, which routes through
_terminate_reclaimed_worker — the same helper the reclaim paths use.

consecutive_failures resets to 0 on invalidated descendants: operator-
initiated invalidation is a deliberate fresh start, deliberately the
opposite of the review-loop rule (reopen_review_task preserves the
counter, #35072) so the autonomous review loop can't launder its own
failure streak.

Regression: DB-function reopen demotes done descendants with events +
comments; running descendant's audit trail is durable before its worker
dies; counter resets; dashboard and DB paths produce identical task
states, event kinds, and comment counts.
2026-08-10 12:43:46 -07:00
..
browser feat(browser): integrate Browser Use CLI 3.0 2026-08-10 10:45:44 -07:00
context_engine
cron_providers fix(cron): surface initial scheduler registration failures 2026-08-07 17:45:06 +05:30
dashboard_auth
disk-cleanup fix(disk-cleanup): re-validate stale test entries and protect new dirs from sweep 2026-07-31 22:36:04 -07:00
google_meet fix(secrets): resolve google_meet realtime key via secret scope at spawn time 2026-08-02 10:04:48 -07:00
hermes-achievements chore: remove old plan files 2026-08-09 15:17:01 -04:00
image_gen feat(media): default-on upscaling for sub-2MP image models (FAL + Krea) 2026-08-08 14:49:28 -07:00
kanban fix(kanban): move descendant invalidation to domain layer, make it non-silent 2026-08-10 12:43:46 -07:00
memory fix(honcho): keep _pop_auth_notice tolerant of minimal fake managers; make fast-path test binding 2026-08-08 14:40:46 +05:30
model-providers perf(sessions): resolve the titling model from the provider's live catalog 2026-08-08 17:07:21 -05:00
observability
platforms fix(sec): patch the npm advisories main left open 2026-08-10 13:49:37 -04:00
security-guidance
spotify
teams_pipeline fix(secrets): scope tier-3 credential reads (teams_pipeline, deepinfra models, FAL/XAI/VERCEL/DAYTONA/GITHUB presence, HERMES_API_KEY display) 2026-08-02 10:04:48 -07:00
video_gen fix(video): bind managed SeedVR to source request 2026-08-08 17:01:59 -07:00
web
__init__.py
plugin_utils.py