Skip to content

fix(roadmap): implement must not take unmerged stage plan PR #4078

Open

Description

@dan-petty

Problem Description

The service implement job takes a staged item before a person reviews and merges the plan pull request.
Row stage opens a draft plan pull request and sets stage.pr on the item.
Row implement checks _takeable_status, which accepts status/ready.
_Judge._route reads recorded_branch, which returns stage.branch and stage.pr.
_pull_reason accepts any open draft pull request.
The service then creates a runner Job that implements the staged branch before human approval.
This run sets implement.pr to the plan pull request number.
kind_of in implement_pull.py then treats the plan pull request as an implementation pull request.
The merge readiness check then refuses the draft because tasks in tasks.md are not ticked.

Reproduction Steps

  1. Run row stage on a ready roadmap item.
  2. Confirm that row stage opens a draft plan pull request such as PR docs(openspec): plan #3391 Refuse criteria entries not in the issue body #4069.
  3. Run row implement while the plan pull request is an unmerged draft.
  4. Inspect the created jobs and issue record.

Expected vs Actual Behavior

Expected: Row implement takes only Planned items with changes on the default branch, or retried implementation branches.
Actual: Row implement launches a runner Job for unmerged draft plan pull requests and marks the item In Progress.

Environment Diagnostics

  • DevOps CLI Version: 0.83.2
  • Python Version: 3.14.10
  • OS & Architecture: Linux x86_64
  • Execution Environment: Roadmap Service / Kubernetes

Logs, Traces, or Terminal Output

implement.job: devops-cli-runner-20261107-201633-cba7
implement.pr: 4069
stage.pr: 4069
PR #4069 is not ready: Task group 1 has a task that is not ticked.

Pre-Submission Checklist

  • I have verified that no sensitive credentials, private keys, or internal tokens are contained in this issue report.
  • I have checked existing issues and pull requests to ensure this is not a duplicate.

Activity

  1. added
    type/bugDefect, regression, or incorrect runtime behavior
    scope/roadmapThe roadmap jobs: intake, refine, stage, implement and the Service that runs them
    status/newStatus New: the item is not ready yet
    effort/lowEffort Low: little work
    on Nov 7, 2026
  2. dan-petty commented on Nov 7, 2026

    @dan-petty
    OwnerAuthor

    Intake placed this item to the backlog: intake puts every new item in the backlog. A person plans the milestones.

    • Type: type/bug. The fix prefix of the title gives the type.
    • Scope: scope/roadmap. The (roadmap) scope of the title gives the scope.
    • Priority: P2-Medium. The bug launches unapproved runner Jobs and corrupts item state, but does not cause data loss or a security breach.
    • Value: Medium. It stops wasted compute and incorrect workflow state on unapproved items.
    • Effort: Low. The fix is a condition check in the implement job selection logic to exclude unmerged draft stage plan PRs.
    • Possible duplicate: fix(roadmap): leave out items with unmerged stage plan PRs #4041, which may ask for the same change. The model names Prevent the implement job from selecting items whose stage plan pull request is still an unmerged draft as the change that both ask for. Both items ask the implement job to skip items with unmerged draft stage plan PRs, delivering the same selection filter. A person closes one of the two if that is so.
  3. added
    priority/p2-mediumStandard priority feature work and architectural improvements
    on Nov 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    effort/lowEffort Low: little workpriority/p2-mediumStandard priority feature work and architectural improvementsscope/roadmapThe roadmap jobs: intake, refine, stage, implement and the Service that runs themsource/agentFiled by an agentstatus/newStatus New: the item is not ready yettype/bugDefect, regression, or incorrect runtime behaviorvalue/mediumValue Medium

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions