Skip to content

testing: Release 3 cleanup skill, plan approved #5742

Description

@kyle-sexton

This is the plan for Release 3 of the tautological-tests effort (the cleanup skill), moved out of draft PR #5604 so it is tracked as an issue. The PR is closed unmerged because plans now live in the PR body and a linked issue, and docs/specs is being deleted (#5719).

Blocked by #5741

Summary

This PR holds the design (DT1-DT18) and implementation plan for Release 3 of the tautological-tests
effort. It changes documents only, under docs/specs/tautological-tests-cleanup/, and no plugin
code.

The user's decisions of 2026-09-30 are applied. Release 3 now builds the testing:cleanup skill
only. Wave 2 is deferred by A15 (approved). Split mode is deferred by a new amendment, A16. Each
decision is recorded in its design thread as "Decided 2026-09-30 (user)". The user approved the
plan on 2026-10-01 ("Approval: approved by the user 2026-10-01").

Fix

What the plan proposes:

  • testing:cleanup <folder> reads testing:audit findings, Release 2 judge FLAG verdicts, and
    the flaky tests the user names. A red baseline stops the batch and names the failing tests, so
    the user can name the flaky ones or fix them. A fresh-context classifier applies Q9's order: quarantine,
    rewrite, delete, merge, keep. It rewrites by default and deletes only with a positive no-contract
    statement and the user's yes on each deletion. Nothing is committed until the user approves the
    batch.
  • Mutation gate. mutation-testing:audit gains --record-mutants and --replay-mutants.
    • The recording run uses Release 2b's --exercised <folder> --max <n> (docs(testing): plan Release 2b mutation scope #5603, DT3 mapping),
      with no --paths and no diff intersection. The 2b interface is settled: --exercised takes
      an optional test file or folder, the effort cap applies and --max overrides it, and 2b
      recognizes test files through cant-fail-scan.sh --file (cleanup lives in testing, so the
      scanner is always installed).
    • Replay applies exactly the recorded mutants. Its own compare step, compare-records.sh,
      requires every mutant detected before to still be detected after.
    • The record format is private to mutation-testing: no version header, no col column, and no
      skew check.
    • On a lost kill the batch is blocked, cleanup lists the candidate changes, and the user reverts.
  • Deferred, each with a switch condition:
    • Split mode (A16). plan.md keeps a "Deferred: split mode" section. If split mode ships, its
      simpler form is a done-time git diff --quiet <freeze-sha> -- <files> check. DT14 now cites
      probe R2-P8 on docs(testing): Release 2 judge design, plan and Phase 1 probes #5605: /clear issues a new session_id and --resume keeps it.
    • Bisection.
    • The coverage before-and-after leg.
    • The expired-quarantine sweep.
    • Wave 2 and SW1 (A15).
  • No new .claude/* config file. Any cleanup config reads the testing config wherever Config location: docs convention file with a CLAUDE.md pointer as the default, .claude/ as an option #5606
    puts it.

Open items for the user:

  1. Plan approval. Approved by the user on 2026-10-01 (every design thread, the classifier on
    opus, and the split-mode threshold). Implementation comes after 2b merges.

Housekeeping: #5605 already rewrote the Release 2 gate. The next PR that edits
docs/specs/tautological-tests.md adds this plan's Release 3 pointer (spec:890), along with the
A15 and A16 text (Phase 1).

Plan files

Both files are at the head of the docs/tautological-tests-cleanup branch (commit 077daad22a4d7b98ce03707f60900d0d155592e0); the branch is kept for reference.

Open ask

Open ask: the owner approves or revises the plan.

Amended 2026-10-01

  • Release 2b is marked as a pending dependency, with High risk.
  • The config location is a yaml block in docs/conventions/testing.md, with .claude/testing.yaml as a fallback.
  • Judge findings are optional and off by default.
  • The split-mode switch is a runnable count, with the deferral threshold approved (DT14-16).
  • Stale text trimmed from the plan and design threads.
  • The user approved DT4, DT5, DT8, DT10, DT11, DT12, the classifier on opus, and the plan as a whole.

Activity

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

    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.needs-triageNot yet classified. Floor until a type and one priority tier are set.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions