Skip to content

Standing spec: code-tidying upkeep sweep contract #12894

Open

Description

@kyle-sexton

Standing spec for the code-tidying upkeep batch (.github/workflows/maintenance-tidy-code-upkeep.yml). Every pull request the batch opens starts its body with Refs: #<this issue>, and pr-verify judges that pull request against the checks below. A Refs: line never closes an issue, so this one stays open for as long as the batch runs; it is never worked by the issue lane and never closed by a pull request. To change the contract, edit this body. Do not post a **Decision recorded.** comment here: at status: confirmed that sends the issue back to intake triage.

The batch's own rules live in plugins/code-tidying/skills/tidy/SKILL.md, plugins/code-tidying/skills/tidy/reference/exclusions.md, plugins/code-tidying/reference/pr-scope-budget.md and .github/scripts/maintenance-tidy-code-upkeep/batch.mjs. This issue states what a reviewer checks on one upkeep pull request.

What one upkeep pull request is

One area (plugins/<name>, docs/<dir>, or a top-level directory), swept by /code-tidying:tidy <area glob> in-place=commit on the branch chore/tidy-adhoc-<slug>-<date>, opened by the lanes App. It applies Kent Beck's Tidy First? tidyings and the other entries in plugins/code-tidying/skills/tidy/reference/tidyings.md: structure only, behaviour unchanged.

Done when

  • Every changed path is inside the pull request's one area, except a changelog fragment under .changes/<name>/ when the area is plugins/<name>.
  • Every change is structural: no behaviour change. Outputs, return values, error handling, side effects, public interfaces, CLI flags, file formats and the documented meaning of prose stay the same; a reader of the diff finds nothing a caller or user could observe.
  • No file on the tidy skill's GLOBAL HARD list changes: agent, CI and hook configuration (.claude/**, .github/workflows/**, any script wired as a hook command in .claude/settings.json or .claude/settings.local.json, git-hook manager config, .mcp.json, lint configs) and paths the repository's own rules protect.
  • No behavioural exclusion is touched: no API, HTTP route, MCP tool schema or file-format change, no migration, no branch-protection or security-workflow change, no migration off a banned or deprecated API.
  • Every changed file is a regular text file: no binary file, symbolic link or submodule is added or changed.
  • The diff stays within the scope budget in plugins/code-tidying/reference/pr-scope-budget.md; candidates the budget cut are listed in the body, not applied.
  • When the area is plugins/<name> and the pull request changes it, it adds one patch changelog fragment under .changes/<name>/ naming what was tidied.
  • The title is a Conventional Commits line, and the body has ## Summary, ## Fix, ## Verification and ## Related.

Activity

  1. added
    work-mapDecision map container for /planning:wayfind; sub-issues are its typed decision items.
    status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.
    on Nov 3, 2026
  2. added theissue type on Nov 3, 2026
  3. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Nov 3, 2026
  4. removed
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Nov 3, 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

    status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.work-mapDecision map container for /planning:wayfind; sub-issues are its typed decision items.

    Type

    Fields

    No fields configured for Task.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions