Skip to content

Fix Kanban worker archived-skill detection and diagnostics - #42859

Open
sdgdllc wants to merge 2 commits into
NousResearch:mainfrom
sdgdllc:codex/issue-807-kanban-worker
Open

Fix Kanban worker archived-skill detection and diagnostics#42859
sdgdllc wants to merge 2 commits into
NousResearch:mainfrom
sdgdllc:codex/issue-807-kanban-worker

Conversation

@sdgdllc

@sdgdllc sdgdllc commented Jun 9, 2026

Copy link
Copy Markdown

Summary

  • ignore archived or hidden kanban-worker skill copies when deciding whether to inject --skills kanban-worker
  • surface repeated-failure diagnostics when a task-level max_retries cap is lower than the dispatcher default
  • add focused regression tests for both behaviors

Validation

  • C:\Users\m_t_c\.hermes-sdgd\venv\Scripts\python.exe -m pytest -p no:timeout -o addopts='' tests\\hermes_cli\\test_kanban_cli_dispatch_passthrough.py -q
  • C:\Users\m_t_c\.hermes-sdgd\venv\Scripts\python.exe -m pytest -p no:timeout -o addopts='' tests\\hermes_cli\\test_kanban_diagnostics.py -q

Context

This was extracted from SDGD issue SundayGundayLLC/sdgd#807, where Foreman Kanban worker pickups crashed because an archived skills/.archive/kanban-worker/SKILL.md made Hermes preload a missing skill name.

@alt-glitch alt-glitch added type/bug Something isn't working P3 Low — cosmetic, nice to have tool/skills Skills system (list, view, manage) labels Jun 9, 2026

@tonydwb tonydwb left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review: Approved. Fixes two issues: 1) Kanban worker now ignores archived/hidden skill copies when checking availability. 2) Task-level max_retries is now properly honored in repeated_failures diagnostics. Clean fixes with good tests.

@teknium1

Copy link
Copy Markdown
Contributor

Thanks for the focused diagnostics coverage. One half of this PR needs updating before it can be salvaged onto current main.

Problems

  • The archived kanban-worker detection change is obsolete: commit 84e1d31e5 removed _kanban_worker_skill_available and the automatic worker preload. Current spawn logic forwards only explicit task skills at hermes_cli/kanban_db.py:8036; tests/hermes_cli/test_kanban_core_functionality.py:2768 asserts that no default skill is auto-loaded.
  • The retry change records failure_limit_source, but the rendered diagnostic still says "The dispatcher circuit breaker" at hermes_cli/kanban_diagnostics.py:623. A task-level max_retries cap should be described as task-level.

Suggested changes

  • Drop the obsolete archived-skill commit/test and reapply only the diagnostics work against current main.
  • Use the source field when rendering the detail text and keep the lower per-task-cap regression test.

Automated hermes-sweeper review.

@teknium1 teknium1 added sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades sweeper:blast-moderate Sweeper blast radius: moderate — a subsystem or single platform labels Jul 14, 2026

@GottZ GottZ left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was generated by AI during triage.

Summary

Six PRs touch related Kanban dispatch and diagnostics symptoms, but they do not share a single root cause: #34578, #61035, and #65996 expose active-PR respawn guards; #62393 lets an explicit unblock bypass such guards once; #51386 distinguishes interactive claims from reclaimable workers; and #42859 combines obsolete skill-preload detection with task-level retry diagnostics.

