@windyroad/itil 1.2.0 → 2.0.0-preview.1111
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/plugins/marketplace.json +12 -0
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +42 -0
- package/README.md +34 -25
- package/agents/hang-off-check.md +34 -34
- package/bin/install.mjs +71 -5
- package/bin/wr-itil-catchup-scan +4 -4
- package/bin/wr-itil-check-deferred-placeholder-staleness +4 -4
- package/bin/wr-itil-check-fail-soft-skip-discipline +4 -4
- package/bin/wr-itil-check-fix-rfc-trace +4 -4
- package/bin/wr-itil-check-locale-discipline +4 -4
- package/bin/wr-itil-check-outbound-responses-staleness +4 -4
- package/bin/wr-itil-check-problems-readme-budget +4 -4
- package/bin/wr-itil-check-rfc-has-stories +4 -4
- package/bin/wr-itil-check-rfc-stories-ratified +4 -4
- package/bin/wr-itil-check-ticket-jtbd-ratification +4 -4
- package/bin/wr-itil-check-upstream-cache-staleness +4 -4
- package/bin/wr-itil-check-upstream-responses +4 -4
- package/bin/wr-itil-classify-readme-drift +4 -4
- package/bin/wr-itil-derive-release-vehicle +4 -4
- package/bin/wr-itil-detect-unratified-stories-maps +4 -4
- package/bin/wr-itil-effort-tally +4 -4
- package/bin/wr-itil-enumerate-postrelease-kv-candidates +4 -4
- package/bin/wr-itil-evaluate-relevance +4 -4
- package/bin/wr-itil-mark-create-gate +4 -4
- package/bin/wr-itil-mark-story-oversight-confirmed +4 -4
- package/bin/wr-itil-migrate-problems-layout +4 -4
- package/bin/wr-itil-migrate-story-status-mirror +4 -4
- package/bin/wr-itil-next-rfc-id +4 -4
- package/bin/wr-itil-plugin-exercise-index +4 -4
- package/bin/wr-itil-plugin-maturity-populate +4 -4
- package/bin/wr-itil-plugin-maturity-render +4 -4
- package/bin/wr-itil-plugin-validate-ci-gate +4 -4
- package/bin/wr-itil-reconcile-readme +4 -4
- package/bin/wr-itil-reconcile-rfcs +4 -4
- package/bin/wr-itil-reconcile-stories +4 -4
- package/bin/wr-itil-reconcile-story-maps +4 -4
- package/bin/wr-itil-render-story-map +4 -4
- package/bin/wr-itil-resolve-governance-plugin-dirs +4 -4
- package/bin/wr-itil-skill-invocations +4 -4
- package/bin/wr-itil-story-map-edit +4 -4
- package/bin/wr-itil-story-map-query +4 -4
- package/bin/wr-itil-update-jtbd-references-section +4 -4
- package/bin/wr-itil-update-problem-references-section +4 -4
- package/bin/wr-itil-update-problem-rfcs-section +4 -4
- package/bin/wr-itil-update-rfc-commits-section +4 -4
- package/bin/wr-itil-update-rfc-references-section +4 -4
- package/bin/wr-itil-verify-iter-summary +4 -4
- package/hooks/itil-assistant-output-gate.sh +3 -3
- package/hooks/itil-assistant-output-review.sh +5 -5
- package/hooks/itil-bash-polling-antipattern-detect.sh +11 -11
- package/hooks/itil-changeset-discipline.sh +24 -24
- package/hooks/itil-claude-space-protection.sh +21 -14
- package/hooks/itil-codex-dispatch.sh +164 -0
- package/hooks/itil-commit-trailer-transition-advisory.sh +11 -11
- package/hooks/itil-correction-detect.sh +8 -8
- package/hooks/itil-deferral-cadence-gate.sh +23 -23
- package/hooks/itil-fictional-defer-detect.sh +16 -16
- package/hooks/itil-fix-title-lifecycle-advisory.sh +11 -11
- package/hooks/itil-mid-loop-ask-detect.sh +14 -14
- package/hooks/itil-no-implement-draft-gate.sh +18 -18
- package/hooks/itil-pending-questions-surface.sh +11 -11
- package/hooks/itil-readme-refresh-discipline.sh +27 -27
- package/hooks/itil-rfc-oversight-nudge.sh +7 -7
- package/hooks/itil-rfc-trailer-advisory.sh +28 -28
- package/hooks/itil-runtime-sid-marker.sh +11 -11
- package/hooks/itil-story-mirror-migration-nudge.sh +7 -7
- package/hooks/lib/block-list.sh +17 -17
- package/hooks/lib/changeset-detect.sh +27 -27
- package/hooks/lib/claude-space-gate.sh +23 -15
- package/hooks/lib/command-detect.sh +12 -12
- package/hooks/lib/create-gate.sh +9 -39
- package/hooks/lib/detectors.sh +12 -12
- package/hooks/lib/readme-refresh-detect.sh +51 -51
- package/hooks/lib/runtime-sid.sh +12 -12
- package/hooks/lib/session-id.sh +28 -28
- package/hooks/lib/session-marker.sh +1 -1
- package/hooks/lib/staging-detect.sh +13 -13
- package/hooks/manage-problem-enforce-create.sh +16 -27
- package/hooks/p057-staging-trap-detect.sh +18 -18
- package/hooks/pre-publish-intake-gate.sh +5 -5
- package/hooks/staleness-check.sh +6 -6
- package/hooks-codex/hooks.json +57 -0
- package/lib/check-deferred-placeholder-staleness.sh +10 -10
- package/lib/check-outbound-responses-staleness.sh +2 -2
- package/lib/check-upstream-cache-staleness.sh +2 -2
- package/lib/derive-first-dispatch.sh +19 -19
- package/lib/enumerate-postrelease-kv-candidates.sh +18 -18
- package/lib/migrate-problems-layout.sh +12 -12
- package/lib/story-oversight.sh +27 -27
- package/package.json +16 -3
- package/scripts/catchup-scan.sh +25 -25
- package/scripts/check-fail-soft-skip-discipline.sh +10 -10
- package/scripts/check-fix-rfc-trace.sh +8 -8
- package/scripts/check-locale-discipline.sh +13 -13
- package/scripts/check-problems-readme-budget.sh +12 -12
- package/scripts/check-rfc-has-stories.sh +7 -7
- package/scripts/check-rfc-rejected-alternatives.sh +11 -11
- package/scripts/check-rfc-stories-ratified.sh +9 -9
- package/scripts/check-ticket-jtbd-ratification.sh +10 -10
- package/scripts/check-upstream-responses.sh +22 -22
- package/scripts/classify-readme-drift.sh +13 -13
- package/scripts/codex-agent.mjs +104 -0
- package/scripts/derive-release-vehicle.sh +23 -23
- package/scripts/detect-unoversighted-rfcs.sh +3 -3
- package/scripts/detect-unratified-stories-maps.sh +5 -5
- package/scripts/effort-tally.sh +10 -10
- package/scripts/evaluate-relevance.sh +16 -16
- package/scripts/mark-create-gate.sh +4 -4
- package/scripts/mark-story-oversight-confirmed.sh +14 -14
- package/scripts/migrate-story-status-mirror.sh +6 -6
- package/scripts/next-rfc-id.sh +5 -5
- package/scripts/plugin-exercise-index.sh +26 -26
- package/scripts/plugin-maturity-populate.sh +38 -38
- package/scripts/plugin-maturity-render.sh +26 -26
- package/scripts/plugin-validate-ci-gate.sh +14 -14
- package/scripts/reconcile-readme.sh +23 -23
- package/scripts/reconcile-rfcs.sh +13 -13
- package/scripts/reconcile-stories.sh +12 -12
- package/scripts/reconcile-story-maps.sh +6 -6
- package/scripts/render-story-map.mjs +24 -24
- package/scripts/render-story-map.sh +3 -3
- package/scripts/resolve-governance-plugin-dirs.sh +10 -10
- package/scripts/run-check-deferred-placeholder-staleness.sh +3 -3
- package/scripts/run-check-outbound-responses-staleness.sh +3 -3
- package/scripts/run-check-upstream-cache-staleness.sh +3 -3
- package/scripts/run-enumerate-postrelease-kv-candidates.sh +3 -3
- package/scripts/run-migrate-problems-layout.sh +3 -3
- package/scripts/skill-invocations.sh +29 -29
- package/scripts/story-map-edit.mjs +6 -6
- package/scripts/story-map-edit.sh +3 -3
- package/scripts/story-map-query.mjs +8 -8
- package/scripts/story-map-query.sh +3 -3
- package/scripts/update-jtbd-references-section.sh +8 -8
- package/scripts/update-problem-references-section.sh +12 -12
- package/scripts/update-problem-rfcs-section.sh +9 -9
- package/scripts/update-rfc-commits-section.sh +7 -7
- package/scripts/update-rfc-references-section.sh +3 -3
- package/scripts/update-story-references-section.sh +5 -5
- package/scripts/verify-iter-summary.sh +3 -3
- package/skills/capture-problem/REFERENCE.md +33 -33
- package/skills/capture-problem/SKILL.md +108 -108
- package/skills/capture-problem/agents/openai.yaml +3 -0
- package/skills/capture-rfc/SKILL.md +21 -323
- package/skills/capture-rfc/agents/openai.yaml +3 -0
- package/skills/capture-story/SKILL.md +65 -65
- package/skills/capture-story/agents/openai.yaml +3 -0
- package/skills/capture-story-map/SKILL.md +31 -31
- package/skills/capture-story-map/agents/openai.yaml +3 -0
- package/skills/check-upstream-responses/SKILL.md +38 -38
- package/skills/check-upstream-responses/agents/openai.yaml +3 -0
- package/skills/close-incident/SKILL.md +25 -25
- package/skills/close-incident/agents/openai.yaml +3 -0
- package/skills/link-incident/SKILL.md +22 -22
- package/skills/link-incident/agents/openai.yaml +3 -0
- package/skills/list-incidents/SKILL.md +9 -9
- package/skills/list-incidents/agents/openai.yaml +3 -0
- package/skills/list-problems/SKILL.md +17 -17
- package/skills/list-problems/agents/openai.yaml +3 -0
- package/skills/list-stories/SKILL.md +23 -23
- package/skills/list-stories/agents/openai.yaml +3 -0
- package/skills/list-story-maps/SKILL.md +9 -9
- package/skills/list-story-maps/agents/openai.yaml +3 -0
- package/skills/manage-incident/SKILL.md +59 -59
- package/skills/manage-incident/agents/openai.yaml +3 -0
- package/skills/manage-problem/SKILL.md +222 -222
- package/skills/manage-problem/agents/openai.yaml +3 -0
- package/skills/manage-rfc/SKILL.md +62 -62
- package/skills/manage-rfc/agents/openai.yaml +3 -0
- package/skills/manage-story/SKILL.md +49 -49
- package/skills/manage-story/agents/openai.yaml +3 -0
- package/skills/manage-story-map/SKILL.md +30 -30
- package/skills/manage-story-map/agents/openai.yaml +3 -0
- package/skills/mitigate-incident/SKILL.md +40 -40
- package/skills/mitigate-incident/agents/openai.yaml +3 -0
- package/skills/reconcile-readme/SKILL.md +28 -28
- package/skills/reconcile-readme/agents/openai.yaml +3 -0
- package/skills/reconcile-stories/SKILL.md +17 -17
- package/skills/reconcile-stories/agents/openai.yaml +3 -0
- package/skills/reconcile-story-maps/SKILL.md +11 -11
- package/skills/reconcile-story-maps/agents/openai.yaml +3 -0
- package/skills/report-upstream/SKILL.md +73 -73
- package/skills/report-upstream/agents/openai.yaml +3 -0
- package/skills/restore-incident/SKILL.md +28 -28
- package/skills/restore-incident/agents/openai.yaml +3 -0
- package/skills/review-problems/SKILL.md +129 -129
- package/skills/review-problems/agents/openai.yaml +3 -0
- package/skills/scaffold-intake/SKILL.md +26 -26
- package/skills/scaffold-intake/agents/openai.yaml +3 -0
- package/skills/transition-problem/SKILL.md +85 -85
- package/skills/transition-problem/agents/openai.yaml +3 -0
- package/skills/transition-problems/SKILL.md +69 -69
- package/skills/transition-problems/agents/openai.yaml +3 -0
- package/skills/update-upstream/SKILL.md +97 -97
- package/skills/update-upstream/agents/openai.yaml +3 -0
- package/skills/work-problem/SKILL.md +42 -42
- package/skills/work-problem/agents/openai.yaml +3 -0
- package/skills/work-problems/SKILL.md +327 -327
- package/skills/work-problems/agents/openai.yaml +3 -0
- package/skills-codex/capture-problem/REFERENCE.md +139 -0
- package/skills-codex/capture-problem/SKILL.md +438 -0
- package/skills-codex/capture-problem/agents/openai.yaml +3 -0
- package/skills-codex/capture-rfc/SKILL.md +45 -0
- package/skills-codex/capture-rfc/agents/openai.yaml +3 -0
- package/skills-codex/capture-story/SKILL.md +407 -0
- package/skills-codex/capture-story/agents/openai.yaml +3 -0
- package/skills-codex/capture-story-map/SKILL.md +286 -0
- package/skills-codex/capture-story-map/agents/openai.yaml +3 -0
- package/skills-codex/check-upstream-responses/SKILL.md +160 -0
- package/skills-codex/check-upstream-responses/agents/openai.yaml +3 -0
- package/skills-codex/close-incident/SKILL.md +192 -0
- package/skills-codex/close-incident/agents/openai.yaml +3 -0
- package/skills-codex/link-incident/SKILL.md +173 -0
- package/skills-codex/link-incident/agents/openai.yaml +3 -0
- package/skills-codex/list-incidents/SKILL.md +92 -0
- package/skills-codex/list-incidents/agents/openai.yaml +3 -0
- package/skills-codex/list-problems/SKILL.md +126 -0
- package/skills-codex/list-problems/agents/openai.yaml +3 -0
- package/skills-codex/list-stories/SKILL.md +170 -0
- package/skills-codex/list-stories/agents/openai.yaml +3 -0
- package/skills-codex/list-story-maps/SKILL.md +104 -0
- package/skills-codex/list-story-maps/agents/openai.yaml +3 -0
- package/skills-codex/manage-incident/SKILL.md +378 -0
- package/skills-codex/manage-incident/agents/openai.yaml +3 -0
- package/skills-codex/manage-problem/SKILL.md +1180 -0
- package/skills-codex/manage-problem/agents/openai.yaml +3 -0
- package/skills-codex/manage-rfc/SKILL.md +314 -0
- package/skills-codex/manage-rfc/agents/openai.yaml +3 -0
- package/skills-codex/manage-story/SKILL.md +284 -0
- package/skills-codex/manage-story/agents/openai.yaml +3 -0
- package/skills-codex/manage-story-map/SKILL.md +198 -0
- package/skills-codex/manage-story-map/agents/openai.yaml +3 -0
- package/skills-codex/mitigate-incident/SKILL.md +239 -0
- package/skills-codex/mitigate-incident/agents/openai.yaml +3 -0
- package/skills-codex/reconcile-readme/SKILL.md +175 -0
- package/skills-codex/reconcile-readme/agents/openai.yaml +3 -0
- package/skills-codex/reconcile-stories/SKILL.md +124 -0
- package/skills-codex/reconcile-stories/agents/openai.yaml +3 -0
- package/skills-codex/reconcile-story-maps/SKILL.md +81 -0
- package/skills-codex/reconcile-story-maps/agents/openai.yaml +3 -0
- package/skills-codex/report-upstream/SKILL.md +716 -0
- package/skills-codex/report-upstream/agents/openai.yaml +3 -0
- package/skills-codex/restore-incident/SKILL.md +216 -0
- package/skills-codex/restore-incident/agents/openai.yaml +3 -0
- package/skills-codex/review-problems/SKILL.md +524 -0
- package/skills-codex/review-problems/agents/openai.yaml +3 -0
- package/skills-codex/scaffold-intake/SKILL.md +209 -0
- package/skills-codex/scaffold-intake/agents/openai.yaml +3 -0
- package/skills-codex/scaffold-intake/templates/CONTRIBUTING.md.tmpl +31 -0
- package/skills-codex/scaffold-intake/templates/SECURITY.md.tmpl +39 -0
- package/skills-codex/scaffold-intake/templates/SUPPORT.md.tmpl +32 -0
- package/skills-codex/scaffold-intake/templates/config.yml.tmpl +8 -0
- package/skills-codex/scaffold-intake/templates/problem-report.yml.tmpl +114 -0
- package/skills-codex/transition-problem/SKILL.md +371 -0
- package/skills-codex/transition-problem/agents/openai.yaml +3 -0
- package/skills-codex/transition-problems/SKILL.md +310 -0
- package/skills-codex/transition-problems/agents/openai.yaml +3 -0
- package/skills-codex/update-upstream/SKILL.md +583 -0
- package/skills-codex/update-upstream/agents/openai.yaml +3 -0
- package/skills-codex/work-problem/SKILL.md +160 -0
- package/skills-codex/work-problem/agents/openai.yaml +3 -0
- package/skills-codex/work-problems/SKILL.md +58 -0
- package/skills-codex/work-problems/agents/openai.yaml +3 -0
- package/templates/story-map.css +1 -1
- package/bin/wr-itil-mark-rfc-capture-gate +0 -51
- package/scripts/mark-rfc-capture-gate.sh +0 -32
|
@@ -1,20 +1,16 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
|
-
#
|
|
3
|
-
#
|
|
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
|
-
#
|
|
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.
|
|
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
|
-
#
|
|
40
|
-
#
|
|
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
|
-
#
|
|
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
|
-
#
|
|
45
|
-
#
|
|
46
|
-
#
|
|
47
|
-
#
|
|
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
|
-
#
|
|
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`
|
|
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. (
|
|
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
|
-
|
|
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
|
-
#
|
|
3
|
-
# would land in the
|
|
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
|
|
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`.
|
|
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
|
-
#
|
|
32
|
-
#
|
|
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
|
-
#
|
|
35
|
-
#
|
|
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
|
-
#
|
|
39
|
-
#
|
|
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
|
-
#
|
|
42
|
-
#
|
|
43
|
-
#
|
|
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
|
-
#
|
|
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`.
|
|
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;
|
|
92
|
-
# budget. Keeps the rule cite (
|
|
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:
|
|
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 (
|
|
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
|
|
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
|
-
# (
|
|
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 (
|
|
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 (
|
|
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}
|
package/hooks/staleness-check.sh
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
|
-
# Plugin-staleness surfacer — UserPromptSubmit hook (
|
|
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 —
|
|
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
|
|
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
|
|
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 (
|
|
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
|
-
#
|
|
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
|
|
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
|
-
#
|
|
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
|
-
#
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 (
|
|
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
|
|
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
|
|
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
|
-
#
|
|
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
|
-
#
|
|
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
|
-
#
|
|
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
|
-
#
|
|
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
|
-
#
|
|
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
|
|
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 (
|
|
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:
|
|
30
|
-
# Drift in the stderr advisory format here re-opens
|
|
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 (
|
|
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
|
|
51
|
-
# @adr
|
|
52
|
-
# @adr
|
|
53
|
-
# @adr
|
|
54
|
-
# @adr
|
|
55
|
-
# @adr
|
|
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
|
|
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
|
|
60
|
-
# @jtbd
|
|
61
|
-
# @jtbd
|
|
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
|
|
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 (
|
|
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
|
|
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 (
|
|
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:
|
|
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
|
|
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
|
|
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` (
|
|
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-
|
|
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
|
|
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
|
|
44
|
-
# @problem
|
|
45
|
-
# @problem
|
|
46
|
-
# @problem
|
|
47
|
-
# @adr
|
|
48
|
-
# @adr
|
|
49
|
-
# @adr
|
|
50
|
-
# @adr
|
|
51
|
-
# @adr
|
|
52
|
-
# @jtbd
|
|
53
|
-
# @jtbd
|
|
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}"
|