@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
@@ -1,20 +1,16 @@
1
1
  #!/bin/bash
2
- # P119: PreToolUse:Write enforcement hook for new problem ticket creation.
3
- # P170 / ADR-060: extended to also gate new RFC ticket creation under docs/rfcs/.
2
+ # agent-bypasses-wr-itil-manage-problem-step-2-duplicate-check-by-writing-tickets-directly-to-docs-problems-problem: PreToolUse:Write enforcement hook for new problem ticket creation.
3
+ # New RFC documents are denied; fix proposals use release rows and stories.
4
4
  #
5
5
  # BLOCKS Write to:
6
6
  # - docs/problems/<NNN>-*.<status>.md (when file does not yet exist
7
7
  # and Step-2 grep marker absent)
8
- # - docs/rfcs/RFC-<NNN>-*.<status>.md (when file does not yet exist
9
- # and capture-rfc marker absent)
8
+ # - docs/rfcs/RFC-<NNN>-*.<status>.md (when file does not yet exist)
10
9
  #
11
10
  # Marker convention:
12
11
  # - /tmp/manage-problem-grep-${SESSION_ID} (problems tier;
13
12
  # set by manage-problem /
14
13
  # capture-problem Step 2)
15
- # - /tmp/wr-itil-rfc-capture-grep-${SESSION_ID} (RFC tier;
16
- # set by capture-rfc Step 2 /
17
- # manage-rfc creation flow)
18
14
  #
19
15
  # Out of scope (allow-listed):
20
16
  # - docs/problems/README.md — regenerated by manage-problem Steps 5/6/7
@@ -30,24 +26,20 @@
30
26
  # Other docs (NOTES.md, archive/, etc.)
31
27
  # are project housekeeping, not tickets
32
28
  #
33
- # ADR-031 forward-compat: matcher uses path-prefix + ticket-shape basename,
29
+ # problem-ticket-directory-layout-per-state-subdirectories-under-docs-problems-architecture-rule forward-compat: matcher uses path-prefix + ticket-shape basename,
34
30
  # agnostic to current suffix-based layout vs. future per-state subdirectory
35
- # layout. Branch deny message names the right skill (manage-problem /
36
- # capture-problem for problems-tier; capture-rfc / manage-rfc for RFC-tier).
31
+ # layout. The RFC branch redirects to the release-row capture flow.
37
32
  #
38
33
  # References:
39
- # ADR-009 — gate marker lifecycle (per-session /tmp markers).
40
- # ADR-013 Rule 1 — deny redirects to the relevant skill (manage-problem
34
+ # gate-marker-lifecycle-ttl-drift-not-stop-hook-reset-architecture-rule — gate marker lifecycle (per-session /tmp markers).
35
+ # structured-user-interaction-for-governance-skill-decisions-architecture-rule Rule 1 — deny redirects to the relevant skill (manage-problem
41
36
  # for problems; capture-rfc for RFCs) where Step 2 fires.
42
- # ADR-022 — problem lifecycle (status suffixes covered: open / known-error /
37
+ # problem-lifecycle-add-a-verification-pending-status-between-known-error-and-closed-architecture-rule — problem lifecycle (status suffixes covered: open / known-error /
43
38
  # verifying / parked).
44
- # ADR-038 — progressive disclosure (deny message stays terse + actionable).
45
- # ADR-051 — load-bearing-from-the-start (RFC I1 trace-to-problem invariant
46
- # ships as a hard-block from day one, not advisory-then-escalate).
47
- # ADR-060 — Problem-RFC-Story framework; introduces RFC tier + I1
48
- # hard-block at capture-rfc.
49
- # P119 — agent bypasses Step 2 by writing tickets directly.
50
- # P170 — driver problem ticket for the RFC framework introduction.
39
+ # progressive-disclosure-once-per-session-budget-for-userpromptsubmit-governance-prose-architecture-rule — progressive disclosure (deny message stays terse + actionable).
40
+ # problem-rfc-story-framework-with-mandatory-problem-trace-and-unified-problem-ontology-architecture-rule — Problem-RFC-Story framework.
41
+ # agent-bypasses-wr-itil-manage-problem-step-2-duplicate-check-by-writing-tickets-directly-to-docs-problems-problem — agent bypasses Step 2 by writing tickets directly.
42
+ # 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 for the RFC framework introduction.
51
43
 
52
44
  SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
53
45
  # shellcheck source=lib/create-gate.sh
@@ -145,11 +137,11 @@ if [ -f "$FILE_PATH" ]; then
145
137
  exit 0
146
138
  fi
147
139
 
148
- # P142 / ADR-050: the runtime-SID instrumentation hook
140
+ # phase-4-get-current-session-id-helper-system-priority-bug-subprocess-sids-win-mtime-selection-over-orchestrator-sid-problem / capture-the-runtime-stdin-session-id-via-a-pretooluse-hook-so-the-create-gate-marker-binds-to-the-same-sid-the-runtime-hook-will-see-architecture-rule: the runtime-SID instrumentation hook
149
141
  # (itil-runtime-sid-marker.sh) writes the runtime stdin session_id to a
150
142
  # per-machine marker on every PreToolUse:Bash|Write|Edit|Read event. The
151
143
  # `get_current_session_id` helper reads that marker as the authoritative
152
- # SID, so the marker `mark_step2_complete` / `mark_rfc_capture_complete`
144
+ # SID, so the marker `mark_step2_complete`
153
145
  # writes is bound to the same session_id this hook will see on the
154
146
  # subsequent Write. SID-mismatch denial is structurally eliminated; the
155
147
  # only remaining deny path is the routine "duplicate-check / capture
@@ -161,14 +153,11 @@ case "$TIER" in
161
153
  if check_create_gate "$SESSION_ID"; then
162
154
  exit 0
163
155
  fi
