Skip to content

test: harness targets skip retired skills; record the standalone /plan-eng-review paid cases' fates (GST-1698) - #4111

Merged
capy-ai[bot] merged 2 commits into
mainfrom
capy/gst-1698-retired-followups
Nov 7, 2026
Merged

capy-ai[bot] merged 2 commits into
mainfrom
capy/gst-1698-retired-followups

Conversation

@garrytan

@garrytan garrytan commented Nov 7, 2026 •

Copy link
Copy Markdown
Owner

Follow-up to #4108, which retired standalone /plan-eng-review while keeping plan-eng-review/ as /autoplan's Phase 3 methodology source.

{
  "schema_version": 1,
  "pr": 4111,
  "head": "87f7807b442fdb1f30c1d346727a47acfe76200e",
  "version": "1.97.0.0",
  "base": "main",
  "gate": {
    "test": {
      "pass": 1625,
      "fail": 0,
      "skip": 0
    }
  },
  "ci_carried": [
    {
      "lane": "test",
      "run": 42343740858,
      "attempt": 1,
      "tree": "79a7ec865f93cd8d71a790e2cc3c145ece65aeff"
    }
  ],
  "session_kind": "unattended",
  "head_tree": "79a7ec865f93cd8d71a790e2cc3c145ece65aeff",
  "product_patch_id": "5f963dab2efff8763a910634688ccf03425ac0dd",
  "gstack_version": "1.97.0.0",
  "review_depth": {
    "depth": "full",
    "class": "gate",
    "runtime_lines": 12,
    "rules": "70895942bb8a8ee2",
    "base": "3742ee9527615b0fa325402d6c02498cc7fc19fa",
    "registry": "3742ee9527615b0fa325402d6c02498cc7fc19fa",
    "gate_scan": {
      "tagged": 4,
      "head": "87f7807b442fdb1f30c1d346727a47acfe76200e"
    },
    "reasons": [
      "gate-class",
      "risk:money",
      "runtime=12"
    ],
    "risk": [
      "money"
    ],
    "mode": "panel"
  },
  "pregate": "requires-remote cleared @79a7ec865f93 (8 checks, current for 87f7807b442f)",
  "requires_remote": [
    "free-tests.yml/macos-named-regressions: https://github.com/garrytan/gstack/actions/runs/42343740858/attempts/1",
    "platform-qualification.yml/ios-swift-build: https://github.com/garrytan/gstack/actions/runs/42343749287/attempts/1",
    "pregate.json/remote_gate: remote-gate tree=79a7ec865f93 tests=36131 skipped=105 runs=42343740858/1 profiles=ci-reuse/free-tests heads=87f7807b442f verified=2026-11-07T05:49:28.742Z"
  ],
  "issues": {
    "fixes": [],
    "refs": [],
    "flakes": []
  },
  "docs": {
    "status": "current",
    "scope": "docs/, README.md, CLAUDE.md, AGENTS.md, CONTRIBUTING.md (re-audit after parent doc repair)"
  },
  "review_loop": {
    "passes": 1,
    "blocking_found": 0,
    "deferred": 0,
    "noted": 3,
    "fixed": 0,
    "scope": "frozen",
    "rounds": 1,
    "ledgers_read": 3,
    "dispatches": {
      "specialist": 3
    }
  },
  "review_targeted": {
    "classes": [
      "money",
      "gate"
    ],
    "rules": "30e6bce187be0d59",
    "brief_sha": "7f92a0d0a8319c3c0e076fb3b1a4689c45120b2be2c14dfc7d4cb03aafa9d6a5",
    "product_patch_id": "5f963dab2efff8763a910634688ccf03425ac0dd",
    "status": "done",
    "findings": 0,
    "raised_by": "targeted"
  }
}

Harness targets skip retired skills

gstack-harness register --target dots|generic listed every committed Claude-render skill except gstack, so after #4108 it still routed to plan-eng-review and gave it a folder in all mode. sourceSkills() in lib/harness-register.ts now filters RETIRED_SKILLS. A new test in test/harness-register.test.ts checks both targets and an all-mode register, and that the methodology source stays in the tree. It failed before the fix (0 pass, 1 fail) and passes after it.

Each standalone paid case has a recorded fate

The full table is in docs/TEST_PORTFOLIO.md. In short:

Case Fate
plan-eng-review (SDK) kept: runs the methodology source Phase 3 loads
plan-eng-coverage-audit (gate) kept: Phase 3's codepath-to-test diagram
plan-eng-review-artifact (PTY checkpoint) kept: Phase 3's test plan on disk
journey-plan-eng kept, retargeted to /autoplan in #4108
plan-eng-multi-finding-batching retired, out of the weekly lane through PERIODIC_CI_EXCLUDE; deletion with its counter helpers is a TODOS item
plan-eng-review-plan-mode, plan-eng-finding-floor, plan-eng-review-artifact-full, plan-eng-review-format-coverage, plan-eng-review-format-kind, carve-section-loading-plan-eng-review retired, deleted; the ceo, design and devex siblings keep each shared contract
eng rows of auq-matrix and plan-mode-no-op retired rows

