Skip to content

fix(kanban): add kind='transient' to goal loop blocks to enable auto recovery (#71050) - #71071

Closed
webtecnica wants to merge 2 commits into
NousResearch:mainfrom
webtecnica:fix/kanban-goal-loop-block-kind
Closed

fix(kanban): add kind='transient' to goal loop blocks to enable auto recovery (#71050)#71071
webtecnica wants to merge 2 commits into
NousResearch:mainfrom
webtecnica:fix/kanban-goal-loop-block-kind

Conversation

@webtecnica

Copy link
Copy Markdown
Contributor

Summary

Fixes #71050 — the kanban goal loop's _block() closure and both goal-loop exit paths were calling block_task() without kind=, producing untyped blocks that no automated recovery path can safely act on.

Changes

cli.py (the _block closure, ~L16090)

  • Added kind: str | None = None parameter
  • Passes it through to _kb.block_task(c, task_id, reason=reason, kind=kind)

hermes_cli/goals.py (two call sites)

  • L1751 (judged done but worker never called kanban_complete after finalize nudge): added kind="transient"
  • L1767 (turn budget exhausted N/N without completing): added kind="transient"

Both exits are machine-emitted lifecycle noise the worker couldn't resolve — transient is the correct kind because it marks the block as retryable, recoverable lifecycle noise.

tests/hermes_cli/test_kanban_goal_mode.py

  • Updated test mock _block() to accept optional kind=None parameter so the existing test passes with the new call signature.

Impact

Cards blocked by the goal loop now carry kind="transient", making them visible to automated recovery paths that watch for recoverable blocks instead of being stranded as untyped blocks indistinguishable from a human hold.

@alt-glitch alt-glitch added type/bug Something isn't working comp/cli CLI entry point, hermes_cli/, setup wizard comp/cron Cron scheduler and job management provider/kimi Kimi / Moonshot P3 Low — cosmetic, nice to have labels Jul 24, 2026

yinkev commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Thanks for the focused #71050 implementation. I preserved your core commit and authorship in #71088, rebased it directly onto current main, and added behavior-contract coverage for both goal-loop exits plus the CLI→DB propagation boundary. This PR's current head also carries the earlier unrelated f77b8818b parent, so #71088 is available as the clean salvage branch for maintainers.

@webtecnica

Copy link
Copy Markdown
Contributor Author

Closing as superseded — your #71088 preserves authorship and adds the missing regression coverage. Appreciated! 🙌

@webtecnica

Copy link
Copy Markdown
Contributor Author

Closed by author — superseded by #71088.

@webtecnica webtecnica closed this Jul 26, 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 comp/cron Cron scheduler and job management P3 Low — cosmetic, nice to have provider/kimi Kimi / Moonshot type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

kanban goal loop emits untyped blocks, stranding cards outside every automated recovery path

3 participants