Summary
Hermes Kanban already has a real review task status and dispatcher support for claiming review -> running tasks, but normal worker/CLI lifecycle paths do not expose a supported way to move a completed implementation task into that review state.
As a result, review workflows are forced into awkward workarounds:
- workers block with free-form
review-required: reasons,
- orchestrators create separate reviewer child cards,
- implementer cards are completed as “handoff only” even though the actual work is not accepted yet,
- downstream dependencies have to be manually gated on the reviewer card to avoid premature promotion.
This makes the dashboard’s review column look available, but hard to use correctly from the normal task lifecycle.
Current behaviour
In the current codebase:
hermes_cli/kanban_db.py includes review in VALID_STATUSES.
- The dispatcher has explicit review-column handling:
- selects tasks where
status = 'review',
- claims them via
claim_review_task(),
- transitions them from
review -> running,
- spawns a reviewer worker.
hermes kanban --help exposes no review, request-review, or similar CLI command.
- Worker tools expose
kanban_complete and kanban_block, but no kanban_request_review / kanban_submit_for_review tool.
complete_task() transitions running|ready|blocked -> done, not running -> review.
hermes kanban stats prints status counts for triage, todo, scheduled, ready, running, blocked, and done, but omits review even though it is a valid status.
- Review dispatch appears PR/SDLC-specific and hard-codes
claimed.skills = ["sdlc-review"]; that skill may not exist in all installations and is too narrow for non-PR Kanban review workflows.
Why this matters
The natural Kanban workflow is one card moving through a lifecycle:
todo -> ready -> running/implementation -> review -> running/reviewer -> done
If the reviewer requests changes, the same card should be routed back to the implementer with review comments/evidence:
review -> ready/running implementer fix -> review again
Without a first-class transition into review, users and agents have to model one logical card as multiple physical cards:
- implementer card,
- reviewer card,
- fix card,
- re-review card,
- extra gates for downstream children.
That preserves safety, but it creates board clutter and makes automation brittle. It also makes done ambiguous: an implementation card may be marked done merely to unblock a review handoff, not because the feature is accepted.
For autonomous multi-profile Kanban, this is a governance issue as much as a UX issue. Review gates should be explicit, auditable, and easy for workers to request without relying on prose conventions or manual orchestration.
Expected behaviour
Hermes should provide a first-class request-review lifecycle operation.
Possible CLI shape:
hermes kanban request-review <task_id> \
--reviewer edith \
--summary "Implementation complete; targeted tests passing; needs independent review" \
--metadata '{"changed_files": [...], "tests_run": [...]}'
Possible worker tool shape:
kanban_request_review(
reviewer="edith",
summary="Implementation complete; targeted tests passing; needs independent review",
metadata={
"changed_files": [...],
"tests_run": [...],
"artifacts": [...]
}
)
The operation should:
- Validate task ownership when called by a dispatcher-spawned worker.
- Transition
running|ready|blocked -> review.
- End the implementer’s current run with an outcome like
submitted_for_review, not completed.
- Persist review metadata on the run/event stream.
- Assign or otherwise route the reviewer profile.
- Clear the implementer claim so the dispatcher can claim the review phase.
- Keep downstream child tasks waiting until final reviewer approval moves the card to
done.
Reviewer outcomes
The reviewer should have explicit audited outcomes, for example:
Approve:
Request changes:
review/running -> ready
assignee -> original implementer
comment/review metadata records requested changes
Escalate:
review/running -> blocked
reason/category -> human_required or policy_decision_required
The exact API names are flexible; the key requirement is that review is a first-class state transition, not a prose convention.
Review skill/configuration
Review dispatch should not hard-code a missing or overly specific skill.
Possible options:
- Use a configured default review skill, with a fail-closed check if it is missing.
- Preserve task-requested review skills from the request-review call.
- Default to an existing general review skill such as
requesting-code-review where appropriate.
- Allow non-code review workflows, e.g. policy review, memory safety review, ops/config review, or research verification.
Small related CLI/UI bug
hermes kanban stats should include review in the printed status list, since review is part of VALID_STATUSES and is dispatchable.
Prior related issues
This issue is intentionally narrower than the broader approval-policy work: the review status already exists, but the normal lifecycle lacks a supported way to enter and use it.
Acceptance criteria
- Add CLI support for moving a task into review, with reviewer assignment and structured metadata.
- Add a worker tool for requesting review from the current task.
- Add DB tests for
running -> review and review metadata persistence.
- Add dispatcher tests proving
review tasks are claimed and spawned with an existing/configured review skill.
- Add reviewer outcome tests for approve, request-changes, and escalate/block.
- Ensure downstream dependencies are satisfied only after final approval/done, not after implementation handoff.
- Include
review in CLI/dashboard status counts and filters where missing.
Environment
Observed on a local Hermes checkout on the main branch while operating the Kanban board with multiple profiles (u as implementer, edith as reviewer). The issue is visible from source inspection and from live Kanban workflows that currently require extra reviewer/fix cards to represent one logical implementation-review loop.
Summary
Hermes Kanban already has a real
reviewtask status and dispatcher support for claimingreview -> runningtasks, but normal worker/CLI lifecycle paths do not expose a supported way to move a completed implementation task into that review state.As a result, review workflows are forced into awkward workarounds:
review-required:reasons,This makes the dashboard’s review column look available, but hard to use correctly from the normal task lifecycle.
Current behaviour
In the current codebase:
hermes_cli/kanban_db.pyincludesreviewinVALID_STATUSES.status = 'review',claim_review_task(),review -> running,hermes kanban --helpexposes noreview,request-review, or similar CLI command.kanban_completeandkanban_block, but nokanban_request_review/kanban_submit_for_reviewtool.complete_task()transitionsrunning|ready|blocked -> done, notrunning -> review.hermes kanban statsprints status counts fortriage,todo,scheduled,ready,running,blocked, anddone, but omitsrevieweven though it is a valid status.claimed.skills = ["sdlc-review"]; that skill may not exist in all installations and is too narrow for non-PR Kanban review workflows.Why this matters
The natural Kanban workflow is one card moving through a lifecycle:
If the reviewer requests changes, the same card should be routed back to the implementer with review comments/evidence:
Without a first-class transition into
review, users and agents have to model one logical card as multiple physical cards:That preserves safety, but it creates board clutter and makes automation brittle. It also makes
doneambiguous: an implementation card may be marked done merely to unblock a review handoff, not because the feature is accepted.For autonomous multi-profile Kanban, this is a governance issue as much as a UX issue. Review gates should be explicit, auditable, and easy for workers to request without relying on prose conventions or manual orchestration.
Expected behaviour
Hermes should provide a first-class request-review lifecycle operation.
Possible CLI shape:
Possible worker tool shape:
The operation should:
running|ready|blocked -> review.submitted_for_review, notcompleted.done.Reviewer outcomes
The reviewer should have explicit audited outcomes, for example:
Approve:
Request changes:
Escalate:
The exact API names are flexible; the key requirement is that review is a first-class state transition, not a prose convention.
Review skill/configuration
Review dispatch should not hard-code a missing or overly specific skill.
Possible options:
requesting-code-reviewwhere appropriate.Small related CLI/UI bug
hermes kanban statsshould includereviewin the printed status list, sincereviewis part ofVALID_STATUSESand is dispatchable.Prior related issues
This issue is intentionally narrower than the broader approval-policy work: the review status already exists, but the normal lifecycle lacks a supported way to enter and use it.
Acceptance criteria
running -> reviewand review metadata persistence.reviewtasks are claimed and spawned with an existing/configured review skill.reviewin CLI/dashboard status counts and filters where missing.Environment
Observed on a local Hermes checkout on the
mainbranch while operating the Kanban board with multiple profiles (uas implementer,edithas reviewer). The issue is visible from source inspection and from live Kanban workflows that currently require extra reviewer/fix cards to represent one logical implementation-review loop.