None went into CASE_QUARANTINE: that list holds flaky cases that keep running, and these cases aren't flaky, their entry point is gone.

Registry and count pins follow the removals: touchfiles, tiers, kinds, budgets (file walls for plan-format, plan-mode-no-op and auq-matrix shrink with their case counts), paid durations, the touchfile move goldens, the census fixture budget, and a non-behavioral HARNESS_VERSION record for eval-budgets.ts and paid-cases.ts. auq-matrix joins the declared keyless paid files, since only its retired row quoted an SDK key. The free audits that enumerate interactive skills or generic carve cases skip retired skills.

TODOS: the harness-gap item is done and removed; the batching-case deletion is added.

Summary

This PR finishes the cleanup after #4108 retired standalone /plan-eng-review. The dots and generic harness targets stop registering retired skills, and each paid case written for the standalone skill is either kept, deleted or excluded from the weekly lane. A second commit (87f7807) marks the deleted cases in docs/evals/detector-inventory.md and TODOS.md, so those files no longer count them as live coverage.

Why

After #4108, gstack-harness register --target dots|generic still routed users to a skill that no longer has an entry point. The paid suite also kept spending on cases that test that removed entry.

Blast radius

The product change is one filter in lib/harness-register.ts for the dots and generic targets. The other changes are test registries, budgets, pins, docs and TODOS. plan-eng-review/ stays in the tree as /autoplan's Phase 3 methodology, and no skill prose changed.

What changed

Follow-up to #4108, which retired standalone /plan-eng-review while keeping plan-eng-review/ as /autoplan's Phase 3 methodology source.

Harness targets skip retired skills

gstack-harness register --target dots|generic listed every committed Claude-render skill except gstack, so after #4108 it still routed to plan-eng-review and gave it a folder in all mode. sourceSkills() in lib/harness-register.ts now filters RETIRED_SKILLS. A new test in test/harness-register.test.ts checks both targets and an all-mode register, and that the methodology source stays in the tree. It failed before the fix (0 pass, 1 fail) and passes after it.

Each standalone paid case has a recorded fate

The full table is in docs/TEST_PORTFOLIO.md. In short:

Case Fate
plan-eng-review (SDK) kept: runs the methodology source Phase 3 loads
plan-eng-coverage-audit (gate) kept: Phase 3's codepath-to-test diagram
plan-eng-review-artifact (PTY checkpoint) kept: Phase 3's test plan on disk
journey-plan-eng kept, retargeted to /autoplan in #4108
plan-eng-multi-finding-batching retired, out of the weekly lane through PERIODIC_CI_EXCLUDE; deletion with its counter helpers is a TODOS item
plan-eng-review-plan-mode, plan-eng-finding-floor, plan-eng-review-artifact-full, plan-eng-review-format-coverage, plan-eng-review-format-kind, carve-section-loading-plan-eng-review retired, deleted; the ceo, design and devex siblings keep each shared contract
eng rows of auq-matrix and plan-mode-no-op retired rows

None went into CASE_QUARANTINE: that list holds flaky cases that keep running, and these cases aren't flaky, their entry point is gone.

Registry and count pins follow the removals: touchfiles, tiers, kinds, budgets (file walls for plan-format, plan-mode-no-op and auq-matrix shrink with their case counts), paid durations, the touchfile move goldens, the census fixture budget, and a non-behavioral HARNESS_VERSION record for eval-budgets.ts and paid-cases.ts. auq-matrix joins the declared keyless paid files, since only its retired row quoted an SDK key. The free audits that enumerate interactive skills or generic carve cases skip retired skills.

TODOS: the harness-gap item is done and removed; the batching-case deletion is added.

Docs commit

87f7807b marks the deleted plan-eng cases in docs/evals/detector-inventory.md (S1-S10 and F1-F3 users, the carve-section row, the plan-format rows with line refs updated to the current file, and the marathon note). It also adds a note to the TODOS item about periodic PTY wiring, which named two of the deleted files. The /ship docs audit found these rows stale, and the re-audit after the edit returned current.

Approvals

No approvals recorded for branch capy/gst-1698-retired-followups.

Pre-Landing Review

REVIEW_LOOP: passes=1 blocking_found=0 deferred=0 noted=3 fixed=0 scope=frozen ledgers_read=3 dispatches=3

Pre-Landing Review: 5 issues — 0 auto-fixed, 0 asked (0 fixed, 0 skipped), 0 deferred, 5 noted

