@windyroad/itil 1.2.0 → 2.0.0-preview.1111
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.
- package/.agents/plugins/marketplace.json +12 -0
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +42 -0
- package/README.md +34 -25
- package/agents/hang-off-check.md +34 -34
- package/bin/install.mjs +71 -5
- package/bin/wr-itil-catchup-scan +4 -4
- package/bin/wr-itil-check-deferred-placeholder-staleness +4 -4
- package/bin/wr-itil-check-fail-soft-skip-discipline +4 -4
- package/bin/wr-itil-check-fix-rfc-trace +4 -4
- package/bin/wr-itil-check-locale-discipline +4 -4
- package/bin/wr-itil-check-outbound-responses-staleness +4 -4
- package/bin/wr-itil-check-problems-readme-budget +4 -4
- package/bin/wr-itil-check-rfc-has-stories +4 -4
- package/bin/wr-itil-check-rfc-stories-ratified +4 -4
- package/bin/wr-itil-check-ticket-jtbd-ratification +4 -4
- package/bin/wr-itil-check-upstream-cache-staleness +4 -4
- package/bin/wr-itil-check-upstream-responses +4 -4
- package/bin/wr-itil-classify-readme-drift +4 -4
- package/bin/wr-itil-derive-release-vehicle +4 -4
- package/bin/wr-itil-detect-unratified-stories-maps +4 -4
- package/bin/wr-itil-effort-tally +4 -4
- package/bin/wr-itil-enumerate-postrelease-kv-candidates +4 -4
- package/bin/wr-itil-evaluate-relevance +4 -4
- package/bin/wr-itil-mark-create-gate +4 -4
- package/bin/wr-itil-mark-story-oversight-confirmed +4 -4
- package/bin/wr-itil-migrate-problems-layout +4 -4
- package/bin/wr-itil-migrate-story-status-mirror +4 -4
- package/bin/wr-itil-next-rfc-id +4 -4
- package/bin/wr-itil-plugin-exercise-index +4 -4
- package/bin/wr-itil-plugin-maturity-populate +4 -4
- package/bin/wr-itil-plugin-maturity-render +4 -4
- package/bin/wr-itil-plugin-validate-ci-gate +4 -4
- package/bin/wr-itil-reconcile-readme +4 -4
- package/bin/wr-itil-reconcile-rfcs +4 -4
- package/bin/wr-itil-reconcile-stories +4 -4
- package/bin/wr-itil-reconcile-story-maps +4 -4
- package/bin/wr-itil-render-story-map +4 -4
- package/bin/wr-itil-resolve-governance-plugin-dirs +4 -4
- package/bin/wr-itil-skill-invocations +4 -4
- package/bin/wr-itil-story-map-edit +4 -4
- package/bin/wr-itil-story-map-query +4 -4
- package/bin/wr-itil-update-jtbd-references-section +4 -4
- package/bin/wr-itil-update-problem-references-section +4 -4
- package/bin/wr-itil-update-problem-rfcs-section +4 -4
- package/bin/wr-itil-update-rfc-commits-section +4 -4
- package/bin/wr-itil-update-rfc-references-section +4 -4
- package/bin/wr-itil-verify-iter-summary +4 -4
- package/hooks/itil-assistant-output-gate.sh +3 -3
- package/hooks/itil-assistant-output-review.sh +5 -5
- package/hooks/itil-bash-polling-antipattern-detect.sh +11 -11
- package/hooks/itil-changeset-discipline.sh +24 -24
- package/hooks/itil-claude-space-protection.sh +21 -14
- package/hooks/itil-codex-dispatch.sh +164 -0
- package/hooks/itil-commit-trailer-transition-advisory.sh +11 -11
- package/hooks/itil-correction-detect.sh +8 -8
- package/hooks/itil-deferral-cadence-gate.sh +23 -23
- package/hooks/itil-fictional-defer-detect.sh +16 -16
- package/hooks/itil-fix-title-lifecycle-advisory.sh +11 -11
- package/hooks/itil-mid-loop-ask-detect.sh +14 -14
- package/hooks/itil-no-implement-draft-gate.sh +18 -18
- package/hooks/itil-pending-questions-surface.sh +11 -11
- package/hooks/itil-readme-refresh-discipline.sh +27 -27
- package/hooks/itil-rfc-oversight-nudge.sh +7 -7
- package/hooks/itil-rfc-trailer-advisory.sh +28 -28
- package/hooks/itil-runtime-sid-marker.sh +11 -11
- package/hooks/itil-story-mirror-migration-nudge.sh +7 -7
- package/hooks/lib/block-list.sh +17 -17
- package/hooks/lib/changeset-detect.sh +27 -27
- package/hooks/lib/claude-space-gate.sh +23 -15
- package/hooks/lib/command-detect.sh +12 -12
- package/hooks/lib/create-gate.sh +9 -39
- package/hooks/lib/detectors.sh +12 -12
- package/hooks/lib/readme-refresh-detect.sh +51 -51
- package/hooks/lib/runtime-sid.sh +12 -12
- package/hooks/lib/session-id.sh +28 -28
- package/hooks/lib/session-marker.sh +1 -1
- package/hooks/lib/staging-detect.sh +13 -13
- package/hooks/manage-problem-enforce-create.sh +16 -27
- package/hooks/p057-staging-trap-detect.sh +18 -18
- package/hooks/pre-publish-intake-gate.sh +5 -5
- package/hooks/staleness-check.sh +6 -6
- package/hooks-codex/hooks.json +57 -0
- package/lib/check-deferred-placeholder-staleness.sh +10 -10
- package/lib/check-outbound-responses-staleness.sh +2 -2
- package/lib/check-upstream-cache-staleness.sh +2 -2
- package/lib/derive-first-dispatch.sh +19 -19
- package/lib/enumerate-postrelease-kv-candidates.sh +18 -18
- package/lib/migrate-problems-layout.sh +12 -12
- package/lib/story-oversight.sh +27 -27
- package/package.json +16 -3
- package/scripts/catchup-scan.sh +25 -25
- package/scripts/check-fail-soft-skip-discipline.sh +10 -10
- package/scripts/check-fix-rfc-trace.sh +8 -8
- package/scripts/check-locale-discipline.sh +13 -13
- package/scripts/check-problems-readme-budget.sh +12 -12
- package/scripts/check-rfc-has-stories.sh +7 -7
- package/scripts/check-rfc-rejected-alternatives.sh +11 -11
- package/scripts/check-rfc-stories-ratified.sh +9 -9
- package/scripts/check-ticket-jtbd-ratification.sh +10 -10
- package/scripts/check-upstream-responses.sh +22 -22
- package/scripts/classify-readme-drift.sh +13 -13
- package/scripts/codex-agent.mjs +104 -0
- package/scripts/derive-release-vehicle.sh +23 -23
- package/scripts/detect-unoversighted-rfcs.sh +3 -3
- package/scripts/detect-unratified-stories-maps.sh +5 -5
- package/scripts/effort-tally.sh +10 -10
- package/scripts/evaluate-relevance.sh +16 -16
- package/scripts/mark-create-gate.sh +4 -4
- package/scripts/mark-story-oversight-confirmed.sh +14 -14
- package/scripts/migrate-story-status-mirror.sh +6 -6
- package/scripts/next-rfc-id.sh +5 -5
- package/scripts/plugin-exercise-index.sh +26 -26
- package/scripts/plugin-maturity-populate.sh +38 -38
- package/scripts/plugin-maturity-render.sh +26 -26
- package/scripts/plugin-validate-ci-gate.sh +14 -14
- package/scripts/reconcile-readme.sh +23 -23
- package/scripts/reconcile-rfcs.sh +13 -13
- package/scripts/reconcile-stories.sh +12 -12
- package/scripts/reconcile-story-maps.sh +6 -6
- package/scripts/render-story-map.mjs +24 -24
- package/scripts/render-story-map.sh +3 -3
- package/scripts/resolve-governance-plugin-dirs.sh +10 -10
- package/scripts/run-check-deferred-placeholder-staleness.sh +3 -3
- package/scripts/run-check-outbound-responses-staleness.sh +3 -3
- package/scripts/run-check-upstream-cache-staleness.sh +3 -3
- package/scripts/run-enumerate-postrelease-kv-candidates.sh +3 -3
- package/scripts/run-migrate-problems-layout.sh +3 -3
- package/scripts/skill-invocations.sh +29 -29
- package/scripts/story-map-edit.mjs +6 -6
- package/scripts/story-map-edit.sh +3 -3
- package/scripts/story-map-query.mjs +8 -8
- package/scripts/story-map-query.sh +3 -3
- package/scripts/update-jtbd-references-section.sh +8 -8
- package/scripts/update-problem-references-section.sh +12 -12
- package/scripts/update-problem-rfcs-section.sh +9 -9
- package/scripts/update-rfc-commits-section.sh +7 -7
- package/scripts/update-rfc-references-section.sh +3 -3
- package/scripts/update-story-references-section.sh +5 -5
- package/scripts/verify-iter-summary.sh +3 -3
- package/skills/capture-problem/REFERENCE.md +33 -33
- package/skills/capture-problem/SKILL.md +108 -108
- package/skills/capture-problem/agents/openai.yaml +3 -0
- package/skills/capture-rfc/SKILL.md +21 -323
- package/skills/capture-rfc/agents/openai.yaml +3 -0
- package/skills/capture-story/SKILL.md +65 -65
- package/skills/capture-story/agents/openai.yaml +3 -0
- package/skills/capture-story-map/SKILL.md +31 -31
- package/skills/capture-story-map/agents/openai.yaml +3 -0
- package/skills/check-upstream-responses/SKILL.md +38 -38
- package/skills/check-upstream-responses/agents/openai.yaml +3 -0
- package/skills/close-incident/SKILL.md +25 -25
- package/skills/close-incident/agents/openai.yaml +3 -0
- package/skills/link-incident/SKILL.md +22 -22
- package/skills/link-incident/agents/openai.yaml +3 -0
- package/skills/list-incidents/SKILL.md +9 -9
- package/skills/list-incidents/agents/openai.yaml +3 -0
- package/skills/list-problems/SKILL.md +17 -17
- package/skills/list-problems/agents/openai.yaml +3 -0
- package/skills/list-stories/SKILL.md +23 -23
- package/skills/list-stories/agents/openai.yaml +3 -0
- package/skills/list-story-maps/SKILL.md +9 -9
- package/skills/list-story-maps/agents/openai.yaml +3 -0
- package/skills/manage-incident/SKILL.md +59 -59
- package/skills/manage-incident/agents/openai.yaml +3 -0
- package/skills/manage-problem/SKILL.md +222 -222
- package/skills/manage-problem/agents/openai.yaml +3 -0
- package/skills/manage-rfc/SKILL.md +62 -62
- package/skills/manage-rfc/agents/openai.yaml +3 -0
- package/skills/manage-story/SKILL.md +49 -49
- package/skills/manage-story/agents/openai.yaml +3 -0
- package/skills/manage-story-map/SKILL.md +30 -30
- package/skills/manage-story-map/agents/openai.yaml +3 -0
- package/skills/mitigate-incident/SKILL.md +40 -40
- package/skills/mitigate-incident/agents/openai.yaml +3 -0
- package/skills/reconcile-readme/SKILL.md +28 -28
- package/skills/reconcile-readme/agents/openai.yaml +3 -0
- package/skills/reconcile-stories/SKILL.md +17 -17
- package/skills/reconcile-stories/agents/openai.yaml +3 -0
- package/skills/reconcile-story-maps/SKILL.md +11 -11
- package/skills/reconcile-story-maps/agents/openai.yaml +3 -0
- package/skills/report-upstream/SKILL.md +73 -73
- package/skills/report-upstream/agents/openai.yaml +3 -0
- package/skills/restore-incident/SKILL.md +28 -28
- package/skills/restore-incident/agents/openai.yaml +3 -0
- package/skills/review-problems/SKILL.md +129 -129
- package/skills/review-problems/agents/openai.yaml +3 -0
- package/skills/scaffold-intake/SKILL.md +26 -26
- package/skills/scaffold-intake/agents/openai.yaml +3 -0
- package/skills/transition-problem/SKILL.md +85 -85
- package/skills/transition-problem/agents/openai.yaml +3 -0
- package/skills/transition-problems/SKILL.md +69 -69
- package/skills/transition-problems/agents/openai.yaml +3 -0
- package/skills/update-upstream/SKILL.md +97 -97
- package/skills/update-upstream/agents/openai.yaml +3 -0
- package/skills/work-problem/SKILL.md +42 -42
- package/skills/work-problem/agents/openai.yaml +3 -0
- package/skills/work-problems/SKILL.md +327 -327
- package/skills/work-problems/agents/openai.yaml +3 -0
- package/skills-codex/capture-problem/REFERENCE.md +139 -0
- package/skills-codex/capture-problem/SKILL.md +438 -0
- package/skills-codex/capture-problem/agents/openai.yaml +3 -0
- package/skills-codex/capture-rfc/SKILL.md +45 -0
- package/skills-codex/capture-rfc/agents/openai.yaml +3 -0
- package/skills-codex/capture-story/SKILL.md +407 -0
- package/skills-codex/capture-story/agents/openai.yaml +3 -0
- package/skills-codex/capture-story-map/SKILL.md +286 -0
- package/skills-codex/capture-story-map/agents/openai.yaml +3 -0
- package/skills-codex/check-upstream-responses/SKILL.md +160 -0
- package/skills-codex/check-upstream-responses/agents/openai.yaml +3 -0
- package/skills-codex/close-incident/SKILL.md +192 -0
- package/skills-codex/close-incident/agents/openai.yaml +3 -0
- package/skills-codex/link-incident/SKILL.md +173 -0
- package/skills-codex/link-incident/agents/openai.yaml +3 -0
- package/skills-codex/list-incidents/SKILL.md +92 -0
- package/skills-codex/list-incidents/agents/openai.yaml +3 -0
- package/skills-codex/list-problems/SKILL.md +126 -0
- package/skills-codex/list-problems/agents/openai.yaml +3 -0
- package/skills-codex/list-stories/SKILL.md +170 -0
- package/skills-codex/list-stories/agents/openai.yaml +3 -0
- package/skills-codex/list-story-maps/SKILL.md +104 -0
- package/skills-codex/list-story-maps/agents/openai.yaml +3 -0
- package/skills-codex/manage-incident/SKILL.md +378 -0
- package/skills-codex/manage-incident/agents/openai.yaml +3 -0
- package/skills-codex/manage-problem/SKILL.md +1180 -0
- package/skills-codex/manage-problem/agents/openai.yaml +3 -0
- package/skills-codex/manage-rfc/SKILL.md +314 -0
- package/skills-codex/manage-rfc/agents/openai.yaml +3 -0
- package/skills-codex/manage-story/SKILL.md +284 -0
- package/skills-codex/manage-story/agents/openai.yaml +3 -0
- package/skills-codex/manage-story-map/SKILL.md +198 -0
- package/skills-codex/manage-story-map/agents/openai.yaml +3 -0
- package/skills-codex/mitigate-incident/SKILL.md +239 -0
- package/skills-codex/mitigate-incident/agents/openai.yaml +3 -0
- package/skills-codex/reconcile-readme/SKILL.md +175 -0
- package/skills-codex/reconcile-readme/agents/openai.yaml +3 -0
- package/skills-codex/reconcile-stories/SKILL.md +124 -0
- package/skills-codex/reconcile-stories/agents/openai.yaml +3 -0
- package/skills-codex/reconcile-story-maps/SKILL.md +81 -0
- package/skills-codex/reconcile-story-maps/agents/openai.yaml +3 -0
- package/skills-codex/report-upstream/SKILL.md +716 -0
- package/skills-codex/report-upstream/agents/openai.yaml +3 -0
- package/skills-codex/restore-incident/SKILL.md +216 -0
- package/skills-codex/restore-incident/agents/openai.yaml +3 -0
- package/skills-codex/review-problems/SKILL.md +524 -0
- package/skills-codex/review-problems/agents/openai.yaml +3 -0
- package/skills-codex/scaffold-intake/SKILL.md +209 -0
- package/skills-codex/scaffold-intake/agents/openai.yaml +3 -0
- package/skills-codex/scaffold-intake/templates/CONTRIBUTING.md.tmpl +31 -0
- package/skills-codex/scaffold-intake/templates/SECURITY.md.tmpl +39 -0
- package/skills-codex/scaffold-intake/templates/SUPPORT.md.tmpl +32 -0
- package/skills-codex/scaffold-intake/templates/config.yml.tmpl +8 -0
- package/skills-codex/scaffold-intake/templates/problem-report.yml.tmpl +114 -0
- package/skills-codex/transition-problem/SKILL.md +371 -0
- package/skills-codex/transition-problem/agents/openai.yaml +3 -0
- package/skills-codex/transition-problems/SKILL.md +310 -0
- package/skills-codex/transition-problems/agents/openai.yaml +3 -0
- package/skills-codex/update-upstream/SKILL.md +583 -0
- package/skills-codex/update-upstream/agents/openai.yaml +3 -0
- package/skills-codex/work-problem/SKILL.md +160 -0
- package/skills-codex/work-problem/agents/openai.yaml +3 -0
- package/skills-codex/work-problems/SKILL.md +58 -0
- package/skills-codex/work-problems/agents/openai.yaml +3 -0
- package/templates/story-map.css +1 -1
- package/bin/wr-itil-mark-rfc-capture-gate +0 -51
- package/scripts/mark-rfc-capture-gate.sh +0 -32
|
@@ -1,27 +1,27 @@
|
|
|
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,
|
|
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)."
|
|
4
4
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion, Skill, Agent
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Transition Problems — Batch Lifecycle Advance
|
|
8
8
|
|
|
9
|
-
Advance multiple problem tickets along the ITIL lifecycle in one invocation. The skill is the **batch executor** for the user-initiated transition path — it accepts a list of `<NNN> <status>` pairs, runs each pair's per-ticket mechanic inline (pre-flight checks,
|
|
9
|
+
Advance multiple problem tickets along the ITIL lifecycle in one invocation. The skill is the **batch executor** for the user-initiated transition path — it accepts a list of `<NNN> <status>` pairs, runs each pair's per-ticket mechanic 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, `git mv` + Status edit + the "Problem 057: `git mv` + Edit + `git add` staging-ordering trap drops content edits from the commit" problem re-stage, `## Fix Released` for the `verifying` destination), refreshes `docs/problems/README.md` ONCE at the end (the "Problem 062: `manage-problem` does not refresh `docs/problems/README.md` on single-ticket transitions; fast-path cache goes stale silently" problem at batch grain), and commits all surviving transitions in ONE commit per the "Governance Skills Commit Their Own Completed Work" architecture rule.
|
|
10
10
|
|
|
11
|
-
This skill is the plural sibling of `/wr-itil:transition-problem`, mirroring the
|
|
11
|
+
This skill is the plural sibling of `/wr-itil:transition-problem`, mirroring the "Problem 071: Argument-based skill subcommands are not discoverable in Claude Code autocomplete" problem singular/plural split precedent established by `/wr-itil:work-problem` (singular) and `/wr-itil:work-problems` (plural). Per the "Rename `wr-problem` Plugin to `wr-itil`" architecture rule amended Skill Granularity rule, batch-transition is a distinct user intent from single-transition (different ergonomics, different commit grain, different cost profile) and therefore lives on its own skill surface.
|
|
12
12
|
|
|
13
|
-
## Why this skill exists (
|
|
13
|
+
## Why this skill exists (the "No batch-transition surface for multiple problem tickets in a single run-retro / review cycle" problem)
|
|
14
14
|
|
|
15
|
-
Closing N tickets via the singular skill costs N× SKILL.md reload into the caller's context every time the singular is invoked from a batch caller (run-retro Step 4a, manage-problem review Step 9d, work-problems release-batched closures). This is the very SKILL.md-runtime-size pressure
|
|
15
|
+
Closing N tickets via the singular skill costs N× SKILL.md reload into the caller's context every time the singular is invoked from a batch caller (run-retro Step 4a, manage-problem review Step 9d, work-problems release-batched closures). This is the very SKILL.md-runtime-size pressure the "Problem 097: SKILL.md files mix runtime-necessary steps with maintainer-facing rationale, bloating every skill invocation" problem captures, and the inline-batch workaround documented in the "No batch-transition surface for multiple problem tickets in a single run-retro / review cycle" problem (running `git mv` + Edit + commit outside the singular skill's authoritative-executor scope) violates the "Rename `wr-problem` Plugin to `wr-itil`" architecture rule amended ownership boundary.
|
|
16
16
|
|
|
17
|
-
The plural surface eliminates both costs: ONE SKILL.md load (this file), N pair iterations in-band, ONE commit at the end. Per
|
|
17
|
+
The plural surface eliminates both costs: ONE SKILL.md load (this file), N pair iterations in-band, ONE commit at the end. Per the "Rename `wr-problem` Plugin to `wr-itil`" architecture rule amended "Split-skill execution ownership", the plural carries an inline scoped copy of the singular's per-ticket mechanic ("copy, not move") rather than re-invoking the singular via the Skill tool — Skill-tool re-invocation N times would reintroduce the very N× reload cost the ticket targets.
|
|
18
18
|
|
|
19
19
|
## Name distinction (transition-problem vs transition-problems)
|
|
20
20
|
|
|
21
|
-
- **`/wr-itil:transition-problem`** (singular) — one ticket per invocation. The authoritative executor for the single-transition user-initiated path (
|
|
21
|
+
- **`/wr-itil:transition-problem`** (singular) — one ticket per invocation. The authoritative executor for the single-transition user-initiated path (the "Problem 093: `/wr-itil:transition-problem` ↔ `/wr-itil:manage-problem` circular delegation for `<NNN> <status>` args" problem / the "Rename `wr-problem` Plugin to `wr-itil`" architecture rule amended). Use when the user wants to transition one specific ticket and stop.
|
|
22
22
|
- **`/wr-itil:transition-problems`** (plural, this skill) — batch transition. Accepts a list of `<NNN> <status>` pairs and runs each through an inline copy of the per-ticket mechanic, single commit at the end. Use when closing multiple verifyings at once or batch-marking known-error after a multi-ticket review.
|
|
23
23
|
|
|
24
|
-
Both names coexist intentionally per the
|
|
24
|
+
Both names coexist intentionally per the "Problem 071: Argument-based skill subcommands are not discoverable in Claude Code autocomplete" problem singular/plural precedent. Plugin-developers reading this skill should recognise the same shape as `work-problem`/`work-problems`, `list-problems`, and `review-problems` — distinct intents for distinct ergonomic surfaces.
|
|
25
25
|
|
|
26
26
|
## Arguments
|
|
27
27
|
|
|
@@ -34,7 +34,7 @@ A space-separated list of `<NNN> <status>` pairs. Repeating the singular skill's
|
|
|
34
34
|
- `<NNN>` — three-digit ticket ID (e.g. `063`).
|
|
35
35
|
- `<status>` — destination status. One of:
|
|
36
36
|
- `known-error` — Open → Known Error (root cause + workaround documented).
|
|
37
|
-
- `verifying` — Known Error → Verification Pending (fix released; awaiting user verification per
|
|
37
|
+
- `verifying` — Known Error → Verification Pending (fix released; awaiting user verification per the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule).
|
|
38
38
|
- `close` — Verification Pending → Closed (user has confirmed the fix works in production).
|
|
39
39
|
|
|
40
40
|
**Examples:**
|
|
@@ -44,7 +44,7 @@ A space-separated list of `<NNN> <status>` pairs. Repeating the singular skill's
|
|
|
44
44
|
/wr-itil:transition-problems 070 known-error 080 verifying 094 close
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
-
The pair tokens are **data parameters**, not word-subcommands — the same shape rule the singular's argument table cites against
|
|
47
|
+
The pair tokens are **data parameters**, not word-subcommands — the same shape rule the singular's argument table cites against the "Problem 071: Argument-based skill subcommands are not discoverable in Claude Code autocomplete" problem. Pairs are processed in argument order; each runs the full per-pair mechanic independently.
|
|
48
48
|
|
|
49
49
|
If the argument count is odd, or any pair's tokens are malformed (`<NNN>` not three digits; `<status>` not in the enum), emit a usage message and stop without touching git.
|
|
50
50
|
|
|
@@ -52,9 +52,9 @@ If the argument count is odd, or any pair's tokens are malformed (`<NNN>` not th
|
|
|
52
52
|
|
|
53
53
|
**In scope:**
|
|
54
54
|
- Parse the pair list and validate each pair's argument shape (count is even; IDs are `\d{3}`; statuses are in the enum).
|
|
55
|
-
- For each pair, run the per-ticket mechanic inline: ticket-file discovery, transition-path validation, pre-flight checks,
|
|
56
|
-
- After the loop, refresh `docs/problems/README.md` ONCE per
|
|
57
|
-
- Commit ALL surviving transitions + the refreshed README in ONE commit per
|
|
55
|
+
- For each pair, run the per-ticket mechanic inline: ticket-file discovery, transition-path validation, 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 (Open → Known Error only), `git mv` to the new suffix, Status field edit, `## Fix Released` section write (Known Error → Verification Pending only), explicit the "Problem 057: `git mv` + Edit + `git add` staging-ordering trap drops content edits from the commit" problem re-stage.
|
|
56
|
+
- After the loop, refresh `docs/problems/README.md` ONCE per the "Problem 062: `manage-problem` does not refresh `docs/problems/README.md` on single-ticket transitions; fast-path cache goes stale silently" problem (single render reflecting all surviving renames).
|
|
57
|
+
- Commit ALL surviving transitions + the refreshed README in ONE commit per the "Governance Skills Commit Their Own Completed Work" architecture rule batch-grain unit-of-work.
|
|
58
58
|
- Report the per-pair outcome: succeeded pairs, failed pairs (with reason category), commit SHA.
|
|
59
59
|
|
|
60
60
|
**Out of scope:**
|
|
@@ -62,7 +62,7 @@ If the argument count is odd, or any pair's tokens are malformed (`<NNN>` not th
|
|
|
62
62
|
- Backlog re-ranking — that's `/wr-itil:review-problems`.
|
|
63
63
|
- Ticket creation or bare-update flows — those stay on `/wr-itil:manage-problem`.
|
|
64
64
|
- Parking — the `.parked.md` suffix has its own path on `/wr-itil:manage-problem`.
|
|
65
|
-
- Auto-transitions inside review — Step 9b uses manage-problem's in-skill Step 7 block ("copy, not move") per
|
|
65
|
+
- Auto-transitions inside review — Step 9b uses manage-problem's in-skill Step 7 block ("copy, not move") per the "Rename `wr-problem` Plugin to `wr-itil`" architecture rule amended.
|
|
66
66
|
- Release draining — `push:watch` / `release:watch` are owned by the caller (`/wr-itil:work-problems` orchestrator Step 6.5, or `/wr-itil:manage-problem` Step 12).
|
|
67
67
|
|
|
68
68
|
## Steps
|
|
@@ -79,13 +79,13 @@ If parsing fails at this stage, NO git operations have run. The user can re-invo
|
|
|
79
79
|
|
|
80
80
|
### 2. Per-pair execution loop (inline copy of the singular's per-ticket mechanic)
|
|
81
81
|
|
|
82
|
-
> **Copy, not move (per
|
|
82
|
+
> **Copy, not move (per the "Rename `wr-problem` Plugin to `wr-itil`" architecture rule amended Split-skill execution ownership).** The body below is a scoped inline copy of `/wr-itil:transition-problem` Steps 2–6 (discovery, validation, pre-flight, the "Problem 063: manage-problem does not trigger /wr-itil:report-upstream when root cause is external" problem detection, rename + Edit + re-stage). The per-pair commit step (singular Step 8) is INTENTIONALLY OMITTED — batch semantics replace it with the single commit in Step 4 below.
|
|
83
83
|
>
|
|
84
84
|
> Drift between the singular and this inline copy is detected by the contract-assertion bats (`packages/itil/skills/transition-problems/test/transition-problems-contract.bats`) which asserts shared substring presence (e.g. the `git add docs/problems/` re-stage phrase) in BOTH files. If you edit one, edit the other.
|
|
85
85
|
|
|
86
86
|
For each pair `(NNN, status)` in argument order:
|
|
87
87
|
|
|
88
|
-
**2a. Discover the ticket file.** Dual-tolerant lookup spans flat layout AND per-state subdir layout per
|
|
88
|
+
**2a. Discover the ticket file.** Dual-tolerant lookup spans flat layout AND per-state subdir layout per the ": docs/problems/ flat layout migration — per-state subdirs + adopter auto-migration" release design migration window:
|
|
89
89
|
|
|
90
90
|
```bash
|
|
91
91
|
ls docs/problems/<NNN>-*.md docs/problems/*/<NNN>-*.md 2>/dev/null
|
|
@@ -104,13 +104,13 @@ If no file is found OR multiple files are found (suffix-exclusive lifecycle viol
|
|
|
104
104
|
|
|
105
105
|
**2c. Run pre-flight checks** for the destination (same gating as the singular):
|
|
106
106
|
|
|
107
|
-
- 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 (
|
|
107
|
+
- 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).
|
|
108
108
|
- Known Error → Verification Pending (`verifying`): fix implemented; release marker available (version, commit SHA, or date) for the `## Fix Released` section.
|
|
109
109
|
- Verification Pending → Closed (`close`): user has explicitly confirmed the fix works in production. AFK callers (work-problems orchestrator) MUST supply the close pair via prior user authorisation (e.g. an `AskUserQuestion`-batched closure prompt at the orchestrator layer); this skill never auto-closes on inference.
|
|
110
110
|
|
|
111
111
|
If any pre-flight fails, record the pair as `pre-flight-failed` with the failed-check list and continue to the next pair.
|
|
112
112
|
|
|
113
|
-
**2d.
|
|
113
|
+
**2d. 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 — fires per pair).
|
|
114
114
|
|
|
115
115
|
Strict tokens (within Root Cause Analysis): `upstream`, `third-party`, `external`, `vendor`; or scoped npm package pattern `@[\w-]+/[\w-]+`.
|
|
116
116
|
|
|
@@ -120,18 +120,18 @@ if grep -iE '\b(upstream|third-party|external|vendor)\b|@[[:alnum:]_-]+/[[:alnum
|
|
|
120
120
|
fi
|
|
121
121
|
```
|
|
122
122
|
|
|
123
|
-
**Already-noted check** — before firing, grep for `- **Upstream report pending** --` (canonical ASCII per
|
|
123
|
+
**Already-noted check** — before firing, grep for `- **Upstream report pending** --` (canonical ASCII per the "work-problems SKILL.md AFK-fallback marker wording uses em-dash, forces consumer-side whitespace surgery" problem) or the legacy em-dash variant `- **Upstream report pending** —` (the grep MUST match BOTH variants for backward compatibility) or `- **Reported Upstream:**` or a `## Reported Upstream` section. If present, skip the prompt for this pair.
|
|
124
124
|
|
|
125
|
-
**Branch on interactivity (per
|
|
125
|
+
**Branch on interactivity (per the "Structured User Interaction for Governance-Skill Decisions" architecture rule Rule 1 / Rule 6):**
|
|
126
126
|
|
|
127
127
|
- **Interactive** (`AskUserQuestion` available): use the same three-option prompt the singular's Step 5 documents (invoke /wr-itil:report-upstream / defer-and-note / not-actually-upstream).
|
|
128
|
-
- **AFK / non-interactive** (orchestrator markers — "AFK", "work-problems", "batch-work", "ALL_DONE" — present in the invoking context): default to defer-and-note. Append `- **Upstream report pending** -- external dependency identified; invoke /wr-itil:report-upstream when ready` (canonical ASCII per
|
|
128
|
+
- **AFK / non-interactive** (orchestrator markers — "AFK", "work-problems", "batch-work", "ALL_DONE" — present in the invoking context): default to defer-and-note. Append `- **Upstream report pending** -- external dependency identified; invoke /wr-itil:report-upstream when ready` (canonical ASCII per the "work-problems SKILL.md AFK-fallback marker wording uses em-dash, forces consumer-side whitespace surgery" problem) to the ticket's `## Related` section. Do NOT auto-invoke `/wr-itil:report-upstream` (its Step 6 security branch is interactive — per the "Cross-project problem-reporting contract — `report-upstream` skill in `@windyroad/itil`" architecture rule).
|
|
129
129
|
|
|
130
130
|
The detection is per-pair; each Open → Known Error pair runs its own check independently.
|
|
131
131
|
|
|
132
|
-
**2e. Rename, edit, re-stage** (
|
|
132
|
+
**2e. Rename, edit, re-stage** (the "Problem 057: `git mv` + Edit + `git add` staging-ordering trap drops content edits from the commit" problem staging-trap rule applied per pair).
|
|
133
133
|
|
|
134
|
-
> **Staging trap (
|
|
134
|
+
> **Staging trap (the "Problem 057: `git mv` + Edit + `git add` staging-ordering trap drops content edits from the commit" problem).** `git mv` stages only the rename. After the `Edit` tool modifies the renamed file, you MUST explicitly `git add` it before continuing — without the explicit re-stage, the content edit leaks into the next commit. The plural inherits this rule per pair; the per-pair re-stage is non-negotiable.
|
|
135
135
|
|
|
136
136
|
```bash
|
|
137
137
|
# Open → Known Error
|
|
@@ -141,7 +141,7 @@ git add docs/problems/known-error/<NNN>-<title>.md
|
|
|
141
141
|
```
|
|
142
142
|
|
|
143
143
|
```bash
|
|
144
|
-
# Known Error → Verification Pending (per
|
|
144
|
+
# Known Error → Verification Pending (per the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule)
|
|
145
145
|
git mv docs/problems/known-error/<NNN>-<title>.md docs/problems/verifying/<NNN>-<title>.md
|
|
146
146
|
# Edit Status to "Verification Pending" AND add ## Fix Released section
|
|
147
147
|
# (release marker, one-sentence summary, Awaiting user verification)
|
|
@@ -164,55 +164,55 @@ Record each pair's outcome (succeeded / failed-with-reason) for the summary in S
|
|
|
164
164
|
Per architect-resolved design (2026-04-26): if a pair fails in any of the substeps above (discovery, validation, pre-flight, git-op), it is skipped and recorded as a failed pair. The loop continues with the next pair. There is NO halt, NO rollback of previously-staged surviving pairs.
|
|
165
165
|
|
|
166
166
|
Rationale grounded in existing decisions:
|
|
167
|
-
-
|
|
168
|
-
-
|
|
167
|
+
- the "Governance Skills Commit Their Own Completed Work" architecture rule's "complete unit of work" boundary is the BATCH at this grain — a partial batch (succeeded subset) is a legitimate unit. Halting and discarding succeeded pairs (option a) loses validated work the user already authorised.
|
|
168
|
+
- the "Structured User Interaction for Governance-Skill Decisions" architecture rule Rule 6 forbids non-interactive destructive operations; rolling back staged renames (option c) requires `git reset` which is exactly the destructive class Rule 6 names.
|
|
169
169
|
- Mirrors the `/wr-itil:work-problems` Step 4 classifier precedent (skip-and-surface; commit succeeded work; failed pairs surfaced in summary).
|
|
170
170
|
|
|
171
171
|
**Zero-success path.** If ALL pairs failed (no pair survived to the staging step), DO NOT commit. Skip Steps 4 and 5's commit branches; emit a failure summary listing each failed pair's reason and stop without touching git.
|
|
172
172
|
|
|
173
|
-
### 4. Refresh README + commit ONCE (single commit at batch grain per
|
|
173
|
+
### 4. Refresh README + commit ONCE (single commit at batch grain per the "Governance Skills Commit Their Own Completed Work" architecture rule)
|
|
174
174
|
|
|
175
175
|
After the per-pair loop finishes, IF AT LEAST ONE PAIR SUCCEEDED:
|
|
176
176
|
|
|
177
|
-
**4a. Refresh `docs/problems/README.md` ONCE (
|
|
177
|
+
**4a. Refresh `docs/problems/README.md` ONCE (the "Problem 062: `manage-problem` does not refresh `docs/problems/README.md` on single-ticket transitions; fast-path cache goes stale silently" problem at batch grain).**
|
|
178
178
|
|
|
179
|
-
Per
|
|
179
|
+
Per the "Problem 062: `manage-problem` does not refresh `docs/problems/README.md` on single-ticket transitions; fast-path cache goes stale silently" problem, every Step 7 status transition refreshes README.md. At the batch grain, the refresh runs ONCE — a single render reflecting ALL surviving renames + Status updates. Not N refreshes (that would force the README to thrash N times mid-batch and amplify diff noise).
|
|
180
180
|
|
|
181
|
-
The refresh follows the same render rules as `/wr-itil:review-problems` Step 9e (glob `docs/problems/*.open.md` / `*.known-error.md` / `*.verifying.md` / `*.parked.md`; rank open + known-error by WSJF; Verification Queue sorted by `Released date ASC` with same-day tiebreak by ID ASC per
|
|
181
|
+
The refresh follows the same render rules as `/wr-itil:review-problems` Step 9e (glob `docs/problems/*.open.md` / `*.known-error.md` / `*.verifying.md` / `*.parked.md`; rank open + known-error by WSJF; Verification Queue sorted by `Released date ASC` with same-day tiebreak by ID ASC per the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule + the "Problem 048: manage-problem does not surface Fix Released problems as verification candidates when the fix path has been exercised" problem; Parked section). It does NOT re-rank — existing WSJF values on ticket files are trusted; the refresh is a render, not a re-rank. <!-- VQ-SORT-DIRECTION: oldest-first per the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule --> Drift on the VQ sort direction re-opens the "docs/problems/README.md Verification Queue rendered newest-first contradicts section header "Ranked by release age, oldest first"" problem.
|
|
182
182
|
|
|
183
|
-
**Likely-verified cell shape (
|
|
183
|
+
**Likely-verified cell shape (the "VQ `Likely verified?` column uses age-based heuristic (≥14 days = yes) instead of session-observed evidence — sibling proxy-for-evidence anti-pattern to" problem)**: the `Likely verified?` column carries an **evidence-first** cell — `yes — observed: <evidence>` / `no — not observed` / `no — observed regression`. At batch grain the refresh writes the per-pair cell from the per-pair transition context: a `verifying` destination defaults to `no — not observed` (the batch just released the fix; evidence accrues subsequently); a `close` destination assumes session-observed evidence was the trigger for the batch close (the upstream caller — `run-retro` Step 4a, `review-problems` Step 9d — already verified the evidence) and the row exits the queue (not re-rendered as VQ). <!-- LIKELY-VERIFIED-CELL-SHAPE: evidence-based per the "VQ `Likely verified?` column uses age-based heuristic (≥14 days = yes) instead of session-observed evidence — sibling proxy-for-evidence anti-pattern to" problem --> Drift on the cell shape re-opens the "VQ `Likely verified?` column uses age-based heuristic (≥14 days = yes) instead of session-observed evidence — sibling proxy-for-evidence anti-pattern to" problem.
|
|
184
184
|
|
|
185
185
|
```bash
|
|
186
186
|
git add docs/problems/README.md
|
|
187
187
|
```
|
|
188
188
|
|
|
189
|
-
Update the "Last reviewed" line per the **inline
|
|
189
|
+
Update the "Last reviewed" line per the **inline the "`docs/problems/README.md` line 3 narrative-blob accumulator bloat — sibling to (briefing tier 3) on a different surface" problem rotation mechanism** below. The mechanism is inlined here at the execution site (not deferred via cross-document reference to `manage-problem` SKILL.md Step 5) so a single-pass agent reading this Step 4a does not silently skip the archive step. **Skipping the BEFORE-rewrite archive step destroys the displaced fragment and re-opens the "transition-problem SKILL Step 7 Last-reviewed rotation silently skipped across iters" problem** (iter-7 + iter-8 of 2026-05-30's AFK work-problems session silently skipped the rotation in 2 of 9 transition-bearing iters under exactly that failure mode). At batch grain the rotation fires ONCE for the entire batch (not per-pair) but the per-pair semantics are otherwise identical to the singular's Step 7. The mechanism MUST execute IN ORDER:
|
|
190
190
|
|
|
191
191
|
1. **Read** line 3 of `docs/problems/README.md`: `awk 'NR==3' docs/problems/README.md` (`head -3 | tail -1` or `sed -n '3p'` are acceptable equivalents).
|
|
192
192
|
2. **Append-if-non-empty (BEFORE step 3, not after)** — if line 3 is non-empty AND not a same-session same-verb near-duplicate of the new batch fragment, append the existing line 3 verbatim to `docs/problems/README-history.md` under a `## YYYY-MM-DD` heading (creating the heading on first append for that date; subsequent same-day appends nest under the existing heading). Run this BEFORE the Edit-tool rewrite in step 3 — Edit's replace pattern destroys the displaced content otherwise.
|
|
193
|
-
3. **Rewrite** line 3 of `docs/problems/README.md` with the new batch fragment of form `> Last reviewed: YYYY-MM-DD **batch transition** — P<NNN> <status>, P<NNN> <status>, …` (e.g. `> Last reviewed: 2026-06-01 **batch transition** —
|
|
194
|
-
4. **Stage both** — `git add docs/problems/README.md docs/problems/README-history.md` so the same single batch commit per
|
|
193
|
+
3. **Rewrite** line 3 of `docs/problems/README.md` with the new batch fragment of form `> Last reviewed: YYYY-MM-DD **batch transition** — P<NNN> <status>, P<NNN> <status>, …` (e.g. `> Last reviewed: 2026-06-01 **batch transition** — the "Problem 063: manage-problem does not trigger /wr-itil:report-upstream when root cause is external" problem close, the "Problem 067: /wr-itil:report-upstream classifier is not problem-first — picks bug / feature / question and emits a bug-shaped default" problem close, the "Problem 092: `/install-updates` Step 4 `<plugin-short-name>` placeholder is ambiguous about the `wr-` prefix" problem close, the "Problem 094: `/wr-itil:manage-problem` does not refresh `docs/problems/README.md` on ticket creation" problem close`). Soft cap ≤ 1024 bytes per fragment — if the cohort would exceed it, abbreviate to ID + verb only and let the per-ticket bodies carry the rationale; hard ceiling 5120 bytes per the "Session-start briefing surface — SessionStart hook over tiered directory + indexed README" architecture rule Tier 3 envelope.
|
|
194
|
+
4. **Stage both** — `git add docs/problems/README.md docs/problems/README-history.md` so the same single batch commit per the "Governance Skills Commit Their Own Completed Work" architecture rule captures both files.
|
|
195
195
|
|
|
196
|
-
Canonical rationale anchor: `manage-problem` SKILL.md Step 5 § Last-reviewed line discipline (
|
|
196
|
+
Canonical rationale anchor: `manage-problem` SKILL.md Step 5 § Last-reviewed line discipline (the "`docs/problems/README.md` line 3 narrative-blob accumulator bloat — sibling to (briefing tier 3) on a different surface" problem). The cross-reference is preserved for the "why"; the "what" is inlined above for execution-time legibility per the "transition-problem SKILL Step 7 Last-reviewed rotation silently skipped across iters" problem.
|
|
197
197
|
|
|
198
|
-
**4b. Commit gate (per
|
|
198
|
+
**4b. Commit gate (per the "Governance Skills Commit Their Own Completed Work" architecture rule).**
|
|
199
199
|
|
|
200
200
|
Satisfy via one of two paths (either produces a bypass marker):
|
|
201
201
|
|
|
202
202
|
- **Primary**: delegate to subagent type `wr-risk-scorer:pipeline` via the Agent tool.
|
|
203
|
-
- **Fallback** (per
|
|
203
|
+
- **Fallback** (per the "On-Demand Assessment Skills for Governance Plugins" architecture rule / the "Problem 035: manage-problem commit gate has no fallback when subagent delegation is unavailable" problem): if `wr-risk-scorer:pipeline` is unavailable in the current tool set, invoke `/wr-risk-scorer:assess-release` via the Skill tool — `PostToolUse:Agent` writes the equivalent bypass marker. Do NOT silently skip the gate.
|
|
204
204
|
|
|
205
205
|
**4c. Commit ONCE.**
|
|
206
206
|
|
|
207
207
|
ONE commit covers: every surviving renamed ticket file + every Status edit + every `## Fix Released` section + the refreshed `docs/problems/README.md`. NO per-pair commits.
|
|
208
208
|
|
|
209
|
-
**Commit message conventions** (batch variants extending
|
|
209
|
+
**Commit message conventions** (batch variants extending the "Governance Skills Commit Their Own Completed Work" architecture rule's table):
|
|
210
210
|
|
|
211
|
-
- Homogeneous-destination batch: `docs(problems): batch transition — close
|
|
212
|
-
- Mixed-destination batch: `docs(problems): batch transition —
|
|
213
|
-
- If the batch destination is `verifying` and rides with a fix commit, the commit-message scope follows the singular's pattern: `fix(<scope>): <description> (closes
|
|
211
|
+
- Homogeneous-destination batch: `docs(problems): batch transition — close the "Problem 063: manage-problem does not trigger /wr-itil:report-upstream when root cause is external" problem, the "Problem 067: /wr-itil:report-upstream classifier is not problem-first — picks bug / feature / question and emits a bug-shaped default" problem, the "Problem 092: `/install-updates` Step 4 `<plugin-short-name>` placeholder is ambiguous about the `wr-` prefix" problem, the "Problem 094: `/wr-itil:manage-problem` does not refresh `docs/problems/README.md` on ticket creation" problem (4 tickets)`
|
|
212
|
+
- Mixed-destination batch: `docs(problems): batch transition — the "Problem 063: manage-problem does not trigger /wr-itil:report-upstream when root cause is external" problem close, the "Problem 070: /wr-itil:report-upstream does not check for existing upstream issues before filing" problem known-error, the "Problem 094: `/wr-itil:manage-problem` does not refresh `docs/problems/README.md` on ticket creation" problem verifying (3 tickets)`
|
|
213
|
+
- If the batch destination is `verifying` and rides with a fix commit, the commit-message scope follows the singular's pattern: `fix(<scope>): <description> (closes the "Problem 063: manage-problem does not trigger /wr-itil:report-upstream when root cause is external" problem, the "Problem 067: /wr-itil:report-upstream classifier is not problem-first — picks bug / feature / question and emits a bug-shaped default" problem)` — but the batch surface is unusual in the riding-with-fix shape; the canonical caller is verification-close housekeeping, not fix-release.
|
|
214
214
|
|
|
215
|
-
If commit risk is above appetite: auto-apply scorer remediations per **
|
|
215
|
+
If commit risk is above appetite: auto-apply scorer remediations per **the "Auto-apply scorer remediations to reach within appetite — open action-class vocabulary" architecture rule Rule 1** until within appetite, OR halt per the "Auto-apply scorer remediations to reach within appetite — open action-class vocabulary" architecture rule Rule 5. **MUST NOT commit above appetite; MUST NOT call `AskUserQuestion` to ask whether to commit anyway** (the "Skills, agents, and hooks override RISK-POLICY appetite instead of applying it" problem/the ": Apply RISK-POLICY appetite faithfully across all surfaces" release design — framework-mediated, not a one-time-override). If `AskUserQuestion` is unavailable (AFK), the "Structured User Interaction for Governance-Skill Decisions" architecture rule Rule 6 fail-safe applies — skip the commit and report the uncommitted state — apply the same rule the singular does at the same gate.
|
|
216
216
|
|
|
217
217
|
### 5. Report the outcome
|
|
218
218
|
|
|
@@ -224,15 +224,15 @@ Emit a structured summary:
|
|
|
224
224
|
### Succeeded ({N})
|
|
225
225
|
| Ticket | Previous status | New status | New filename |
|
|
226
226
|
|--------|-----------------|------------|--------------|
|
|
227
|
-
|
|
|
228
|
-
|
|
|
227
|
+
| the "Problem 063: manage-problem does not trigger /wr-itil:report-upstream when root cause is external" problem | Verification Pending | Closed | docs/problems/063-...closed.md |
|
|
228
|
+
| the "Problem 067: /wr-itil:report-upstream classifier is not problem-first — picks bug / feature / question and emits a bug-shaped default" problem | Verification Pending | Closed | docs/problems/067-...closed.md |
|
|
229
229
|
| ...
|
|
230
230
|
|
|
231
231
|
### Failed ({M})
|
|
232
232
|
| Ticket | Destination | Reason |
|
|
233
233
|
|--------|-------------|--------|
|
|
234
|
-
|
|
|
235
|
-
|
|
|
234
|
+
| the "Problem 099: `docs/BRIEFING.md` grows unbounded via run-retro appends — violates progressive disclosure" problem | known-error | discovery-failed: no ticket found |
|
|
235
|
+
| the "`wr-retrospective` has no context-usage analysis — opaque where session tokens are consumed; no guidance on what to trim" problem | verifying | invalid-transition: ticket is .open.md (must go to known-error first) |
|
|
236
236
|
| ...
|
|
237
237
|
|
|
238
238
|
Commit: {sha} ({N tickets committed in one batch})
|
|
@@ -246,14 +246,14 @@ Release draining is owned by the caller (orchestrator Step 6.5 / manage-problem
|
|
|
246
246
|
|
|
247
247
|
`transition-problems` (plural) owns:
|
|
248
248
|
- Pair-list parse + per-pair argument validation.
|
|
249
|
-
- Per-pair execution (inline copy of singular Steps 2–6) — discovery, transition-path validation, pre-flight,
|
|
249
|
+
- Per-pair execution (inline copy of singular Steps 2–6) — discovery, transition-path validation, pre-flight, the "Problem 063: manage-problem does not trigger /wr-itil:report-upstream when root cause is external" problem detection, rename + Edit + the "Problem 057: `git mv` + Edit + `git add` staging-ordering trap drops content edits from the commit" problem re-stage.
|
|
250
250
|
- Per-pair partial-failure tracking (skip-and-surface).
|
|
251
|
-
- ONE README.md refresh at the end (
|
|
252
|
-
- ONE
|
|
251
|
+
- ONE README.md refresh at the end (the "Problem 062: `manage-problem` does not refresh `docs/problems/README.md` on single-ticket transitions; fast-path cache goes stale silently" problem at batch grain).
|
|
252
|
+
- ONE the "Governance Skills Commit Their Own Completed Work" architecture rule commit at the end through the risk-scorer commit gate.
|
|
253
253
|
- Structured per-pair outcome summary.
|
|
254
254
|
|
|
255
255
|
`transition-problems` does NOT:
|
|
256
|
-
- Re-invoke `/wr-itil:transition-problem` per pair via the Skill tool — that would re-introduce the N×SKILL.md-reload cost
|
|
256
|
+
- Re-invoke `/wr-itil:transition-problem` per pair via the Skill tool — that would re-introduce the N×SKILL.md-reload cost the "No batch-transition surface for multiple problem tickets in a single run-retro / review cycle" problem targets. Inline copy per the "Rename `wr-problem` Plugin to `wr-itil`" architecture rule amended "copy, not move".
|
|
257
257
|
- Run per-pair commits — only the single batch commit at the end is permitted. The singular's per-invocation commit grain is deliberately re-aggregated at this skill's batch grain.
|
|
258
258
|
- Re-rank the backlog (use `/wr-itil:review-problems`).
|
|
259
259
|
- Create tickets or run the bare-`<NNN>` update flow (use `/wr-itil:manage-problem`).
|
|
@@ -262,7 +262,7 @@ Release draining is owned by the caller (orchestrator Step 6.5 / manage-problem
|
|
|
262
262
|
|
|
263
263
|
## Drift management (singular ↔ plural inline copy)
|
|
264
264
|
|
|
265
|
-
Per
|
|
265
|
+
Per the "Rename `wr-problem` Plugin to `wr-itil`" architecture rule amended "Split-skill execution ownership", three call sites now share the per-ticket transition mechanic via "copy, not move":
|
|
266
266
|
|
|
267
267
|
1. `/wr-itil:transition-problem` Steps 2–8 (singular, user-initiated single).
|
|
268
268
|
2. `/wr-itil:transition-problems` Step 2 (this skill, user-initiated batch — inline copy of the singular's Steps 2–6, batch-aggregated commit replacing Step 8).
|
|
@@ -270,28 +270,28 @@ Per ADR-010 amended "Split-skill execution ownership", three call sites now shar
|
|
|
270
270
|
|
|
271
271
|
Drift detection lives in the contract-assertion bats. `packages/itil/skills/transition-problems/test/transition-problems-contract.bats` asserts shared substring presence (e.g. the `git add docs/problems/` re-stage phrase) in both this file and the singular SKILL.md so a future edit that drops the re-stage rule from one is immediately visible.
|
|
272
272
|
|
|
273
|
-
When the per-ticket mechanic changes (e.g. a new pre-flight check or
|
|
273
|
+
When the per-ticket mechanic changes (e.g. a new pre-flight check or the "Problem 063: manage-problem does not trigger /wr-itil:report-upstream when root cause is external" problem token added), update ALL THREE copies in lockstep — the contract bats will fail otherwise, surfacing the drift.
|
|
274
274
|
|
|
275
275
|
## Related
|
|
276
276
|
|
|
277
|
-
- **
|
|
278
|
-
- **
|
|
279
|
-
- **
|
|
280
|
-
- **
|
|
281
|
-
- **
|
|
282
|
-
- **
|
|
283
|
-
- **
|
|
284
|
-
- **
|
|
285
|
-
- **
|
|
286
|
-
- **
|
|
287
|
-
- **
|
|
288
|
-
- **
|
|
289
|
-
- **
|
|
290
|
-
- **
|
|
291
|
-
- **
|
|
292
|
-
- **
|
|
277
|
+
- **the "No batch-transition surface for multiple problem tickets in a single run-retro / review cycle" problem** (`docs/problems/117-no-batch-transition-for-multiple-problem-tickets.open.md`) — originating ticket. Closing 4+ tickets in one run-retro / manage-problem review costs N×SKILL.md reload OR an ownership-boundary violation; this skill closes that gap.
|
|
278
|
+
- **the "Problem 071: Argument-based skill subcommands are not discoverable in Claude Code autocomplete" problem** (`docs/problems/071-argument-based-skill-subcommands-are-not-discoverable.open.md`) — singular/plural split precedent; established `work-problem`/`work-problems` and `list-problems`/`review-problems` siblings.
|
|
279
|
+
- **the "Problem 093: `/wr-itil:transition-problem` ↔ `/wr-itil:manage-problem` circular delegation for `<NNN> <status>` args" problem** (`docs/problems/093-transition-problem-and-manage-problem-circular-delegation-for-nnn-status-args.*.md`) — the circular-delegation ticket whose resolution gave the singular `transition-problem` ownership of the per-ticket mechanic. This skill extends that ownership to the batch grain.
|
|
280
|
+
- **the "Problem 097: SKILL.md files mix runtime-necessary steps with maintainer-facing rationale, bloating every skill invocation" problem** (`docs/problems/097-skill-md-runtime-size.open.md`) — the SKILL.md-runtime-size pressure cluster. the "No batch-transition surface for multiple problem tickets in a single run-retro / review cycle" problem is a concrete cost case of the "Problem 097: SKILL.md files mix runtime-necessary steps with maintainer-facing rationale, bloating every skill invocation" problem's broader concern; this plural skill addresses the cost case directly.
|
|
281
|
+
- **the "Rename `wr-problem` Plugin to `wr-itil`" architecture rule amended** (`docs/decisions/010-rename-wr-problem-to-wr-itil.proposed.md` — Skill Granularity + Split-skill execution ownership) — authorises the singular/plural split AND the "copy, not move" inline-copy pattern.
|
|
282
|
+
- **the "Structured User Interaction for Governance-Skill Decisions" architecture rule** — Rule 1 for interactive prompts; Rule 6 for the AFK non-interactive branch (the "Problem 063: manage-problem does not trigger /wr-itil:report-upstream when root cause is external" problem fallback inherited from the singular per pair).
|
|
283
|
+
- **the "Governance Skills Commit Their Own Completed Work" architecture rule** — governance skills commit their own work. Batch grain is one unit of work — ONE commit at the end covering all surviving transitions.
|
|
284
|
+
- **the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule** — `.verifying.md` suffix on release; Verification Pending is a first-class status. Batch verification-close is a common caller (release-aged verifyings drained at the end of a session).
|
|
285
|
+
- **the "Governance skill invocation patterns — foreground + background with deferred-question resumption" architecture rule** — governance skill invocation patterns. `/wr-itil:work-problems` may delegate batch closures here during AFK orchestration; this skill is foreground-synchronous in that delegation.
|
|
286
|
+
- **the "Skill testing strategy — contract-assertion bats companion to" architecture rule** — contract-assertion bats pattern. The contract-bats for this skill ALSO performs cross-file drift detection between this SKILL.md and the singular's SKILL.md (the inline-copy invariant).
|
|
287
|
+
- **the "Problem 057: `git mv` + Edit + `git add` staging-ordering trap drops content edits from the commit" problem** — `git mv` + Edit staging trap; the per-pair re-stage rule applied N times in this skill's loop.
|
|
288
|
+
- **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 on every transition. At batch grain, the refresh fires ONCE at the end (single render covers all surviving renames).
|
|
289
|
+
- **the "Problem 063: manage-problem does not trigger /wr-itil:report-upstream when root cause is external" problem** — external-root-cause detection at Open → Known Error. Fires per pair; AFK fallback inherited from the singular (append the stable Upstream report pending marker).
|
|
290
|
+
- **the ": Enforce Governance Without Slowing Down" user outcome** (`docs/jtbd/developer/the ": Enforce Governance Without Slowing Down" user outcome-enforce-governance.proposed.md`) — eliminates the N×SKILL.md reload tax + ownership-boundary violation at batch closures; serves the "without slowing down" half of the job.
|
|
291
|
+
- **the ": Progress the Backlog While I'm Away" user outcome** (`docs/jtbd/developer/the ": Progress the Backlog While I'm Away" user outcome-work-backlog-afk.proposed.md`) — work-problems orchestrator may delegate release-batched closures through this surface during extended AFK runs.
|
|
292
|
+
- **the "Extend the Suite with New Plugins" user outcome** (`docs/jtbd/plugin-developer/the "Extend the Suite with New Plugins" user outcome-extend-suite.proposed.md`) — singular/plural split is the established pattern; plugin-developers reading this should immediately recognise the shape.
|
|
293
293
|
- `packages/itil/skills/transition-problem/SKILL.md` — singular sibling. Source-of-truth for the per-ticket mechanic this skill carries an inline copy of. When the mechanic changes, update both files in lockstep.
|
|
294
|
-
- `packages/itil/skills/manage-problem/SKILL.md` — third call site of the per-ticket mechanic (in-skill Step 7 block). Per
|
|
294
|
+
- `packages/itil/skills/manage-problem/SKILL.md` — third call site of the per-ticket mechanic (in-skill Step 7 block). Per the "Rename `wr-problem` Plugin to `wr-itil`" architecture rule amended "copy, not move", three inline copies coexist.
|
|
295
295
|
- `packages/itil/skills/review-problems/SKILL.md` — sibling refresh skill; same README render contract this skill uses for the Step 4a refresh.
|
|
296
296
|
- `packages/itil/skills/work-problem/SKILL.md` and `packages/itil/skills/work-problems/SKILL.md` — singular/plural pair this skill mirrors.
|
|
297
297
|
- `packages/retrospective/skills/run-retro/SKILL.md` — Step 4a verification-close housekeeping is the canonical caller of this batch surface.
|