NousResearch/hermes-agent
Kanban config, concurrency, and child task promotion
Cluster 28016. Data as of
Nothing open on GitHub. Fix merged in #28344 on 19 May 2026. Check it covers your case.
The short answer
0open issues
0open PRs
3items grouped
- Known?
- Yes. 3 related items grouped here, 1 issue already closed.
- Fix event
- A fix was merged to main in PR #28344. Check it covers your case. No release data is tracked.
- Tracker
- The maintainers' tracker marks this
resolved, deciding PR #28344. That is separate from the fix event. - Still open
- Nothing open on GitHub.
These items address kanban dispatcher concurrency controls (capping concurrent workers, per-profile limits), a new config toggle for auto-promoting child tasks to ready, and related documentation and bug fixes.
Open issues0
Open PRs0
Fixes on record
-
#28344 feat(kanban): add auto_promote_children config toggle (#28220)
files:
hermes_cli/kanban_db.py,hermes_cli/kanban_decompose.py,plugins/kanban/dashboard/plugin_api.pyShow the diff
-
hermes_cli/kanban_db.py@@ -2798,6 +2798,7 @@ def decompose_triage_task( root_assignee: Optional[str], children: list[dict], author: Optional[str] = None, + auto_promote: bool = True, ) -> Optional[list[str]]: """Fan a triage task out into child tasks and promote the root to ``todo``. @@ -2983,8 +2984,11 @@ def decompose_triage_task( # Outside the write_txn: promote parent-free children to 'ready' # so the dispatcher picks them up on its next tick. Same pattern - # specify_triage_task uses. - recompute_ready(conn) + # specify_triage_task uses. When auto_promote is False children + # stay in 'todo' until the user manually promotes them — useful + # for manual-review-first workflows. + if auto_promote: + recompute_ready(conn) return child_ids -
hermes_cli/kanban_decompose.py@@ -271,6 +271,8 @@ def decompose_task( cfg = _load_config() orchestrator = _resolve_orchestrator_profile(cfg) default_assignee = _resolve_default_assignee(cfg) + kanban_cfg = cfg.get("kanban", {}) if isinstance(cfg, dict) else {} + auto_promote = bool(kanban_cfg.get("auto_promote_children", True)) roster, valid_names = _build_roster() try: @@ -410,6 +412,7 @@ def decompose_task( root_assignee=orchestrator, children=children, author=audit_author, + auto_promote=auto_promote, ) except ValueError as exc: return DecomposeOutcome(task_id, False, f"DB rejected graph: {exc}") -
plugins/kanban/dashboard/plugin_api.py@@ -1701,6 +1701,7 @@ class OrchestrationSettingsBody(BaseModel): orchestrator_profile: Optional[str] = None default_assignee: Optional[str] = None auto_decompose: Optional[bool] = None + auto_promote_children: Optional[bool] = None @router.get("/orchestration") @@ -1716,6 +1717,7 @@ def get_orchestration_settings(): explicit_orch = (kanban_cfg.get("orchestrator_profile") or "").strip() explicit_default = (kanban_cfg.get("default_assignee") or "").strip() auto_decompose = bool(kanban_cfg.get("auto_decompose", True)) + auto_promote_children = bool(kanban_cfg.get("auto_promote_children", True)) # Resolve fallbacks the same way the decomposer does. resolved_orch = explicit_orch @@ -1738,6 +1740,7 @@ def get_orchestration_settings(): "orchestrator_profile": explicit_orch, "default_assignee": explicit_default, "auto_decompose": auto_decompose, + "auto_promote_children": auto_promote_children, "resolved_orchestrator_profile": resolved_orch, "resolved_default_assignee": resolved_default, "active_profile": active_default, @@ -1803,6 +1806,9 @@ def set_orchestration_settings(payload: OrchestrationSettingsBody): if payload.auto_decompose is not None: kanban_section["auto_decompose"] = bool(payload.auto_decompose) + if payload.auto_promote_children is not None: + kanban_section["auto_promote_children"] = bool(payload.auto_promote_children) + try: save_config(cfg) except Exception as exc:
-
1 PR closed without merging
From the close comments: merged via another change 1
-
#28220 feat(kanban): add auto_promote_children config toggle · merged via another change →
2e09d25,#28344
Closed issues · 1
- Closed#28016[Feature]: Config option to keep decomposed child tasks in todo instead of auto-promoting to ready
How this cluster was grouped
-
Link evidence (
structural links throughout): every member is connected by structural evidence: shared changed files, or a closing/superseded reference. -
Pairwise link density
0.67: the share of item pairs that carry a link, counting a structural link in full and a relevance-only link at 0.36.1.00means every pair is linked.
Pick up a Lab task
Check whether a fix covers the open issues here, with your own agent. Bring back evidence for maintainers.
Open the LabAt a glance
- Merged PRs
- #28344
- Closed issues
- 1
- Attempts
- 1 PR closed without merging
- Fix link checked
- 19 May 2026