Skip to content

fix: routing bug — getNextTask ignores board_truth, parked_pass, blocked_external#1337

Open
itskai-dev wants to merge 14 commits into
mainfrom
rhythm/pr-merged-routing-fix
Open

fix: routing bug — getNextTask ignores board_truth, parked_pass, blocked_external#1337
itskai-dev wants to merge 14 commits into
mainfrom
rhythm/pr-merged-routing-fix

Conversation

@itskai-dev
Copy link
Copy Markdown
Collaborator

Summary

Two-part routing fix:

Part 1 — sweeper bounce path (PR #2769, commit 4d5a603)

was requeuing PR-merged tasks to todo when missing artifacts. Two pr_merged guards added:

  • Artifact-rejection path: PR merged + no qa_bundle → close to done
  • Drift-repair dupeErr path: PR merged + approved → close to done

Part 2 — getNextTask selector (this PR, commit 8fbcd95)

getNextTask() was surfacing closed/stale tasks because it had no awareness of:

  • review_state=parked_pass/fail — QA-complete tasks
  • board_truth metadata — explicit per-task lane routing
  • blocked_external flags
  • reopen=true — tasks being actively reworked

Fix

Added four filters to getNextTask():

// Skip parked tasks — review_state=parked_pass/fail means QA is done
if (reviewState === 'parked_pass' || reviewState === 'parked_fail') return false

// Skip explicitly reopened tasks
if (meta?.reopen === true) return false

// Skip tasks with explicit board truth routing
if (meta?.board_truth && typeof meta.board_truth === 'string') return false

// Skip blocked external tasks
if (meta?.blocked_external === true) return false

Why Two Fixes

PR #2769 closed the sweeper bounce path. This PR closes the selector path. Together they stop:

  1. Tasks incorrectly requeued to todo by sweeper (artifact rejection bounce)
  2. Closed/stale tasks being surfaced by /tasks/next despite board truth

Reported by link: M cut bounced 13+ times. Root cause was both paths combined.

Testing

  • TypeScript clean (npx tsc --noEmit)
  • task-1777172195778-9zofmfuya (3B post-merge, parked_pass) — correctly filtered
  • task-1777356670701-lo4e5fiim (board_truth → link, blocked_external) — correctly filtered
  • Need fresh /tasks/next pull proof on rn-b1964d01-fhdmps

- Add POST /tracking/live-cta and POST /tracking/live-visit endpoints to docs
- Remove stale /activation/ghost-signups and /activation/ghost-signup-nudge from docs

Fixes route-docs contract check failure blocking PR #1153
…ion requeue

Two paths were incorrectly requeuing PR-merged tasks to todo:
1. Artifact-rejection (line ~362): missing qa_bundle after 24h in validating
   → now closes to done if pr_merged, only requeues if not merged
2. Drift-repair dupeErr block (line ~428): approved but dupeErr blocks close
   → PR merge is canonical, so pr_merged + approved → close to done

Canonical rule: PR merge = task completion signal, not artifact completeness.
qa_bundle artifacts are evidence of work, not completion criteria.

Refs: task-1778298996028-ah73bdq3m
getNextTask() was surfacing closed/stale tasks because it had no
awareness of:
- review_state=parked_pass/fail (QA-complete tasks)
- board_truth metadata (explicit per-task lane routing)
- blocked_external flags
- reopen=true (tasks being actively reworked)

These filters were already missing when the sweeper fix (PR #2769)
closed the bounce path — tasks that landed back in todo kept getting
picked up by the next-task selector.

Combined with PR #2769, this fully addresses the structural routing
bug reported by link (M cut bounced 13+ times).

Ref: task-1778408493344-cgd00jx71
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