@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,12 +1,12 @@
1
1
  #!/bin/bash
2
- # P141: shared changeset-discipline detection helper.
2
+ # afk-iter-packages-plugin-commits-without-changesets-orchestrator-main-turn-back-fill-is-fragile-recovery-hook-level-enforcement-preferable-problem: shared changeset-discipline detection helper.
3
3
  #
4
4
  # `detect_changeset_required` returns 0 (no change required — allow) /
5
5
  # 1 (changeset required but not staged — caller should deny). On 1, the
6
6
  # offending plugin slug is echoed on stdout so callers can name it in
7
7
  # deny messages without re-parsing diff output.
8
8
  #
9
- # Trap shape (P141):
9
+ # Trap shape (afk-iter-packages-plugin-commits-without-changesets-orchestrator-main-turn-back-fill-is-fragile-recovery-hook-level-enforcement-preferable-problem):
10
10
  # `/wr-itil:work-problems` AFK iter subprocesses receive prompt-time
11
11
  # guidance to author a `.changeset/*.md` whenever they ship a
12
12
  # `packages/<plugin>/` change. Under context pressure (heavy SKILL.md
@@ -26,7 +26,7 @@
26
26
  # - allow-list: `README.md`.
27
27
  # - allow-list: `docs/<anything>.md` (per architect verdict
28
28
  # 2026-05-02 — `*.md` under `docs/` only; SKILL.md is the
29
- # publishable contract per ADR-037 framing and is NOT in
29
+ # publishable contract per skill-testing-strategy-contract-assertion-bats-companion-to-architecture-rule framing and is NOT in
30
30
  # the allow-list).
31
31
  # - otherwise: publishable source — record the slug.
32
32
  # * any other path: ignored (non-publishable surface — `.github/`,
@@ -44,8 +44,8 @@
44
44
  # is required.
45
45
  # * Neither check satisfied → return 1 + echo the slug.
46
46
  #
47
- # Phase 2 rationale (P141 2026-05-31): AFK orchestrator iters that
48
- # ship a multi-commit slice for one plugin (e.g. P346 Phase 3 across
47
+ # Phase 2 rationale (afk-iter-packages-plugin-commits-without-changesets-orchestrator-main-turn-back-fill-is-fragile-recovery-hook-level-enforcement-preferable-problem 2026-05-31): AFK orchestrator iters that
48
+ # ship a multi-commit slice for one plugin (e.g. wr-itil-review-problems-has-no-path-to-close-tickets-that-are-no-longer-relevant-evidence-based-not-age-based-structural-outflow-gap-drives-monotonic-backlog-growth-problem Phase 3 across
49
49
  # 4 commits, 2 of which touched `packages/itil/`) should not author N
50
50
  # redundant changesets for one logical bump. changesets-action
51
51
  # collapses bump-class at version-package time, so per-commit
@@ -72,32 +72,32 @@
72
72
  # Cost: one `git diff` invocation per check (~10ms on this repo's
73
73
  # working tree). Per-invocation deterministic — runs on every
74
74
  # `git commit` invocation rather than relying on per-tool-call
75
- # session state tracking. Mirrors the P125 `staging-detect.sh`
75
+ # session state tracking. Mirrors the staging-trap-recurs-despite-documentation-hook-level-enforcement-candidate-problem `staging-detect.sh`
76
76
  # precedent (architect-approved no-marker design).
77
77
  #
78
78
  # References:
79
- # ADR-005 — plugin testing strategy (hook bats live under
80
- # `hooks/test/` per P081 behavioural-test discipline).
81
- # ADR-013 Rule 1 — deny redirects with mechanical recovery (the deny
79
+ # plugin-testing-strategy-architecture-rule — plugin testing strategy (hook bats live under
80
+ # `hooks/test/` per problem-081-structural-source-content-tests-are-wasteful-tdd-agent-should-reject-them-and-require-behavioural-tests-framework-stub-enhancements-problem behavioural-test discipline).
81
+ # structured-user-interaction-for-governance-skill-decisions-architecture-rule Rule 1 — deny redirects with mechanical recovery (the deny
82
82
  # text names the plugin slug + the literal `bun run
83
83
  # changeset` command + the BYPASS env var override).
84
- # ADR-014 — governance skills commit their own work (this hook
84
+ # governance-skills-commit-their-own-completed-work-architecture-rule — governance skills commit their own work (this hook
85
85
  # ensures iter commits stay self-contained per
