Repository navigation
feat(source-control): ship the pr_open_state default as ready #8655
Description
Refs: #7576
Refs: #7555
Decision: #7555 (comment) (default); unattended runs: owner 2026-10-20, Decision recorded comment on this issue
Agent Brief
Type: Feature
Summary: The source-control plugin's bundled pr_open_state default flips from draft to ready, so a consumer who sets nothing gets ready PRs. A request for a draft still opens a draft. An unattended run follows pr_open_state the same way an attended run does (owner, 2026-10-20).
Problem: The owner chose open-as-ready (Q501), and #7576 records the setting's default as ready, but the plugin still ships draft. Only repositories that set the key, like this one, get ready PRs.
Current behavior:
plugins/source-control/.claude-plugin/plugin.json:42-48:pr_open_state"default": "draft", description "draft (default) leaves it for ready to flip later".plugins/source-control/README.md:543repeats"draft"as the default.plugins/source-control/skills/pull-request/SKILL.md:50: "with none of them set the state isdraft; a repository opts intoready. An unattended run leaves a draft whatever the value."plugins/source-control/reference/config-resolution.md:157-176lists the levels.plugins/source-control/skills/pull-request/evals/evals.jsoncases at lines 330 and 536 expectdraftfrom the default level.- This repository sets
pr_open_state: ready(docs/conventions/source-control.yaml:4).
Desired behavior:
plugin.jsondefaultready; its description,README.md:543,pull-request/SKILL.md:50andconfig-resolution.mdsayreadyis the default and a consumer opts intodraft.- An unattended run follows the resolved
pr_open_statelike an attended one: drop "An unattended run leaves a draft whatever the value" frompull-request/SKILL.md:50and every other place the skill says unattended runs always open a draft (search the pull-request skill's files for it), and open as ready when the value resolvesready. The ready flow's holds still apply (ready --unattendedand check-ready-holds.sh). - Unchanged: a request for a draft wins over every level; the repository level is read at the base branch.
- The two default-level eval cases expect
ready(create runs the ready phase); the draft-request case still expectsdraft; an unattended case expects the resolved value.
Key interfaces:
- Setting
pr_open_state(bundled defaultready).
Done when:
- The diff sets
"default": "ready"forpr_open_stateinplugins/source-control/.claude-plugin/plugin.jsonand updates the four texts listed (read from the diff). -
plugins/skill-quality/scripts/check-evals-quality.sh plugins/source-control/skills/pull-request/evals/evals.jsonexits 0. -
scripts/check-changelog-fragments.sh --checkpasses, with onemajorfragment forsource-control(a changed default changes behavior for consumers who set nothing). - CI's
check-pluginspasses on the PR (a PR check; this run does not run it). - CI's
check-skillspasses on the PR (a PR check; this run does not run it).
Out of scope:
- This repository's own value (already
ready). - The other source-control: PR pipeline states, review venue, findings lane and statuses #7576 slices (review venue, findings lane, statuses).
Origin:
- Open every PR as ready: hers (Lauren's opening-a-pr playbook).
- Draft only as a multi-session container: Matt's (implement-spec); kept by the request level.
- Bundled default
ready: the owner's (Q501), confirmed 2026-10-20 over the h8 relay that it staysdraft.
Do not run with: other pull-request skill changes.
Size Small, Complexity Low, Uncertainty Known.
Slice of #7576 (Phase 8, pr-states), filed from the owner's 2026-10-20 disposition round.
Activity
kyle-sexton commentedon Oct 20, 2026
Decision recorded. The owner answered in the poteto-review session (2026-10-20, question dialog): unattended runs follow
pr_open_statelike attended ones ("Follow pr_open_state"). This replaces the brief's earlier line that an unattended run always opens a draft. Basis: the owner's Q91 (open as ready). The body is amended: drop the always-draft sentence frompull-request/SKILL.md:50and its siblings; the ready flow's holds still apply.