164
- create_gate_deny "BLOCKED: Cannot Write '${BASENAME}' under docs/problems/ without running /wr-itil:manage-problem Step 2 (duplicate-check) first. New problem tickets MUST be created via the skill so the duplicate-prevention grep fires before the file lands. Invoke the Skill tool with skill='wr-itil:manage-problem' and a description of the new problem; Step 2 will grep for related existing tickets and surface any matches via AskUserQuestion before creating the new ticket. (P119)"
156
+ create_gate_deny "BLOCKED: Cannot Write '${BASENAME}' under docs/problems/ without running /wr-itil:manage-problem Step 2 (duplicate-check) first. New problem tickets MUST be created via the skill so the duplicate-prevention grep fires before the file lands. Invoke the Skill tool with skill='wr-itil:manage-problem' and a description of the new problem; Step 2 will grep for related existing tickets and surface any matches via AskUserQuestion before creating the new ticket. (agent-bypasses-wr-itil-manage-problem-step-2-duplicate-check-by-writing-tickets-directly-to-docs-problems-problem)"
165
157
  exit 0
166
158
  ;;
167
159
  rfcs)
168
- if check_rfc_capture_gate "$SESSION_ID"; then
169
- exit 0
170
- fi
171
- create_gate_deny "BLOCKED: Cannot Write '${BASENAME}' under docs/rfcs/ without running /wr-itil:capture-rfc Step 2 (problem-trace validation) first. New RFC tickets MUST be created via the skill so the I1 trace-to-problem invariant is enforced before the file lands. Invoke the Skill tool with skill='wr-itil:capture-rfc' supplying the leading problem-trace argument (P<NNN> or P<NNN>,P<NNN>,...); Step 2 will validate that each traced problem exists. Without a problem-trace, capture-rfc emits a deny log entry to logs/rfc-capture-denials.jsonl per ADR-060 § Confirmation criterion 1 + § Reassessment trace-violation-rate criterion. (P170 / ADR-060)"
160
+ create_gate_deny "BLOCKED: New RFC documents are retired. Use /wr-itil:capture-rfc to draw a problem-traced release row with at least one story on an existing story map. Existing RFC documents remain editable for legacy lifecycle transitions."
172
161
  exit 0
173
162
  ;;
174
163
  esac
@@ -1,12 +1,12 @@
1
1
  #!/bin/bash
2
- # P125: PreToolUse:Bash hook — denies `git commit` invocations that
3
- # would land in the P057 staging-trap shape (rename + post-rename
2
+ # staging-trap-recurs-despite-documentation-hook-level-enforcement-candidate-problem: PreToolUse:Bash hook — denies `git commit` invocations that
3
+ # would land in the problem-057-git-mv-edit-git-add-staging-ordering-trap-drops-content-edits-from-the-commit-problem staging-trap shape (rename + post-rename
4
4
  # Edit without re-stage).
5
5
  #
6
6
  # Detection delegates to `lib/staging-detect.sh::detect_p057_trap`.
7
7
  # When the helper returns 1, this hook emits PreToolUse deny JSON
8
8
  # with the trap'd path inline and the literal `git add <path>`
9
- # recovery command, satisfying ADR-013 Rule 1's "deny redirects to
9
+ # recovery command, satisfying structured-user-interaction-for-governance-skill-decisions-architecture-rule Rule 1's "deny redirects to
10
10
  # a recovery path" contract via the mechanical-recovery shape (no
11
11
  # skill wrapper required — re-staging a file is a single command).
12
12
  #
@@ -14,7 +14,7 @@
14
14
  # `lib/command-detect.sh::command_invokes_git_commit`, which strips
15
15
  # common prefix shapes (leading whitespace, env-var assignments,
16
16
  # `cd <path> &&`) and checks whether the residual leading token pair
17
- # is literally `git commit`. P273: replaced the prior substring match
17
+ # is literally `git commit`. p057-staging-trap-detect-sh-hook-substring-matches-git-commit-anywhere-in-bash-command-sibling-problem: replaced the prior substring match
18
18
  # `*"git commit"*` that misfired on non-commit Bash whose argument
19
19
  # vectors merely mentioned the phrase (grep / sed / cat-heredoc /
20
20
  # echo / `git log --grep`).
@@ -28,21 +28,21 @@
28
28
  # - parse failure on stdin (mirrors create-gate.sh fail-open)
29
29
  #
30
30
  # References:
31
- # ADR-005 — plugin testing strategy (hook bats live under hooks/test/).
32
- # ADR-009 — gate marker lifecycle (this hook deliberately does NOT
31
+ # plugin-testing-strategy-architecture-rule — plugin testing strategy (hook bats live under hooks/test/).
32
+ # gate-marker-lifecycle-ttl-drift-not-stop-hook-reset-architecture-rule — gate marker lifecycle (this hook deliberately does NOT
33
33
  # use markers; detection is per-invocation deterministic).
34
- # ADR-013 Rule 1 — deny redirects with mechanical recovery.
35
- # ADR-017 — shared-code sync pattern (command-detect.sh canonical at
34
+ # structured-user-interaction-for-governance-skill-decisions-architecture-rule Rule 1 — deny redirects with mechanical recovery.
35
+ # shared-code-duplicated-into-per-package-lib-kept-in-sync-by-script-ci-drift-check-architecture-rule — shared-code sync pattern (command-detect.sh canonical at
36
36
  # packages/shared/hooks/lib/; synced into per-package
37
37
  # hooks/lib/ via scripts/sync-command-detect.sh).
38
- # ADR-038 — progressive disclosure / deny-message terseness budget.
39
- # P057 — original staging-trap ticket; this hook is the
38
+ # progressive-disclosure-once-per-session-budget-for-userpromptsubmit-governance-prose-architecture-rule — progressive disclosure / deny-message terseness budget.
39
+ # problem-057-git-mv-edit-git-add-staging-ordering-trap-drops-content-edits-from-the-commit-problem — original staging-trap ticket; this hook is the
40
40
  # enforcement layer the documentation alone didn't provide.
