Skip to content

chore(ci): read the post-merge mutation lane's config from docs/conventions/mutation-testing.yaml #12289

Description

@kyle-sexton

Parent

Refs #5906

Blocked by

  • the code-metrics and mutation-testing plugin slice (linked as this issue's blocker)

Outcome

This repository's mutation-testing team settings live in docs/conventions/mutation-testing.yaml, and the post-merge
mutation lane's files name that file instead of .claude/mutation-testing.md:

  • .github/scripts/post-merge-test-mutation/report.test.mjs:304,313 reads the mutate globs from the YAML;
  • .github/scripts/post-merge-test-mutation/prompt.md:5 names the YAML as the team layer;
  • the comment at .github/workflows/post-merge-select-mutation-range.yml:10 names the YAML.

The YAML's mutate list excludes docs/conventions/**, as the old file's excludes .claude/**, so that
report.test.mjs requires the audit job to deny Edit(./docs/conventions/**) and the lane's model cannot edit its
config. That requires two workflow edits: the deny in the audit job's denied list in
.github/workflows/post-merge-test-mutation.yml, and "!docs/conventions/**" in the paths filter of
.github/workflows/post-merge-select-mutation-range.yml, which must equal mutate.

Once the mutation-testing release carrying the code-metrics and mutation-testing plugin slice (linked as this issue's blocker) has shipped, .claude/mutation-testing.md is deleted and the
plugin's one-release read of it is dropped (#5906 body, Scope 3: a compatibility read of the old file for one release).

Host-run: the issue lane cannot push .github/workflows/, and report.test.mjs runs under node.

Key interfaces

  • .claude/mutation-testing.md, whose mutate list excludes .claude/** because the lane's model may not edit its
    config; report.test.mjs checks that every excluded glob is a denied Edit rule of the audit job and that the
    gate's paths filter equals mutate.
  • .github/workflows/post-merge-select-mutation-range.yml (paths) and .github/workflows/post-merge-test-mutation.yml
    (the audit job's denied list).
  • plugins/mutation-testing/skills/setup/SKILL.md, the config merge model the code-metrics and mutation-testing plugin slice (linked as this issue's blocker) changes.

Done when

  • docs/conventions/mutation-testing.yaml carries every key of .claude/mutation-testing.md, its mutate list also excludes docs/conventions/**, and scripts/check-convention-yaml.sh --check exits 0.
  • node --test .github/scripts/post-merge-test-mutation/report.test.mjs exits 0, with both config reads on docs/conventions/mutation-testing.yaml.
  • git grep -n "\.claude/mutation-testing\.md" -- .github prints nothing.
  • plugins/mutation-testing/CHANGELOG.md shows a released version after the one carrying the code-metrics and mutation-testing plugin slice (linked as this issue's blocker) (grep -n on the version heading prints it).
  • git ls-tree --name-only HEAD .claude/ does not list mutation-testing.md.
  • git grep -nE "\.claude/mutation-testing\.md" -- plugins docs/contracts ":!*CHANGELOG.md" prints only setup lines that report or move the retired file, and lines that name ~/.claude/mutation-testing.md as never read.
  • scripts/check-changelog-fragments.sh --check-required origin/main exits 0.

Out of scope

  • The lane's personal overlay .claude/mutation-testing.local.md, written at
    .github/workflows/post-merge-test-mutation.yml:188 (ADR 0075 fix 8).
  • The arid-node record .claude/mutation-testing-arid.md.

Posted by the issue-triage session. This was generated by AI.

Activity

  1. added theissue type on Nov 2, 2026
  2. added
    status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.
    host-runNeeds an unattended run on a host; the host runner takes it, not a person or the issue lane.
    on Nov 2, 2026
  3. 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: Low
    Uncertainty: Known
    Flags: none
    Blocked by: #12290

    Understood: move the mutation lane's team settings to docs/conventions/mutation-testing.yaml. That means updating the lane's test, prompt and workflow comment, adding the two workflow deny/paths edits, then retiring .claude/mutation-testing.md once the plugin release that carries the new config read has shipped. The issue looks well specified. Its done-when items need a push to .github/workflows/ and a node test run, so they route to a host run. I found no duplicates. It depends on #12290 and on that issue's release.

    Automated triage, applied by the lanes App.

  4. added
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.
    on Nov 2, 2026
  5. melodic-automation-lanes commented on Nov 2, 2026

    @melodic-automation-lanes
    Contributor

    Not admitted to the issue lane: it carries host-run. Admission takes the issue once each of those is met, when intake triages it again (.github/actions/resolve-config/admission-rules.json).

  6. melodic-automation-lanes commented on Nov 2, 2026

    @melodic-automation-lanes
    Contributor

    The latest triage verdict holds nothing: admission moved the issue to status: confirmed; its comment says why.

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

    host-runNeeds an unattended run on a host; the host runner takes it, not a person or the issue lane.priority: lowNice-to-have, cosmetic, or speculative; opportunistic.status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.

    Type

    Fields

    Work status

    confirmed

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions