Skip to content

fix(kanban): surface active PR respawn guards - #65996

Open
o269 wants to merge 1 commit into
NousResearch:mainfrom
o269:fix/dispatch-respawn-guard-observability-t_dbf30199
Open

fix(kanban): surface active PR respawn guards#65996
o269 wants to merge 1 commit into
NousResearch:mainfrom
o269:fix/dispatch-respawn-guard-observability-t_dbf30199

Conversation

@o269

@o269 o269 commented Jul 17, 2026

Copy link
Copy Markdown

Summary

  • surface active-PR respawn guards in hermes kanban dispatch as Guarded (active PR — lander action): t_x
  • expose the full respawn_guarded reason bucket in dispatch JSON, including dry runs
  • classify current active-PR guard events as an info-level awaiting_lander_pr_processing diagnostic instead of stranded_in_ready
  • expire that informational classification with the dispatcher's 24-hour PR guard window and honor canonical event ordering for same-second reruns
  • render the new info severity consistently in CLI and Kanban dashboard surfaces

This is the current-main replacement for stale PR #46269. The existing contributor branch allows maintainer edits in GitHub metadata, but the authenticated maintainer account cannot push to that fork (HTTP 403), so it could not be updated in place. Maintainers can close #46269 in favor of this PR.

Verification

  • python -m pytest -q tests/hermes_cli/test_kanban_diagnostics.py — 52 passed
  • python -m pytest -q tests/hermes_cli/test_kanban_cli_dispatch_passthrough.py — 6 passed
  • python -m pytest -q tests/hermes_cli/test_kanban_cli.py — 47 passed
  • python -m pytest -q tests/hermes_cli/test_kanban_db.py — 230 passed
  • python -m pytest -q tests/plugins/test_kanban_dashboard_plugin.py — 110 passed, 1 upstream deprecation warning
  • python -m ruff check . — passed
  • python scripts/check-windows-footguns.py --all — passed (768 files)
  • node --check plugins/kanban/dashboard/dist/index.js — passed
  • uv build --wheel --out-dir /tmp/hermes-agent-t_dbf30199-pr46269-dist — passed; wheel payload assertions passed
  • git diff --check origin/main — passed

Scope

Six files changed. Respawn-guard semantics in kanban_db.py are unchanged.

@alt-glitch alt-glitch added type/bug Something isn't working comp/cron Cron scheduler and job management comp/plugins Plugin system and bundled plugins P3 Low — cosmetic, nice to have labels Jul 17, 2026
@alt-glitch

Copy link
Copy Markdown
Collaborator

This was generated by AI during triage.

Related: #46269 remains the original open implementation. This current-main replacement covers the same active-PR guard observability path and is a salvage/replacement, not a duplicate.

@tonydwb tonydwb left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review Summary

Verdict: Comment

Summary

Fix: task deletion with cascade delete support. Adds proper cascading deletion for child tasks when parent is deleted.

No security concerns. Clean fix.


Reviewed by Hermes Agent

@tonydwb tonydwb left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review Summary

Verdict: Comment

Kanban PR respawn guard visibility fix (252 lines). Surfaces active PR respawn guards.

Checked diff — no security concerns, no hardcoded secrets.

Looks good. No blocking issues.


Reviewed by Hermes Agent

@teknium1

Copy link
Copy Markdown
Contributor

Thanks for the focused observability fix. Current main records active_pr guards in hermes_cli/kanban_db.py:7738-7749, but hermes_cli/kanban.py:2267-2323 does not surface that result and hermes_cli/kanban_diagnostics.py:925-1000 consequently reports the guarded task as stranded. The proposed CLI result bucket, bounded info diagnostic, and dashboard severity handling address those verified paths. The ordered-event approach is compatible with the callers' ascending event order (hermes_cli/kanban_db.py:3188-3191, plugins/kanban/dashboard/plugin_api.py:290-294).

Automated hermes-sweeper review.

@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 Jul 18, 2026
@GottZ

GottZ commented Aug 3, 2026

Copy link
Copy Markdown

This was generated by AI during triage.

Summary

Six PRs address related Kanban dispatch and diagnostics symptoms through distinct causes: #34578, #61035, and #65996 surface active-PR respawn guards; #62393 adds a one-shot unblock override; #51386 protects interactive claims from worker reclamation; and #42859 combines retry diagnostics with now-obsolete skill-preload detection. The active-PR observability work substantially overlaps, while the unblock, interactive-claim, and retry-cap changes remain separate mechanisms.

Related pull requests

Duplicates

#34578 and #61035 substantially overlap #65996 on active-PR dispatch visibility and guard-specific diagnostics; both are already closed, with #61035 the wrong-upstream predecessor and #34578 carrying a separate recorded supersession rationale. #62393, #51386, and the retry-diagnostic portion of #42859 are not duplicates because they change different control-flow causes.

Suggested consolidation

Keep #65996 open with its current-main observability path, while leaving #34578 and #61035 closed as overlapping predecessors. Keep #62393 open separately for its one-shot unblock mechanism; author action on #42859 should split out and update the source-aware retry diagnostic, and author action on #51386 should rebase onto current main or split out a version that guards detect_stale_running, reconciles cleanup, adds the watchdog regression, and documents --external.

Complex graph

flowchart LR
    classDef open fill:#dbeafe,stroke:#1d4ed8,color:#1e3a8a
    classDef merged fill:#dcfce7,stroke:#15803d,color:#14532d
    classDef closed fill:#e5e7eb,stroke:#6b7280,color:#1f2937
    classDef unverified fill:#f3f4f6,stroke:#9ca3af,color:#374151
    classDef best stroke-width:3px,stroke:#b45309
    classDef target stroke-width:3px,stroke:#4338ca
    subgraph Dup34578 ["PRs duplicating each other"]
        P34578["PR #34578 (closed)"]
        P61035["PR #61035 (closed)"]
        P65996["PR #65996 (open)"]
    end
    class P34578 closed
    class P61035 closed
    class P65996 open
    class P65996 target
    click P34578 "https://github.com/NousResearch/hermes-agent/pull/34578"
    click P61035 "https://github.com/NousResearch/hermes-agent/pull/61035"
    click P65996 "https://github.com/NousResearch/hermes-agent/pull/65996"
Loading

Graph: solid arrow = fixes / best fix, dashed arrow = partial or unverified (see edge label); boxed group = PRs duplicating each other; amber border = best fix; indigo border = target; gray node = closed (state tag in the node label).

Cross-PR triage: Reviewed 6 pull requests and 0 issues in this complex. Each diff was read against this issue; Assessment working set: 97 kB of PR diffs, 8 kB of issue/PR text, 5 kB of discussion (12 comments), 0 verify verdicts. verdicts reflect diff content, not PR titles. Part of an automated triage batch.

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 comp/plugins Plugin system and bundled plugins 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.

5 participants