Skip to content

feat: allow forced kanban dispatch - #30457

Open
sergeikabuldzhanov wants to merge 1 commit into
NousResearch:mainfrom
sergeikabuldzhanov:fix/kanban-dispatch-force
Open

feat: allow forced kanban dispatch#30457
sergeikabuldzhanov wants to merge 1 commit into
NousResearch:mainfrom
sergeikabuldzhanov:fix/kanban-dispatch-force

Conversation

@sergeikabuldzhanov

Copy link
Copy Markdown

Summary

  • add hermes kanban dispatch --task/--task-id to target specific ready/review tasks
  • add --force to bypass respawn guards such as active_pr and recent_success
  • record respawn_guard_overridden events and expose guard diagnostics in text/JSON dispatch output

Tests

  • /home/sergei/.hermes/hermes-agent/venv/bin/python -m py_compile hermes_cli/kanban.py hermes_cli/kanban_db.py
  • /home/sergei/.hermes/hermes-agent/venv/bin/python -m pytest tests/hermes_cli/test_kanban_db.py -q -o 'addopts='

@teknium1 teknium1 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.

Thanks for adding targeted dispatch and guard diagnostics. Current main already handles deliberate re-runs after recent success: hermes_cli/kanban_db.py:7080-7103 recognizes an explicit re-queue event, with coverage at tests/hermes_cli/test_kanban_db.py:1882-1903 (commit 77db9d6bf).

Problems

  • hermes_cli/kanban_db.py:4876 applies force regardless of whether task_ids is set. Thus dispatch --force bypasses every guard on every ready task, despite the CLI help describing selected tasks. The PR documentation explicitly includes auth blockers, while current main deliberately defers quota/auth failures (tests/hermes_cli/test_kanban_db.py:1947-1989) and rate-limit cooldowns (hermes_cli/kanban_db.py:7039-7073).
  • The dispatcher now has lock-aware wrapper and implementation layers (hermes_cli/kanban_db.py:7174-7253), so this needs a port rather than applying the old single-function change.

Suggested changes

  • Require explicit --task IDs with --force, preserve the filter through the current locked dispatcher, and limit override behavior to reviewed guard reasons such as active_pr.
  • Add coverage that force cannot restart quota/auth or rate-limited tasks.

Automated hermes-sweeper review.

Comment thread hermes_cli/kanban_db.py
@@ -4863,17 +4874,26 @@ def dispatch_once(
# blocks via the normal path rather than on first occurrence.
guard_reason = check_respawn_guard(conn, row["id"])
if guard_reason is not None:

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.

force is not conditioned on task_filter, so hermes kanban dispatch --force bypasses guards for every ready task, including the documented auth blocker. Require explicit selected task IDs and preserve quota/auth (and current main's rate-limit) protections rather than treating every guard as manually overrideable.

@teknium1 teknium1 added sweeper:risk-session-state Sweeper risk: may lose/corrupt/mis-associate session or context state sweeper:blast-moderate Sweeper blast radius: moderate — a subsystem or single platform labels Jul 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/cli CLI entry point, hermes_cli/, setup wizard P3 Low — cosmetic, nice to have sweeper:blast-moderate Sweeper blast radius: moderate — a subsystem or single platform sweeper:risk-session-state Sweeper risk: may lose/corrupt/mis-associate session or context state type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants