From 782a8976a35a1cb11434ab4d2c386318c8a6e99b Mon Sep 17 00:00:00 2001 From: "melodic-automation-lanes[bot]" <337595936+melodic-automation-lanes[bot]@users.noreply.github.com> Date: Tue, 3 Nov 2026 08:02:04 +0000 Subject: [PATCH 1/2] Resolve issue #12592 Lane-Activity: work-resolve-issue/resolve-issue --- ...ve-issue-issue-12592-41586966486-1-affe032d.md | 10 ++++++++++ .../skills/rename-references/SKILL.md | 4 ++-- .../skills/rename-references/context/apply.md | 15 +++++++++------ .../skills/rename-references/context/triage.md | 5 ++++- .../skills/rename-references/evals/evals.json | 12 ++++++++++++ 5 files changed, 37 insertions(+), 9 deletions(-) create mode 100644 .changes/docs-hygiene/work-resolve-issue-issue-12592-41586966486-1-affe032d.md diff --git a/.changes/docs-hygiene/work-resolve-issue-issue-12592-41586966486-1-affe032d.md b/.changes/docs-hygiene/work-resolve-issue-issue-12592-41586966486-1-affe032d.md new file mode 100644 index 00000000000..c93ba33aa17 --- /dev/null +++ b/.changes/docs-hygiene/work-resolve-issue-issue-12592-41586966486-1-affe032d.md @@ -0,0 +1,10 @@ +--- +bump: minor +--- + +### Changed + +- `/docs-hygiene:rename-references` apply mode no longer asks before applying the Certain bucket. + It applies those matches by default and reports the count, one or two example matches, and how + to review the bucket one match at a time instead. The proceed/abort gate, the Chain-context + prompt and the per-match Ambiguous prompts are unchanged. (#12592) diff --git a/plugins/docs-hygiene/skills/rename-references/SKILL.md b/plugins/docs-hygiene/skills/rename-references/SKILL.md index d4db15bd226..296e69528cb 100644 --- a/plugins/docs-hygiene/skills/rename-references/SKILL.md +++ b/plugins/docs-hygiene/skills/rename-references/SKILL.md @@ -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 bucket counts and gate proceed/abort via `AskUserQuestion`; then per bucket: + - Certain → no question: auto-applied, reported with 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. diff --git a/plugins/docs-hygiene/skills/rename-references/context/apply.md b/plugins/docs-hygiene/skills/rename-references/context/apply.md index 38894a963d0..c2ffed0ffb5 100644 --- a/plugins/docs-hygiene/skills/rename-references/context/apply.md +++ b/plugins/docs-hygiene/skills/rename-references/context/apply.md @@ -47,13 +47,16 @@ Classify per [triage.md](triage.md) into Certain / Chain-context / Ambiguous / E Present bucket counts via the report template from [triage.md](triage.md) "Reporting bucket counts." Then gate the proceed/abort decision via `AskUserQuestion`. -Per-bucket confirmation flow: +Per-bucket 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) +- Mark every match accepted for Phase 5 without asking (these forms have empirically near-zero false-positive rate) +- Report the count and 1-2 example matches with the bucket counts, before the proceed/abort gate, + and say how to review the bucket one by one instead: answer "review Certain one by one" in the + reply to the gate or to any later Phase 4 prompt. The Certain matches are then presented per + match with 3 lines of context and the options "rename this", "skip this", "skip remaining + Certain" **Chain-context bucket:** @@ -68,7 +71,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 ambiguous" and "skip remaining Certain" 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. @@ -76,7 +79,7 @@ If user picks "abort" at any prompt, halt and report partial state (no matches e ### Phase 5: Apply -For each accepted match (from Phase 4 user confirmations): +For each accepted match (every Certain match not moved to one-by-one review, plus the matches accepted at the Phase 4 prompts): - Use Edit tool with exact old/new substitution - For matches where the form requires partial replacement (e.g., chain prose `→ confirm →` becomes `→ verify →`), construct precise old_string and new_string diff --git a/plugins/docs-hygiene/skills/rename-references/context/triage.md b/plugins/docs-hygiene/skills/rename-references/context/triage.md index fe163d0e2b9..640a48e430e 100644 --- a/plugins/docs-hygiene/skills/rename-references/context/triage.md +++ b/plugins/docs-hygiene/skills/rename-references/context/triage.md @@ -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:** auto-apply without asking. Report the count, 1-2 example matches, and how to review the bucket one by one instead: answer "review Certain one by one" in the reply to the proceed/abort gate (`apply.md` Phase 4). **Why default-apply:** these forms have near-zero false-positive rate empirically, so treating them as ambiguous burdens the user without value. @@ -160,6 +160,9 @@ Sweep results across tracked files: | Ambiguous | | Per-match confirm | | Excluded | | Skipped (plan-docs/historical/memory) | +Certain examples: <1-2 matches>. To review them one by one instead, answer +"review Certain one by one". + Proceed? ``` diff --git a/plugins/docs-hygiene/skills/rename-references/evals/evals.json b/plugins/docs-hygiene/skills/rename-references/evals/evals.json index d45f18c384b..e6ca357cf2b 100644 --- a/plugins/docs-hygiene/skills/rename-references/evals/evals.json +++ b/plugins/docs-hygiene/skills/rename-references/evals/evals.json @@ -596,6 +596,18 @@ "`/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-and-reports", + "prompt": "Rename the skill /verify to /verify-changes. The sweep finds only slash-token and path references.", + "expected_output": "Every match is a Form 1 slash-token or Form 3 path, so all of them land in the Certain bucket. The skill reports the bucket counts with the Certain count and one or two example matches, says the user can answer \"review Certain one by one\" to review them per match instead, and gates only the proceed/abort decision. It asks no separate \"auto-apply N matches?\" question for the Certain bucket; on proceed, Phase 5 edits every Certain match.", + "files": [], + "expectations": [ + "No `AskUserQuestion` asks whether to auto-apply the Certain bucket", + "The report gives the Certain count, one or two example matches, and how to review the bucket one by one instead", + "The proceed/abort gate still runs before any edit" + ] } ] } From 69ddaec32bcbce64fd60201a36210d2d0a4a8381 Mon Sep 17 00:00:00 2001 From: "melodic-automation-lanes[bot]" <337595936+melodic-automation-lanes[bot]@users.noreply.github.com> Date: Tue, 3 Nov 2026 08:34:43 +0000 Subject: [PATCH 2/2] chore: start the lane checks again after a lane token failure A lane run on the previous head could not get its lane token (lane-token-denied 503 github-rate-limited). This commit changes no file.