@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.
Files changed (266) hide show
  1. package/.agents/plugins/marketplace.json +12 -0
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +42 -0
  4. package/README.md +34 -25
  5. package/agents/hang-off-check.md +34 -34
  6. package/bin/install.mjs +71 -5
  7. package/bin/wr-itil-catchup-scan +4 -4
  8. package/bin/wr-itil-check-deferred-placeholder-staleness +4 -4
  9. package/bin/wr-itil-check-fail-soft-skip-discipline +4 -4
  10. package/bin/wr-itil-check-fix-rfc-trace +4 -4
  11. package/bin/wr-itil-check-locale-discipline +4 -4
  12. package/bin/wr-itil-check-outbound-responses-staleness +4 -4
  13. package/bin/wr-itil-check-problems-readme-budget +4 -4
  14. package/bin/wr-itil-check-rfc-has-stories +4 -4
  15. package/bin/wr-itil-check-rfc-stories-ratified +4 -4
  16. package/bin/wr-itil-check-ticket-jtbd-ratification +4 -4
  17. package/bin/wr-itil-check-upstream-cache-staleness +4 -4
  18. package/bin/wr-itil-check-upstream-responses +4 -4
  19. package/bin/wr-itil-classify-readme-drift +4 -4
  20. package/bin/wr-itil-derive-release-vehicle +4 -4
  21. package/bin/wr-itil-detect-unratified-stories-maps +4 -4
  22. package/bin/wr-itil-effort-tally +4 -4
  23. package/bin/wr-itil-enumerate-postrelease-kv-candidates +4 -4
  24. package/bin/wr-itil-evaluate-relevance +4 -4
  25. package/bin/wr-itil-mark-create-gate +4 -4
  26. package/bin/wr-itil-mark-story-oversight-confirmed +4 -4
  27. package/bin/wr-itil-migrate-problems-layout +4 -4
  28. package/bin/wr-itil-migrate-story-status-mirror +4 -4
  29. package/bin/wr-itil-next-rfc-id +4 -4
  30. package/bin/wr-itil-plugin-exercise-index +4 -4
  31. package/bin/wr-itil-plugin-maturity-populate +4 -4
  32. package/bin/wr-itil-plugin-maturity-render +4 -4
  33. package/bin/wr-itil-plugin-validate-ci-gate +4 -4
  34. package/bin/wr-itil-reconcile-readme +4 -4
  35. package/bin/wr-itil-reconcile-rfcs +4 -4
  36. package/bin/wr-itil-reconcile-stories +4 -4
  37. package/bin/wr-itil-reconcile-story-maps +4 -4
  38. package/bin/wr-itil-render-story-map +4 -4
  39. package/bin/wr-itil-resolve-governance-plugin-dirs +4 -4
  40. package/bin/wr-itil-skill-invocations +4 -4
  41. package/bin/wr-itil-story-map-edit +4 -4
  42. package/bin/wr-itil-story-map-query +4 -4
  43. package/bin/wr-itil-update-jtbd-references-section +4 -4
  44. package/bin/wr-itil-update-problem-references-section +4 -4
  45. package/bin/wr-itil-update-problem-rfcs-section +4 -4
  46. package/bin/wr-itil-update-rfc-commits-section +4 -4
  47. package/bin/wr-itil-update-rfc-references-section +4 -4
  48. package/bin/wr-itil-verify-iter-summary +4 -4
  49. package/hooks/itil-assistant-output-gate.sh +3 -3
  50. package/hooks/itil-assistant-output-review.sh +5 -5
  51. package/hooks/itil-bash-polling-antipattern-detect.sh +11 -11
  52. package/hooks/itil-changeset-discipline.sh +24 -24
  53. package/hooks/itil-claude-space-protection.sh +21 -14
  54. package/hooks/itil-codex-dispatch.sh +164 -0
  55. package/hooks/itil-commit-trailer-transition-advisory.sh +11 -11
  56. package/hooks/itil-correction-detect.sh +8 -8
  57. package/hooks/itil-deferral-cadence-gate.sh +23 -23
  58. package/hooks/itil-fictional-defer-detect.sh +16 -16
  59. package/hooks/itil-fix-title-lifecycle-advisory.sh +11 -11
  60. package/hooks/itil-mid-loop-ask-detect.sh +14 -14
  61. package/hooks/itil-no-implement-draft-gate.sh +18 -18
  62. package/hooks/itil-pending-questions-surface.sh +11 -11
  63. package/hooks/itil-readme-refresh-discipline.sh +27 -27
  64. package/hooks/itil-rfc-oversight-nudge.sh +7 -7
  65. package/hooks/itil-rfc-trailer-advisory.sh +28 -28
  66. package/hooks/itil-runtime-sid-marker.sh +11 -11
  67. package/hooks/itil-story-mirror-migration-nudge.sh +7 -7
  68. package/hooks/lib/block-list.sh +17 -17
  69. package/hooks/lib/changeset-detect.sh +27 -27
  70. package/hooks/lib/claude-space-gate.sh +23 -15
  71. package/hooks/lib/command-detect.sh +12 -12
  72. package/hooks/lib/create-gate.sh +9 -39
  73. package/hooks/lib/detectors.sh +12 -12
  74. package/hooks/lib/readme-refresh-detect.sh +51 -51
  75. package/hooks/lib/runtime-sid.sh +12 -12
  76. package/hooks/lib/session-id.sh +28 -28
  77. package/hooks/lib/session-marker.sh +1 -1
  78. package/hooks/lib/staging-detect.sh +13 -13
  79. package/hooks/manage-problem-enforce-create.sh +16 -27
  80. package/hooks/p057-staging-trap-detect.sh +18 -18
  81. package/hooks/pre-publish-intake-gate.sh +5 -5
  82. package/hooks/staleness-check.sh +6 -6
  83. package/hooks-codex/hooks.json +57 -0
  84. package/lib/check-deferred-placeholder-staleness.sh +10 -10
  85. package/lib/check-outbound-responses-staleness.sh +2 -2
  86. package/lib/check-upstream-cache-staleness.sh +2 -2
  87. package/lib/derive-first-dispatch.sh +19 -19
  88. package/lib/enumerate-postrelease-kv-candidates.sh +18 -18
  89. package/lib/migrate-problems-layout.sh +12 -12
  90. package/lib/story-oversight.sh +27 -27
  91. package/package.json +16 -3
  92. package/scripts/catchup-scan.sh +25 -25
  93. package/scripts/check-fail-soft-skip-discipline.sh +10 -10
  94. package/scripts/check-fix-rfc-trace.sh +8 -8
  95. package/scripts/check-locale-discipline.sh +13 -13
  96. package/scripts/check-problems-readme-budget.sh +12 -12
  97. package/scripts/check-rfc-has-stories.sh +7 -7
  98. package/scripts/check-rfc-rejected-alternatives.sh +11 -11
  99. package/scripts/check-rfc-stories-ratified.sh +9 -9
  100. package/scripts/check-ticket-jtbd-ratification.sh +10 -10
  101. package/scripts/check-upstream-responses.sh +22 -22
  102. package/scripts/classify-readme-drift.sh +13 -13
  103. package/scripts/codex-agent.mjs +104 -0
  104. package/scripts/derive-release-vehicle.sh +23 -23
  105. package/scripts/detect-unoversighted-rfcs.sh +3 -3
  106. package/scripts/detect-unratified-stories-maps.sh +5 -5
  107. package/scripts/effort-tally.sh +10 -10
  108. package/scripts/evaluate-relevance.sh +16 -16
  109. package/scripts/mark-create-gate.sh +4 -4
  110. package/scripts/mark-story-oversight-confirmed.sh +14 -14
  111. package/scripts/migrate-story-status-mirror.sh +6 -6
  112. package/scripts/next-rfc-id.sh +5 -5
  113. package/scripts/plugin-exercise-index.sh +26 -26
  114. package/scripts/plugin-maturity-populate.sh +38 -38
  115. package/scripts/plugin-maturity-render.sh +26 -26
  116. package/scripts/plugin-validate-ci-gate.sh +14 -14
  117. package/scripts/reconcile-readme.sh +23 -23
  118. package/scripts/reconcile-rfcs.sh +13 -13
  119. package/scripts/reconcile-stories.sh +12 -12
  120. package/scripts/reconcile-story-maps.sh +6 -6
  121. package/scripts/render-story-map.mjs +24 -24
  122. package/scripts/render-story-map.sh +3 -3
  123. package/scripts/resolve-governance-plugin-dirs.sh +10 -10
  124. package/scripts/run-check-deferred-placeholder-staleness.sh +3 -3
  125. package/scripts/run-check-outbound-responses-staleness.sh +3 -3
  126. package/scripts/run-check-upstream-cache-staleness.sh +3 -3
  127. package/scripts/run-enumerate-postrelease-kv-candidates.sh +3 -3
  128. package/scripts/run-migrate-problems-layout.sh +3 -3
  129. package/scripts/skill-invocations.sh +29 -29
  130. package/scripts/story-map-edit.mjs +6 -6
  131. package/scripts/story-map-edit.sh +3 -3
  132. package/scripts/story-map-query.mjs +8 -8
  133. package/scripts/story-map-query.sh +3 -3
  134. package/scripts/update-jtbd-references-section.sh +8 -8
  135. package/scripts/update-problem-references-section.sh +12 -12
  136. package/scripts/update-problem-rfcs-section.sh +9 -9
  137. package/scripts/update-rfc-commits-section.sh +7 -7
  138. package/scripts/update-rfc-references-section.sh +3 -3
  139. package/scripts/update-story-references-section.sh +5 -5
  140. package/scripts/verify-iter-summary.sh +3 -3
  141. package/skills/capture-problem/REFERENCE.md +33 -33
  142. package/skills/capture-problem/SKILL.md +108 -108
  143. package/skills/capture-problem/agents/openai.yaml +3 -0
  144. package/skills/capture-rfc/SKILL.md +21 -323
  145. package/skills/capture-rfc/agents/openai.yaml +3 -0
  146. package/skills/capture-story/SKILL.md +65 -65
  147. package/skills/capture-story/agents/openai.yaml +3 -0
  148. package/skills/capture-story-map/SKILL.md +31 -31
  149. package/skills/capture-story-map/agents/openai.yaml +3 -0
  150. package/skills/check-upstream-responses/SKILL.md +38 -38
  151. package/skills/check-upstream-responses/agents/openai.yaml +3 -0
  152. package/skills/close-incident/SKILL.md +25 -25
  153. package/skills/close-incident/agents/openai.yaml +3 -0
  154. package/skills/link-incident/SKILL.md +22 -22
  155. package/skills/link-incident/agents/openai.yaml +3 -0
  156. package/skills/list-incidents/SKILL.md +9 -9
  157. package/skills/list-incidents/agents/openai.yaml +3 -0
  158. package/skills/list-problems/SKILL.md +17 -17
  159. package/skills/list-problems/agents/openai.yaml +3 -0
  160. package/skills/list-stories/SKILL.md +23 -23
  161. package/skills/list-stories/agents/openai.yaml +3 -0
  162. package/skills/list-story-maps/SKILL.md +9 -9
  163. package/skills/list-story-maps/agents/openai.yaml +3 -0
  164. package/skills/manage-incident/SKILL.md +59 -59
  165. package/skills/manage-incident/agents/openai.yaml +3 -0
  166. package/skills/manage-problem/SKILL.md +222 -222
  167. package/skills/manage-problem/agents/openai.yaml +3 -0
  168. package/skills/manage-rfc/SKILL.md +62 -62
  169. package/skills/manage-rfc/agents/openai.yaml +3 -0
  170. package/skills/manage-story/SKILL.md +49 -49
  171. package/skills/manage-story/agents/openai.yaml +3 -0
  172. package/skills/manage-story-map/SKILL.md +30 -30
  173. package/skills/manage-story-map/agents/openai.yaml +3 -0
  174. package/skills/mitigate-incident/SKILL.md +40 -40
  175. package/skills/mitigate-incident/agents/openai.yaml +3 -0
  176. package/skills/reconcile-readme/SKILL.md +28 -28
  177. package/skills/reconcile-readme/agents/openai.yaml +3 -0
  178. package/skills/reconcile-stories/SKILL.md +17 -17
  179. package/skills/reconcile-stories/agents/openai.yaml +3 -0
  180. package/skills/reconcile-story-maps/SKILL.md +11 -11
  181. package/skills/reconcile-story-maps/agents/openai.yaml +3 -0
  182. package/skills/report-upstream/SKILL.md +73 -73
  183. package/skills/report-upstream/agents/openai.yaml +3 -0
  184. package/skills/restore-incident/SKILL.md +28 -28
  185. package/skills/restore-incident/agents/openai.yaml +3 -0
  186. package/skills/review-problems/SKILL.md +129 -129
  187. package/skills/review-problems/agents/openai.yaml +3 -0
  188. package/skills/scaffold-intake/SKILL.md +26 -26
  189. package/skills/scaffold-intake/agents/openai.yaml +3 -0
  190. package/skills/transition-problem/SKILL.md +85 -85
  191. package/skills/transition-problem/agents/openai.yaml +3 -0
  192. package/skills/transition-problems/SKILL.md +69 -69
  193. package/skills/transition-problems/agents/openai.yaml +3 -0
  194. package/skills/update-upstream/SKILL.md +97 -97
  195. package/skills/update-upstream/agents/openai.yaml +3 -0
  196. package/skills/work-problem/SKILL.md +42 -42
  197. package/skills/work-problem/agents/openai.yaml +3 -0
  198. package/skills/work-problems/SKILL.md +327 -327
  199. package/skills/work-problems/agents/openai.yaml +3 -0
  200. package/skills-codex/capture-problem/REFERENCE.md +139 -0
  201. package/skills-codex/capture-problem/SKILL.md +438 -0
  202. package/skills-codex/capture-problem/agents/openai.yaml +3 -0
  203. package/skills-codex/capture-rfc/SKILL.md +45 -0
  204. package/skills-codex/capture-rfc/agents/openai.yaml +3 -0
  205. package/skills-codex/capture-story/SKILL.md +407 -0
  206. package/skills-codex/capture-story/agents/openai.yaml +3 -0
  207. package/skills-codex/capture-story-map/SKILL.md +286 -0
  208. package/skills-codex/capture-story-map/agents/openai.yaml +3 -0
  209. package/skills-codex/check-upstream-responses/SKILL.md +160 -0
  210. package/skills-codex/check-upstream-responses/agents/openai.yaml +3 -0
  211. package/skills-codex/close-incident/SKILL.md +192 -0
  212. package/skills-codex/close-incident/agents/openai.yaml +3 -0
  213. package/skills-codex/link-incident/SKILL.md +173 -0
  214. package/skills-codex/link-incident/agents/openai.yaml +3 -0
  215. package/skills-codex/list-incidents/SKILL.md +92 -0
  216. package/skills-codex/list-incidents/agents/openai.yaml +3 -0
  217. package/skills-codex/list-problems/SKILL.md +126 -0
  218. package/skills-codex/list-problems/agents/openai.yaml +3 -0
  219. package/skills-codex/list-stories/SKILL.md +170 -0
  220. package/skills-codex/list-stories/agents/openai.yaml +3 -0
  221. package/skills-codex/list-story-maps/SKILL.md +104 -0
  222. package/skills-codex/list-story-maps/agents/openai.yaml +3 -0
  223. package/skills-codex/manage-incident/SKILL.md +378 -0
  224. package/skills-codex/manage-incident/agents/openai.yaml +3 -0
  225. package/skills-codex/manage-problem/SKILL.md +1180 -0
  226. package/skills-codex/manage-problem/agents/openai.yaml +3 -0
  227. package/skills-codex/manage-rfc/SKILL.md +314 -0
  228. package/skills-codex/manage-rfc/agents/openai.yaml +3 -0
  229. package/skills-codex/manage-story/SKILL.md +284 -0
  230. package/skills-codex/manage-story/agents/openai.yaml +3 -0
  231. package/skills-codex/manage-story-map/SKILL.md +198 -0
  232. package/skills-codex/manage-story-map/agents/openai.yaml +3 -0
  233. package/skills-codex/mitigate-incident/SKILL.md +239 -0
  234. package/skills-codex/mitigate-incident/agents/openai.yaml +3 -0
  235. package/skills-codex/reconcile-readme/SKILL.md +175 -0
  236. package/skills-codex/reconcile-readme/agents/openai.yaml +3 -0
  237. package/skills-codex/reconcile-stories/SKILL.md +124 -0
  238. package/skills-codex/reconcile-stories/agents/openai.yaml +3 -0
  239. package/skills-codex/reconcile-story-maps/SKILL.md +81 -0
  240. package/skills-codex/reconcile-story-maps/agents/openai.yaml +3 -0
  241. package/skills-codex/report-upstream/SKILL.md +716 -0
  242. package/skills-codex/report-upstream/agents/openai.yaml +3 -0
  243. package/skills-codex/restore-incident/SKILL.md +216 -0
  244. package/skills-codex/restore-incident/agents/openai.yaml +3 -0
  245. package/skills-codex/review-problems/SKILL.md +524 -0
  246. package/skills-codex/review-problems/agents/openai.yaml +3 -0
  247. package/skills-codex/scaffold-intake/SKILL.md +209 -0
  248. package/skills-codex/scaffold-intake/agents/openai.yaml +3 -0
  249. package/skills-codex/scaffold-intake/templates/CONTRIBUTING.md.tmpl +31 -0
  250. package/skills-codex/scaffold-intake/templates/SECURITY.md.tmpl +39 -0
  251. package/skills-codex/scaffold-intake/templates/SUPPORT.md.tmpl +32 -0
  252. package/skills-codex/scaffold-intake/templates/config.yml.tmpl +8 -0
  253. package/skills-codex/scaffold-intake/templates/problem-report.yml.tmpl +114 -0
  254. package/skills-codex/transition-problem/SKILL.md +371 -0
  255. package/skills-codex/transition-problem/agents/openai.yaml +3 -0
  256. package/skills-codex/transition-problems/SKILL.md +310 -0
  257. package/skills-codex/transition-problems/agents/openai.yaml +3 -0
  258. package/skills-codex/update-upstream/SKILL.md +583 -0
  259. package/skills-codex/update-upstream/agents/openai.yaml +3 -0
  260. package/skills-codex/work-problem/SKILL.md +160 -0
  261. package/skills-codex/work-problem/agents/openai.yaml +3 -0
  262. package/skills-codex/work-problems/SKILL.md +58 -0
  263. package/skills-codex/work-problems/agents/openai.yaml +3 -0
  264. package/templates/story-map.css +1 -1
  265. package/bin/wr-itil-mark-rfc-capture-gate +0 -51
  266. package/scripts/mark-rfc-capture-gate.sh +0 -32