86
- # ADR-014 single-commit grain).
87
- # ADR-018 — inter-iteration release cadence (this hook strengthens
86
+ # governance-skills-commit-their-own-completed-work-architecture-rule single-commit grain).
87
+ # inter-iteration-release-cadence-for-afk-loops-architecture-rule — inter-iteration release cadence (this hook strengthens
88
88
  # the cadence by ensuring every publishable iter has a
89
89
  # changeset to drain at release time).
90
- # ADR-038 — progressive disclosure / deny-message terseness.
91
- # ADR-045 — hook injection budget (Pattern 1 silent-on-pass; deny
90
+ # progressive-disclosure-once-per-session-budget-for-userpromptsubmit-governance-prose-architecture-rule — progressive disclosure / deny-message terseness.
91
+ # hook-injection-budget-policy-for-pretooluse-and-posttooluse-hooks-architecture-rule — hook injection budget (Pattern 1 silent-on-pass; deny
92
92
  # band ≤300 bytes for this hook).
93
- # P073 — sibling changeset author-time gate (different surface:
93
+ # problem-073-no-voice-and-tone-check-or-risk-assessment-on-changeset-bodies-which-populate-changelog-md-release-prs-github-releases-and-npm-release-notes-problem — sibling changeset author-time gate (different surface:
94
94
  # Write/Edit on `.changeset/*.md`). Composes-with as
95
95
  # defence-in-depth.
96
- # P125 — sibling staging-trap helper (same enforcement-layer
96
+ # staging-trap-recurs-despite-documentation-hook-level-enforcement-candidate-problem — sibling staging-trap helper (same enforcement-layer
97
97
  # shape — per-invocation deterministic, no markers).
98
- # P141 — this helper.
98
+ # afk-iter-packages-plugin-commits-without-changesets-orchestrator-main-turn-back-fill-is-fragile-recovery-hook-level-enforcement-preferable-problem — this helper.
99
99
 
100
- # P141 Phase 2 helper — does any `.changeset/*.md` ALREADY in scope target the plugin
100
+ # afk-iter-packages-plugin-commits-without-changesets-orchestrator-main-turn-back-fill-is-fragile-recovery-hook-level-enforcement-preferable-problem Phase 2 helper — does any `.changeset/*.md` ALREADY in scope target the plugin
101
101
  # slug via its YAML frontmatter `"@windyroad/<slug>": <bump>` line?
102
102
  #
103
103
  # Scope = files reachable from HEAD but not from `origin/<base>`,
@@ -170,7 +170,7 @@ EOF
170
170
  return 0
171
171
  }
172
172
 
173
- # P387 helper — echo the space-separated, upper-cased, de-duplicated set of
173
+ # changeset-discipline-check-2b-is-plugin-scoped-not-change-scoped-plugin-source-commits-ship-undocumented-when-a-sibling-changeset-already-targets-the-plugin-problem helper — echo the space-separated, upper-cased, de-duplicated set of
174
174
  # work-item IDs found in the text passed as $1. Work-item identity = problem
175
175
  # ticket (`P<NNN>`), RFC (`RFC-<NNN>`), or story (`STORY-<NNN>`). ADR refs are
176
176
  # deliberately excluded — an ADR is cross-cutting context cited in passing, not