41
- # P119 — sibling create-gate hook (PreToolUse:Write + lib/create-gate.sh).
42
- # P125 — this hook.
43
- # P268 — shared `command_invokes_git_commit` helper landed for
41
+ # agent-bypasses-wr-itil-manage-problem-step-2-duplicate-check-by-writing-tickets-directly-to-docs-problems-problem — sibling create-gate hook (PreToolUse:Write + lib/create-gate.sh).
42
+ # staging-trap-recurs-despite-documentation-hook-level-enforcement-candidate-problem — this hook.
43
+ # hook-substring-matches-git-commit-anywhere-in-bash-command-not-just-actual-git-commit-invocations-problem — shared `command_invokes_git_commit` helper landed for
44
44
  # `itil-readme-refresh-discipline.sh`.
45
- # P273 — sibling-hook refactor: substring-match → helper here.
45
+ # p057-staging-trap-detect-sh-hook-substring-matches-git-commit-anywhere-in-bash-command-sibling-problem — sibling-hook refactor: substring-match → helper here.
46
46
 
47
47
  SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
48
48
  # shellcheck source=lib/staging-detect.sh
@@ -79,7 +79,7 @@ except:
79
79
  # `lib/command-detect.sh::command_invokes_git_commit`, which strips
80
80
  # common prefix shapes (leading whitespace, env-var assignments,
81
81
  # `cd <path> &&`) and checks whether the residual leading token pair
82
- # is literally `git commit`. P273: replaces the prior substring match.
82
+ # is literally `git commit`. p057-staging-trap-detect-sh-hook-substring-matches-git-commit-anywhere-in-bash-command-sibling-problem: replaces the prior substring match.
83
83
  command_invokes_git_commit "$COMMAND" || exit 0
84
84
 
85
85
  # Run detection. Helper echoes trap'd path on stdout when detected;
@@ -88,10 +88,10 @@ command_invokes_git_commit "$COMMAND" || exit 0
88
88
  TRAPPED_PATH=$(detect_p057_trap 2>/dev/null) && exit 0
89
89
 
90
90
  # Trap detected — emit deny with terse recovery.
91
- # Voice-tone draft target ~245 bytes; ADR-038 progressive-disclosure
92
- # budget. Keeps the rule cite (P057), the trap'd file path, and the
91
+ # Voice-tone draft target ~245 bytes; progressive-disclosure-once-per-session-budget-for-userpromptsubmit-governance-prose-architecture-rule progressive-disclosure
92
+ # budget. Keeps the rule cite (problem-057-git-mv-edit-git-add-staging-ordering-trap-drops-content-edits-from-the-commit-problem), the trap'd file path, and the
93
93
  # literal recovery command inline.
94
- REASON="BLOCKED: P057 staging-trap. Renamed file has unstaged post-rename edits: ${TRAPPED_PATH}. Run \`git add ${TRAPPED_PATH}\` then retry commit. Otherwise rename lands without the edit; edit drifts into next commit (audit-trail break)."
94
+ REASON="BLOCKED: problem-057-git-mv-edit-git-add-staging-ordering-trap-drops-content-edits-from-the-commit-problem staging-trap. Renamed file has unstaged post-rename edits: ${TRAPPED_PATH}. Run \`git add ${TRAPPED_PATH}\` then retry commit. Otherwise rename lands without the edit; edit drifts into next commit (audit-trail break)."
95
95
 
96
96
  cat <<EOF
97
97
  {
@@ -1,9 +1,9 @@
1
1
  #!/bin/bash
2
- # PreToolUse:Bash hook (P065 / ADR-036 Trigger 2): blocks `npm publish`
2
+ # PreToolUse:Bash hook (problem-065-no-skill-scaffolds-intake-files-issue-template-security-md-contributing-md-support-md-in-downstream-projects-problem / scaffold-downstream-oss-intake-skill-layered-triggers-architecture-rule Trigger 2): blocks `npm publish`
3
3
  # and `gh pr merge` of a `changeset-release/*` PR when the project is
4
4
  # missing one or more of the five intake files.
5
5
  #
6
- # Required intake files (per ADR-036 Detection step 5):
6
+ # Required intake files (per scaffold-downstream-oss-intake-skill-layered-triggers-architecture-rule Detection step 5):
7
7
  # .github/ISSUE_TEMPLATE/config.yml
8
8
  # .github/ISSUE_TEMPLATE/problem-report.yml
9
9
  # SECURITY.md
@@ -15,7 +15,7 @@
15
15
  # (consistent with RISK_BYPASS naming
16
16
  # convention in external-comms-gate.sh)
17
17
  # 2. .claude/.intake-scaffold-declined marker present -> permit
18
- # (ADR-009 marker semantics; explicit
18
+ # (gate-marker-lifecycle-ttl-drift-not-stop-hook-reset-architecture-rule marker semantics; explicit
19
19
  # decline by adopter, persistent until
20
20
  # file deleted)
21
21
  # 3. All five intake files present -> permit (idempotent default)
@@ -73,7 +73,7 @@ fi
73
73
 
74
74
  [ "$IN_SCOPE" = "1" ] || exit 0
75
75
 
76
- # ---------- 2. Decline marker (ADR-009 persistent marker) ----------
76
+ # ---------- 2. Decline marker (gate-marker-lifecycle-ttl-drift-not-stop-hook-reset-architecture-rule persistent marker) ----------
77
77
  if [ -f ".claude/.intake-scaffold-declined" ]; then
78
78
  exit 0
79
79
  fi
@@ -100,7 +100,7 @@ deny_reason() {
100
100
  local missing_list
101
101
  missing_list=$(printf ' - %s\n' "${MISSING[@]}")
102
102
  cat <<EOF
103
- BLOCKED (P065 / ADR-036 pre-publish intake gate): ${#MISSING[@]} of 5 intake files missing — downstream reporters would hit a blank issue form and have no declared security-disclosure channel.
103
+ BLOCKED (problem-065-no-skill-scaffolds-intake-files-issue-template-security-md-contributing-md-support-md-in-downstream-projects-problem / scaffold-downstream-oss-intake-skill-layered-triggers-architecture-rule pre-publish intake gate): ${#MISSING[@]} of 5 intake files missing — downstream reporters would hit a blank issue form and have no declared security-disclosure channel.
104
104
 
105
105
  Missing:
106
106
  ${missing_list}
@@ -1,5 +1,5 @@
1
1
  #!/bin/bash
2
- # Plugin-staleness surfacer — UserPromptSubmit hook (ADR-088 / RFC-036 / P045 / P375).
2
+ # Plugin-staleness surfacer — UserPromptSubmit hook (plugin-staleness-surfacer-per-plugin-per-turn-userpromptsubmit-surface-not-install-network-free-architecture-rule / plugin-staleness-surfacer-release-design / problem-045-auto-plugin-install-on-user-s-machine-after-governance-release-problem / repo-conflates-a-named-re-entry-point-with-a-self-firing-cadence-deferrals-not-transitively-reachable-from-an-automatic-trigger-rot-problem).
3
3
  #
4
4
  # Every turn, compare THIS session's running plugin version (inferred from the
5
5
  # hook's own script path in the plugin cache) against the highest version
@@ -7,17 +7,17 @@
7
7
  # ONE advisory line telling the user to restart to pick up the newer code.
8
8
  #
9
9
  # Network-free (own version from script path vs highest semver cache dir),
10
- # warn-only (never installs or restarts — P343 restart-required means an
10
+ # warn-only (never installs or restarts — install-updates-refreshes-the-global-plugin-cache-but-does-not-fix-path-ordering-stale-plugin-version-shims-stay-first-on-path-so-subsequent-shim-invocations-run-old-code-problem restart-required means an
11
11
  # auto-refresh can't help THIS session anyway), fails quiet on any error
12
12
  # (fail-open), silent when the session is current, and emits at most once per
13
- # newly-detected version (a version-keyed extension of ADR-038's per-session
13
+ # newly-detected version (a version-keyed extension of progressive-disclosure-once-per-session-budget-for-userpromptsubmit-governance-prose-architecture-rule's per-session
14
14
  # announcement marker) so it costs ~0 tokens on unchanged turns.
15
15
  #
16
16
  # Each plugin ships its own copy and emits its own line independently — no
17
- # cross-plugin coordination (eliminates the P260 shared-marker race).
17
+ # cross-plugin coordination (eliminates the create-gate-marker-race-between-concurrent-claude-sessions-via-shared-runtime-sid-file-problem shared-marker race).
18
18
  #
19
19
  # Canonical source: packages/shared/hooks/staleness-check.sh. Synced to each
20
- # consumer plugin by scripts/sync-staleness-check.sh (ADR-017); CI
20
+ # consumer plugin by scripts/sync-staleness-check.sh (shared-code-duplicated-into-per-package-lib-kept-in-sync-by-script-ci-drift-check-architecture-rule); CI
21
21
  # `npm run check:staleness-check` fails on drift.
22
22
 
23
23
  # Fail-open: any unexpected error → silent success, never block a turn.
@@ -56,7 +56,7 @@ HIGHEST="$(ls "$KEY_DIR" 2>/dev/null | grep -E '^[0-9]+\.[0-9]+\.[0-9]+$' | sort
56
56
  [ "$(printf '%s\n%s\n' "$SELF_VERSION" "$HIGHEST" | sort -V | tail -1)" = "$HIGHEST" ] || exit 0
57
57
 
58
58
  # Emit once per (session, key, detected-version): a version-keyed extension of
59
- # ADR-038's /tmp/${SYSTEM}-announced-${SESSION_ID} marker. A newer version
59
+ # progressive-disclosure-once-per-session-budget-for-userpromptsubmit-governance-prose-architecture-rule's /tmp/${SYSTEM}-announced-${SESSION_ID} marker. A newer version
60
60
  # detected mid-session yields a new marker key → re-emitted once. Empty
61
61
  # SESSION_ID (test/manual) → no marker written, no dedup.
62
62
  SESSION_ID="$(cat 2>/dev/null | jq -r '.session_id // empty' 2>/dev/null)"
@@ -0,0 +1,57 @@
1
+ {
2
+ "hooks": {
3
+ "SessionStart": [
4
+ {
5
+ "matcher": "startup",
6
+ "hooks": [
7
+ {
8
+ "type": "command",
9
+ "command": "${CLAUDE_PLUGIN_ROOT}/hooks/itil-codex-dispatch.sh session-start"
10
+ }
11
+ ]
12
+ }
13
+ ],
14
+ "UserPromptSubmit": [
15
+ {
16
+ "hooks": [
17
+ {
18
+ "type": "command",
19
+ "command": "${CLAUDE_PLUGIN_ROOT}/hooks/itil-codex-dispatch.sh user-prompt"
20
+ }
21
+ ]
22
+ }
23
+ ],
24
+ "PreToolUse": [
25
+ {
26
+ "matcher": "Bash|Write|Edit|Read|request_user_input|AskUserQuestion",
27
+ "hooks": [
28
+ {
29
+ "type": "command",
30
+ "command": "${CLAUDE_PLUGIN_ROOT}/hooks/itil-codex-dispatch.sh pre-tool"
31
+ }
32
+ ]
33
+ }
34
+ ],
35
+ "PostToolUse": [
36
+ {
37
+ "matcher": "Bash|Write|Edit",
38
+ "hooks": [
39
+ {
40
+ "type": "command",
41
+ "command": "${CLAUDE_PLUGIN_ROOT}/hooks/itil-codex-dispatch.sh post-tool"
42
+ }
43
+ ]
44
+ }
45
+ ],
46
+ "Stop": [
47
+ {
48
+ "hooks": [
49
+ {
50
+ "type": "command",
51
+ "command": "${CLAUDE_PLUGIN_ROOT}/hooks/itil-codex-dispatch.sh stop"
52
+ }
53
+ ]
54
+ }
55
+ ]
56
+ }
57
+ }
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env bash
2
2
  # Deferred-placeholder + README-cadence staleness check — Step 0c of
3
- # /wr-itil:work-problems (per P271).
3
+ # /wr-itil:work-problems (per wr-itil-review-problems-not-auto-fired-when-needed-user-has-to-remember-to-run-it-problem).
4
4
  #
5
- # P271 driver: /wr-itil:review-problems is the meta-workflow that re-rates
5
+ # wr-itil-review-problems-not-auto-fired-when-needed-user-has-to-remember-to-run-it-problem driver: /wr-itil:review-problems is the meta-workflow that re-rates
6
6
  # the deferred-placeholder (Priority + Effort) WSJF inputs that
7
7
  # /wr-itil:capture-problem leaves behind. Without an auto-fire trigger, the
8
8
  # placeholders accumulate silently across sessions — 76 → 83 on the
@@ -11,7 +11,7 @@
11
11
  # maintainer manually invokes review-problems.
12
12
  #
13
13
  # Trigger rule — TWO-AXIS AND (load-bearing per architect verdict on the
14
- # P271 fix shape, Condition 2). Both axes must hold; either alone over-fires:
14
+ # wr-itil-review-problems-not-auto-fired-when-needed-user-has-to-remember-to-run-it-problem fix shape, Condition 2). Both axes must hold; either alone over-fires:
15
15
  #
16
16
  # 1. count of deferred-placeholder tickets ≥ 3
17
17
  # Signal: there is work to re-rate. A backlog with <3 placeholders is
@@ -35,7 +35,7 @@
35
35
  # Any change to the threshold constants (3 placeholders, 7 days) MUST
36
36
  # update this helper, work-problems SKILL.md Step 0c, manage-problem
37
37
  # SKILL.md Step 0.5, and capture-problem SKILL.md Step 7 in the same
38
- # commit — drift here re-opens P271.
38
+ # commit — drift here re-opens wr-itil-review-problems-not-auto-fired-when-needed-user-has-to-remember-to-run-it-problem.
39
39
  #
40
40
  # Source this file, then call `should_promote_review_problems_dispatch`:
41
41
  # . packages/itil/lib/check-deferred-placeholder-staleness.sh
@@ -48,15 +48,15 @@
48
48
  # line 3; first-run dispatch
49
49
  # trigger.
50
50
  # fresh-readme count=<N> age=<X>s threshold=<Y>s → README age within window;
51
- # silent-pass per ADR-013
51
+ # silent-pass per structured-user-interaction-for-governance-skill-decisions-architecture-rule
52
52
  # Rule 5.
53
53
  # stale-readme count=<N> age=<X>s threshold=<Y>s → THE auto-dispatch
54
54
  # trigger; both axes met.
55
55
  #
56
- # Glob — DUAL-TOLERANT per ADR-031 RFC-002 migration window. Covers BOTH
56
+ # Glob — DUAL-TOLERANT per problem-ticket-directory-layout-per-state-subdirectories-under-docs-problems-architecture-rule docs-problems-flat-layout-migration-per-state-subdirs-adopter-auto-migration-release-design migration window. Covers BOTH
57
57
  # the flat `docs/problems/<NNN>-<title>.<state>.md` layout AND the per-state
58
58
  # subdir `docs/problems/<state>/<NNN>-<title>.md` layout. Closed and
59
- # verifying tickets are EXCLUDED — they carry no dev-work WSJF per ADR-022
59
+ # verifying tickets are EXCLUDED — they carry no dev-work WSJF per problem-lifecycle-add-a-verification-pending-status-between-known-error-and-closed-architecture-rule
60
60
  # and their deferred-placeholders are out-of-scope for re-rate.
61
61
  #
62
62
  # Dependencies: bash 4+, grep, awk, python3 (for date parsing — portable
@@ -71,7 +71,7 @@ should_promote_review_problems_dispatch() {
71
71
  local age_threshold_seconds=604800 # 7 days × 86400 seconds.
72
72
 
73
73
  # Axis 1 — count deferred-placeholder tickets across open + known-error
74
- # via dual-tolerant globs (RFC-002 migration window).
74
+ # via dual-tolerant globs (docs-problems-flat-layout-migration-per-state-subdirs-adopter-auto-migration-release-design migration window).
75
75
  local count=0
76
76
  local marker='deferred — re-rate at next /wr-itil:review-problems'
77
77
  local file
@@ -106,14 +106,14 @@ should_promote_review_problems_dispatch() {
106
106
  return 0
107
107
  fi
108
108
 
109
- # Read line 3 — the canonical "Last reviewed" surface per P134 + the
109
+ # Read line 3 — the canonical "Last reviewed" surface per docs-problems-readme-md-line-3-narrative-blob-accumulator-bloat-sibling-to-briefing-tier-3-on-a-different-surface-problem + the
110
110
  # SKILL.md contract. Use awk so the read survives BSD/GNU portability.
111
111
  local line3
112
112
  line3="$(awk 'NR==3' "$readme" 2>/dev/null || echo "")"
113
113
 
114
114
  # Parse the ISO date from the "Last reviewed: YYYY-MM-DD" prefix.
115
115
  # The line shape is `> Last reviewed: YYYY-MM-DD **<event>** — <summary>`
116
- # per the P134 inline rotation contract. A missing or malformed line is
116
+ # per the docs-problems-readme-md-line-3-narrative-blob-accumulator-bloat-sibling-to-briefing-tier-3-on-a-different-surface-problem inline rotation contract. A missing or malformed line is
117
117
  # treated as no-readme (defensive — forces a fresh dispatch rather than
118
118
  # silently silent-passing on malformed README state).
119
119
  local last_reviewed_date
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env bash
2
2
  # Outbound-responses cache staleness check — Step 0d of /wr-itil:work-problems.
3
- # P220 + ADR-062 § JTBD-006 driver: work-problems should pre-flight
3
+ # manage-problem-has-no-cadence-for-checking-upstream-bound-tickets-problem + inbound-upstream-report-discovery-assessment-pipeline-peer-of-architecture-rule § progress-the-backlog-while-i-m-away-user-outcome driver: work-problems should pre-flight
4
4
  # /wr-itil:check-upstream-responses when the outbound-responses cache is
5
5
  # stale or missing AND local tickets carry `## Reported Upstream` back-link
6
6
  # sections, so AFK loops keep upstream-reporter responses visible without
@@ -46,7 +46,7 @@ should_promote_outbound_responses_preflight() {
46
46
  fi
47
47
 
48
48
  # Scan for `## Reported Upstream` back-link sections. Dual-tolerant per
49
- # RFC-002: flat layout `<NNN>-*.<status>.md` AND per-state subdir layout
49
+ # docs-problems-flat-layout-migration-per-state-subdirs-adopter-auto-migration-release-design: flat layout `<NNN>-*.<status>.md` AND per-state subdir layout
50
50
  # `<status>/<NNN>-*.md`. Use grep -l (files-with-match); silent on
51
51
  # zero matches via the `|| true` short-circuit.
52
52
  local back_link_count
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env bash
2
2
  # Inbound-discovery cache staleness check — Step 0b of /wr-itil:work-problems.
3
- # ADR-062 § JTBD-006 driver: work-problems should pre-flight
3
+ # inbound-upstream-report-discovery-assessment-pipeline-peer-of-architecture-rule § progress-the-backlog-while-i-m-away-user-outcome driver: work-problems should pre-flight
4
4
  # /wr-itil:review-problems when the upstream inbound-discovery cache is stale
5
5
  # or missing, so AFK loops keep upstream-reported problems visible without
6
6
  # the maintainer remembering to invoke review-problems first.
@@ -19,7 +19,7 @@
19
19
  # Output (one of):
20
20
  # no-channels-config → channels-config absent; skip silently.
21
21
  # Downstream-adopter non-obligation per
22
- # ADR-062 § Downstream-adopter contract.
22
+ # inbound-upstream-report-discovery-assessment-pipeline-peer-of-architecture-rule § Downstream-adopter contract.
23
23
  # first-run-cache-absent → channels-config present, cache file absent.
24
24
  # Dispatch review-problems.
25
25
  # first-run-last-checked-null → cache present but last_checked is null.
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env bash
2
2
  # Shared derive-first dispatch helper — canonical source-of-truth.
3
3
  #
4
- # P132 Phase 2a-iii-A extracted this helper from three declaration-skill
4
+ # agents-over-ask-in-interactive-sessions-conflating-mechanical-stages-with-user-interactive-stages-of-multi-stage-skill-contracts-inverse-problem Phase 2a-iii-A extracted this helper from three declaration-skill
5
5
  # surfaces. Phase 2a-iii-B (2026-05-16) added wr-architect:create-adr as
6
6
  # the 4th adopter, which required moving the canonical source from
7
- # packages/itil/lib/ to packages/shared/ per ADR-017 (Shared code
7
+ # packages/itil/lib/ to packages/shared/ per shared-code-duplicated-into-per-package-lib-kept-in-sync-by-script-ci-drift-check-architecture-rule (Shared code
8
8
  # duplicated into per-package lib/ kept in sync by script + CI drift
9
9
  # check). The per-package lib/ copies are byte-identical to this file:
10
10
  #
@@ -19,15 +19,15 @@
19
19
  # - packages/itil/skills/capture-problem/SKILL.md Step 1.5
20
20
  # - packages/itil/skills/manage-incident/SKILL.md Step 4
21
21
  # - packages/itil/skills/manage-problem/SKILL.md Step 4
22
- # - packages/architect/skills/create-adr/SKILL.md Step 2 (P132 Phase 2a-iii-B)
22
+ # - packages/architect/skills/create-adr/SKILL.md Step 2 (agents-over-ask-in-interactive-sessions-conflating-mechanical-stages-with-user-interactive-stages-of-multi-stage-skill-contracts-inverse-problem Phase 2a-iii-B)
23
23
  #
24
24
  # Each caller passes surface-specific signal definitions; this helper
25
25
  # centralises the dispatch mechanism: slug derivation, two-sided lexical
26
26
  # classifier, RISK-POLICY matrix lookup, and the I2-isomorphic stderr
27
27
  # advisory format.
28
28
  #
29
- # <!-- DERIVE-FIRST-DISPATCH-CONTRACT-SOURCE: P132 Phase 2a-iii-A + Phase 2a-iii-B -->
30
- # Drift in the stderr advisory format here re-opens P132 — any change MUST
29
+ # <!-- DERIVE-FIRST-DISPATCH-CONTRACT-SOURCE: agents-over-ask-in-interactive-sessions-conflating-mechanical-stages-with-user-interactive-stages-of-multi-stage-skill-contracts-inverse-problem Phase 2a-iii-A + Phase 2a-iii-B -->
30
+ # Drift in the stderr advisory format here re-opens agents-over-ask-in-interactive-sessions-conflating-mechanical-stages-with-user-interactive-stages-of-multi-stage-skill-contracts-inverse-problem — any change MUST
31
31
  # update all four caller SKILL.md surfaces in the same commit.
32
32
  #
33
33
  # Usage (sourced):
@@ -39,7 +39,7 @@
39
39
  # risk_policy_matrix_lookup <text> <impact_high> <impact_mod> <impact_low>
40
40
  # <likelihood_high> <likelihood_med> <likelihood_low>
41
41
  #
42
- # RETIRED 2026-06-02 (P287): lexical_classify_two_sided was the two-sided
42
+ # RETIRED 2026-06-02 (remove-the-technical-user-business-type-classification-from-problems-redundant-with-rfc-story-persona-anchoring-amends-problem): lexical_classify_two_sided was the two-sided
43
43
  # binary classifier used exclusively by capture-problem Step 1.5 Type
44
44
  # classification (technical vs user-business). With the type axis retired
45
45
  # per twice-confirmed user direction, the function has no remaining
@@ -47,18 +47,18 @@
47
47
  # they serve manage-incident severity, manage-problem priority, and
48
48
  # create-adr title derivation.
49
49
  #
50
- # @adr ADR-002 (Monorepo per-plugin packages — architecture context for ADR-017)
51
- # @adr ADR-017 (Shared code duplicated into per-package lib/ kept in sync)
52
- # @adr ADR-044 (Decision-Delegation Contract — derive-first framework boundary)
53
- # @adr ADR-026 (cost-source grounding — stderr advisory)
54
- # @adr ADR-013 Rule 5 (policy-authorised silent proceed)
55
- # @adr ADR-052 (behavioural-by-default — tested via scripts/test/derive-first-dispatch.bats
50
+ # @adr monorepo-with-independently-installable-per-plugin-packages-architecture-rule (Monorepo per-plugin packages — architecture context for shared-code-duplicated-into-per-package-lib-kept-in-sync-by-script-ci-drift-check-architecture-rule)
51
+ # @adr shared-code-duplicated-into-per-package-lib-kept-in-sync-by-script-ci-drift-check-architecture-rule (Shared code duplicated into per-package lib/ kept in sync)
52
+ # @adr decision-delegation-contract-when-agents-act-on-the-framework-vs-ask-the-user-architecture-rule (Decision-Delegation Contract — derive-first framework boundary)
53
+ # @adr agent-output-grounding-no-fabricated-quantitative-estimates-cite-persist-uncertainty-architecture-rule (cost-source grounding — stderr advisory)
54
+ # @adr structured-user-interaction-for-governance-skill-decisions-architecture-rule Rule 5 (policy-authorised silent proceed)
55
+ # @adr behavioural-tests-default-for-skill-testing-architecture-rule (behavioural-by-default — tested via scripts/test/derive-first-dispatch.bats
56
56
  # and packages/shared/test/sync-derive-first-dispatch.bats)
57
- # @problem P132 (agents over-ask in interactive sessions — Phase 2a-iii-A shared helper +
57
+ # @problem agents-over-ask-in-interactive-sessions-conflating-mechanical-stages-with-user-interactive-stages-of-multi-stage-skill-contracts-inverse-problem (agents over-ask in interactive sessions — Phase 2a-iii-A shared helper +
58
58
  # Phase 2a-iii-B 4th-adopter migration to packages/shared/)
59
- # @problem P185 (capture-problem Step 1.5 worked-example precedent)
60
- # @jtbd JTBD-001 (enforce governance without slowing down — primary)
61
- # @jtbd JTBD-101 (extend the suite with consistent patterns)
59
+ # @problem wr-itil-capture-problem-asks-a-classification-question-technical-vs-user-business-that-it-can-answer-itself-from-the-description-s-observable-evidence-problem (capture-problem Step 1.5 worked-example precedent)
60
+ # @jtbd enforce-governance-without-slowing-down-user-outcome (enforce governance without slowing down — primary)
61
+ # @jtbd extend-the-suite-with-new-plugins-user-outcome (extend the suite with consistent patterns)
62
62
  #
63
63
  # NOT exporting `set -e` at file scope — callers source the helper and
64
64
  # expect functions that return AMBIGUOUS sentinels rather than errexit.
@@ -70,7 +70,7 @@
70
70
  #
71
71
  # This is the single source-of-truth for the advisory sentence shape
72
72
  # across all derive-first declaration-skill surfaces. The format is
73
- # load-bearing for cross-skill consistency — drift here re-opens P132.
73
+ # load-bearing for cross-skill consistency — drift here re-opens agents-over-ask-in-interactive-sessions-conflating-mechanical-stages-with-user-interactive-stages-of-multi-stage-skill-contracts-inverse-problem.
74
74
  # ---------------------------------------------------------------------------
75
75
  emit_stderr_advisory() {
76
76
  local skill="$1"
@@ -93,7 +93,7 @@ emit_stderr_advisory() {
93
93
  # - capture-problem Step 1.4 Title derivation
94
94
  # - manage-incident Step 4 Title derivation
95
95
  # - manage-problem Step 4 Title derivation
96
- # - create-adr Step 2 Title derivation (P132 Phase 2a-iii-B)
96
+ # - create-adr Step 2 Title derivation (agents-over-ask-in-interactive-sessions-conflating-mechanical-stages-with-user-interactive-stages-of-multi-stage-skill-contracts-inverse-problem Phase 2a-iii-B)
97
97
  # ---------------------------------------------------------------------------
98
98
  derive_kebab_slug() {
99
99
  local description="$1"
@@ -131,7 +131,7 @@ derive_kebab_slug() {
131
131
  # AMBIGUOUS|<reason>
132
132
  # Multi-band hit (signals point to conflicting cells) OR zero hit
133
133
  # (no mappable signal). Caller fires AskUserQuestion as the
134
- # genuine ADR-044 category-5 (taste) fallback surface.
134
+ # genuine decision-delegation-contract-when-agents-act-on-the-framework-vs-ask-the-user-architecture-rule category-5 (taste) fallback surface.
135
135
  #
136
136
  # Band-to-numeric mapping (preserves RISK-POLICY.md Impact / Likelihood
137
137
  # Levels table):
@@ -1,22 +1,22 @@
1
1
  #!/usr/bin/env bash
2
2
  # Enumerate Known Error problem tickets whose Release-vehicle citation
3
3
  # points at a just-shipped changeset — input to the work-problems
4
- # Step 6.5 Post-release K→V auto-transition callback (P228).
4
+ # Step 6.5 Post-release K→V auto-transition callback (known-error-md-verifying-md-transition-not-happening-consistently-at-release-time-problem).
5
5
  #
6
- # Driver: ADR-022 prescribes K→V transition on release, but until P228
6
+ # Driver: problem-lifecycle-add-a-verification-pending-status-between-known-error-and-closed-architecture-rule prescribes K→V transition on release, but until known-error-md-verifying-md-transition-not-happening-consistently-at-release-time-problem
7
7
  # there was no auto-fire surface to back-fill the transition once a fix
8
8
  # ships. Iter subprocesses defer K→V to "the next session" citing a
9
- # misapplied P143 amendment, and tickets accumulate in
9
+ # misapplied release-watch-sh-race-condition-gh-pr-list-queries-before-changesets-action-github-workflow-has-created-the-release-pr-problem amendment, and tickets accumulate in
10
10
  # `docs/problems/known-error/` with `## Fix Released` populated but no
11
- # transition. The 2026-06-08 P220 empirical witness confirmed the gap.
11
+ # transition. The 2026-06-08 manage-problem-has-no-cadence-for-checking-upstream-bound-tickets-problem empirical witness confirmed the gap.
12
12
  #
13
- # Composes with `wr-itil-derive-release-vehicle` (P267) — the derive
13
+ # Composes with `wr-itil-derive-release-vehicle` (codify-derive-release-vehicle-sh-helper-for-k-v-release-cycle-citation-problem) — the derive
14
14
  # helper's exit-code contract is the filter:
15
15
  # exit 0 → changeset has been deleted from the working tree AND has a
16
16
  # deletion commit in git history (released to npm). Emit as
17
17
  # KV_CANDIDATE.
18
18
  # exit 2 → no `.changeset/<name>.md` reference in ticket body
19
- # (legacy ticket pre-P330). Skip silently.
19
+ # (legacy ticket pre-derive-release-vehicle-helper-requires-pre-edit-of-ticket-changeset-reference-three-touch-when-one-touch-would-suffice-problem). Skip silently.
20
20
  # exit 3 → changeset still present in working tree (unreleased).
21
21
  # Skip silently.
22
22
  # other → log to stderr, skip.
@@ -35,22 +35,22 @@
35
35
  # empty or absent). Stderr carries non-fatal warnings.
36
36
  #
37
37
  # Glob — targets `docs/problems/known-error/*.md` directly (per-state
38
- # subdir layout per ADR-031). Flat-layout tickets are NOT in scope — the
38
+ # subdir layout per problem-ticket-directory-layout-per-state-subdirectories-under-docs-problems-architecture-rule). Flat-layout tickets are NOT in scope — the
39
39
  # adopter has already migrated when this callback fires (work-problems
40
40
  # Step 0a auto-migrate runs before Step 6.5).
41
41
  #
42
42
  # Cross-references:
43
- # @problem P228 (K→V auto-transition gap)
44
- # @problem P220 (empirical witness)
45
- # @problem P267 (derive-release-vehicle composed helper)
46
- # @problem P330 (Release vehicle seed reference — input signal)
47
- # @adr ADR-022 (Verifying lifecycle)
48
- # @adr ADR-018 (release-cadence host of the callback)
49
- # @adr ADR-031 (per-state subdir layout — glob target)
50
- # @adr ADR-049 (bin/ PATH shim — adopter-safe script resolution)
51
- # @adr ADR-005 (behavioural bats per P081)
52
- # @jtbd JTBD-006 (Progress the Backlog While I'm Away — primary driver)
53
- # @jtbd JTBD-001 (Enforce Governance Without Slowing Down — audit trail)
43
+ # @problem known-error-md-verifying-md-transition-not-happening-consistently-at-release-time-problem (K→V auto-transition gap)
44
+ # @problem manage-problem-has-no-cadence-for-checking-upstream-bound-tickets-problem (empirical witness)
45
+ # @problem codify-derive-release-vehicle-sh-helper-for-k-v-release-cycle-citation-problem (derive-release-vehicle composed helper)
46
+ # @problem derive-release-vehicle-helper-requires-pre-edit-of-ticket-changeset-reference-three-touch-when-one-touch-would-suffice-problem (Release vehicle seed reference — input signal)
47
+ # @adr problem-lifecycle-add-a-verification-pending-status-between-known-error-and-closed-architecture-rule (Verifying lifecycle)
48
+ # @adr inter-iteration-release-cadence-for-afk-loops-architecture-rule (release-cadence host of the callback)
49
+ # @adr problem-ticket-directory-layout-per-state-subdirectories-under-docs-problems-architecture-rule (per-state subdir layout — glob target)
50
+ # @adr plugin-bundled-scripts-invoked-from-skill-md-resolve-via-bin-on-path-architecture-rule (bin/ PATH shim — adopter-safe script resolution)
51
+ # @adr plugin-testing-strategy-architecture-rule (behavioural bats per problem-081-structural-source-content-tests-are-wasteful-tdd-agent-should-reject-them-and-require-behavioural-tests-framework-stub-enhancements-problem)
52
+ # @jtbd progress-the-backlog-while-i-m-away-user-outcome (Progress the Backlog While I'm Away — primary driver)
53
+ # @jtbd enforce-governance-without-slowing-down-user-outcome (Enforce Governance Without Slowing Down — audit trail)
54
54
 
55
55
  enumerate_postrelease_kv_candidates() {
56
56
  local problems_dir="${1:-docs/problems}"