@@ -0,0 +1,3 @@
1
+ interface:
2
+ display_name: "WR ITIL: Manage Problem"
3
+ short_description: "Investigate, govern, and transition problem tickets."
@@ -0,0 +1,314 @@
1
+ ---
2
+ name: wr-itil:manage-rfc
3
+ description: Heavyweight RFC intake + lifecycle management following the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule Problem-RFC-Story framework. Creates new RFCs (delegates to /wr-itil:capture-rfc for the lightweight path), updates existing RFCs, transitions through proposed → accepted → in-progress → verifying → closed lifecycle, runs WSJF re-rank reviews, and refreshes docs/rfcs/README.md per the "Problem 062: `manage-problem` does not refresh `docs/problems/README.md` on single-ticket transitions; fast-path cache goes stale silently" problem / the "Problem 094: `/wr-itil:manage-problem` does not refresh `docs/problems/README.md` on ticket creation" problem contract pattern.
4
+ allowed-tools: Read, Write, Edit, Bash, Grep, Glob, Task
5
+ ---
6
+
7
+ <!-- Generated from the runtime-neutral skill source. Do not edit. -->
8
+
9
+ > Codex runtime note: use `request_user_input` only where this contract
10
+ > explicitly requires a human decision. Resolve `<itil-plugin-root>` from
11
+ > this installed `SKILL.md`: it is two directories above the skill
12
+ > directory. Run bundled commands from `<itil-plugin-root>/bin/`; do not
13
+ > search the adopter repository or rely on those commands being on `PATH`.
14
+ > Spawn `wr-itil:hang-off-check` with the native Codex subagent tool, wait
15
+ > for it, and close that same agent.
16
+
17
+
18
+ # Manage RFC Skill
19
+
20
+ Create, update, or transition RFC tickets following the Problem-RFC-Story framework introduced by the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule (accepted 2026-05-05). This skill is the heavyweight counterpart to `/wr-itil:capture-rfc` — it owns the full intake flow, lifecycle transitions, batch review, and README refresh.
21
+
22
+ **Related JTBDs**: the ": Decompose a Fix Into Coordinated Changes" user outcome (primary — Decompose a Fix Into Coordinated Changes; this skill governs the lifecycle of decomposed work), the ": Enforce Governance Without Slowing Down" user outcome (extended scope — change-set-level governance), the "Extend the Suite with New Plugins" user outcome (atomic-fix-adopter — every fix goes through an RFC per the "Every fix goes through an RFC" architecture rule; the RFC skills are invoked deliberately, not auto-fired, because RFC scope is direction-setting per the "RFC-first: a problem's fix implements its RFC; no implementation without a pre-existing RFC" architecture rule — NOT because atomic fixes skip ceremony).
23
+
24
+ ## Output Formatting
25
+
26
+ When referencing RFC IDs, problem IDs, ADR IDs, or JTBD IDs in prose output, always include the human-readable title on first mention. Use the format `the ": Implement + — re-home RFC decisions to ADRs and make RFC-first unconditional" release design (Decision homing implementation)`, not bare `the ": Implement + — re-home RFC decisions to ADRs and make RFC-first unconditional" release design`. Tables with separate ID and Title columns are fine as-is.
27
+
28
+ **Brief-before-ID discipline at `request_user_input` surfaces (the "agent surfaces decisions to user using opaque IDs (P-numbers, ADR-numbers, JTBD-numbers) without explaining what they mean — empathy gap" problem).** When this skill emits an `request_user_input` (transition-trigger ambiguity, scope-expansion approval, problem-trace ratification), the question/option/description text MUST inline what each referenced artefact is and what is at stake BEFORE naming it by ID. `RFC-NNN` / `P-NNN` / `ADR-NNN` / `JTBD-NNN` references are audit-trail annotations, NEVER carriers of meaning — the user reads the prompt without project filesystem access (mobile clients, accessibility tooling, notification surfaces) and cannot follow links. Every option's substance MUST be self-contained in the briefing prose + option `label` and `description`; IDs may appear ONLY after a self-contained explanation. Mirrors the canonical `/wr-architect:create-adr` Step 5 § 5a Rule 3 ("No IDs as explainers"). See also session memory `feedback_brief_before_id.md`.
29
+
30
+ ## RFC Lifecycle
31
+
32
+ | Status | File suffix | Meaning | Entry criteria |
33
+ |--------|-----------|---------|----------------|
34
+ | **Proposed** | `.proposed.md` | RFC captured, scope not yet ratified | Driving problem(s) traced; capture-rfc complete |
35
+ | **Accepted** | `.accepted.md` | Scope ratified, ready to start work | Architect+JTBD reviews passed; tasks decomposed; commits-to-be-authored named |
36
+ | **In-Progress** | `.in-progress.md` | Work underway, commits landing | First commit with `Refs: RFC-<NNN>` trailer authored |
37
+ | **Verifying** | `.verifying.md` | Work shipped, awaiting verification | All tasks complete; release marker present in `## Verification` |
38
+ | **Closed** | `.closed.md` | Verified; RFC complete | User confirms verification; driving problem(s) Closed or trace-bounded-escape applies |
39
+
40
+ Each transition is a `git mv` + Edit + restage + README refresh + commit per the "Governance Skills Commit Their Own Completed Work" architecture rule.
41
+
42
+ ## I1 enforcement at lifecycle transitions
43
+
44
+ Per the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule § Decision Outcome line 97 + § Confirmation criteria 1+2:
45
+
46
+ | Transition | I1 enforcement |
47
+ |------------|---------------|
48
+ | capture-time (`/wr-itil:capture-rfc`) | **Hard-block** on missing/malformed/unresolved problem-trace. Deny logged to `logs/rfc-capture-denials.jsonl`. |
49
+ | `proposed → accepted` | Hard-block if any `problems:` entry is no longer resolvable (deleted ticket file). Architect+JTBD re-review gate fires here. |
50
+ | `accepted → in-progress` | **Hard-block** (irreversible state per the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule line 97) if any traced problem is missing or orphan (Closed/Parked allowed only via `Refs: RFC-<NNN>` retro-pattern; bounded-escape carve-out applies to retrospective RFCs only — see capture-rfc Step 2 rationale). |
51
+ | `in-progress → verifying` | **Hard-block** (irreversible state) — same rules as `→ in-progress`. |
52
+ | `verifying → closed` | **Advisory-with-escalation**: if driving problem is Closed/Parked AND no still-open trace exists, emit warning naming the trace history; proceed if user confirms (or AFK fallback per the "Structured User Interaction for Governance-Skill Decisions" architecture rule Rule 6). This is the bounded escape per the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule line 97 — closing an RFC whose driving problem was already closed is the legitimate retrospective-completion path. |
53
+
54
+ ## WSJF Prioritisation (RFC-level Phase 1)
55
+
56
+ Per the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule § Decisions Resolved: WSJF placement is **RFC-level for Phase 1**. Story-level WSJF is structurally impossible without story-mapping infrastructure (Phase 2 deferred).
57
+
58
+ **WSJF = (Severity × Status Multiplier) / Effort**
59
+
60
+ - Severity = inherited from highest-severity traced problem (max across the `problems:` list).
61
+ - Status Multiplier:
62
+
63
+ | Status | Multiplier |
64
+ |--------|-----------|
65
+ | Accepted | 2.0 |
66
+ | In-Progress | 1.5 |
67
+ | Proposed | 1.0 |
68
+ | Verifying | 0 (excluded — user-side) |
69
+ | Closed | 0 (excluded — done) |
70
+
71
+ - Effort = S / M / L / XL same divisors as problem WSJF (S=1, M=2, L=4, XL=8). Marginal effort per RFC; transitive effort propagation deferred to Phase 2 when multi-RFC dependencies surface.
72
+
73
+ ## Steps
74
+
75
+ ### 0. Preflight (Phase 1 cross-directory)
76
+
77
+ Same Phase 1 sequencing note as capture-rfc Step 0: `<itil-plugin-root>/bin/wr-itil-reconcile-readme docs/problems` is the Phase 1 preflight (Slice 3 ships `<itil-plugin-root>/bin/wr-itil-reconcile-rfcs`; once it lands, this preflight calls both).
78
+
79
+ ```bash
80
+ <itil-plugin-root>/bin/wr-itil-reconcile-readme docs/problems > /tmp/wr-itil-drift-$$.txt
81
+ reconcile_exit=$?
82
+ if [ "$reconcile_exit" -eq 1 ]; then
83
+ <itil-plugin-root>/bin/wr-itil-classify-readme-drift /tmp/wr-itil-drift-$$.txt docs/problems
84
+ classify_exit=$?
85
+ rm -f /tmp/wr-itil-drift-$$.txt
86
+ fi
87
+ ```
88
+
89
+ ### 1. Parse arguments
90
+
91
+ The argument shape determines the operation:
92
+
93
+ - **Empty** → halt with stderr directive: "manage-rfc requires an argument: `<RFC-NNN>` for update, `<RFC-NNN> <status>` for transition, `review` for batch re-rank, `list` for display. To create a new RFC use /wr-itil:capture-rfc directly."
94
+ - **`RFC-<NNN>` bare** → update flow (Step 6).
95
+ - **`RFC-<NNN> <status>`** where `<status>` ∈ `{accepted, in-progress, verifying, close}` → transition (Step 7).
96
+ - **`review`** → batch re-rank (Step 9).
97
+ - **`list`** → display (Step 8).
98
+ - **Anything else** → halt with stderr directive directing the user to capture-rfc for new RFCs.
99
+
100
+ The lightweight + heavyweight split per the "Governance skill invocation patterns — foreground + background with deferred-question resumption" architecture rule + the "Rename `wr-problem` Plugin to `wr-itil`" architecture rule amended Skill Granularity rule means manage-rfc does NOT host new-RFC creation inline. Capture-rfc owns the intake; manage-rfc owns lifecycle.
101
+
102
+ ### 6. Update flow (bare `RFC-<NNN>`)
103
+
104
+ Find the file matching the RFC ID:
105
+
106
+ ```bash
107
+ ls docs/rfcs/RFC-<NNN>-*.md 2>/dev/null
108
+ ```
109
+
110
+ Apply the update — typical edits:
111
+ - Filling `## Scope` after architect+JTBD review.
112
+ - Decomposing `## Tasks` into ordered work-items.
113
+ - Adding `## Related` entries.
114
+ - Updating `decision-makers` or `adrs` frontmatter when ADRs are referenced mid-RFC execution.
115
+
116
+ **Do NOT add a "Considered Options / Alternatives Rejected" section to the RFC body.** Per the "RFCs hold no independent decisions" architecture rule (RFCs hold no independent decisions), every contested choice among ≥ 2 viable options is recorded as an ADR (inheriting the ": Architect emits a Needs-Direction verdict; the main agent owns the request_user_input" architecture rule confirm gate + the ": Human-oversight marker + `/wr-architect:review-decisions` drain for recorded decisions" architecture rule oversight marker) and referenced in the RFC's `adrs:` frontmatter — never re-argued in the RFC body. An RFC carries only scope, decomposition (sequencing/breakdown of already-decided work), and traces. The "Behavioural-tests-default for skill testing" architecture rule behavioural lint hard-fails any RFC body that contains a rejected-alternatives block without a matching `adrs:` reference.
117
+
118
+ #### README refresh on conditional update (the "Problem 094: `/wr-itil:manage-problem` does not refresh `docs/problems/README.md` on ticket creation" problem mirror)
119
+
120
+ If the update changed any ranking-bearing field (Status, Severity-via-problems, Effort, WSJF), regenerate `docs/rfcs/README.md` in-place reflecting the new ranking and stage it in the same commit. If the edit touched only `## Summary`, `## Scope`, `## Tasks`, `## Related`, or other non-ranking sections, skip the refresh.
121
+
122
+ **Mechanism** mirrors the "Problem 094: `/wr-itil:manage-problem` does not refresh `docs/problems/README.md` on ticket creation" problem in `manage-problem` Step 6 — render not re-rank; trust other RFC files' stored WSJF; consume only the post-edit RFC's WSJF for the ranking table.
123
+
124
+ ### 7. Status transitions
125
+
126
+ Each transition is a `git mv` + Edit + `git add` (the "Problem 057: `git mv` + Edit + `git add` staging-ordering trap drops content edits from the commit" problem staging trap) + README refresh + commit.
127
+
128
+ **Pre-flight checks before each transition**:
129
+
130
+ | Transition | Checks |
131
+ |------------|--------|
132
+ | `proposed → accepted` | All `problems:` entries resolve. Architect re-review PASS. JTBD re-review PASS. `## Scope` populated (not "deferred"). `## Tasks` decomposed (≥ 1 task; not just deferred placeholder). **`stories:` non-empty — run `<itil-plugin-root>/bin/wr-itil-check-rfc-has-stories <rfc-file>`; hard-block on non-zero exit (empty `stories: []` or missing).** Per **the "Every RFC has at least one story" architecture rule** the empty-stories fallback is removed: an atomic fix is an RFC with exactly one full story; an empty `stories:` is permitted only on a `proposed`/draft RFC before the fix is scoped, never at `accepted`. **Every listed story approved — run `<itil-plugin-root>/bin/wr-itil-check-rfc-stories-ratified <rfc-file> [stories-root] [maps-root]`; hard-block on non-zero (any listed story names no story map, or names one that is unratified or has drifted).** Per **the "A release row is the RFC, and the map is the approval surface" architecture rule** a story's approval is its map's, so the remedy is always to ratify the MAP — a story carries no oversight marker of its own. Composes with the has-stories gate (has-stories checks ≥1 exists, this checks each is approved). |
133
+ | `accepted → in-progress` | First commit referencing `Refs: RFC-<NNN>` exists OR is being authored in this same commit. I1 hard-block on missing/orphan trace. |
134
+ | `in-progress → verifying` | All `## Tasks` checked. `## Verification` section drafted (release marker, user-side check, trace closure path). I1 hard-block on missing/orphan trace. |
135
+ | `verifying → closed` | User explicitly confirms (or AFK Rule 6 fallback for evidence-based close per the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule / the "— Decision-Delegation Contract: when agents act on the framework vs ask the user" architecture rule framework-resolved silent dispatch). I1 advisory-with-escalation if driving problems Closed/Parked. |
136
+
137
+ If any pre-flight fails: report which checks failed; do NOT proceed; offer `request_user_input` for direction-setting decisions (e.g., "scope still says deferred — populate now or park the transition?") only when the resolution is genuinely user-direction territory per the "— Decision-Delegation Contract: when agents act on the framework vs ask the user" architecture rule.
138
+
139
+ #### Transition mechanics
140
+
141
+ ```bash
142
+ git mv docs/rfcs/RFC-<NNN>-<slug>.<old-status>.md docs/rfcs/RFC-<NNN>-<slug>.<new-status>.md
143
+ # ... use the Edit tool to update Status field + add transition-specific sections (e.g. ## Verification on `→ verifying`) ...
144
+ git add docs/rfcs/RFC-<NNN>-<slug>.<new-status>.md
145
+ ```
146
+
147
+ **the "Problem 057: `git mv` + Edit + `git add` staging-ordering trap drops content edits from the commit" problem staging trap rule**: re-stage explicitly after the Edit tool runs. `git mv` alone stages only the rename, not subsequent content edits.
148
+
149
+ #### Auto-transition detection (the "RFC lifecycle is not self-maintaining — it leans on human memory" problem/the ": RFC lifecycle self-maintenance" release design Piece 2; the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule line 292)
150
+
151
+ `proposed → in-progress` is **detected** by `itil-commit-trailer-transition-advisory.sh` (PostToolUse:Bash; the shared RFC+story commit-trailer trigger): when the first non-capture commit carrying `Refs: RFC-<NNN>` lands while the RFC is still `proposed`/`accepted`, the hook emits a stderr advisory. Per the "Governance Skills Commit Their Own Completed Work" architecture rule the hook does NOT perform the `git mv` (that would land outside the commit grain) — this skill (or an AFK orchestrator acting on the advisory) performs the transition. Mirrors the manage-story draft→in-progress trigger; both share the one hook. (This closes the "future commit-trailer-trigger hook (deferred)" that manage-rfc and manage-story both named but never built.)
152
+
153
+ #### Render the `## Commits` section (the "RFC lifecycle is not self-maintaining — it leans on human memory" problem/the ": RFC lifecycle self-maintenance" release design Piece 1; the "The RFC `## Commits` section is a git-log-derived view, rendered skill-side" architecture rule)
154
+
155
+ On every transition AND every `review` (Step 9), render the affected RFC's `## Commits` section from git history — it is a derived view (`git log --grep "Refs: RFC-NNN"`), NOT stored per-commit, so it must be regenerated skill-side (a PostToolUse hook can't write it without breaking the "Governance Skills Commit Their Own Completed Work" architecture rule commit grain). Invoke the helper before staging the RFC file:
156
+
157
+ ```bash
158
+ <itil-plugin-root>/bin/wr-itil-update-rfc-commits-section docs/rfcs/RFC-<NNN>-<slug>.<status>.md
159
+ git add docs/rfcs/RFC-<NNN>-<slug>.<status>.md
160
+ ```
161
+
162
+ `<itil-plugin-root>/bin/wr-itil-update-rfc-commits-section` is the "Plugin-bundled scripts invoked from SKILL.md resolve via `bin/` on `$PATH`" architecture rule `$PATH` shim for `<itil-plugin-root>/scripts/update-rfc-commits-section.sh` (idempotent — a current section is a byte-stable no-op, so the `git add` is a no-op when nothing changed). This closes the never-built the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule item 12; the section is honestly rendered-as-of-this-skill-run, never a false "maintained automatically" claim.
163
+
164
+ #### README refresh on every transition (the "Problem 062: `manage-problem` does not refresh `docs/problems/README.md` on single-ticket transitions; fast-path cache goes stale silently" problem mirror)
165
+
166
+ After renaming + Editing + `git add`-ing the transitioned RFC file, regenerate `docs/rfcs/README.md` in-place reflecting the new filename set and the transitioned RFC's new Status. Stage the refreshed README with the same commit.
167
+
168
+ Update the "Last reviewed" line on `docs/rfcs/README.md` 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-reference to `manage-problem` SKILL.md Step 5) so a single-pass agent reading this Step 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** (origin failure mode: iter-7 + iter-8 of 2026-05-30's AFK work-problems session silently skipped the equivalent rotation on `docs/problems/README.md` in 2 of 9 transition-bearing iters). The mechanism MUST execute IN ORDER:
169
+
170
+ 1. **Read** line 3 of `docs/rfcs/README.md`: `awk 'NR==3' docs/rfcs/README.md` (`head -3 | tail -1` or `sed -n '3p'` are acceptable equivalents).
171
+ 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 fragment, append the existing line 3 verbatim to `docs/rfcs/README-history.md` (created on first rotation) under a `## YYYY-MM-DD` heading. Run this BEFORE the Edit-tool rewrite in step 3 — Edit's replace pattern destroys the displaced content otherwise.
172
+ 3. **Rewrite** line 3 of `docs/rfcs/README.md` with the new fragment of form `> Last reviewed: YYYY-MM-DD **<event>** — <one-line summary>` (e.g. `RFC-<NNN> <status> — <one-line summary>`). Soft cap ≤ 1024 bytes per fragment; hard ceiling 5120 bytes per the "Session-start briefing surface — SessionStart hook over tiered directory + indexed README" architecture rule Tier 3 envelope.
173
+ 4. **Stage both** — `git add docs/rfcs/README.md docs/rfcs/README-history.md` so the same single commit per the "Governance Skills Commit Their Own Completed Work" architecture rule captures both files.
174
+
175
+ 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 discipline applies identically across `docs/problems/README.md`, `docs/rfcs/README.md`, and `docs/stories/README.md` (only the target index path differs). 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.
176
+
177
+ #### Reverse trace on driving problem(s) (skill-side primary surface)
178
+
179
+ Per the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule Phase 1 item 10 + Confirmation criterion 3 + architect Q1 verdict (skill-side primary, hook-side advisory for arbitrary commits): every transition refreshes the `## RFCs` section on each driving problem ticket inline in the same commit per the "Governance Skills Commit Their Own Completed Work" architecture rule single-commit grain.
180
+
181
+ For each `P<NNN>` in the transitioned RFC's frontmatter `problems:` list:
182
+
183
+ ```bash
184
+ for pid_token in $(awk '/^problems:/{gsub(/[][]/,"");gsub(/,/,"\n");for(i=2;i<=NF;i++)print $i;exit}' "$rfc_file"); do
185
+ pid_num="${pid_token#P}"
186
+ # Dual-tolerant ticket discovery — the ": docs/problems/ flat layout migration — per-state subdirs + adopter auto-migration" release design migration window covers
187
+ # BOTH flat (`docs/problems/<NNN>-<title>.<state>.md`) AND per-state
188
+ # subdir (`docs/problems/<state>/<NNN>-<title>.md`) layouts.
189
+ problem_file=$(ls docs/problems/${pid_num}-*.md docs/problems/*/${pid_num}-*.md 2>/dev/null | head -1)
190
+ [ -z "$problem_file" ] && continue
191
+ <itil-plugin-root>/bin/wr-itil-update-problem-rfcs-section "$problem_file" docs/rfcs
192
+ git add "$problem_file"
193
+ done
194
+ ```
195
+
196
+ The helper (`<itil-plugin-root>/scripts/update-problem-rfcs-section.sh`) is idempotent and applies lazy-empty discipline (zero traced RFCs → section absent — a structural rendering rule, not a ceremony exemption; a problem traces ≥ 1 RFC once it reaches fix-time per the "Every fix goes through an RFC" architecture rule / I13). After the transition, the helper:
197
+ - Updates the row's `Status` column to the new lifecycle status.
198
+ - Removes the row when this transition de-traces a problem (frontmatter `problems:` edit removed the entry).
199
+ - No-op when the table is already current (idempotent contract).
200
+
201
+ The trailer hook (`itil-rfc-trailer-advisory.sh`) sits on top of this skill-side contract as a drift-detection backstop for ARBITRARY commits (e.g. `feat(...)` commits with `Refs: RFC-<NNN>` trailers authored outside the RFC skills) — it never auto-fixes; it advises.
202
+
203
+ #### Forward trace — `## Stories` body section (Phase 2)
204
+
205
+ Per the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule line 270 + line 296: every transition that touches the RFC body refreshes the RFC's own `## Stories` body section from its frontmatter `stories:` array. The forward-trace surface renders the ordered execution sequence as inline links to the story files, lazy-empty when `stories: []` (an RFC not decomposed into stories). The helper is the Slice 2b sibling `update-rfc-references-section.sh`:
206
+
207
+ ```bash
208
+ <itil-plugin-root>/bin/wr-itil-update-rfc-references-section "$rfc_file" "Stories"
209
+ ```
210
+
211
+ Idempotent + lazy-empty per the Slice 2a/2b contract. Run after the rename + frontmatter edit so the section reflects the post-transition `stories:` shape. Stage the RFC file (already staged for the lifecycle transition; the helper modifies the same file in-place).
212
+
213
+ This composes with the existing `## Story Maps` refresh that the same helper handles via `update-rfc-references-section.sh "$rfc_file" "Story Maps"` — when the RFC traces story-maps via the `story-maps:` frontmatter field (Phase 2+).
214
+
215
+ ### 8. List flow (`list`)
216
+
217
+ Read all `.proposed.md`, `.accepted.md`, `.in-progress.md` files in `docs/rfcs/`. Extract ID, title, status, traced problems. Sort by Status priority (Accepted > In-Progress > Proposed) then by `Reported` ASC. Display as a markdown table.
218
+
219
+ ### 9. Review flow (`review`)
220
+
221
+ Batch re-rank all RFCs and refresh `docs/rfcs/README.md`.
222
+
223
+ **Step 9a**: Read `RISK-POLICY.md` for current Severity bands.
224
+
225
+ **Step 9b**: For each RFC in `proposed`/`accepted`/`in-progress` status:
226
+ 1. Read the RFC file + each traced problem file.
227
+ 2. Severity = `max(Severity(problem) for problem in problems)` (highest-severity trace dominates).
228
+ 3. Re-estimate Effort against current `## Scope` + `## Tasks` decomposition.
229
+ 4. WSJF = (Severity × Status Multiplier) / Effort divisor.
230
+ 5. Update WSJF/Effort lines in the RFC file if changed.
231
+
232
+ **Step 9c**: Present a WSJF-ranked table (open + accepted + in-progress only). Verifying RFCs go in a Verification Queue section sorted by Released date ASC (canonical VQ sort direction per the "docs/problems/README.md Verification Queue rendered newest-first contradicts section header "Ranked by release age, oldest first"" problem). Closed RFCs go in a Closed section (cosmetic, no ranking).
233
+
234
+ **Step 9d**: For each `.verifying.md` RFC, collect in-session evidence per the "— Decision-Delegation Contract: when agents act on the framework vs ask the user" architecture rule framework-resolved silent dispatch (mirrors `manage-problem` Step 9d). Concrete + unambiguous citation → close on evidence via the transition path. Ambiguous/absent → leave as Verifying.
235
+
236
+ **Step 9e**: Update changed files; refresh `docs/rfcs/README.md`; refresh the `## RFCs` reverse-trace section on every problem ticket whose traced RFCs changed status or title in this batch (per the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule Phase 1 item 10 + Confirmation criterion 3 — skill-side primary):
237
+
238
+ ```bash
239
+ # Aggregate the union of P<NNN> across all RFCs touched in this review.
240
+ for problem_file in $(printf '%s\n' "${touched_problem_files[@]}" | sort -u); do
241
+ <itil-plugin-root>/bin/wr-itil-update-problem-rfcs-section "$problem_file" docs/rfcs
242
+ git add "$problem_file"
243
+ done
244
+ ```
245
+
246
+ The helper is idempotent — a problem ticket whose `## RFCs` table is already current emits no diff, and `git add` of an unchanged file is a no-op. Any drift gets fixed in this commit per the "Governance Skills Commit Their Own Completed Work" architecture rule single-commit grain. Commit per the "Governance Skills Commit Their Own Completed Work" architecture rule:
247
+
248
+ ```
249
+ docs(rfcs): review — re-rank RFC priorities
250
+ ```
251
+
252
+ ### 11. Report + commit
253
+
254
+ After any operation, report the file path created/modified, the RFC ID, current status, and any quality-check warnings.
255
+
256
+ Commit conventions per operation:
257
+
258
+ | Operation | Commit message |
259
+ |-----------|---------------|
260
+ | Update (no transition) | `docs(rfcs): update RFC-<NNN> — <change summary>` |
261
+ | `proposed → accepted` | `docs(rfcs): RFC-<NNN> accepted — <one-line scope summary>` |
262
+ | `accepted → in-progress` | usually folded into the first `feat(...)` / `fix(...)` / `chore(...)` commit that authors the RFC's first task — rename rides with that commit and trailer is `Refs: RFC-<NNN>` |
263
+ | `in-progress → verifying` | usually folded into the final task commit — rename + `## Verification` edit ride with the shipping commit |
264
+ | `verifying → closed` | `docs(rfcs): close RFC-<NNN> <title>` |
265
+ | Review/re-rank | `docs(rfcs): review — re-rank RFC priorities` |
266
+
267
+ All commit messages on RFC-bearing commits carry the `Refs: RFC-<NNN>` trailer (the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule finding 8 + Phase 1 item 12).
268
+
269
+ Satisfy the commit gate per the "Governance Skills Commit Their Own Completed Work" architecture rule — primary path delegates to `wr-risk-scorer:pipeline` subagent; fallback invokes `/wr-risk-scorer:assess-release` skill.
270
+
271
+ ### 12. Auto-release (skip in AFK orchestrator)
272
+
273
+ Same conditional drain as `manage-problem` Step 12: if not in an AFK orchestrator AND `.changeset/` is non-empty AND push/release are within appetite, run `npm run push:watch` then `npm run release:watch`.
274
+
275
+ ## Composition with capture-rfc
276
+
277
+ | Concern | manage-rfc (this skill) | capture-rfc (sibling) |
278
+ |---------|-------------------------|----------------------|
279
+ | New RFC creation | Out of scope; redirect to capture-rfc | Owns the lightweight path |
280
+ | Lifecycle transitions | Owns proposed → accepted → in-progress → verifying → closed | Out of scope |
281
+ | WSJF re-rank | Step 9 review owns batch re-rank | Out of scope |
282
+ | README refresh | the "Problem 094: `/wr-itil:manage-problem` does not refresh `docs/problems/README.md` on ticket creation" problem / the "Problem 062: `manage-problem` does not refresh `docs/problems/README.md` on single-ticket transitions; fast-path cache goes stale silently" problem inline (regenerate + stage in same commit) | Deferred (capture-time speed) |
283
+ | Commit grain | One commit per intake / per transition / per review | One commit per capture |
284
+ | request_user_input authority | direction-setting (transition-trigger ambiguity), deviation-approval (scope expansion mid-RFC), silent-mechanical (status renames, README refresh) | direction-setting (problem-trace), taste (title), silent-mechanical (everything else) |
285
+
286
+ New RFC documents are retired. This skill manages legacy RFC documents only; new fix proposals use release rows and stories via `/wr-itil:capture-rfc`.
287
+
288
+ ## Related
289
+
290
+ - **the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule** — Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology.
291
+ - **the "Problem tickets strain as fixes decompose into multiple coordinated changes — need an RFC framework that ties all changes back to problems (and unifies technical with user/business problems)" problem** — driver problem ticket.
292
+ - **`docs/plans/170-rfc-framework-story-map.md`** — Slice 2 task B5.T4 lands this skill.
293
+ - **the ": Decompose a Fix Into Coordinated Changes" user outcome** (primary), the ": Enforce Governance Without Slowing Down" user outcome (extended scope), the "Extend the Suite with New Plugins" user outcome (atomic-fix-adopter — every fix via RFC per the "Every fix goes through an RFC" architecture rule).
294
+ - **`docs/rfcs/README.md`** — lifecycle index + frontmatter shape (Slice 2 B5.T1 + B5.T2 — `adc53c8`).
295
+ - **`<itil-plugin-root>/skills/capture-rfc/SKILL.md`** — sibling lightweight capture skill.
296
+ - **`<itil-plugin-root>/skills/manage-problem/SKILL.md`** — heavyweight counterpart at the problem tier; structural template for this skill.
297
+ - **the "Governance Skills Commit Their Own Completed Work" architecture rule** — single-commit governance grain.
298
+ - **the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule** — lifecycle suffix-based (RFC mirrors).
299
+ - **the "Governance skill invocation patterns — foreground + background with deferred-question resumption" architecture rule** — lightweight + heavyweight split.
300
+ - **the "Progressive disclosure + once-per-session budget for UserPromptSubmit governance prose" architecture rule** — progressive disclosure; future REFERENCE.md split deferred per the "SKILL.md runtime budget policy" architecture rule.
301
+ - **the "Auto-apply scorer remediations to reach within appetite — open action-class vocabulary" architecture rule** — above-appetite remediation and halt discipline.
302
+ - **the "— Decision-Delegation Contract: when agents act on the framework vs ask the user" architecture rule** — decision delegation contract; authority classes.
303
+ - **the "Plugin-bundled scripts invoked from SKILL.md resolve via `bin/` on `$PATH`" architecture rule** — `<itil-plugin-root>/bin/wr-itil-reconcile-rfcs` shim grammar (Slice 3).
304
+ - **the "`@windyroad/*` plugin READMEs anchor on JTBD job IDs with load-bearing commit-hook + prose-woven framing" architecture rule** — load-bearing-from-the-start; I1 hard-block on day one.
305
+ - **the "Behavioural-tests-default for skill testing" architecture rule** — behavioural-tests default; bats coverage in Slice 2 B5.T5.
306
+ - **the "Problem 057: `git mv` + Edit + `git add` staging-ordering trap drops content edits from the commit" problem** — staging trap rule (re-stage after Edit on every transition).
307
+ - **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 on transition.
308
+ - **the "Problem 094: `/wr-itil:manage-problem` does not refresh `docs/problems/README.md` on ticket creation" problem** — README refresh on conditional update.
309
+ - **the "`docs/problems/README.md` drifts from filesystem truth across sessions despite (refresh-on-create) and (refresh-on-transition) both Closed" problem** — README reconciliation contract.
310
+ - **the "Agents over-ask in interactive sessions — conflating mechanical-stages with user-interactive-stages of multi-stage skill contracts (inverse-)" problem** + inverse-the "Problem 078: Assistant does not offer to capture a problem ticket when the user delivers strong-signal correction" problem — mechanical-stage carve-outs prevent over-asking.
311
+ - **the "`docs/problems/README.md` line 3 narrative-blob accumulator bloat — sibling to (briefing tier 3) on a different surface" problem** — Last-reviewed line discipline (single fragment + history archive).
312
+ - **the "`docs/problems/README.md` WSJF Rankings table row order doesn't match `/wr-itil:work-problems`'s tie-break selection — users assume the orchestrator is broken" problem** — tie-break ladder consistency.
313
+ - **the "docs/problems/README.md Verification Queue rendered newest-first contradicts section header "Ranked by release age, oldest first"" problem** — Verification Queue sort direction.
314
+ - **the "Changeset holding does not withhold shipment — held code ships with any sibling release" problem** — changeset holding does not withhold shipped code.
@@ -0,0 +1,3 @@
1
+ interface:
2
+ display_name: "WR ITIL: Manage RFC"
3
+ short_description: "Manage lifecycle for legacy RFC documents."