Skip to content

code-tidying: run upkeep as a daily batch of at most 3 PRs #12475

Description

@kyle-sexton

Refs: #7585

Parent

Slice 2 of 2 of #7585 (code-tidying: remove-comments and upkeep cadence), filed under the parent's decision record (comment).

Outcome

Code-tidying upkeep runs on a cadence: detection per merge, and upkeep pull requests opened as a daily batch, with at most 3 open at once.

Decisions (from #7585, D59, D73, Q110)

Done when

  • Upkeep detection runs per merge, and upkeep PRs open as a daily batch.
  • Churn-triggered area sweeps run, and a weekly backstop covers any area the daily batch missed.
  • No more than 3 upkeep PRs are open at once; a batch that would exceed the cap waits.
  • The cadence, backstop and cap are settings (defaults daily, weekly, 3), read from the convention home.

Out of scope

Activity

  1. github-actions commented on Nov 2, 2026

    @github-actions
    Contributor

    Proposed work class: work-class: scoped
    Basis: automated intake triage; the lanes App applied this class.

    Size: Medium
    Complexity: Medium
    Uncertainty: Known
    Flags: none
    Blocked by: none

    I understood this as slice 2 of 2 of #7585. Code-tidying upkeep detection would run per merge. Upkeep PRs would open as a daily batch, with churn-triggered area sweeps and a weekly backstop. At most 3 upkeep PRs would be open at once. The cadence, backstop and cap would be settings read from the convention home (#7571). The outcome, done-when items and decisions are exact, so I have no open questions. I found no duplicate. The nearest open issue is the sibling slice 1 (the remove-comments rename), which this issue lists as out of scope. #7571 is not in the open issues list, so I treated it as not blocking.

    Automated triage, applied by the lanes App.

  2. added
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    and removed
    admission-deferredAdmitted but waiting for WIP room; the hourly work-unblock sweep labels it agent-ready.
    status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.
    on Nov 2, 2026
  3. github-actions commented on Nov 2, 2026

    @github-actions
    Contributor
    No description provided.
  4. 1 remaining item

  5. added
    host-runNeeds an unattended run on a host; the host runner takes it, not a person or the issue lane.
    and removed
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    on Nov 2, 2026
  6. melodic-automation-lanes commented on Nov 2, 2026

    @melodic-automation-lanes
    Contributor

    The work-resolve-issue lane stopped on this issue (patch-protected-path): the change needs a path the issue lane may not push, which a maintainer session builds by hand.
    It added host-run and removed agent-ready: an agent run on a host builds it, and it waits on no decision from a person.

    In the run's words:

    The run stopped early (patch-protected-path): its change needs a path the issue lane may not push, which a person changes instead. In the run's words: patch-protected-path: .github/workflows/** (a new workflow, such as .github/workflows/maintenance-code-tidying-upkeep.yml, with a push-to-main trigger for per-merge detection and daily and weekly schedule triggers). The issue's done-when needs upkeep detection to run on each merge, upkeep PRs to open as a daily batch and a weekly backstop to run. This repository runs scheduled and per-merge automation only as .github/workflows/maintenance-*.yml workflows, and code-tidying has no such lane yet. A new lane would probably also need an entry in /.github/actions/resolve-config/lane-grants.json, which is protected as well.

    What the run says it did not do:

    • All four done-when items (per-merge detection with a daily batch, churn sweeps with a weekly backstop, the 3-PR cap, and the settings in the convention home). Each needs a new workflow under the protected .github/workflows/** path.
    • Repository checks (check-changelog-fragments, check-changed-skills, check-affected) were not run, because the working tree is unchanged.

    Run: https://github.com/melodic-software/claude-code-plugins/actions/runs/41513850288

    To hand it back to the lane, remove host-run and add agent-ready again.

  7. self-assigned this
    on Nov 3, 2026
  8. kyle-sexton commented on Nov 3, 2026

    @kyle-sexton
    MemberAuthor
    No description provided.
  9. kyle-sexton commented on Nov 3, 2026

    @kyle-sexton
    MemberAuthor

    Decision recorded. Owner, in the lane 2 session, 2026-11-03: "Go with whatever this recommends", with the standing direction attached, answering how the daily upkeep model job gets its token.

    maintenance-code-tidying-upkeep.yml joins the lane token broker's scheduled callers in azure-iac, as upstream-apply-changelog.yml did. Basis: docs/conventions/pr-pipeline/pr-run-activity.md allows schedule from three named workflows only, and the standing direction's section 10 counts holds against our own actors as friction.

    #12614 ships the settings, cap, detection and gate. The model job follows once the broker accepts the caller.

  10. kyle-sexton commented on Nov 3, 2026

    @kyle-sexton
    MemberAuthor

    Decision recorded. Owner, in the lane 2 session, 2026-11-03, answering whether the upkeep workflow's scan job may hold SCAN_CARRIER_PRIVATE_KEY, with this as the recommended option: "sure".

    maintenance-code-tidying-upkeep.yml's scan job becomes the third holder under the second holder's limits: main only, contents: read, no id-token, a read-only cache, one open step, no model in that job.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

host-runNeeds an unattended run on a host; the host runner takes it, not a person or the issue lane.status: readyTriaged, unblocked, and fully specified; eligible to pick up.

Fields

Work status

agent-ready

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions