@windyroad/itil 2.1.7-preview.1157 → 2.1.8-preview.1160

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -497,5 +497,5 @@
497
497
  }
498
498
  },
499
499
  "name": "wr-itil",
500
- "version": "2.1.7"
500
+ "version": "2.1.8"
501
501
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wr-itil",
3
- "version": "2.1.7",
3
+ "version": "2.1.8",
4
4
  "description": "ITIL problem-management workflows for AI coding agents",
5
5
  "author": {
6
6
  "name": "Windy Road Technology",
@@ -83,6 +83,18 @@ enumerate_postrelease_kv_candidates() {
83
83
 
84
84
  case "$derive_exit" in
85
85
  0)
86
+ local reopened_date release_date
87
+ reopened_date="$(grep -oE '^## Reopened [0-9]{4}-[0-9]{2}-[0-9]{2}$' "$f" \
88
+ | sed 's/^## Reopened //' \
89
+ | tail -1)"
90
+ release_date="$(printf '%s\n' "$derive_out" \
91
+ | sed -n 's/^[[:space:]]*release-date:[[:space:]]*//p' \
92
+ | head -1)"
93
+ if [ -n "$reopened_date" ] && [ -n "$release_date" ] \
94
+ && [[ "$reopened_date" > "$release_date" ]]; then
95
+ continue
96
+ fi
97
+
86
98
  local changeset
87
99
  changeset="$(printf '%s\n' "$derive_out" \
88
100
  | grep -oE '\.changeset/[a-z0-9._-]+\.md' \
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@windyroad/itil",
3
- "version": "2.1.7-preview.1157",
3
+ "version": "2.1.8-preview.1160",
4
4
  "description": "ITIL-aligned IT service management for Claude Code and Codex",
5
5
  "bin": {
6
6
  "windyroad-itil": "./bin/install.mjs"
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: wr-itil:transition-problem
3
- description: "Advance a problem ticket's lifecycle status — Open → Known Error, Known Error → Verification Pending (verifying), Verification Pending → Closed. Renames the ticket file, updates the Status field, and refreshes docs/problems/README.md in the same commit. Hosts the transition execution inline (pre-flight checks, the \"Problem 057: `git mv` + Edit + `git add` staging-ordering trap drops content edits from the commit\" problem staging-trap handling, the \"Problem 063: manage-problem does not trigger /wr-itil:report-upstream when root cause is external\" problem external-root-cause detection, the \"Problem 062: `manage-problem` does not refresh `docs/problems/README.md` on single-ticket transitions; fast-path cache goes stale silently\" problem README refresh, the \"Governance Skills Commit Their Own Completed Work\" architecture rule commit) per the \"Rename `wr-problem` Plugin to `wr-itil`\" architecture rule amended \"Split-skill execution ownership\". Use when the user asks to \"transition\", \"close\", \"mark known-error\", or \"release\" a specific ticket."
3
+ description: "Advance a problem ticket's lifecycle status — Open → Known Error, Open or Known Error → Verification Pending (verifying), Verification Pending → Closed. Renames the ticket file, updates the Status field, and refreshes docs/problems/README.md in the same commit. Hosts the transition execution inline (pre-flight checks, the \"Problem 057: `git mv` + Edit + `git add` staging-ordering trap drops content edits from the commit\" problem staging-trap handling, the \"Problem 063: manage-problem does not trigger /wr-itil:report-upstream when root cause is external\" problem external-root-cause detection, the \"Problem 062: `manage-problem` does not refresh `docs/problems/README.md` on single-ticket transitions; fast-path cache goes stale silently\" problem README refresh, the \"Governance Skills Commit Their Own Completed Work\" architecture rule commit) per the \"Rename `wr-problem` Plugin to `wr-itil`\" architecture rule amended \"Split-skill execution ownership\". Use when the user asks to \"transition\", \"close\", \"mark known-error\", or \"release\" a specific ticket."
4
4
  allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion, Skill
5
5
  ---
6
6
 
@@ -25,7 +25,7 @@ The `<NNN>` and `<status>` tokens are **data parameters**, not word-subcommands.
25
25
  ## Scope
26
26
 
27
27
  **In scope:**
28
- - Validate that the ticket file exists and the destination status is reachable from the current status (e.g. an `.open.md` file cannot transition directly to Verification Pending it must go through Known Error first).
28
+ - Validate that the ticket file exists and the destination status is reachable from the current status, including the "Problem lifecycle add a Verification Pending status between Known Error and Closed" architecture rule's folded Open → Verification Pending route when both stages' checks pass inline.
29
29
  - Execute the transition inline: pre-flight checks, the "Problem 063: manage-problem does not trigger /wr-itil:report-upstream when root cause is external" problem external-root-cause detection (for the Open → Known Error destination), `git mv` to the new suffix, Status field edit, `## Fix Released` section write (for the Known Error → Verification Pending destination), the "Problem 057: `git mv` + Edit + `git add` staging-ordering trap drops content edits from the commit" problem staging re-stage, the "Problem 062: `manage-problem` does not refresh `docs/problems/README.md` on single-ticket transitions; fast-path cache goes stale silently" problem README.md refresh, the "Governance Skills Commit Their Own Completed Work" architecture rule commit.
30
30
  - Report the outcome (new filename, new Status, commit SHA).
31
31
 
@@ -66,6 +66,7 @@ Check the current filename suffix and verify the destination status is reachable
66
66
  | Current suffix | Destination argument | Valid? |
67
67
  |----------------|----------------------|--------|
68
68
  | `.open.md` | `known-error` | yes |
69
+ | `.open.md` | `verifying` | yes — **fix on capture**: the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule folds both forward stages only when the composed pre-flight below passes. |
69
70
  | `.known-error.md` | `verifying` | yes |
70
71
  | `.verifying.md` | `close` | yes |
71
72
  | `.verifying.md` | `known-error` | yes — **flip-back**: the fix recurred or proved incomplete. Required by `review-problems` Bucket 3, `manage-problem`, and `run-retro` Step 4a, all of which already instruct it. |
@@ -95,6 +96,8 @@ Destination-specific pre-flight checks gate the transition. If any check fails,
95
96
  - [ ] A release marker is available (version, commit SHA, or date) so the `## Fix Released` section can name it
96
97
  - [ ] **Conditional-deferral check (the "Agent treats conditionally-deferred work (deferred-pending-X-graduation) as permanently out of scope — prematurely transitions parent ticket when X graduates" problem)** — see the dedicated subsection below; halt the transition if any conditional deferral has lifted with unticked work remaining
97
98
 
99
+ **Open → Verification Pending** (`<status>` = `verifying`) requires all **Open → Known Error** checks, all **Known Error → Verification Pending** checks, and a populated objective `## Fix Released` section. This is the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule's fix-on-capture fold, not a pre-flight bypass: root cause, investigation, reproduction, workaround, effort/WSJF, implementation, release marker, and conditional-deferral checks all run before the single rename. The `## Fix Released` section must name the released version, commit SHA, or date; the heading alone does not satisfy the route.
100
+
98
101
  #### Conditional-deferral check on K→V (the "Agent treats conditionally-deferred work (deferred-pending-X-graduation) as permanently out of scope — prematurely transitions parent ticket when X graduates" problem) — copy-not-move sibling
99
102
 
100
103
  This subsection is the **copy-not-move sibling** of `/wr-itil:manage-problem` SKILL.md Step 7's "Conditional-deferral check BEFORE the rename (the "Agent treats conditionally-deferred work (deferred-pending-X-graduation) as permanently out of scope — prematurely transitions parent ticket when X graduates" problem)" block per [the "Rename `wr-problem` Plugin to `wr-itil`" architecture rule](../../../docs/decisions/010-rename-wr-problem-to-wr-itil.proposed.md) amended "Split-skill execution ownership" rule (the "Problem 093: `/wr-itil:transition-problem` ↔ `/wr-itil:manage-problem` circular delegation for `<NNN> <status>` args" problem). Both surfaces must carry the check; drift between the two copies re-opens the "Agent treats conditionally-deferred work (deferred-pending-X-graduation) as permanently out of scope — prematurely transitions parent ticket when X graduates" problem's silent-loss failure mode on whichever surface lacks the check.
@@ -224,6 +227,15 @@ git mv docs/problems/known-error/<NNN>-<title>.md docs/problems/verifying/<NNN>-
224
227
  git add docs/problems/verifying/<NNN>-<title>.md
225
228
  ```
226
229
 
230
+ **Open → Verification Pending** (the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule fix-on-capture fold):
231
+
232
+ ```bash
233
+ git mv docs/problems/open/<NNN>-<title>.md docs/problems/verifying/<NNN>-<title>.md
234
+ # Edit Status to "Verification Pending" and preserve the populated
235
+ # ## Fix Released section that passed the composed pre-flight.
236
+ git add docs/problems/verifying/<NNN>-<title>.md
237
+ ```
238
+
227
239
  The `## Fix Released` section contains: release marker (version, commit SHA, or date), one-sentence fix summary, "Awaiting user verification" line, and any exercise evidence from the releasing session. The `.verifying.md` suffix signals to every downstream consumer (work-problems classifier, review step 9d, README rendering) that the remaining work is verification — by evidence or by the user — no file-body scan needed.
228
240
 
229
241
  When this transition is folded into a `fix(<scope>): ... (closes P<NNN>)` commit (the common case), the `git mv` + `Edit` + re-stage + README refresh all join that single commit — never split across commits.
@@ -357,7 +369,7 @@ Release draining is owned by the caller — `/wr-itil:manage-problem` Step 12 (i
357
369
  `transition-problem` owns (for the user-initiated transition path):
358
370
  - Argument parsing (`<NNN> <status>`).
359
371
  - Ticket-file discovery via the dual-tolerant lookup `ls docs/problems/<NNN>-*.md docs/problems/*/<NNN>-*.md` (the ": docs/problems/ flat layout migration — per-state subdirs + adopter auto-migration" release design transitional shape; both layouts).
360
- - Destination-reachability validation (Open Known Error Verification Pending Closed, one step at a time).
372
+ - Destination-reachability validation (ordinary one-step transitions plus the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule's composed Open → Verification Pending fix-on-capture fold).
361
373
  - Pre-flight checks for the supplied destination.
362
374
  - the "Problem 063: manage-problem does not trigger /wr-itil:report-upstream when root cause is external" problem external-root-cause detection (Open → Known Error only) — including the AFK fallback that appends the stable `- **Upstream report pending** —` marker.
363
375
  - `git mv` rename + Status field edit + (for `verifying`) `## Fix Released` section write + explicit the "Problem 057: `git mv` + Edit + `git add` staging-ordering trap drops content edits from the commit" problem re-stage.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: wr-itil:transition-problems
3
- description: "Batch-advance multiple problem tickets through the lifecycle in one invocation — Open → Known Error, Known Error → Verification Pending, Verification Pending → Closed. Loops the per-ticket /wr-itil:transition-problem mechanic (rename, Status edit, the \"Problem 057: `git mv` + Edit + `git add` staging-ordering trap drops content edits from the commit\" problem re-stage, the \"Problem 063: manage-problem does not trigger /wr-itil:report-upstream when root cause is external\" problem external-root-cause detection, the \"Problem 062: `manage-problem` does not refresh `docs/problems/README.md` on single-ticket transitions; fast-path cache goes stale silently\" problem README refresh) without paying N× SKILL.md reload latency or violating split-skill execution ownership. Produces ONE shared commit covering all surviving transitions per the \"Governance Skills Commit Their Own Completed Work\" architecture rule batch-grain. Use when closing the Verification Queue at the end of a `/wr-retrospective:run-retro` Step 4a pass, batch-closing release-aged verifyings during `/wr-itil:work-problems` AFK orchestration, or confirming multiple Step 9d verifications in `/wr-itil:manage-problem review`. Singular sibling — `/wr-itil:transition-problem` (one ticket per invocation)."
3
+ description: "Batch-advance multiple problem tickets through the lifecycle in one invocation — Open → Known Error, Open or Known Error → Verification Pending, Verification Pending → Closed. Loops the per-ticket /wr-itil:transition-problem mechanic (rename, Status edit, the \"Problem 057: `git mv` + Edit + `git add` staging-ordering trap drops content edits from the commit\" problem re-stage, the \"Problem 063: manage-problem does not trigger /wr-itil:report-upstream when root cause is external\" problem external-root-cause detection, the \"Problem 062: `manage-problem` does not refresh `docs/problems/README.md` on single-ticket transitions; fast-path cache goes stale silently\" problem README refresh) without paying N× SKILL.md reload latency or violating split-skill execution ownership. Produces ONE shared commit covering all surviving transitions per the \"Governance Skills Commit Their Own Completed Work\" architecture rule batch-grain. Use when closing the Verification Queue at the end of a `/wr-retrospective:run-retro` Step 4a pass, batch-closing release-aged verifyings during `/wr-itil:work-problems` AFK orchestration, or confirming multiple Step 9d verifications in `/wr-itil:manage-problem review`. Singular sibling — `/wr-itil:transition-problem` (one ticket per invocation)."
4
4
  allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion, Skill, Agent
5
5
  ---
6
6
 
@@ -98,6 +98,7 @@ If no file is found OR multiple files are found (suffix-exclusive lifecycle viol
98
98
  | Current suffix | `<status>` | Valid? |
99
99
  |----------------|------------|--------|
100
100
  | `.open.md` | `known-error` | yes |
101
+ | `.open.md` | `verifying` | yes — **fix on capture**: the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule folds both forward stages only when the composed pre-flight below passes. |
101
102
  | `.known-error.md` | `verifying` | yes |
102
103
  | `.verifying.md` | `close` | yes |
103
104
  | `.verifying.md` | `known-error` | yes — **flip-back**: the fix recurred or proved incomplete. `review-problems` Bucket 3 already instructs this and had no batch path. |
@@ -110,6 +111,7 @@ Lockstep with `/wr-itil:transition-problem` Step 3 per the drift clause below
110
111
 
111
112
  - Open → Known Error (`known-error`): root cause documented; ≥ 1 investigation task ticked; reproduction test or reference; workaround documented; effort bucket re-rated if scope shifted (the "Problem 047: WSJF effort buckets are coarse and not re-rated at lifecycle transitions" problem); status multiplier re-rated from Open 1.0 to Known Error 2.0 and WSJF recomputed with the post-transition status and current Effort (the "WSJF uses the pre-transition status multiplier" problem).
112
113
  - Known Error → Verification Pending (`verifying`): fix implemented; release marker available (version, commit SHA, or date) for the `## Fix Released` section.
114
+ - Open → Verification Pending (`verifying`): all Open → Known Error checks and all Known Error → Verification Pending checks above pass inline, including the conditional-deferral check, and the ticket has a populated objective `## Fix Released` section naming a version, commit SHA, or date. The heading alone is insufficient.
113
115
  - Verification Pending → Closed (`close`): cited observed evidence or explicit user confirmation authorizes closure. Evidence-backed closure is mechanical and does not require another question. Record the citation and recovery path (`/wr-itil:transition-problem <NNN> known-error`) in each ticket's Status line. A provenance-proven GitHub issue on this project's tracker receives the gated comment and closes; unresolved or non-issue inbound provenance performs no issue mutation. A foreign issue receives the comment but stays open on local evidence alone; that upstream party's confirmation may authorize closure. Pull requests remain comment-only.
114
116
 
115
117
  **Never close on inference** — absence of evidence is not evidence. A pair whose ticket carries no citation records as `pre-flight-failed` with reason `no-evidence` and stays Verification Pending; age, plausibility, and "the fix is on disk" are not observations. **Do-not-close marker check** — run `wr-itil-is-close-blocked <NNN> docs/problems` per pair before closing. Exit 0 → record the pair as `pre-flight-failed` with reason `close-blocked` plus the matched marker line, and continue to the next pair; do NOT close it whatever the evidence says. Exit 2 (unresolvable ref) is a pre-flight failure, not permission.
@@ -154,6 +156,14 @@ git mv docs/problems/known-error/<NNN>-<title>.md docs/problems/verifying/<NNN>-
154
156
  git add docs/problems/verifying/<NNN>-<title>.md
155
157
  ```
156
158
 
159
+ ```bash
160
+ # Open → Verification Pending (the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule fix-on-capture fold)
161
+ git mv docs/problems/open/<NNN>-<title>.md docs/problems/verifying/<NNN>-<title>.md
162
+ # Edit Status to "Verification Pending" and preserve the populated
163
+ # ## Fix Released section that passed the composed pre-flight.
164
+ git add docs/problems/verifying/<NNN>-<title>.md
165
+ ```
166
+
157
167
  ```bash
158
168
  # Verification Pending → Closed
159
169
  git mv docs/problems/verifying/<NNN>-<title>.md docs/problems/closed/<NNN>-<title>.md
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: transition-problem
3
- description: "Advance a problem ticket's lifecycle status — Open → Known Error, Known Error → Verification Pending (verifying), Verification Pending → Closed. Renames the ticket file, updates the Status field, and refreshes docs/problems/README.md in the same commit. Hosts the transition execution inline (pre-flight checks, the \"Problem 057: `git mv` + Edit + `git add` staging-ordering trap drops content edits from the commit\" problem staging-trap handling, the \"Problem 063: manage-problem does not trigger /wr-itil:report-upstream when root cause is external\" problem external-root-cause detection, the \"Problem 062: `manage-problem` does not refresh `docs/problems/README.md` on single-ticket transitions; fast-path cache goes stale silently\" problem README refresh, the \"Governance Skills Commit Their Own Completed Work\" architecture rule commit) per the \"Rename `wr-problem` Plugin to `wr-itil`\" architecture rule amended \"Split-skill execution ownership\". Use when the user asks to \"transition\", \"close\", \"mark known-error\", or \"release\" a specific ticket."
3
+ description: "Advance a problem ticket's lifecycle status — Open → Known Error, Open or Known Error → Verification Pending (verifying), Verification Pending → Closed. Renames the ticket file, updates the Status field, and refreshes docs/problems/README.md in the same commit. Hosts the transition execution inline (pre-flight checks, the \"Problem 057: `git mv` + Edit + `git add` staging-ordering trap drops content edits from the commit\" problem staging-trap handling, the \"Problem 063: manage-problem does not trigger /wr-itil:report-upstream when root cause is external\" problem external-root-cause detection, the \"Problem 062: `manage-problem` does not refresh `docs/problems/README.md` on single-ticket transitions; fast-path cache goes stale silently\" problem README refresh, the \"Governance Skills Commit Their Own Completed Work\" architecture rule commit) per the \"Rename `wr-problem` Plugin to `wr-itil`\" architecture rule amended \"Split-skill execution ownership\". Use when the user asks to \"transition\", \"close\", \"mark known-error\", or \"release\" a specific ticket."
4
4
  allowed-tools: Read, Write, Edit, Bash, Glob, Grep, request_user_input, Skill
5
5
  ---
6
6
 
@@ -36,7 +36,7 @@ The `<NNN>` and `<status>` tokens are **data parameters**, not word-subcommands.
36
36
  ## Scope
37
37
 
38
38
  **In scope:**
39
- - Validate that the ticket file exists and the destination status is reachable from the current status (e.g. an `.open.md` file cannot transition directly to Verification Pending it must go through Known Error first).
39
+ - Validate that the ticket file exists and the destination status is reachable from the current status, including the "Problem lifecycle add a Verification Pending status between Known Error and Closed" architecture rule's folded Open → Verification Pending route when both stages' checks pass inline.
40
40
  - Execute the transition inline: pre-flight checks, the "Problem 063: manage-problem does not trigger /wr-itil:report-upstream when root cause is external" problem external-root-cause detection (for the Open → Known Error destination), `git mv` to the new suffix, Status field edit, `## Fix Released` section write (for the Known Error → Verification Pending destination), the "Problem 057: `git mv` + Edit + `git add` staging-ordering trap drops content edits from the commit" problem staging re-stage, the "Problem 062: `manage-problem` does not refresh `docs/problems/README.md` on single-ticket transitions; fast-path cache goes stale silently" problem README.md refresh, the "Governance Skills Commit Their Own Completed Work" architecture rule commit.
41
41
  - Report the outcome (new filename, new Status, commit SHA).
42
42
 
@@ -77,6 +77,7 @@ Check the current filename suffix and verify the destination status is reachable
77
77
  | Current suffix | Destination argument | Valid? |
78
78
  |----------------|----------------------|--------|
79
79
  | `.open.md` | `known-error` | yes |
80
+ | `.open.md` | `verifying` | yes — **fix on capture**: the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule folds both forward stages only when the composed pre-flight below passes. |
80
81
  | `.known-error.md` | `verifying` | yes |
81
82
  | `.verifying.md` | `close` | yes |
82
83
  | `.verifying.md` | `known-error` | yes — **flip-back**: the fix recurred or proved incomplete. Required by `review-problems` Bucket 3, `manage-problem`, and `run-retro` Step 4a, all of which already instruct it. |
@@ -106,6 +107,8 @@ Destination-specific pre-flight checks gate the transition. If any check fails,
106
107
  - [ ] A release marker is available (version, commit SHA, or date) so the `## Fix Released` section can name it
107
108
  - [ ] **Conditional-deferral check (the "Agent treats conditionally-deferred work (deferred-pending-X-graduation) as permanently out of scope — prematurely transitions parent ticket when X graduates" problem)** — see the dedicated subsection below; halt the transition if any conditional deferral has lifted with unticked work remaining
108
109
 
110
+ **Open → Verification Pending** (`<status>` = `verifying`) requires all **Open → Known Error** checks, all **Known Error → Verification Pending** checks, and a populated objective `## Fix Released` section. This is the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule's fix-on-capture fold, not a pre-flight bypass: root cause, investigation, reproduction, workaround, effort/WSJF, implementation, release marker, and conditional-deferral checks all run before the single rename. The `## Fix Released` section must name the released version, commit SHA, or date; the heading alone does not satisfy the route.
111
+
109
112
  #### Conditional-deferral check on K→V (the "Agent treats conditionally-deferred work (deferred-pending-X-graduation) as permanently out of scope — prematurely transitions parent ticket when X graduates" problem) — copy-not-move sibling
110
113
 
111
114
  This subsection is the **copy-not-move sibling** of `/wr-itil:manage-problem` SKILL.md Step 7's "Conditional-deferral check BEFORE the rename (the "Agent treats conditionally-deferred work (deferred-pending-X-graduation) as permanently out of scope — prematurely transitions parent ticket when X graduates" problem)" block per [the "Rename `wr-problem` Plugin to `wr-itil`" architecture rule](../../../docs/decisions/010-rename-wr-problem-to-wr-itil.proposed.md) amended "Split-skill execution ownership" rule (the "Problem 093: `/wr-itil:transition-problem` ↔ `/wr-itil:manage-problem` circular delegation for `<NNN> <status>` args" problem). Both surfaces must carry the check; drift between the two copies re-opens the "Agent treats conditionally-deferred work (deferred-pending-X-graduation) as permanently out of scope — prematurely transitions parent ticket when X graduates" problem's silent-loss failure mode on whichever surface lacks the check.
@@ -235,6 +238,15 @@ git mv docs/problems/known-error/<NNN>-<title>.md docs/problems/verifying/<NNN>-
235
238
  git add docs/problems/verifying/<NNN>-<title>.md
236
239
  ```
237
240
 
241
+ **Open → Verification Pending** (the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule fix-on-capture fold):
242
+
243
+ ```bash
244
+ git mv docs/problems/open/<NNN>-<title>.md docs/problems/verifying/<NNN>-<title>.md
245
+ # Edit Status to "Verification Pending" and preserve the populated
246
+ # ## Fix Released section that passed the composed pre-flight.
247
+ git add docs/problems/verifying/<NNN>-<title>.md
248
+ ```
249
+
238
250
  The `## Fix Released` section contains: release marker (version, commit SHA, or date), one-sentence fix summary, "Awaiting user verification" line, and any exercise evidence from the releasing session. The `.verifying.md` suffix signals to every downstream consumer (work-problems classifier, review step 9d, README rendering) that the remaining work is verification — by evidence or by the user — no file-body scan needed.
239
251
 
240
252
  When this transition is folded into a `fix(<scope>): ... (closes P<NNN>)` commit (the common case), the `git mv` + `Edit` + re-stage + README refresh all join that single commit — never split across commits.
@@ -368,7 +380,7 @@ Release draining is owned by the caller — `/wr-itil:manage-problem` Step 12 (i
368
380
  `transition-problem` owns (for the user-initiated transition path):
369
381
  - Argument parsing (`<NNN> <status>`).
370
382
  - Ticket-file discovery via the dual-tolerant lookup `ls docs/problems/<NNN>-*.md docs/problems/*/<NNN>-*.md` (the ": docs/problems/ flat layout migration — per-state subdirs + adopter auto-migration" release design transitional shape; both layouts).
371
- - Destination-reachability validation (Open Known Error Verification Pending Closed, one step at a time).
383
+ - Destination-reachability validation (ordinary one-step transitions plus the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule's composed Open → Verification Pending fix-on-capture fold).
372
384
  - Pre-flight checks for the supplied destination.
373
385
  - the "Problem 063: manage-problem does not trigger /wr-itil:report-upstream when root cause is external" problem external-root-cause detection (Open → Known Error only) — including the AFK fallback that appends the stable `- **Upstream report pending** —` marker.
374
386
  - `git mv` rename + Status field edit + (for `verifying`) `## Fix Released` section write + explicit the "Problem 057: `git mv` + Edit + `git add` staging-ordering trap drops content edits from the commit" problem re-stage.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: transition-problems
3
- description: "Batch-advance multiple problem tickets through the lifecycle in one invocation — Open → Known Error, Known Error → Verification Pending, Verification Pending → Closed. Loops the per-ticket /wr-itil:transition-problem mechanic (rename, Status edit, the \"Problem 057: `git mv` + Edit + `git add` staging-ordering trap drops content edits from the commit\" problem re-stage, the \"Problem 063: manage-problem does not trigger /wr-itil:report-upstream when root cause is external\" problem external-root-cause detection, the \"Problem 062: `manage-problem` does not refresh `docs/problems/README.md` on single-ticket transitions; fast-path cache goes stale silently\" problem README refresh) without paying N× SKILL.md reload latency or violating split-skill execution ownership. Produces ONE shared commit covering all surviving transitions per the \"Governance Skills Commit Their Own Completed Work\" architecture rule batch-grain. Use when closing the Verification Queue at the end of a `/wr-retrospective:run-retro` Step 4a pass, batch-closing release-aged verifyings during `/wr-itil:work-problems` AFK orchestration, or confirming multiple Step 9d verifications in `/wr-itil:manage-problem review`. Singular sibling — `/wr-itil:transition-problem` (one ticket per invocation)."
3
+ description: "Batch-advance multiple problem tickets through the lifecycle in one invocation — Open → Known Error, Open or Known Error → Verification Pending, Verification Pending → Closed. Loops the per-ticket /wr-itil:transition-problem mechanic (rename, Status edit, the \"Problem 057: `git mv` + Edit + `git add` staging-ordering trap drops content edits from the commit\" problem re-stage, the \"Problem 063: manage-problem does not trigger /wr-itil:report-upstream when root cause is external\" problem external-root-cause detection, the \"Problem 062: `manage-problem` does not refresh `docs/problems/README.md` on single-ticket transitions; fast-path cache goes stale silently\" problem README refresh) without paying N× SKILL.md reload latency or violating split-skill execution ownership. Produces ONE shared commit covering all surviving transitions per the \"Governance Skills Commit Their Own Completed Work\" architecture rule batch-grain. Use when closing the Verification Queue at the end of a `/wr-retrospective:run-retro` Step 4a pass, batch-closing release-aged verifyings during `/wr-itil:work-problems` AFK orchestration, or confirming multiple Step 9d verifications in `/wr-itil:manage-problem review`. Singular sibling — `/wr-itil:transition-problem` (one ticket per invocation)."
4
4
  allowed-tools: Read, Write, Edit, Bash, Glob, Grep, request_user_input, Skill, Agent
5
5
  ---
6
6
 
@@ -109,6 +109,7 @@ If no file is found OR multiple files are found (suffix-exclusive lifecycle viol
109
109
  | Current suffix | `<status>` | Valid? |
110
110
  |----------------|------------|--------|
111
111
  | `.open.md` | `known-error` | yes |
112
+ | `.open.md` | `verifying` | yes — **fix on capture**: the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule folds both forward stages only when the composed pre-flight below passes. |
112
113
  | `.known-error.md` | `verifying` | yes |
113
114
  | `.verifying.md` | `close` | yes |
114
115
  | `.verifying.md` | `known-error` | yes — **flip-back**: the fix recurred or proved incomplete. `review-problems` Bucket 3 already instructs this and had no batch path. |
@@ -121,6 +122,7 @@ Lockstep with `/wr-itil:transition-problem` Step 3 per the drift clause below
121
122
 
122
123
  - Open → Known Error (`known-error`): root cause documented; ≥ 1 investigation task ticked; reproduction test or reference; workaround documented; effort bucket re-rated if scope shifted (the "Problem 047: WSJF effort buckets are coarse and not re-rated at lifecycle transitions" problem); status multiplier re-rated from Open 1.0 to Known Error 2.0 and WSJF recomputed with the post-transition status and current Effort (the "WSJF uses the pre-transition status multiplier" problem).
123
124
  - Known Error → Verification Pending (`verifying`): fix implemented; release marker available (version, commit SHA, or date) for the `## Fix Released` section.
125
+ - Open → Verification Pending (`verifying`): all Open → Known Error checks and all Known Error → Verification Pending checks above pass inline, including the conditional-deferral check, and the ticket has a populated objective `## Fix Released` section naming a version, commit SHA, or date. The heading alone is insufficient.
124
126
  - Verification Pending → Closed (`close`): cited observed evidence or explicit user confirmation authorizes closure. Evidence-backed closure is mechanical and does not require another question. Record the citation and recovery path (`/wr-itil:transition-problem <NNN> known-error`) in each ticket's Status line. A provenance-proven GitHub issue on this project's tracker receives the gated comment and closes; unresolved or non-issue inbound provenance performs no issue mutation. A foreign issue receives the comment but stays open on local evidence alone; that upstream party's confirmation may authorize closure. Pull requests remain comment-only.
125
127
 
126
128
  **Never close on inference** — absence of evidence is not evidence. A pair whose ticket carries no citation records as `pre-flight-failed` with reason `no-evidence` and stays Verification Pending; age, plausibility, and "the fix is on disk" are not observations. **Do-not-close marker check** — run `<itil-plugin-root>/bin/wr-itil-is-close-blocked <NNN> docs/problems` per pair before closing. Exit 0 → record the pair as `pre-flight-failed` with reason `close-blocked` plus the matched marker line, and continue to the next pair; do NOT close it whatever the evidence says. Exit 2 (unresolvable ref) is a pre-flight failure, not permission.
@@ -165,6 +167,14 @@ git mv docs/problems/known-error/<NNN>-<title>.md docs/problems/verifying/<NNN>-
165
167
  git add docs/problems/verifying/<NNN>-<title>.md
166
168
  ```
167
169
 
170
+ ```bash
171
+ # Open → Verification Pending (the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule fix-on-capture fold)
172
+ git mv docs/problems/open/<NNN>-<title>.md docs/problems/verifying/<NNN>-<title>.md
173
+ # Edit Status to "Verification Pending" and preserve the populated
174
+ # ## Fix Released section that passed the composed pre-flight.
175
+ git add docs/problems/verifying/<NNN>-<title>.md
176
+ ```
177
+
168
178
  ```bash
169
179
  # Verification Pending → Closed
170
180
  git mv docs/problems/verifying/<NNN>-<title>.md docs/problems/closed/<NNN>-<title>.md