Gate edits: partial (50 of 59 eligible read), 4 listed RH-1 hunks read, 0 findings. The RH-1 hunks are the planned removals of retired case declarations, which the fate table records, and the targeted reader for money and gate returned no findings.

Readers: batched specialists (testing, security, state-machines), red team, native adversarial, outside voice (openai/gpt-6.1-sol) and the targeted reader, all on tree 312e20bea535.

Review notes

Below the blocking floor (advisory, informational, test-gap or wording items); recorded here and not fixed in this PR.

  • INFORMATIONAL docs/evals/detector-inventory.md:34 detector-inventory.md still maps detector verdicts to deleted plan-eng cases (lines 34, 208, 211, 217-218, 318); batching test header points at deleted finding-floor file
  • INFORMATIONAL test/helpers/touchfiles-data.ts:278 plan-mode-no-op touchfiles still list plan-eng-review/** and eng-* fixtures after its eng rows were deleted; over-selects a paid gate case on Phase 3 edits; header says 6 runs
  • INFORMATIONAL test/skill-e2e-auq-matrix.test.ts:29 header example AUQ_MATRIX_ONLY=plan-eng-review,spec names a deleted row; filter silently ignores unknown names
  • INFORMATIONAL lib/harness-register.ts:237 dots/generic --skills all no longer copies plan-eng-review/ beside autoplan/; an agent resolving /autoplan Phase 3 from the registered folder (no ~/.claude/skills/gstack on that machine) would stop at Phase 3. Opt-in mode; router default unaffected; fix is a design call
  • INFORMATIONAL docs/designs/RELIABILITY_FOLLOWUPS_2026_10.md:39 A4 still names plan-eng-review-artifact-full as the marathon fresh journey; detector-inventory rows list deleted cases

Disposition of the lib/harness-register.ts:237 note: it is not a regression. The Claude render hard-codes ~/.claude/skills/gstack/... for every read, including /autoplan's own sections (Phase 1 reads ~/.claude/skills/gstack/autoplan/sections/ceo-phase.md). A machine without that root already fails before Phase 3, and Phase 3 never read the harness payload. It is recorded as a noted, non-blocking finding.

A targeted re-read at 87f7807 (required because the docs commit touches docs/evals/) added one Low note from the native adversarial reader: lib/harness-register.ts:237 filters retired skills by frontmatter name: while other consumers key on the folder name. Today they match, so it is noted, not fixed. The outside voice and the targeted reader returned no findings on tree 79a7ec865f93.

The detector-inventory note is resolved by 87f7807. The batching test header, the plan-mode-no-op touchfiles and the auq-matrix header example remain open as notes.

Exploratory QA

Smoke pass with 2 functional probes on 6ed2873. The generic-target harness payload no longer routes plan-eng-review and still routes autoplan. selectPaidTestFiles excludes plan-eng-multi-finding-batching from the periodic tier with its GST-1698 reason. The register and refresh ledger path was not probed here; test/harness-register.test.ts covers it in CI.

Evals

eval:select --base origin/main fell back to full selection because test/helpers/periodic-exclude-data.ts is a global paid-runner input. No paid cases ran: no prompt, template, judge or skill prose changed, and the kept cases' inputs are unchanged.

Documentation

Status: current. The docs are accurate for the GST-1698 retired-followups change, and no edits were needed.

Scope: the committed diff 3742ee9..6ed2873 (harness targets and paid-case fates for the retired standalone /plan-eng-review), plus the parent's unstaged edits to docs/evals/detector-inventory.md and TODOS.md.

File Status
docs/evals/detector-inventory.md Current. The deleted plan-eng cases are marked with GST-1698, and the plan-format line refs match the current file.
docs/TEST_PORTFOLIO.md Current. The fate table matches the deletions.
TODOS.md Current. The periodic-wiring item notes the two deleted plan-eng files.

Coverage debt: none new. This change removes test cases and adds no public surface. Diagram drift: none.

Test plan

  • Free Tests run 42343740858 at 87f7807: green, carried for tree 79a7ec865f93 (36131 tests).
  • Pregate requires-remote obligations cleared at that tree: the remote gate from the CI carry, macos-named-regressions from job 128316938701, and ios-swift-build from platform-qualification run 42343749287.
  • typecheck, module-size and conflict-marker guards passed at tree 79a7ec865f93.

Open in Capy

…an-eng-review paid case's fate (GST-1698)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
@trunk-io

trunk-io Bot commented Nov 7, 2026 •

Copy link
Copy Markdown

😎 This pull request was merged.

…nd TODOS (GST-1698)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
@capy-ai
capy-ai Bot merged commit 94392a6 into main Nov 7, 2026
46 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant