Skip to content

fix(kanban): preserve orchestrator lifecycle - #77060

Open
voidfreud wants to merge 2 commits into
NousResearch:mainfrom
voidfreud:fix/kanban-orchestrator-lifecycle
Open

fix(kanban): preserve orchestrator lifecycle#77060
voidfreud wants to merge 2 commits into
NousResearch:mainfrom
voidfreud:fix/kanban-orchestrator-lifecycle

Conversation

@voidfreud

@voidfreud voidfreud commented Aug 2, 2026

Copy link
Copy Markdown

Summary

  • separate task-lifecycle Kanban access from explicit board-routing capability, including for dispatcher-spawned orchestrator profiles
  • make kanban_create reject unknown profile assignees before creating stranded cards
  • keep orchestrator roots alive through dependency blocking and resumption, with implementation → reviewer dependencies instead of review-required deadlocks
  • inject full worker guidance only in dispatcher-scoped sessions and update the Kanban docs to match

Verification

  • uv run --extra dev pytest tests/tools/test_kanban_tools.py tests/agent/test_prompt_builder.py -q — 90 passed, 1 skipped
  • uv run --extra dev pytest tests/agent/test_system_prompt.py tests/test_model_tools.py tests/hermes_cli/test_kanban_worker_spawn_toolsets.py -q — 33 passed
  • uv run --extra dev pytest tests/hermes_cli/test_kanban_notify.py tests/gateway/test_kanban_notifier.py tests/tui_gateway/test_kanban_notify_poller.py -q — 21 passed
  • uv run --extra dev ruff check ... — clean
  • live smoke test with the branch gateway: Default created one Orchestrator root; Orchestrator created Researcher → Reviewer dependencies, dependency-blocked its own root, resumed in a second run after both parents completed, inspected both handoffs, and completed with the verified result

@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 tracing the dispatcher lifecycle end-to-end. The premise is real: current main tells dispatcher-scoped orchestrators to fan out in agent/prompt_builder.py:254-266, but excludes those same workers from the routing gate in tools/kanban_tools.py:111-124; kanban_create and kanban_link use that gate at tools/kanban_tools.py:2210-2234.

Problems

  • tools/kanban_tools.py:60 changes the established toolsets: [kanban] contract to an exclusive platform_toolsets.cli lookup. The original two-tier routing commit, 2704e7b67e, explicitly established toolsets: [kanban] for orchestrators. Please retain compatibility or provide a migration plus coverage.
  • The changed default_assignee documentation is inaccurate. hermes_cli/kanban_decompose.py:201-214 falls back to the active profile or default, and lines 252-268 rewrite invalid/absent decomposition assignees to that fallback.

Suggested changes

  • Keep the legacy configuration path working while recognizing the platform-scoped form, and test a real dispatcher-spawned routing profile.
  • Restore the documented fallback behavior for kanban.default_assignee.

Automated hermes-sweeper review.

Comment thread tools/kanban_tools.py
Comment thread website/docs/user-guide/features/kanban.md
@alt-glitch alt-glitch added type/bug Something isn't working comp/agent Core agent runtime: loop, agent_init, prompt builder, context-compression, responses endpoint comp/cron Cron scheduler and job management P3 Low — cosmetic, nice to have needs-decision Awaiting maintainer decision before any implementation labels Aug 2, 2026
@alt-glitch

Copy link
Copy Markdown
Collaborator

This was generated by AI during triage.

Related: #64186 and #68608 both change Kanban guidance dispatch. This PR adopts a broader lifecycle and routing contract, including dispatcher-spawned orchestrators and dependency resumption; maintainers should choose the intended contract rather than treating these as duplicates.

@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 Aug 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/agent Core agent runtime: loop, agent_init, prompt builder, context-compression, responses endpoint comp/cron Cron scheduler and job management needs-decision Awaiting maintainer decision before any implementation 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 type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants