Repository navigation
Description
Problem
Every pull request the code-tidying upkeep batch opens (#12674) stalls. pr-verify judges a pull request only against the spec text of its linked issues (docs/conventions/pr-pipeline/README.md:726-727, resolve-pr.mjs linkedIssues). The batch writes No related issue: code-tidying upkeep sweep. as each body's first line, so pr-verify has nothing to judge against and fails the head.
Seen on the first live run (https://github.com/melodic-software/claude-code-plugins/actions/runs/41588965297), which opened #12763, #12764 and #12765:
- pr-verify failed each head with a fail note that begins "has no spec to judge against. It closes no issue and has no
Refs:" (refactor(autonomy): sort setup script imports and collapse a wrapped ternary #12764). - address-feedback ran two rounds and left the threads open, so pr-unblock stopped with
feedback-untaken-threadsand addedneeds-sessionanddo-not-merge. - A session replaced all three with owner-login PRs (refactor(autonomy): sort setup script imports and collapse a wrapped ternary #12791, refactor(visualization): route check-deck's K2 refusal through its local-result helper #12806, refactor(plugin-quality): fold repeated resets and patterns in the audit collectors #12811).
upkeep_max_open is 3, so these three fill the cap and the daily batch opens nothing new until a session clears them by hand. Every later batch will stall the same way.
Options
- The batch links a standing spec issue: an open, agent-ready issue whose body holds the upkeep sweep contract (structure-only edits, Beck's tidyings, behaviour unchanged, hook-wired files left alone). Each PR body opens
Refs: #<that issue>. Nothing in pr-verify changes. - pr-verify reads a spec from a tracked convention file when the PR is lanes-App-authored on a
chore/tidy-adhoc-*branch. This adds a second spec source to pr-verify. - pr-verify skips upkeep PRs. This drops the only check that the tidy left behaviour unchanged.
Recommended: 1. Basis: it uses the spec path pr-verify already has (linkedIssues), with no new mechanism. #9294 made pr-verify judge a Refs-linked lane PR against its issue.
Done when
- The upkeep batch's PR body links a spec that pr-verify reads, and pr-verify passes or fails an upkeep PR on its content, not with "no spec".
- One live upkeep run's PR reaches the merge queue through pr-merge without a session.
Metadata
Metadata
Assignees
Labels
Type
Fields
Work status
Activity
github-actions commentedon Nov 3, 2026
Proposed work class: work-class: scoped
Basis: automated intake triage; the lanes App applied this class.
Size: Small
Complexity: Low
Uncertainty: Known
Flags: none
Blocked by: none
Understood: upkeep batch PRs open with "No related issue" and no
Refs:, so pr-verify has no spec and fails them. The three open PRs fillupkeep_max_open, so the daily batch stalls. The issue picks option 1: link a standing spec issue withRefs: #Nin each PR body. No duplicates found among open issues. The live-run done-when item can't be checked in this lane; the batch change itself can.Automated triage, applied by the lanes App.
melodic-automation-lanes commentedon Nov 3, 2026
Not admitted to the issue lane: no trusted-human acceptance criteria: a listed human must put the confirmed
- [ ]criteria in the body or post them as their own comment, or, on an issue a listed human filed, intake's newest refinement comment must hold them unedited. Admission takes the issue once each of those is met, when intake triages it again (.github/actions/resolve-config/admission-rules.json).melodic-automation-lanes commentedon Nov 3, 2026
Refinement. A read-only run explored this repository, searched its issues and pull requests, and read the allowed docs to draft what follows. On an issue a listed human filed, it counts as the issue's spec once posted, while unedited; it is still model text, so check it.
Intended outcome: The upkeep batch writes
Refs: #Nof a standing spec issue as each PR body's first line, so pr-verify judges upkeep PRs against that spec instead of failing with no spec.Related work
Open questions
RECOMMENDED: The owner opens one issue holding the sweep contract (structure-only edits, Beck's tidyings, behaviour unchanged, hook-wired files left alone) and records its number in a Decision recorded comment. Basis: judgment
RECOMMENDED: Add an upkeep_spec_issue setting to docs/conventions/code-tidying.yaml, with schema and reference/config.md entries, read by upkeep.mjs and passed to promptText. Basis: .base/.github/scripts/maintenance-tidy-code-upkeep/batch.mjs:74
RECOMMENDED: Have validatePlan or the publish step require or prepend
Refs: #Nas the first line, so a model slip cannot repeat the stall. Basis: .base/.github/scripts/maintenance-tidy-code-upkeep/batch.mjs:108RECOMMENDED: Yes: keep the code change as the checkable scope and treat the live run as a person's check. Basis: judgment
Sources read
No related issue: code-tidying upkeep sweep.To answer, post a comment that starts with this line:
Automated refinement by the lanes App. Answer with a comment whose first line is
**Decision recorded.**.kyle-sexton commentedon Nov 3, 2026
kyle-sexton commentedon Nov 3, 2026
Decision: option 1. The upkeep batch links a standing spec issue with
Refs: #<n>as each PR body's first line; pr-verify is unchanged. Basis: pr-verify already judges aRefs-linked lane PR against its issue (#9294,resolve-pr.mjslinkedIssues); option 2 adds a second spec source and option 3 drops the only behaviour-unchanged check. Constraint for the build: the standing spec issue must stay out of the issue lane's frontier (it is never worked or closed), whatever label pr-verify needs to read it. Claimed by this session; building now.kyle-sexton commentedon Nov 3, 2026
PR #12898 merged: upkeep PRs now open with
Refs: #12894, the standing spec issue, so pr-verify judges them on content. Remaining (the second done-when): the next daily upkeep run's PR reaching the merge queue through pr-merge without a session. Close this issue when that happens; reopen work here if that PR stalls.kyle-sexton commentedon Nov 4, 2026
Both done-when items are met. The live upkeep run opened PR 13102, whose body opens
Refs: #12894. pr-verify judged it on content:pass-notes,spec_kind: refs, linked issue 12894 (artifactpr-verify-13102-07344c96b3602c2643e57dcd52be69358580b1ad-pass-notes), with no "no spec" failure. The merge path armed it as melodic-automation-lanes[bot] with rung C2 at 06:00:34Z, it entered the merge queue at 06:00:36Z, and it merged at 06:07:35Z. No session touched it.kyle-sexton commentedon Nov 4, 2026
Delivered: closing as completed.
Agent choice, not an owner answer.
Refs: #12894as the first line;upkeep_spec_issue: 12894).Refs: #12894as its first line, added to the merge queue bymelodic-automation-lanes[bot]at 06:00:36Z and merged at 06:07:35Z (02534fd017). Its one commit and every comment came from the bots.