@@ -193,9 +193,9 @@ _work_item_ids() {
193
193
  # not satisfied by either staged Check 2a or in-scope Check 2b.
194
194
  #
195
195
  # $1 (optional) — the git-commit COMMAND string (or commit message). Its
196
- # work-item ID(s) are matched against in-scope changesets for the P387
196
+ # work-item ID(s) are matched against in-scope changesets for the changeset-discipline-check-2b-is-plugin-scoped-not-change-scoped-plugin-source-commits-ship-undocumented-when-a-sibling-changeset-already-targets-the-plugin-problem
197
197
  # change-scoped Check 2b. Empty / omitted → Check 2b falls back to the
198
- # pre-P387 plugin-scoped behaviour (any covering changeset allows), which
198
+ # pre-changeset-discipline-check-2b-is-plugin-scoped-not-change-scoped-plugin-source-commits-ship-undocumented-when-a-sibling-changeset-already-targets-the-plugin-problem plugin-scoped behaviour (any covering changeset allows), which
199
199
  # is the conservative choice when no commit context is available.
200
200
  #
201
201
  # Echoes the offending plugin slug on stdout when detected.
@@ -284,27 +284,27 @@ EOF
284
284
  return 0
285
285
  fi
286
286
 
287
- # Check 2b (P141 Phase 2 + P387 change-scoped) — an in-scope changeset
287
+ # Check 2b (afk-iter-packages-plugin-commits-without-changesets-orchestrator-main-turn-back-fill-is-fragile-recovery-hook-level-enforcement-preferable-problem Phase 2 + changeset-discipline-check-2b-is-plugin-scoped-not-change-scoped-plugin-source-commits-ship-undocumented-when-a-sibling-changeset-already-targets-the-plugin-problem change-scoped) — an in-scope changeset
288
288
  # targeting the plugin satisfies, but only when it is change-scoped to
289
289
  # THIS commit. Scope = unpushed-range commits + untracked + modified-
290
290
  # not-staged working-tree files. Once consumed onto origin, the changeset
291
291
  # is gone and a fresh one is required.
292
292
  local covering
293
293
  if covering=$(_changeset_in_scope_covers_plugin "$plugin_source_slug"); then
294
- # P387: tighten plugin-scoped → change-scoped. A plugin can carry a
295
- # changeset for an unrelated change; before P387 that wrongly covered
294
+ # changeset-discipline-check-2b-is-plugin-scoped-not-change-scoped-plugin-source-commits-ship-undocumented-when-a-sibling-changeset-already-targets-the-plugin-problem: tighten plugin-scoped → change-scoped. A plugin can carry a
295
+ # changeset for an unrelated change; before changeset-discipline-check-2b-is-plugin-scoped-not-change-scoped-plugin-source-commits-ship-undocumented-when-a-sibling-changeset-already-targets-the-plugin-problem that wrongly covered
296
296
  # THIS commit, shipping it to npm with no CHANGELOG record of its own
297
- # (witnessed: P164's fix rode P374's changeset). Deny only on positive
297
+ # (witnessed: latent-octal-eval-bug-in-next-id-formula-across-all-4-ticket-creator-skills-local-max-1-fails-with-value-too-great-for-base-when-local-max-reaches-099-problem's fix rode extract-risks-from-reports-sh-hardcodes-windy-road-agent-plugins-suite-branding-in-the-adopter-generated-docs-risks-readme-md-problem's changeset). Deny only on positive
298
298
  # evidence the covering changeset(s) belong to a DIFFERENT change: the
299
299
  # commit cites work-item ID(s), EVERY covering changeset cites work-item
300
300
  # ID(s), and none overlap. Any ambiguity allows — a ticket-less commit,
301
- # a prose-only changeset, or an ID overlap — so the ADR-014 batch-grain
301
+ # a prose-only changeset, or an ID overlap — so the governance-skills-commit-their-own-completed-work-architecture-rule batch-grain
302
302
  # (same-slice commits share a ticket) and prose-only / adopter changesets
303
303
  # are never over-fired.
304
304
  local commit_ids cs_path cs_ids id has_idless=0 overlap=0
305
305
  commit_ids=$(_work_item_ids "$commit_msg")
306
306
 
307
- # Commit cites no work-item ID → cannot change-scope; allow (pre-P387).
307
+ # Commit cites no work-item ID → cannot change-scope; allow (pre-changeset-discipline-check-2b-is-plugin-scoped-not-change-scoped-plugin-source-commits-ship-undocumented-when-a-sibling-changeset-already-targets-the-plugin-problem).
308
308
  [ -n "$commit_ids" ] || return 0
309
309
 
310
310
  while IFS= read -r cs_path; do
@@ -1,5 +1,5 @@
1
1
  #!/bin/bash
2
- # Shared gate logic for `.claude/` user-space write protection (P131).
2
+ # Shared gate logic for `.claude/` user-space write protection (agents-write-project-generated-artefacts-under-claude-user-controlled-config-space-gate-exclusions-are-read-tolerance-not-write-permission-problem).
3
3
  #
4
4
  # Sourced by itil-claude-space-protection.sh. Provides:
5
5
  # is_protected_claude_path — returns 0 if path is project-scoped `.claude/`
@@ -14,12 +14,12 @@
14
14
  # This gate enforces a PERSISTENT "user pre-approved this specific path"
15
15
  # marker — different lifecycle (no TTL, no drift, never auto-cleared) and
16
16
  # different scope (file-path-keyed, not session-keyed). Architect verdict
17
- # (P131 Phase 2): keep semantically distinct from existing gate libraries.
17
+ # (agents-write-project-generated-artefacts-under-claude-user-controlled-config-space-gate-exclusions-are-read-tolerance-not-write-permission-problem Phase 2): keep semantically distinct from existing gate libraries.
18
18
  #
19
19
  # Marker convention: `.claude/.agent-write-approved-<sha256-of-rel-path>`
20
20
  # where `<sha256-of-rel-path>` is the SHA-256 hex of the path relative to
21
21
  # project root (PWD). Persistent, in-tree, file-existence test — same
22
- # shape as ADR-030 / P120 `.claude/.install-updates-consent` precedent.
22
+ # shape as repo-local-skills-for-project-specific-workflow-tooling-architecture-rule / install-updates-consent-gate-fires-on-every-invocation-despite-the-answer-being-invariably-all-confirmed-siblings-problem `.claude/.install-updates-consent` precedent.
23
23
  #
24
24
  # Allow-list scope: paths under `.claude/` that are user-controlled by
25
25
  # convention (Claude Code config, user-authored extensions, system state):
@@ -30,18 +30,18 @@
30
30
  # - .agent-write-approved-* markers themselves (so user can create them)
31
31
  #
32
32
  # References:
33
- # ADR-009 — gate marker lifecycle (this gate adds a NEW persistent
33
+ # gate-marker-lifecycle-ttl-drift-not-stop-hook-reset-architecture-rule — gate marker lifecycle (this gate adds a NEW persistent
34
34
  # marker class; the ADR's session-scoped /tmp markers are
35
35
  # unchanged)
36
- # ADR-013 Rule 6 — non-interactive fail-safe (parse-error => exit 0)
37
- # ADR-030 — install-updates persistent in-tree consent marker precedent
38
- # ADR-038 — progressive disclosure (deny message <500 bytes)
39
- # ADR-045 — hook injection budget (Pattern 1 silent-on-pass; allow path
36
+ # structured-user-interaction-for-governance-skill-decisions-architecture-rule Rule 6 — non-interactive fail-safe (parse-error => exit 0)
37
+ # repo-local-skills-for-project-specific-workflow-tooling-architecture-rule — install-updates persistent in-tree consent marker precedent
38
+ # progressive-disclosure-once-per-session-budget-for-userpromptsubmit-governance-prose-architecture-rule — progressive disclosure (deny message <500 bytes)
39
+ # hook-injection-budget-policy-for-pretooluse-and-posttooluse-hooks-architecture-rule — hook injection budget (Pattern 1 silent-on-pass; allow path
40
40
  # emits zero bytes)
41
- # P119 — manage-problem-enforce-create.sh precedent for itil
41
+ # agent-bypasses-wr-itil-manage-problem-step-2-duplicate-check-by-writing-tickets-directly-to-docs-problems-problem — manage-problem-enforce-create.sh precedent for itil
42
42
  # PreToolUse:Write enforcement hook shape
43
- # P120 — install-updates consent-marker persistence precedent
44
- # P131 — this gate's driver
43
+ # install-updates-consent-gate-fires-on-every-invocation-despite-the-answer-being-invariably-all-confirmed-siblings-problem — install-updates consent-marker persistence precedent
44
+ # agents-write-project-generated-artefacts-under-claude-user-controlled-config-space-gate-exclusions-are-read-tolerance-not-write-permission-problem — this gate's driver
45
45
 
46
46
  # Returns 0 (true) if FILE_PATH is a project-scoped .claude/ path AND is
47
47
  # NOT in the user-space allow-list. Returns 1 (false) otherwise.
@@ -79,9 +79,9 @@ is_protected_claude_path() {
79
79
  # Strip leading ./ if present
80
80
  rel_path="${rel_path#./}"
81
81
 
82
- # Must be under .claude/ at project-relative root depth.
82
+ # Must be under a runtime config directory at project-relative root depth.
83
83
  case "$rel_path" in
84
- .claude/*) ;;
84
+ .claude/*|.codex/*) ;;
85
85
  *) return 1 ;;
86
86
  esac
87
87
 
@@ -114,6 +114,13 @@ is_protected_claude_path() {
114
114
  # Claude Code's own state: projects/<id>/memory/, worktrees/
115
115
  .claude/projects/*) return 1 ;;
116
116
  .claude/worktrees/*) return 1 ;;
117
+ # Codex runtime configuration and generated runtime surfaces.
118
+ .codex/config.toml) return 1 ;;
119
+ .codex/AGENTS.md) return 1 ;;
120
+ .codex/hooks.json) return 1 ;;
121
+ .codex/agents/*) return 1 ;;
122
+ .codex/skills/*) return 1 ;;
123
+ .codex/.agent-write-approved-*) return 1 ;;
117
124
  esac
118
125
 
119
126
  # Project-scoped .claude/ path NOT on the allow-list — protected.
@@ -156,11 +163,12 @@ has_approval_marker() {
156
163
  fi
157
164
 
158
165
  [ -n "$hash" ] || return 1
159
- [ -f "${pwd_root}/.claude/.agent-write-approved-${hash}" ]
166
+ local config_dir="${rel_path%%/*}"
167
+ [ -f "${pwd_root}/${config_dir}/.agent-write-approved-${hash}" ]
160
168
  }
161
169
 
162
170
  # Emit fail-closed PreToolUse deny JSON. Reason should be terse (<500
163
- # bytes per ADR-038). Hook callers compose the basename + reason inline.
171
+ # bytes per progressive-disclosure-once-per-session-budget-for-userpromptsubmit-governance-prose-architecture-rule). Hook callers compose the basename + reason inline.
164
172
  #
165
173
  # Usage: claude_space_deny "BLOCKED: <reason>"
166
174
  claude_space_deny() {
@@ -1,5 +1,5 @@
1
1
  #!/bin/bash
2
- # P268: shared command-detection helper for PreToolUse:Bash hooks
2
+ # hook-substring-matches-git-commit-anywhere-in-bash-command-not-just-actual-git-commit-invocations-problem: shared command-detection helper for PreToolUse:Bash hooks
3
3
  # that need to distinguish ACTUAL `git commit` invocations from Bash
4
4
  # commands that merely MENTION the literal phrase "git commit" in
5
5
  # argument vectors or heredoc bodies (grep patterns, sed patterns,
@@ -14,11 +14,11 @@
14
14
  #
15
15
  # that 5 sibling PreToolUse:Bash hooks previously used to gate on
16
16
  # `git commit`. The substring match misfired on legitimate non-commit
17
- # Bash whose arguments contained the phrase (P268 ticket Description
17
+ # Bash whose arguments contained the phrase (hook-substring-matches-git-commit-anywhere-in-bash-command-not-just-actual-git-commit-invocations-problem ticket Description
18
18
  # — observed iter-1 retro write and orchestrator grep, ≥3 events per
19
19
  # session).
20
20
  #
21
- # Strategy (Fix shape B per P268 ticket):
21
+ # Strategy (Fix shape B per hook-substring-matches-git-commit-anywhere-in-bash-command-not-just-actual-git-commit-invocations-problem ticket):
22
22
  # 1. Strip leading whitespace from the candidate command string.
23
23
  # 2. Iteratively strip env-var-assignment prefixes (`VAR=value `,
24
24
  # `VAR="..." `, `VAR='...' `) and a `cd <path> &&` prefix until
@@ -28,7 +28,7 @@
28
28
  # string. The end-of-token boundary check stops `git commit-tree`
29
29
  # and similar `git commit-*` plumbing commands from matching.
30
30
  #
31
- # Scope deliberately narrow (per P268 ticket Description recommended
31
+ # Scope deliberately narrow (per hook-substring-matches-git-commit-anywhere-in-bash-command-not-just-actual-git-commit-invocations-problem ticket Description recommended
32
32
  # Fix shape B): handles only the prefix shapes the orchestrator and
33
33
  # capture/manage/work skills actually emit — direct `git commit`,
34
34
  # `cd && git commit`, `VAR=value git commit`. Does NOT split on
@@ -46,20 +46,20 @@
46
46
  # `lib/readme-refresh-detect.sh` echoes the offending ticket path).
47
47
  #
48
48
  # References:
49
- # ADR-005 — plugin testing strategy (this helper's bats live at
49
+ # plugin-testing-strategy-architecture-rule — plugin testing strategy (this helper's bats live at
50
50
  # `packages/itil/hooks/test/command-detect.bats` per
51
51
  # behavioural-test discipline).
52
- # ADR-009 — gate marker lifecycle (helper is per-invocation, no
52
+ # gate-marker-lifecycle-ttl-drift-not-stop-hook-reset-architecture-rule — gate marker lifecycle (helper is per-invocation, no
53
53
  # marker state — same precedent as `lib/staging-detect.sh`,
54
54
  # `lib/changeset-detect.sh`, `lib/readme-refresh-detect.sh`).
55
- # ADR-045 — hook injection budget (silent-on-pass / silent-on-fail
55
+ # hook-injection-budget-policy-for-pretooluse-and-posttooluse-hooks-architecture-rule — hook injection budget (silent-on-pass / silent-on-fail
56
56
  # — pure exit-code contract).
57
- # P125 — sibling staging-trap hook (candidate for follow-up
57
+ # staging-trap-recurs-despite-documentation-hook-level-enforcement-candidate-problem — sibling staging-trap hook (candidate for follow-up
58
58
  # refactor to use this helper).
59
- # P141 — sibling changeset-discipline hook (candidate).
60
- # P165 — sibling README-refresh-discipline hook (first consumer
61
- # under P268).
62
- # P268 — this helper's surfacing ticket.
59
+ # afk-iter-packages-plugin-commits-without-changesets-orchestrator-main-turn-back-fill-is-fragile-recovery-hook-level-enforcement-preferable-problem — sibling changeset-discipline hook (candidate).
60
+ # readme-refresh-enforcement-gap-iter-subprocess-commits-can-land-a-verifying-md-rename-without-staging-the-corresponding-verification-queue-row-in-docs-problems-readme-md-problem — sibling README-refresh-discipline hook (first consumer
61
+ # under hook-substring-matches-git-commit-anywhere-in-bash-command-not-just-actual-git-commit-invocations-problem).
62
+ # hook-substring-matches-git-commit-anywhere-in-bash-command-not-just-actual-git-commit-invocations-problem — this helper's surfacing ticket.
63
63
 
64
64
  # Returns 0 if $1 is a Bash command that invokes `git commit`.
65
65
  # Returns 1 otherwise (including commands that merely mention the
@@ -1,5 +1,5 @@
1
1
  #!/bin/bash
2
- # Shared gate logic for new-ticket creation enforcement (P119).
2
+ # Shared gate logic for new-ticket creation enforcement (agent-bypasses-wr-itil-manage-problem-step-2-duplicate-check-by-writing-tickets-directly-to-docs-problems-problem).
3
3
  #
4
4
  # Sourced by manage-problem-enforce-create.sh. Provides:
5
5
  # check_create_gate — returns 0 if Step 2 marker present (allow), 1 if absent (deny)
@@ -12,7 +12,7 @@
12
12
  # marker; mismatch invalidates the gate). The Step-2 grep marker has
13
13
  # different semantics — it records "this session has run the duplicate
14
14
  # check at least once" — and has neither a policy file nor drift-relevant
15
- # state. Per architect approval (P119): keep review-gate.sh untouched and
15
+ # state. Per architect approval (agent-bypasses-wr-itil-manage-problem-step-2-duplicate-check-by-writing-tickets-directly-to-docs-problems-problem): keep review-gate.sh untouched and
16
16
  # add a sibling helper rather than overload review-gate semantics.
17
17
  #
18
18
  # Marker convention: /tmp/manage-problem-grep-${SESSION_ID}
@@ -23,9 +23,9 @@
23
23
  # scope would block split-create after the first Write.
24
24
  #
25
25
  # References:
26
- # ADR-009 — gate marker lifecycle (covers session-scoped /tmp markers).
27
- # ADR-038 — progressive disclosure (deny message stays terse + actionable).
28
- # ADR-013 Rule 1 — deny redirects to /wr-itil:manage-problem where
26
+ # gate-marker-lifecycle-ttl-drift-not-stop-hook-reset-architecture-rule — gate marker lifecycle (covers session-scoped /tmp markers).
27
+ # progressive-disclosure-once-per-session-budget-for-userpromptsubmit-governance-prose-architecture-rule — progressive disclosure (deny message stays terse + actionable).
28
+ # structured-user-interaction-for-governance-skill-decisions-architecture-rule Rule 1 — deny redirects to /wr-itil:manage-problem where
29
29
  # Step 2 fires AskUserQuestion if duplicates exist.
30
30
  #
31
31
  # Empty SESSION_ID fallback: returns 1 (no marker) — fail-closed by
@@ -52,19 +52,19 @@ mark_step2_complete() {
52
52
  : > "/tmp/manage-problem-grep-${SESSION_ID}"
53
53
  }
54
54
 
55
- # P260 / ADR-050 Option C: write the Step 2 grep marker under EVERY
55
+ # create-gate-marker-race-between-concurrent-claude-sessions-via-shared-runtime-sid-file-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 Option C: write the Step 2 grep marker under EVERY
56
56
  # candidate SID read from stdin (one UUID per line, as emitted by
57
57
  # `get_candidate_session_ids` in lib/session-id.sh).
58
58
  #
59
59
  # Under concurrent orchestrator+subprocess sessions in the same project,
60
60
  # the per-machine runtime-sid marker is last-writer-wins, so agent-side
61
61
  # code cannot reliably PREDICT which single SID the create-gate hook will
62
- # read from the Write's stdin (ADR-050 §Context). Marking under every recent
62
+ # read from the Write's stdin (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 §Context). Marking under every recent
63
63
  # candidate guarantees a matching marker exists whichever SID the hook reads,
64
- # eliminating the P260 marker-mismatch deny without a process-topology
64
+ # eliminating the create-gate-marker-race-between-concurrent-claude-sessions-via-shared-runtime-sid-file-problem marker-mismatch deny without a process-topology
65
65
  # assumption. The candidate set is bounded to recent announce markers + the
66
66
  # runtime-sid value by `get_candidate_session_ids` (NOT a global fail-open —
67
- # the P119 audit invariant holds: each marker still records that THIS session
67
+ # the agent-bypasses-wr-itil-manage-problem-step-2-duplicate-check-by-writing-tickets-directly-to-docs-problems-problem audit invariant holds: each marker still records that THIS session
68
68
  # ran the duplicate-check grep).
69
69
  #
70
70
  # Reuses the unchanged single-SID `mark_step2_complete` per candidate (same
@@ -85,36 +85,6 @@ mark_step2_complete_candidates() {
85
85
  [ "$count" -gt 0 ]
86
86
  }
87
87
 
88
- # Returns 0 if the RFC capture-step marker exists for SESSION_ID; 1 otherwise.
89
- # Empty SESSION_ID => returns 1 (no marker).
90
- #
91
- # Sibling marker per architect verdict on capture-rfc sub-decision (a) —
92
- # preserves audit-trail per-surface granularity (problem-tier vs RFC-tier
93
- # capture). Marker name: /tmp/wr-itil-rfc-capture-grep-${SESSION_ID}.
94
- #
95
- # Usage: if check_rfc_capture_gate "$SESSION_ID"; then exit 0; fi
96
- check_rfc_capture_gate() {
97
- local SESSION_ID="$1"
98
- [ -n "$SESSION_ID" ] || return 1
99
- [ -f "/tmp/wr-itil-rfc-capture-grep-${SESSION_ID}" ]
100
- }
101
-
102
- # Writes the RFC capture-step marker for SESSION_ID. Empty SESSION_ID => no-op.
103
- # Idempotent — safe to call more than once per session.
104
- #
105
- # Per ADR-060 + capture-rfc Step 2: the marker records that capture-rfc has
106
- # run its problem-trace validation pass (the RFC-tier analogue of the
107
- # manage-problem Step 2 duplicate-grep). Per-session scope so a single
108
- # capture-rfc invocation may write multiple RFC files (e.g. multi-problem
109
- # trace splits) without re-validating.
110
- #
111
- # Usage: mark_rfc_capture_complete "$SESSION_ID"
112
- mark_rfc_capture_complete() {
113
- local SESSION_ID="$1"
114
- [ -n "$SESSION_ID" ] || return 0
115
- : > "/tmp/wr-itil-rfc-capture-grep-${SESSION_ID}"
116
- }
117
-
118
88
  # Emit fail-closed deny JSON for PreToolUse hooks.
119
89
  # Usage: create_gate_deny "BLOCKED: <reason>"
120
90
  create_gate_deny() {
@@ -1,18 +1,18 @@
1
1
  #!/bin/bash
2
- # P085 detector registry: assistant-output-gate + assistant-output-review.
2
+ # problem-085-assistant-asks-for-input-when-the-next-step-is-obvious-and-uses-prose-asks-instead-of-askuserquestion-when-input-is-actually-needed-problem detector registry: assistant-output-gate + assistant-output-review.
3
3
  #
4
4
  # Two detection functions sharing a single library so the UserPromptSubmit
5
5
  # pre-generation reminder (gate) and the Stop post-hoc review use the
6
6
  # same canonical phrasing list — one place to update when a new prose-ask
7
7
  # pattern lands.
8
8
  #
9
- # Composition: this registry is the shape P078 (correction->ticket) and
9
+ # Composition: this registry is the shape problem-078-assistant-does-not-offer-to-capture-a-problem-ticket-when-the-user-delivers-strong-signal-correction-problem (correction->ticket) and
10
10
  # future itil assistant-output validators extend. Each detector is a
11
11
  # pure function — takes text on stdin or as $1, exits 0 on match,
12
12
  # non-zero on no-match.
13
13
 
14
14
  # Canonical prose-ask phrasings — the patterns that should be emitted
15
- # via AskUserQuestion instead. Extracted from P085 ticket + memory
15
+ # via AskUserQuestion instead. Extracted from problem-085-assistant-asks-for-input-when-the-next-step-is-obvious-and-uses-prose-asks-instead-of-askuserquestion-when-input-is-actually-needed-problem ticket + memory
16
16
  # feedback_act_on_obvious_decisions.md.
17
17
  #
18
18
  # Case-insensitive, anchored to word boundaries where meaningful.
@@ -57,12 +57,12 @@ DIRECTION_PIN_PATTERNS=(
57
57
 
58
58
  # Correction-signal patterns — strong-affect correction signals in
59
59
  # the user's incoming prompt that should trigger an offer to capture
60
- # a problem ticket for the underlying behavioural pattern (P078).
61
- # Extracted from feedback_capture_on_correction.md and the P078 ticket
60
+ # a problem ticket for the underlying behavioural pattern (problem-078-assistant-does-not-offer-to-capture-a-problem-ticket-when-the-user-delivers-strong-signal-correction-problem).
61
+ # Extracted from feedback_capture_on_correction.md and the problem-078-assistant-does-not-offer-to-capture-a-problem-ticket-when-the-user-delivers-strong-signal-correction-problem ticket
62
62
  # Root Cause Analysis "missing trigger" vocabulary.
63
63
  #
64
64
  # Case-insensitive (grep -Eqi). False-positive budget is accepted per
65
- # P078 Investigation Tasks (a user message quoting the vocabulary in
65
+ # problem-078-assistant-does-not-offer-to-capture-a-problem-ticket-when-the-user-delivers-strong-signal-correction-problem Investigation Tasks (a user message quoting the vocabulary in
66
66
  # non-correction context will fire — minor over-report traded for
67
67
  # signal reliability).
68
68
  CORRECTION_SIGNAL_PATTERNS=(
@@ -79,22 +79,22 @@ CORRECTION_SIGNAL_PATTERNS=(
79
79
  '\bno\b.*\bwrong\b'
80
80
  )
81
81
 
82
- # P403: mechanical-step-framed-as-user-optional detection. When a skill
82
+ # agent-frames-skill-mandatory-mechanical-steps-as-user-optional-problem: mechanical-step-framed-as-user-optional detection. When a skill
83
83
  # contract mandates a mechanical step (review-problems Step 7 auto-release,
84
84
  # a full re-rank, etc.), the agent must not re-surface the step as a user
85
85
  # decision — or as a budget-caution skip — in end-of-turn prose. That
86
- # reintroduces the exact friction the mechanical-stage carve-out (P132 /
87
- # ADR-044 category 4 silent-framework) was engineered to remove.
86
+ # reintroduces the exact friction the mechanical-stage carve-out (agents-over-ask-in-interactive-sessions-conflating-mechanical-stages-with-user-interactive-stages-of-multi-stage-skill-contracts-inverse-problem /
87
+ # decision-delegation-contract-when-agents-act-on-the-framework-vs-ask-the-user-architecture-rule category 4 silent-framework) was engineered to remove.
88
88
  #
89
89
  # The detector fires only when ALL THREE co-occur in the turn text: a
90
90
  # step-skip verb, a step / mechanical-pass reference, AND an
91
91
  # offloaded-justification closer. The three-way AND is the anti-over-fire
92
- # guard (inverse-P078 / P132): a legitimately user-owned decision, or a
92
+ # guard (inverse-problem-078-assistant-does-not-offer-to-capture-a-problem-ticket-when-the-user-delivers-strong-signal-correction-problem / agents-over-ask-in-interactive-sessions-conflating-mechanical-stages-with-user-interactive-stages-of-multi-stage-skill-contracts-inverse-problem): a legitimately user-owned decision, or a
93
93
  # skipped step reported with a substantive reason, does not fire. Same
94
94
  # accepted false-positive posture as CORRECTION_SIGNAL_PATTERNS above — a
95
95
  # rare over-fire costs only a non-blocking next-turn nudge.
96
96
  #
97
- # Case-insensitive (grep -Eqi). grep matches per line; the two P403
97
+ # Case-insensitive (grep -Eqi). grep matches per line; the two agent-frames-skill-mandatory-mechanical-steps-as-user-optional-problem
98
98
  # evidence phrasings are single-line, so per-line matching is sufficient.
99
99
 
100
100
  # 1. Step-skip verbs — the step was not run.
@@ -196,7 +196,7 @@ detect_direction_pin() {
196
196
  }
197
197
 
198
198
  # detect_correction_signal: scans text on stdin for strong-affect
199
- # correction signals (P078). Exits 0 if any pattern matches, 1
199
+ # correction signals (problem-078-assistant-does-not-offer-to-capture-a-problem-ticket-when-the-user-delivers-strong-signal-correction-problem). Exits 0 if any pattern matches, 1
200
200
  # otherwise. Writes the first matched phrase to stdout for
201
201
  # observability in the hook's systemMessage.
202
202
  #