Skip to content

feat(kanban): route implementation handoffs through review - #5

Closed
solovision24 wants to merge 0 commit into
mainfrom
agent/dev-kanban-review-lifecycle
Closed

feat(kanban): route implementation handoffs through review#5
solovision24 wants to merge 0 commit into
mainfrom
agent/dev-kanban-review-lifecycle

Conversation

@solovision24

Copy link
Copy Markdown
Owner

Summary

  • replace review-required blocking convention with explicit Review-lane handoff
  • preserve implementation evidence and original implementer provenance
  • create idempotent remediation cards for changes-requested reviews
  • add CLI/tool APIs, prompt guidance, docs, and behavioral tests

Verification

  • HERMES_PYTHON=/home/solo/.hermes/hermes-agent/venv/bin/python bash scripts/run_tests.sh tests/hermes_cli/test_kanban_review_lifecycle.py tests/hermes_cli/test_kanban_db.py tests/tools/test_kanban_tools.py tests/hermes_cli/test_kanban_cli.py -q
  • 63 tests passed
  • git diff --check

Router note

  • Codex router run: run-20260801T063412-791291df
  • Router baseline was blocked by pre-existing full-suite failures; exact status: blocked_baseline_failed. DEV independently verified the focused Kanban suite.

@chatgpt-codex-connector

Copy link
Copy Markdown

💡 Codex Review

"UPDATE tasks SET status='done', result=?, completed_at=?, claim_lock=NULL, "
"claim_expires=NULL, worker_pid=NULL WHERE " + where,

P1 Badge Keep rejected reviews from satisfying dependencies

When a reviewed task has dependent children, marking the canonical implementation task done here makes the following recompute_ready() immediately promote those children even though the remediation task is still merely ready. A parent with a todo child therefore becomes done and releases that child as soon as review requests changes, allowing downstream stages to consume rejected work; keep the original dependency unsatisfied or rewire its children to wait for the remediation.


kb, conn = _connect(board=args.get("board"))
try:
ok = kb.submit_for_review(
conn, tid, reviewer=reviewer, summary=summary,
metadata=args.get("metadata"), expected_run_id=_worker_run_id(tid),

P1 Badge Enforce task ownership in review handlers

In a dispatcher-spawned worker, an explicit foreign task_id makes _worker_run_id() return None, so this new handler can submit any running sibling task for review; because the caller-controlled board is also honored, it can even target another board. kanban_review_changes has the same omission and can close another active review. Mirror the delegated-child and _enforce_worker_task_ownership() guards used by the existing lifecycle handlers before either mutation.

AGENTS.md reference: AGENTS.md:L1116-L1122


tid = _default_task_id(args.get("task_id"))
reviewer = str(args.get("reviewer") or "").strip()
summary = str(args.get("summary") or "").strip()
if not tid or not reviewer or not summary:
return tool_error("task_id, reviewer, and summary are required")
try:
kb, conn = _connect(board=args.get("board"))
try:
ok = kb.submit_for_review(
conn, tid, reviewer=reviewer, summary=summary,
metadata=args.get("metadata"), expected_run_id=_worker_run_id(tid),

P2 Badge Redact review handoffs before storing them

The model-controlled review summary and metadata are passed directly into durable run/event rows, and changes-requested summaries are also copied into the remediation body. If a worker includes a token or credential from command output, it remains in the Kanban database and is returned by kanban_show; apply the same redact_sensitive_text() handling used by kanban_complete, kanban_block, and kanban_comment to both new review handlers.

ℹ️ 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".

@solovision24

Copy link
Copy Markdown
Owner Author

Closed as superseded by PR #11. This PR targets stale fork main and has drifted into an unrelated-history conflict (8,097 changed files / 10,000 commits), so resolving the conflict would be unsafe and incorrect. The canonical native Review implementation is PR #11 on dev/hermes-upgrade-t_16bbffad. Do not reopen or merge this branch.

solovision24 pushed a commit that referenced this pull request Aug 3, 2026
…review #5)

The fence-cancel poll loops (sync host wait in conversation_compression,
async hygiene wait in gateway/run) spun at 1kHz while the worker held
the fence through its lock-setup window — which rides SessionDB write
patience and can last seconds. 25ms keeps sub-tick cancel latency
without the spin.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant