Skip to content

fix(kanban): keep initial blocked tasks sticky - #66993

Open
opita04 wants to merge 1 commit into
NousResearch:mainfrom
opita04:fix/ops002-initial-block-sticky-integration
Open

fix(kanban): keep initial blocked tasks sticky#66993
opita04 wants to merge 1 commit into
NousResearch:mainfrom
opita04:fix/ops002-initial-block-sticky-integration

Conversation

@opita04

@opita04 opita04 commented Jul 18, 2026

Copy link
Copy Markdown

Summary

Keep explicitly blocked Kanban tasks sticky through readiness recomputation, while preserving manual promotion and later circuit-breaker recovery.

Changes

  • atomically record an initial blocked event at task creation
  • emit unblocked before promoted_manual
  • add regressions for construction-barrier TOCTOU, event ordering, transaction rollback, manual promotion, and transient recovery

Why

Without durable initial-block provenance, recompute_ready() can promote a child while its graph is still being constructed if every currently attached parent is done.

Verification

  • 400 relevant Kanban CLI/database/tool tests passed on current upstream main
  • exact implementation/test bytes match the independently reviewed deployed-base patch
  • independent review: PASS, no P0-P3 findings
  • git diff --check: passed

@alt-glitch alt-glitch added type/bug Something isn't working comp/cron Cron scheduler and job management P3 Low — cosmetic, nice to have needs-decision Awaiting maintainer decision before any implementation labels Jul 18, 2026
@alt-glitch

Copy link
Copy Markdown
Collaborator

This was generated by AI during triage.

Related sticky-block implementations: this patch shares the create-time blocked-event mechanism but also changes manual-promotion event ordering, so it is competing work rather than a pure duplicate.

@teknium1

Copy link
Copy Markdown
Contributor

Thanks for the focused Kanban regression coverage. Current main has the exact gap: create_task accepts initial_status="blocked" at hermes_cli/kanban_db.py:2585, but persists only the created event at hermes_cli/kanban_db.py:2670; recompute_ready relies on _has_sticky_block() at hermes_cli/kanban_db.py:3355 and otherwise promotes the blocked card at hermes_cli/kanban_db.py:3447.

The PR's create-time blocked event and manual-promotion unblocked event match that existing event-based contract. Its added tests cover the previously untested initial-status path, transaction rollback, ordering, and recovery behavior. No blocking issue was identified from the diff.

Automated hermes-sweeper review.

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

Labels

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 sweeper:risk-session-state Sweeper risk: may lose/corrupt/mis-associate session or context state type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants