Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
bump: minor
---

### Changed

- `rename-references`: the Certain bucket no longer asks through `AskUserQuestion`. It auto-applies by its stated default, and the bucket-count report gives its count, one or two example matches, and how to review it one by one instead (answer the proceed prompt with "review Certain one-by-one"). `context/triage.md`, `context/apply.md` and `SKILL.md` now say the same thing; the Chain-context and Ambiguous buckets and the proceed/abort gate are unchanged (#12593, #12592).
4 changes: 2 additions & 2 deletions plugins/docs-hygiene/skills/rename-references/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,8 @@ Multi-word old/new is fine. Separator is the only delimiter. Quote characters (`
- **Certain**. Slash-token, path, frontmatter glob (high precision, auto-apply candidate)
- **Chain-context**. Preceded/followed by other known skill names; numbered table rows; chain prose with multiple skill tokens
- **Ambiguous**. Bare-token matches where token is in English-verb blocklist (`confirm`/`test`/`review`/`fix`/`clean`/`build`/`lint`/`verify`/`plan`/etc.)
4. **Confirm**. Present buckets via `AskUserQuestion`:
- Certain → "auto-apply N matches?". Yes/no
4. **Confirm**. Present the bucket-count report, gate proceed/abort via `AskUserQuestion`, then per bucket:
- Certain → no per-bucket question: auto-apply; the report gives the count, 1-2 examples and how to review one by one instead
- Chain-context → "review N matches one-by-one?". Yes/skip-bucket/auto-apply-all
- Ambiguous → per-match yes/no with surrounding context
5. **Apply**, Edit each accepted match. Idempotent, running twice is safe.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,8 @@ Per-bucket confirmation flow:

**Certain bucket:**

- Show count + 1-2 example matches
- `AskUserQuestion`: "Auto-apply N matches?" with options "auto-apply", "review one-by-one"
- Default: auto-apply (these forms have empirically near-zero false-positive rate)
- No per-bucket `AskUserQuestion`: once the proceed gate passes, auto-apply (these forms have empirically near-zero false-positive rate)
- Report, in the bucket-count summary before the proceed gate: count + 1-2 example matches, and how to review the bucket one by one instead (answer the proceed prompt with "review Certain one-by-one", and each Certain match then goes through the Ambiguous bucket's per-match format below, before the Chain-context flow, with its third option scoped to this bucket: "skip remaining Certain"), per [triage.md](triage.md) "Bucket 1"

**Chain-context bucket:**

Expand All @@ -68,7 +67,7 @@ Per-bucket confirmation flow:
- ALWAYS one-by-one, because batched confirmation defeats the safety purpose

**Record every decline as a confirmed skip, keyed by `(file, line, start, end)`.** "skip bucket",
"skip this" and "skip remaining ambiguous" each produce skip records for the matches they cover.
"skip this", "skip remaining Certain" and "skip remaining ambiguous" each produce skip records for the matches they cover.
Phase 6 subtracts those spans from the actionable count. Without the record the same declined
match re-enters Outcome B on every re-sweep and the loop cannot terminate. See Phase 6.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Match patterns where the rename intent is unambiguous regardless of surrounding
Form 15 where the token is not a common noun. The demoted alternatives land in Bucket 2 or
Bucket 3 below; `patterns.md` "Phase 0" carries the per-alternative table

**User flow:** present count and 1-2 example matches via `AskUserQuestion`. Two options: "auto-apply N matches" or "review one-by-one." Default: auto-apply.
**User flow:** no per-bucket question: once the proceed gate passes, auto-apply the bucket (in preview mode, list it in the planned edits). The bucket-count report below gives the count, 1-2 example matches, and how to review the bucket one by one instead: answer the proceed prompt with "review Certain one-by-one", and each Certain match then goes through the Ambiguous bucket's per-match format, before the Chain-context flow, with its third option scoped to this bucket ("skip remaining Certain").
Comment thread
melodic-automation-lanes[bot] marked this conversation as resolved.
Resolved

**Why default-apply:** these forms have near-zero false-positive rate empirically, so treating them as ambiguous burdens the user without value.

Expand Down Expand Up @@ -160,7 +160,13 @@ Sweep results across <N> tracked files:
| Ambiguous | <Z> | Per-match confirm |
| Excluded | <W> | Skipped (plan-docs/historical/memory) |

Certain examples: <1-2 matches as file:line: text>
Certain matches apply without a question. To review them one by one
instead, answer "review Certain one-by-one".

Proceed?
```

Print the two Certain lines only when the Certain count is above 0.

Use `AskUserQuestion` to gate the proceed/abort decision.
14 changes: 14 additions & 0 deletions plugins/docs-hygiene/skills/rename-references/evals/evals.json
Original file line number Diff line number Diff line change
Expand Up @@ -596,6 +596,20 @@
"`/confirm-changes` is named as what a trailing `\\b` wrongly matches",
"The always-loaded surface is identified as the reason a stale directive there is worse than elsewhere"
]
},
{
"id": 49,
"name": "certain-bucket-auto-applies-without-a-per-bucket-question",
"prompt": "Apply the rename of the skill /verify to /verify-changes. The only hits are two slash-token references, `/verify` in README.md and `skills/verify/` in docs/guide.md.",
"expected_output": "Both hits are Certain (Form 1 and Form 3), so Phase 4 asks no Certain-specific question. The bucket-count report shows the Certain count, a `Certain examples:` line with 1-2 matches as file:line: text, and the line saying Certain matches apply without a question and can be reviewed one by one by answering \"review Certain one-by-one\"; those two lines appear because the Certain count is above 0. The only question is the proceed gate, and once it passes both edits are applied. Had the user answered \"review Certain one-by-one\", each Certain match would go through the Ambiguous per-match format with \"skip remaining Certain\" as its third option.",
"files": [],
"expectations": [
"No AskUserQuestion is asked for the Certain bucket itself; the proceed gate is the only question",
"The bucket-count report shows the Certain count, 1-2 Certain examples, and the \"review Certain one-by-one\" route",
"The Certain examples and one-by-one lines are printed only because the Certain count is above 0",
"Both Certain edits are applied after the proceed answer",
"The one-by-one route uses the per-match format with a \"skip remaining Certain\" option"
]
}
]
}
Loading