Skip to content

fix: getNextTask skip board_truth/parked_pass + sweeper pr_merged guards#1338

Open
itskai-dev wants to merge 14 commits into
mainfrom
rhythm/next-task-board-truth-fix
Open

fix: getNextTask skip board_truth/parked_pass + sweeper pr_merged guards#1338
itskai-dev wants to merge 14 commits into
mainfrom
rhythm/next-task-board-truth-fix

Conversation

@itskai-dev
Copy link
Copy Markdown
Collaborator

Summary

Two-part routing fix for the structural bug causing closed tasks to bounce back via /tasks/next:

Part 1 — sweeper bounce path

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

  • Artifact-rejection path (line ~363): PR merged + no qa_bundle → close to done
  • Drift-repair dupeErr path (line ~429): PR merged + approved → close to done

Part 2 — getNextTask selector

getNextTask() had no awareness of board truth signals. Added four filters:

// Skip parked tasks — QA-complete
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 Both Parts

Part 1 stops the sweeper from putting PR-merged tasks back in todo.
Part 2 stops getNextTask from surfacing tasks that carry board-truth signals.

Together: closed tasks stay closed, parked tasks stay parked, board-truth-routed tasks go to the right lane.

Testing

  • TypeScript clean
  • task-1777172195778-9zofmfuya (parked_pass) — correctly filtered
  • task-1777356670701-lo4e5fiim (board_truth → link, blocked_external) — correctly filtered
  • Need fresh /tasks/next pull proof on production node

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

Ref: task-1778408493344-cgd00jx71

- 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