Related pull requests

  • #34578 [closed] related — (+138/-0) — closed, rejected/superseded: Adds dispatch output and a dedicated warning diagnostic for active-PR guards, but its recorded closure decision says it was superseded by the distinct sticky blocked-task promotion fix on developer/kanban-blocked-promotion-fix, not by #65996; it remains relevant as an earlier observability design reference.
  • #42859 related — (+59/-1) — salvage diagnostics only: The archived-skill fix no longer applies because current main removed automatic kanban-worker preloading, while the task-level max_retries change still addresses a real diagnostic threshold mismatch. Consistent with the keep_open review on #42859, retain only the retry work and make the rendered detail distinguish a task-level cap from the dispatcher circuit breaker.
  • #51386 related — (+352/-10) — keep open, incomplete: Introduces explicit non-expiring external claims to prevent live interactive sessions from being reclaimed and redispatched, which is distinct from respawn-guard observability. The keep_open review identifies a remaining correctness gap: detect_stale_running can still reclaim these holds, and the public --external syntax also needs documentation and reconciliation with current typed-block cleanup paths before merge.
  • #61035 [closed] related — (+99/-9) — closed, wrong upstream: Exposes respawn_guarded in JSON, CLI, daemon, and gateway logs, excludes guarded-only queues from stuck telemetry, and documents review handoffs. It remains relevant as a tested reference implementation, but it was explicitly abandoned because it targeted the wrong upstream.
  • #62393 related — (+307/-22) — keep open: Adds a one-shot, evidence-bound override so an explicit unblock permits exactly one guarded claim, then reapplies the guard after that claim, while also fixing guarded-queue health signals and exposing JSON reasons. This is a distinct control-flow fix rather than an observability duplicate; the documentation requested by the keep_open review was subsequently added in commit 110120e6.
  • #65996 related — (+252/-32) — merge candidate: Provides the current-main active-PR observability fix by exposing dispatch results, replacing false stranded_in_ready reports with a bounded info diagnostic, and supporting that severity in CLI and dashboard surfaces. This aligns with the keep_open review on #65996, which verified the affected current-main paths and event-order assumptions.

Duplicates

#61035 and #65996 substantially overlap on active-PR dispatch visibility, with #65996 being the current-main implementation and #61035 already closed as wrong-upstream. #34578 overlaps in observability but should not be relabeled as their duplicate because its recorded supersession was the separate sticky blocked-task promotion fix; #62393, #51386, and the retry-diagnostic portion of #42859 address distinct mechanisms.

Suggested consolidation

Merge #65996 for the current-main active-PR observability path; #61035 can remain closed as the wrong-upstream predecessor. Keep #62393 as a separate one-shot-unblock fix, and keep #51386 open until the detect_stale_running, documentation, and cleanup gaps from its contributor review are addressed. Do not merge #42859 as-is: drop the obsolete archived-skill half and salvage the task-level retry diagnostic with source-aware wording. Do not reopen #34578 or treat it as superseded by #65996; preserve its recorded rejection in favor of developer/kanban-blocked-promotion-fix.

Cross-PR triage: Reviewed 6 pull requests and 0 issues in this complex. Each diff was read against this issue; Assessment working set: 96 kB of PR diffs, 8 kB of issue/PR text, 7 kB of discussion (15 comments), 2 verify verdicts. verdicts reflect diff content, not PR titles. Part of an automated triage batch.

@GottZ GottZ left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was generated by AI during triage.

Delta since our previous triage comment

@rosie-skypad reports that #62393 was rebased onto current main at head 13758e0, with the documentation follow-up retained and focused tests passing. This updates the branch-status evidence, but the delta includes no diff for the new head, so the reported retention of the one-shot override, five focused regressions, and exclusion of pruned legacy tests cannot yet be independently confirmed from the diff.

Changed pull requests

  • #62393 related — (+314/-22) — updated head, pending diff verification: The author reports that the rebase resolved conflicts, retained the documented one-shot unblock override, and passed focused validation without restoring pruned tests; because no current-head diff is available in the delta, these remain author-reported rather than diff-verified. This does not conflict with the existing keep_open review, which treated the mechanism as salvageable and requested the documentation update that the author says remains included.

Suggested consolidation

The previous consolidation recommendation is unchanged: keep #62393 as a separate one-shot-unblock fix pending current-head diff verification.

Complex graph unchanged since our previous triage comment.

Cross-PR triage: Reviewed 6 pull requests and 0 issues in this complex. Diffs were read for 5 of 6 PRs (rest unavailable); Assessment working set: 75 kB of PR diffs, 8 kB of issue/PR text, 5 kB of discussion (12 comments), 0 verify verdicts. verdicts reflect diff content, not PR titles. Part of an automated triage batch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

P3 Low — cosmetic, nice to have sweeper:blast-moderate Sweeper blast radius: moderate — a subsystem or single platform sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades tool/skills Skills system (list, view, manage) type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants