fix(kanban): allow requeued review workers past PR guard - #9
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 74c68bd66a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| # only ever a child here, never a parent of children. | ||
| for cid in child_ |
There was a problem hiding this comment.
Preserve the review lane when requeueing crashed reviewers
When a review worker crashes, detect_crashed_workers() changes the card to ready; allowing it through here sends it through _dispatch_once_locked()'s ordinary ready-task path, which calls claim_task() and does not inject the sdlc-review skill. Only cards retaining status='review' reach claim_review_task() and receive that skill, so the recovered worker may resume as an implementation worker instead of independently reviewing the PR. Preserve/reconstruct the review status or route review retries through the review dispatch path rather than merely bypassing this guard.
AGENTS.md reference: AGENTS.md:L54-L57
Useful? React with 👍 / 👎.
Orion Review — changes requiredReviewed immutable head P1 — crashed reviewer retries lose native Review routing
The added test at Acceptance criteria:
Verification
Verdict: do not merge until the P1 routing gap is fixed on this same branch/PR. |
Orion Re-review — changes still requiredReviewed immutable head P1 — the retry still does not re-enter the native Review dispatch path
That leaves reviewer retries coupled to ordinary implementation semantics (ready-loop guards, parent claim gate, default-assignee/per-profile handling) and duplicates only today’s visible skill/event behavior. It does not satisfy the prior acceptance criterion that the retry use the native Review claim/spawn path, and the duplicate path can drift again. The regression at Acceptance criteria:
Verification
Verdict: do not merge this head. |
solovision24
left a comment
There was a problem hiding this comment.
Orion Review — changes required
Reviewed immutable head 1477a6d2920e39615dce7801998a34654be8c4c9.
P1 — reviewer crash breaker no longer blocks the card
detect_crashed_workers() now restores reviewer crashes to status=review (hermes_cli/kanban_db.py:7614-7640), but _record_task_failure() still only transitions ready/running rows to blocked on the timeout/crash path (hermes_cli/kanban_db.py:7871-7879). At the retry limit it therefore emits gave_up and returns auto_blocked=True while leaving the task in review; the native review dispatcher immediately claims/spawns it again. This defeats the crash breaker and can create an infinite reviewer respawn loop.
Acceptance criteria:
- At the failure/protocol-violation limit, a crashed native-review card is actually
blockedand is not spawned again. - Below the limit, it remains in
reviewand retries throughclaim_review_task()withsdlc-review. - Add a regression test covering the threshold path, not only the first requeue.
Focused tests currently pass (37/37), but they do not exercise this breaker interaction. CI also currently reports Check contributors / check-attribution failed; that gate must be understood/cleared before merge.
Orion Re-review — changes still requiredReviewed immutable head P1 — restoring
|
Orion Re-review — changes still requiredReviewed immutable head P1 — native Review dispatch still bypasses the rate-limit cooldown
The new test at Acceptance criteria:
Verification
Verdict: do not merge this head. |
Orion Re-review — approved for mergeReviewed immutable head No blocking findings. The native Review dispatcher now invokes Verification:
Verdict: Orion approved for squash merge into |
78167ed
into
dev/hermes-upgrade-t_16bbffad
* fix(kanban): allow requeued review workers past PR guard * fix(kanban): preserve review routing after crash requeue * fix(kanban): preserve native review lane on crash * fix(kanban): apply retry guards to native reviews * fix(kanban): guard native review respawns during cooldown --------- Co-authored-by: SoLo <solo@SoLoBot>
* feat(kanban): route implementation handoffs through review * fix(kanban): allow requeued review workers past PR guard (#9) * fix(kanban): allow requeued review workers past PR guard * fix(kanban): preserve review routing after crash requeue * fix(kanban): preserve native review lane on crash * fix(kanban): apply retry guards to native reviews * fix(kanban): guard native review respawns during cooldown --------- Co-authored-by: SoLo <solo@SoLoBot> * feat(kanban): enforce native review handoff evidence * fix(kanban): make native review handoff canonical --------- Co-authored-by: SoLo <solo@SoLoBot>
* fix: allow kimi k3 vision auto-routing * chore: preserve local reasoning-relay + TUI fast-echo fixes before v2026.7.20 upgrade - agent/conversation_loop.py: prioritise structured reasoning fields over inline-think content for tool_progress_callback relay - ui-tui appLayout.tsx: drop stale inputHeight box sizing (auto-size from rendered content instead) - ui-tui textInput.tsx: cancel pending fast-echo parent update on submit * fix(prompt): apply root policy to named profiles * chore: reconcile local Hermes changes with v2026.7.30 * feat(kanban): route implementation handoffs through review * fix(kanban): allow requeued review workers past PR guard (#9) * fix(kanban): allow requeued review workers past PR guard * fix(kanban): preserve review routing after crash requeue * fix(kanban): preserve native review lane on crash * fix(kanban): apply retry guards to native reviews * fix(kanban): guard native review respawns during cooldown --------- Co-authored-by: SoLo <solo@SoLoBot> * fix(kanban): expose native review initial status (#7) Co-authored-by: SoLo <solo@SoLoBot> * fix(kanban): restore native GitHub PR ingest (#8) * fix(kanban): restore native GitHub PR ingest * fix(kanban): restore GitHub PR lifecycle safeguards --------- Co-authored-by: SoLo <solo@SoLoBot> --------- Co-authored-by: SoLo <solo@SoLoBot>
* fix(kanban): allow requeued review workers past PR guard * fix(kanban): preserve review routing after crash requeue * fix(kanban): preserve native review lane on crash * fix(kanban): apply retry guards to native reviews * fix(kanban): guard native review respawns during cooldown --------- Co-authored-by: SoLo <solo@SoLoBot>
- tests/agent/test_session_activity.py asserts against ACTIVITY_DESCRIPTION_MAX instead of the literal 120. - The session-stall WARNING log line names its config knob (agent.session_stall_timeout) so operators can find the setting. - hermes_state.py: collapse the triple blank line near line 191. - hermes_cli/status.py no longer imports the private hermes_cli.main._relative_time: the helper moved to a public home (hermes_cli.timefmt.relative_time); main._relative_time stays as a thin back-compat wrapper (sessions_cmd and external patchers keep working).
Summary
Verification
All focused tests passed: 36/36. This PR is on the SoLo fork only; do not open or reopen an official NousResearch PR.