@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,29 +1,29 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: wr-itil:check-upstream-responses
|
|
3
|
-
description: Poll upstream issues and pull requests we've filed via `/wr-itil:report-upstream` and surface new comments or reviews, state changes, or label changes since last check. Reads `## Reported Upstream` back-link sections in local problem tickets, queries GitHub read-only, diffs against `docs/problems/.outbound-responses-cache.json`, and appends an audit-log entry to `docs/audits/outbound-responses-log.md`. Outbound symmetric counterpart to
|
|
3
|
+
description: Poll upstream issues and pull requests we've filed via `/wr-itil:report-upstream` and surface new comments or reviews, state changes, or label changes since last check. Reads `## Reported Upstream` back-link sections in local problem tickets, queries GitHub read-only, diffs against `docs/problems/.outbound-responses-cache.json`, and appends an audit-log entry to `docs/audits/outbound-responses-log.md`. Outbound symmetric counterpart to the "Inbound upstream-report discovery + assessment pipeline (peer of )" architecture rule's inbound discovery pipeline (the "No process for issue reporters to check for responses — symmetric gap to inbound discovery" problem Phase 1).
|
|
4
4
|
allowed-tools: Read, Edit, Write, Bash, Glob, Grep
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Check Upstream Responses — Outbound Response-Check Skill
|
|
8
8
|
|
|
9
|
-
Poll the upstream issues we have filed via `/wr-itil:report-upstream` and surface new responses (comments, state changes, label changes) since the last check. This skill closes the outbound half of the feedback loop that
|
|
9
|
+
Poll the upstream issues we have filed via `/wr-itil:report-upstream` and surface new responses (comments, state changes, label changes) since the last check. This skill closes the outbound half of the feedback loop that the "Inbound upstream-report discovery + assessment pipeline (peer of )" architecture rule's inbound assessment pipeline opens — together they form the bidirectional cross-repo coordination surface the ": Connect Agents Across Repos to Collaborate" user outcome names.
|
|
10
10
|
|
|
11
|
-
This is **Phase 1** of
|
|
11
|
+
This is **Phase 1** of the "No process for issue reporters to check for responses — symmetric gap to inbound discovery" problem. Phase 1 covers the **us-as-upstream-reporter** half (we polling our own filed-upstream reports). Phase 2 — the external-reporter-as-our-reporter half (plugin users polling responses to reports they filed against this repo) — is deferred to a separate iter.
|
|
12
12
|
|
|
13
13
|
## Scope
|
|
14
14
|
|
|
15
15
|
In scope:
|
|
16
|
-
- Scan `docs/problems/**/*.md` for `## Reported Upstream` back-link sections (the contract section written by `/wr-itil:report-upstream` Step 7 — see [
|
|
17
|
-
- For each ticket with a back-link, extract the `- **URL**:` line and poll the upstream artefact. Read the `- **Disclosure path**:` line to pick the subcommand: any pull-request path uses `gh pr view` plus a read-only `gh api` call for inline review comments; anything else, **including an absent line**, uses `gh issue view`. Absent means a ticket written before
|
|
18
|
-
- Diff against `docs/problems/.outbound-responses-cache.json` (cache file mirroring the inbound `.upstream-cache.json` shape per
|
|
16
|
+
- Scan `docs/problems/**/*.md` for `## Reported Upstream` back-link sections (the contract section written by `/wr-itil:report-upstream` Step 7 — see [the "Cross-project problem-reporting contract — `report-upstream` skill in `@windyroad/itil`" architecture rule](../../../../docs/decisions/024-cross-project-problem-reporting-contract.proposed.md) Step 7).
|
|
17
|
+
- For each ticket with a back-link, extract the `- **URL**:` line and poll the upstream artefact. Read the `- **Disclosure path**:` line to pick the subcommand: any pull-request path uses `gh pr view` plus a read-only `gh api` call for inline review comments; anything else, **including an absent line**, uses `gh issue view`. Absent means a ticket written before the "Prefer an upstream pull request over an issue when the upstream accepts pull requests" architecture rule, which could only have been filed as a public issue — so it is read as an issue, with no probe.
|
|
18
|
+
- Diff against `docs/problems/.outbound-responses-cache.json` (cache file mirroring the inbound `.upstream-cache.json` shape per the "Problem-ticket directory layout — per-state subdirectories under `docs/problems/`" architecture rule § "Cache files live under docs/problems/").
|
|
19
19
|
- Surface five response classes: NEW (new comments, reviews, or other upstream activity), STATE (state change), LABEL (label change), NONE (no change), FAIL (gh poll error).
|
|
20
20
|
- Update the cache file with the latest seen state.
|
|
21
|
-
- Append a timestamped pass entry to `docs/audits/outbound-responses-log.md` (audit-log mirroring `docs/audits/inbound-discovery-log.md` per
|
|
21
|
+
- Append a timestamped pass entry to `docs/audits/outbound-responses-log.md` (audit-log mirroring `docs/audits/inbound-discovery-log.md` per the "Inbound upstream-report discovery + assessment pipeline (peer of )" architecture rule's audit-log surface contract).
|
|
22
22
|
|
|
23
23
|
Out of scope:
|
|
24
|
-
- Posting comments back to the upstream issue or pull request. The skill is **read-only externally** — does not trip
|
|
25
|
-
- Auto-transitioning local ticket lifecycle based on upstream state change (that is
|
|
26
|
-
- Polling against the inbound-discovery channels (`docs/problems/.upstream-channels.json`). That is the inverse axis, owned by `/wr-itil:review-problems` Step 4.5 per
|
|
24
|
+
- Posting comments back to the upstream issue or pull request. The skill is **read-only externally** — does not trip the "External-comms gate — voice-tone + risk/leak evaluators on shared PreToolUse surface" architecture rule's external-comms gate.
|
|
25
|
+
- Auto-transitioning local ticket lifecycle based on upstream state change (that is the "Problem 080: No bidirectional update of upstream-reported problems — local lifecycle transitions never propagate back to the reporter" problem's bidirectional update axis, separate).
|
|
26
|
+
- Polling against the inbound-discovery channels (`docs/problems/.upstream-channels.json`). That is the inverse axis, owned by `/wr-itil:review-problems` Step 4.5 per the "Inbound upstream-report discovery + assessment pipeline (peer of )" architecture rule.
|
|
27
27
|
- Phase 2 external-reporter-as-our-reporter surface (deferred).
|
|
28
28
|
|
|
29
29
|
## Invocation
|
|
@@ -37,14 +37,14 @@ Out of scope:
|
|
|
37
37
|
[--force-recheck] ignore cache; treat all as new
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
-
`/wr-itil:work-problems` Step 0d pre-flights this skill when the outbound-responses cache is stale or missing AND back-link tickets exist (sibling to Step 0b inbound cache check per
|
|
40
|
+
`/wr-itil:work-problems` Step 0d pre-flights this skill when the outbound-responses cache is stale or missing AND back-link tickets exist (sibling to Step 0b inbound cache check per the "Inbound upstream-report discovery + assessment pipeline (peer of )" architecture rule Confirmation #5; the "manage-problem has no cadence for checking upstream-bound tickets" problem closed the cadence gap). Direct user invocation remains a first-class surface.
|
|
41
41
|
|
|
42
42
|
## AFK behaviour
|
|
43
43
|
|
|
44
44
|
This skill is **AFK-safe by construction**:
|
|
45
45
|
|
|
46
|
-
- Read-only `gh issue view`, `gh pr view`, and pull-request review-comment `gh api` calls — none fires
|
|
47
|
-
- No `AskUserQuestion` calls — five flag-based knobs (`--problems-dir`, `--cache-file`, `--audit-log`, `--ticket`, `--force-recheck`) are the user-direction surface per CLAUDE.md `act on obvious, AskUserQuestion for ambiguous, NEVER prose-ask` (
|
|
46
|
+
- Read-only `gh issue view`, `gh pr view`, and pull-request review-comment `gh api` calls — none fires the "External-comms gate — voice-tone + risk/leak evaluators on shared PreToolUse surface" architecture rule's external-comms gate.
|
|
47
|
+
- No `AskUserQuestion` calls — five flag-based knobs (`--problems-dir`, `--cache-file`, `--audit-log`, `--ticket`, `--force-recheck`) are the user-direction surface per CLAUDE.md `act on obvious, AskUserQuestion for ambiguous, NEVER prose-ask` (the "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).
|
|
48
48
|
- Partial-failure exit code (2) lets AFK orchestrators distinguish "some upstream URLs were unreachable" from "everything broke" without halting the loop.
|
|
49
49
|
|
|
50
50
|
## Steps
|
|
@@ -57,11 +57,11 @@ Invoke the helper:
|
|
|
57
57
|
wr-itil-check-upstream-responses
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
-
The `wr-itil-check-upstream-responses` command is a `$PATH`-resolved shim shipped in `packages/itil/bin/` that dispatches the canonical `packages/itil/scripts/check-upstream-responses.sh` body. Per [
|
|
60
|
+
The `wr-itil-check-upstream-responses` command is a `$PATH`-resolved shim shipped in `packages/itil/bin/` that dispatches the canonical `packages/itil/scripts/check-upstream-responses.sh` body. Per [the "Plugin-bundled scripts invoked from SKILL.md resolve via `bin/` on `$PATH`" architecture rule](../../../../docs/decisions/049-plugin-script-resolution-via-bin-on-path.proposed.md) — never invoke the canonical script via repo-relative path; the path does not resolve in adopter trees.
|
|
61
61
|
|
|
62
62
|
The script:
|
|
63
63
|
|
|
64
|
-
1. Walks `<problems-dir>` (both flat layout `<NNN>-*.<state>.md` AND per-state subdir layout `<state>/<NNN>-*.md` per
|
|
64
|
+
1. Walks `<problems-dir>` (both flat layout `<NNN>-*.<state>.md` AND per-state subdir layout `<state>/<NNN>-*.md` per the ": docs/problems/ flat layout migration — per-state subdirs + adopter auto-migration" release design dual-tolerant migration).
|
|
65
65
|
2. For each ticket file, extracts the `## Reported Upstream` URL line. Tickets without that section are silently skipped.
|
|
66
66
|
3. For each URL, calls `gh issue view --json comments,state,labels,updatedAt` or `gh pr view --json comments,reviews,state,labels,updatedAt` (chosen by the disclosure path). Pull requests also fetch inline review comments through `gh api`. The response count and response-specific timestamp combine all three response surfaces; parent metadata changes do not masquerade as review activity. A merged pull request reports `state=MERGED`, distinct from `CLOSED`, so a rejected one is not recorded as a resolution.
|
|
67
67
|
4. Compares the response against the cached entry for that ticket and emits one of: NEW / STATE / LABEL / NONE / FAIL.
|
|
@@ -83,7 +83,7 @@ Read the stdout output and summarise the response classes in chat for the user.
|
|
|
83
83
|
- NONE — quiet; only mention the count, not each ticket.
|
|
84
84
|
- FAIL — call out per-ticket reasons so the user can investigate (URL changed, repo renamed, auth issue).
|
|
85
85
|
|
|
86
|
-
### 3. Commit per
|
|
86
|
+
### 3. Commit per the "Governance Skills Commit Their Own Completed Work" architecture rule
|
|
87
87
|
|
|
88
88
|
The cache file and audit-log file ride a single commit:
|
|
89
89
|
|
|
@@ -92,16 +92,16 @@ git add docs/problems/.outbound-responses-cache.json docs/audits/outbound-respon
|
|
|
92
92
|
git commit -m "chore(problems): check upstream responses — <N> polled, <M> new"
|
|
93
93
|
```
|
|
94
94
|
|
|
95
|
-
See [
|
|
95
|
+
See [the "Governance Skills Commit Their Own Completed Work" architecture rule](../../../../docs/decisions/014-governance-skills-commit-their-own-work.proposed.md) commit-message-convention table for the canonical row.
|
|
96
96
|
|
|
97
|
-
If the cumulative pipeline risk lands above appetite and `AskUserQuestion` is unavailable, apply the [
|
|
97
|
+
If the cumulative pipeline risk lands above appetite and `AskUserQuestion` is unavailable, apply the [the "Structured User Interaction for Governance-Skill Decisions" architecture rule](../../../../docs/decisions/013-structured-user-interaction-for-governance-decisions.proposed.md) Rule 6 non-interactive fail-safe: skip the commit and report the uncommitted state.
|
|
98
98
|
|
|
99
99
|
## When invoked
|
|
100
100
|
|
|
101
101
|
Three invocation surfaces:
|
|
102
102
|
|
|
103
103
|
1. **Direct user invocation** — `/wr-itil:check-upstream-responses` (or with flags). The default user-facing surface.
|
|
104
|
-
2. **AFK orchestrator pre-flight** — `/wr-itil:work-problems` Step 0d invokes this skill when the outbound-responses cache is stale, missing, or has `last_checked: null` AND back-link tickets exist, mirroring Step 0b's inbound staleness check per
|
|
104
|
+
2. **AFK orchestrator pre-flight** — `/wr-itil:work-problems` Step 0d invokes this skill when the outbound-responses cache is stale, missing, or has `last_checked: null` AND back-link tickets exist, mirroring Step 0b's inbound staleness check per the "Inbound upstream-report discovery + assessment pipeline (peer of )" architecture rule Confirmation #5. Cache TTL defaults to 86400s (24h) symmetric with the inbound axis. the "manage-problem has no cadence for checking upstream-bound tickets" problem closed the cadence gap.
|
|
105
105
|
3. **Manual investigation during a problem-management session** — when a maintainer wants to see if any upstream reports moved before transitioning a `verifying` ticket back to `closed`. Foreground synchronous; the maintainer reads the inline summary and decides next steps.
|
|
106
106
|
|
|
107
107
|
## Confirmation
|
|
@@ -111,39 +111,39 @@ Three invocation surfaces:
|
|
|
111
111
|
This skill's contract holds when:
|
|
112
112
|
|
|
113
113
|
1. The script `packages/itil/scripts/check-upstream-responses.sh` is read-only externally — `gh issue view`, `gh pr view`, and a pull-request review-comment `gh api` read only; it makes no comment, create, edit, close, or write API call.
|
|
114
|
-
2. The script extracts the URL from `## Reported Upstream` sections matching the format `- **URL**: <url>` per
|
|
114
|
+
2. The script extracts the URL from `## Reported Upstream` sections matching the format `- **URL**: <url>` per the "Cross-project problem-reporting contract — `report-upstream` skill in `@windyroad/itil`" architecture rule Step 7's back-link contract.
|
|
115
115
|
3. After a successful pass, the cache file exists, is valid JSON, and contains a `tickets.<P<NNN>>` entry for every polled ticket.
|
|
116
116
|
4. After a successful pass, the audit-log file exists and has a new `## YYYY-MM-DDTHH:MM:SSZ` heading appended.
|
|
117
117
|
5. The skill is AFK-safe: zero `AskUserQuestion` calls, zero external-comms gate triggers.
|
|
118
118
|
6. The exit code distinguishes success (0), error (1), and partial failure (2) so AFK orchestrators can branch correctly.
|
|
119
|
-
7. **Staleness contract (
|
|
119
|
+
7. **Staleness contract (the "manage-problem has no cadence for checking upstream-bound tickets" problem)**: TTL defaults to 86400s (24h) symmetric with the inbound axis. Override via `ttl_seconds` field in the cache file. The Step 0d pre-flight helper at `packages/itil/lib/check-outbound-responses-staleness.sh` MUST stay symmetric with this contract — any change to TTL semantics MUST update the helper, the Step 0d SKILL block in `/wr-itil:work-problems`, and this Confirmation #7 in the same commit.
|
|
120
120
|
|
|
121
121
|
## ADR alignment
|
|
122
122
|
|
|
123
|
-
- **
|
|
124
|
-
- **
|
|
125
|
-
- **
|
|
126
|
-
- **
|
|
127
|
-
- **
|
|
128
|
-
- **
|
|
129
|
-
- **
|
|
130
|
-
- **
|
|
123
|
+
- **the "Governance Skills Commit Their Own Completed Work" architecture rule** — governance skills commit their own work. Cache file + audit-log ride a single commit per pass. the "Governance Skills Commit Their Own Completed Work" architecture rule's commit-message-convention table is amended in the same commit as this skill ships to add the canonical row.
|
|
124
|
+
- **the "Cross-project problem-reporting contract — `report-upstream` skill in `@windyroad/itil`" architecture rule** — cross-project problem-reporting contract. The `## Reported Upstream` back-link section (Step 7) is the source of truth this skill reads. the "Cross-project problem-reporting contract — `report-upstream` skill in `@windyroad/itil`" architecture rule's Confirmation section is amended in the same commit to record that the back-link section's URL field is now a load-bearing contract surface for two skills (one writes, one reads).
|
|
125
|
+
- **the "Problem-ticket directory layout — per-state subdirectories under `docs/problems/`" architecture rule** — problem-ticket directory layout. Cache file lives under `docs/problems/` per the same precedent that placed `.upstream-cache.json` and `.upstream-channels.json` there for the inbound axis.
|
|
126
|
+
- **the "Governance skill invocation patterns — foreground + background with deferred-question resumption" architecture rule** — governance skill invocation patterns. Foreground synchronous; no subagent dispatch needed.
|
|
127
|
+
- **the "Skill testing strategy — contract-assertion bats companion to" architecture rule** — skill testing strategy. Behavioural bats at `packages/itil/scripts/test/check-upstream-responses.bats` (script-level) covers the contract.
|
|
128
|
+
- **the "Progressive disclosure + once-per-session budget for UserPromptSubmit governance prose" architecture rule** — progressive disclosure. Per-row stdout output ≤ 150 bytes; the agent expands per-ticket detail on demand.
|
|
129
|
+
- **the "Plugin-bundled scripts invoked from SKILL.md resolve via `bin/` on `$PATH`" architecture rule** — bin shim. Script invoked as `wr-itil-check-upstream-responses`, not via repo-relative `bash <path>`.
|
|
130
|
+
- **the "Inbound upstream-report discovery + assessment pipeline (peer of )" architecture rule** — inbound upstream-report discovery + assessment pipeline. This skill is the outbound symmetric counterpart; the "Inbound upstream-report discovery + assessment pipeline (peer of )" architecture rule `## Related` is amended in the same commit to forward-point at this skill.
|
|
131
131
|
|
|
132
132
|
## Related
|
|
133
133
|
|
|
134
134
|
- `packages/itil/scripts/check-upstream-responses.sh` — the diagnose+act script body.
|
|
135
135
|
- `packages/itil/scripts/test/check-upstream-responses.bats` — behavioural bats covering the script contract.
|
|
136
136
|
- `packages/itil/skills/report-upstream/SKILL.md` — the writer of the `## Reported Upstream` section this skill reads.
|
|
137
|
-
- `packages/itil/skills/review-problems/SKILL.md` — the inbound axis sibling (Step 4.5 inbound-discovery pass per
|
|
137
|
+
- `packages/itil/skills/review-problems/SKILL.md` — the inbound axis sibling (Step 4.5 inbound-discovery pass per the "Inbound upstream-report discovery + assessment pipeline (peer of )" architecture rule).
|
|
138
138
|
- `docs/audits/inbound-discovery-log.md` — inbound audit-log; symmetric peer of `docs/audits/outbound-responses-log.md`.
|
|
139
139
|
- `docs/problems/.upstream-cache.json` — inbound cache; symmetric peer of `docs/problems/.outbound-responses-cache.json`.
|
|
140
140
|
- `docs/decisions/024-cross-project-problem-reporting-contract.proposed.md` — outbound contract; back-link section is the source of truth.
|
|
141
141
|
- `docs/decisions/062-inbound-upstream-report-discovery-assessment-pipeline.proposed.md` — inbound discovery; this skill is the outbound counterpart.
|
|
142
|
-
- **
|
|
143
|
-
- **
|
|
144
|
-
- **
|
|
145
|
-
- **
|
|
146
|
-
- **
|
|
147
|
-
- **
|
|
148
|
-
- **
|
|
149
|
-
- **
|
|
142
|
+
- **the "No process for issue reporters to check for responses — symmetric gap to inbound discovery" problem** (`docs/problems/open/249-no-process-for-reporters-to-check-for-responses-symmetric-to-inbound-discovery.md`) — driver ticket. Phase 1 (us-as-upstream-reporter) ships here; Phase 2 (external-reporter-as-our-reporter) deferred.
|
|
143
|
+
- **the "Problem 080: No bidirectional update of upstream-reported problems — local lifecycle transitions never propagate back to the reporter" problem** (`docs/problems/open/080-no-bidirectional-update-of-upstream-reported-problems.md`) — inverse axis (we push local status BACK to upstream issues we ingested). Composes with this skill.
|
|
144
|
+
- **the "Inbound-discovery ack comments are bureaucratic, not verdict-shaped ( violation)" problem** — inbound discovery ack-comment shape gap (verdict-shaped acks). Inverse-shape sibling on the inbound axis.
|
|
145
|
+
- **the ": Connect Agents Across Repos to Collaborate" user outcome** — Connect Agents Across Repos to Collaborate (primary anchor).
|
|
146
|
+
- **the ": Progress the Backlog While I'm Away" user outcome** — Progress the Backlog While I'm Away (AFK-safe).
|
|
147
|
+
- **the ": Enforce Governance Without Slowing Down" user outcome** — Enforce Governance Without Slowing Down (eliminates manual upstream polling).
|
|
148
|
+
- **the "Restore Service Fast with an Audit Trail" user outcome** — Restore Service Fast with an Audit Trail (audit-log replay).
|
|
149
|
+
- **the "Run Pre-Flight Governance Checks Before Release or Handover" user outcome** — Run Pre-Flight Governance Checks Before Release or Handover (state-change signals before retro / release).
|
|
@@ -6,9 +6,9 @@ allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
|
6
6
|
|
|
7
7
|
# Close Incident
|
|
8
8
|
|
|
9
|
-
Close a restored incident. Closing is the final lifecycle transition — once closed, the incident file is archival and does not appear in active incident views. The close operation is gated on the Linked Problem reaching an acceptable terminal state, or on the incident carrying a documented "No Problem" justification. The gate exists so the problem-handoff invariant (
|
|
9
|
+
Close a restored incident. Closing is the final lifecycle transition — once closed, the incident file is archival and does not appear in active incident views. The close operation is gated on the Linked Problem reaching an acceptable terminal state, or on the incident carrying a documented "No Problem" justification. The gate exists so the problem-handoff invariant (the "Restore Service Fast with an Audit Trail" user outcome) is preserved: every incident either tracks to a root cause or carries an explicit note that none is required.
|
|
10
10
|
|
|
11
|
-
This skill is the
|
|
11
|
+
This skill is the "Problem 071: Argument-based skill subcommands are not discoverable in Claude Code autocomplete" problem phased-landing split of `/wr-itil:manage-incident <I> close` per the "Rename `wr-problem` Plugin to `wr-itil`" architecture rule amended Skill Granularity rule: one skill per distinct user intent. The argument `<I>` is a data parameter, permitted under the amendment. The original `/wr-itil:manage-incident <I> close` subcommand route remains as a thin-router forwarder during the deprecation window but is scheduled for removal in `@windyroad/itil`'s next major version.
|
|
12
12
|
|
|
13
13
|
## Arguments
|
|
14
14
|
|
|
@@ -18,7 +18,7 @@ This skill is the P071 phased-landing split of `/wr-itil:manage-incident <I> clo
|
|
|
18
18
|
|
|
19
19
|
If `$ARGUMENTS` is empty or malformed, read the message from the arguments and report the expected shape. No AskUserQuestion — the gate itself is a hard check with a message, and an empty-arguments case is a user misinvocation, not a decisional branch.
|
|
20
20
|
|
|
21
|
-
## Close gate (
|
|
21
|
+
## Close gate (the "Add `manage-incident` Skill to `wr-itil` Plugin" architecture rule + the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule)
|
|
22
22
|
|
|
23
23
|
The close operation checks the Linked Problem's file suffix:
|
|
24
24
|
|
|
@@ -26,7 +26,7 @@ The close operation checks the Linked Problem's file suffix:
|
|
|
26
26
|
|----------------------|-------------|----------------|-----------|
|
|
27
27
|
| Open | `.open.md` | **Blocked** | Root cause work not yet converged. The problem may still reclassify, re-scope, or need a fix before the incident can be safely archived. |
|
|
28
28
|
| Known Error | `.known-error.md` | Allowed | Root cause is identified and understood; a workaround exists or the risk is accepted. Incident may close. |
|
|
29
|
-
| Verifying | `.verifying.md` | Allowed (
|
|
29
|
+
| Verifying | `.verifying.md` | Allowed (the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule) | Fix released, root cause confirmed, post-release verification pending. Per the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule, verifying satisfies the "Restored → Closed" handoff at least as well as Known Error did under the old contract. |
|
|
30
30
|
| Closed | `.closed.md` | Allowed | Problem fully resolved. Incident may close. |
|
|
31
31
|
|
|
32
32
|
If the incident carries a `## No Problem` section (instead of a Linked Problem), the gate is bypassed — the user has documented why no problem record is required.
|
|
@@ -63,7 +63,7 @@ Branch on which section is present:
|
|
|
63
63
|
**Case A — `## Linked Problem` present**:
|
|
64
64
|
|
|
65
65
|
1. Extract the problem ID `P<NNN>` from the section.
|
|
66
|
-
2. Locate the problem file. Dual-tolerant lookup spans flat layout AND per-state subdir layout (
|
|
66
|
+
2. Locate the problem file. Dual-tolerant lookup spans flat layout AND per-state subdir layout (the ": docs/problems/ flat layout migration — per-state subdirs + adopter auto-migration" release design migration window):
|
|
67
67
|
|
|
68
68
|
```bash
|
|
69
69
|
ls docs/problems/<NNN>-*.md docs/problems/*/<NNN>-*.md 2>/dev/null | head -1
|
|
@@ -113,22 +113,22 @@ Report:
|
|
|
113
113
|
- The linked problem ID (if any) and its state at close-time, OR the No Problem justification.
|
|
114
114
|
- Any quality-check warnings.
|
|
115
115
|
|
|
116
|
-
### 7. Commit the completed work (
|
|
116
|
+
### 7. Commit the completed work (the "Governance Skills Commit Their Own Completed Work" architecture rule)
|
|
117
117
|
|
|
118
|
-
Per
|
|
118
|
+
Per the "Governance Skills Commit Their Own Completed Work" architecture rule, governance skills commit their own work.
|
|
119
119
|
|
|
120
120
|
1. `git add` the renamed incident file.
|
|
121
|
-
2. Delegate to `wr-risk-scorer:pipeline` (subagent_type: `wr-risk-scorer:pipeline`) to assess the staged changes and create a bypass marker. If the subagent type is not available (spawned subagent surface), invoke `/wr-risk-scorer:assess-release` via the Skill tool instead — per
|
|
121
|
+
2. Delegate to `wr-risk-scorer:pipeline` (subagent_type: `wr-risk-scorer:pipeline`) to assess the staged changes and create a bypass marker. If the subagent type is not available (spawned subagent surface), invoke `/wr-risk-scorer:assess-release` via the Skill tool instead — per the "On-Demand Assessment Skills for Governance Plugins" architecture rule it wraps the same pipeline subagent.
|
|
122
122
|
3. `git commit -m "docs(incidents): close I<NNN>"`.
|
|
123
123
|
4. If risk is above appetite: report the above-appetite state clearly and exit without committing (close-incident does not carry `AskUserQuestion` in its allowed-tools — the gate is a hard check). The user can re-run with `--force` semantics by invoking the commit manually if they choose.
|
|
124
124
|
|
|
125
|
-
### 8. Auto-release when changesets are queued (
|
|
125
|
+
### 8. Auto-release when changesets are queued (the "Governance skills auto-release when changesets are queued" architecture rule)
|
|
126
126
|
|
|
127
|
-
**Skip this step if the skill is running inside an AFK orchestrator.** Orchestrators handle release cadence themselves per
|
|
127
|
+
**Skip this step if the skill is running inside an AFK orchestrator.** Orchestrators handle release cadence themselves per the "Inter-iteration release cadence for AFK loops" architecture rule (Step 6.5). When in doubt, defer to the orchestrator by skipping this step.
|
|
128
128
|
|
|
129
129
|
Otherwise, after the commit in step 7 lands, drain the release queue so the close lands on npm without requiring manual user action.
|
|
130
130
|
|
|
131
|
-
**Mechanism — delegate, do not re-implement scoring (per
|
|
131
|
+
**Mechanism — delegate, do not re-implement scoring (per the "On-Demand Assessment Skills for Governance Plugins" architecture rule):**
|
|
132
132
|
|
|
133
133
|
1. Invoke the release scorer. Two paths are valid:
|
|
134
134
|
- **Primary**: delegate to subagent type `wr-risk-scorer:pipeline` via the Agent tool.
|
|
@@ -136,7 +136,7 @@ Otherwise, after the commit in step 7 lands, drain the release queue so the clos
|
|
|
136
136
|
2. Read the returned `RISK_SCORES: commit=X push=Y release=Z` line.
|
|
137
137
|
3. **Drain condition**: if `push` and `release` are both within appetite (≤ 4/25, "Low" band per `RISK-POLICY.md`), AND `.changeset/` is non-empty, proceed to the drain action. Otherwise, skip the drain and report the unreleased state.
|
|
138
138
|
|
|
139
|
-
**Drain action (non-interactive, policy-authorised per
|
|
139
|
+
**Drain action (non-interactive, policy-authorised per the "Structured User Interaction for Governance-Skill Decisions" architecture rule Rule 6):**
|
|
140
140
|
|
|
141
141
|
1. Run `npm run push:watch` (push + wait for CI to pass).
|
|
142
142
|
2. If `.changeset/` remains non-empty after push (i.e. a release PR is pending), run `npm run release:watch` (merge the release PR + wait for npm publish).
|
|
@@ -161,19 +161,19 @@ If the user wants any of the above, the skill reports the appropriate sibling an
|
|
|
161
161
|
|
|
162
162
|
## Related
|
|
163
163
|
|
|
164
|
-
- **
|
|
165
|
-
- **
|
|
166
|
-
- **
|
|
167
|
-
- **
|
|
168
|
-
- **
|
|
169
|
-
- **
|
|
170
|
-
- **
|
|
171
|
-
- **
|
|
172
|
-
- **
|
|
173
|
-
- **
|
|
174
|
-
- **
|
|
175
|
-
- **
|
|
176
|
-
- **
|
|
164
|
+
- **the "Problem 071: Argument-based skill subcommands are not discoverable in Claude Code autocomplete" problem** (`docs/problems/071-argument-based-skill-subcommands-are-not-discoverable.open.md`) — originating ticket. This skill is slice 6c of the "Problem 071: Argument-based skill subcommands are not discoverable in Claude Code autocomplete" problem phased-landing plan.
|
|
165
|
+
- **the "Rename `wr-problem` Plugin to `wr-itil`" architecture rule amended** (`docs/decisions/010-rename-wr-problem-to-wr-itil.proposed.md` — Skill Granularity section) — canonical skill-split naming + forwarder contract + `deprecated-arguments: true` frontmatter flag.
|
|
166
|
+
- **the "Add `manage-incident` Skill to `wr-itil` Plugin" architecture rule** (`docs/decisions/011-manage-incident-skill.proposed.md`) — incident lifecycle file-suffix conventions (`.investigating.md` / `.mitigating.md` / `.restored.md` / `.closed.md`) + close-gate-on-linked-problem rule.
|
|
167
|
+
- **the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule** (`docs/decisions/022-problem-lifecycle-verification-pending-status.proposed.md`) — `.verifying.md` status; extends the close gate to accept `.verifying.md` alongside `.known-error.md` and `.closed.md`.
|
|
168
|
+
- **the "Structured User Interaction for Governance-Skill Decisions" architecture rule** Rule 1 — structured user interaction (forwarder emits systemMessage for deprecation notice; gate-blocks are hard-fail messages, not prompts).
|
|
169
|
+
- **the "Structured User Interaction for Governance-Skill Decisions" architecture rule** Rule 6 — policy-within-appetite non-interactive actions (release drain).
|
|
170
|
+
- **the "Governance Skills Commit Their Own Completed Work" architecture rule** — governance skills commit their own work.
|
|
171
|
+
- **the "On-Demand Assessment Skills for Governance Plugins" architecture rule** — release scorer delegation pattern.
|
|
172
|
+
- **the "Governance skills auto-release when changesets are queued" architecture rule** — auto-release when changesets are queued.
|
|
173
|
+
- **the "Skill testing strategy — contract-assertion bats companion to" architecture rule** (`docs/decisions/037-skill-testing-strategy.proposed.md`) — contract-assertion bats pattern applied to this skill.
|
|
174
|
+
- **the ": Enforce Governance Without Slowing Down" user outcome** (`docs/jtbd/developer/the ": Enforce Governance Without Slowing Down" user outcome-enforce-governance.proposed.md`) — discoverable surface via `/wr-itil:` autocomplete.
|
|
175
|
+
- **the "Extend the Suite with New Plugins" user outcome** (`docs/jtbd/plugin-developer/the "Extend the Suite with New Plugins" user outcome-extend-suite.proposed.md`) — one skill per distinct user intent.
|
|
176
|
+
- **the "Restore Service Fast with an Audit Trail" user outcome** (`docs/jtbd/tech-lead/the "Restore Service Fast with an Audit Trail" user outcome-restore-service-fast.proposed.md`) — close gate preserves the problem-handoff audit trail.
|
|
177
177
|
- `packages/itil/skills/manage-incident/SKILL.md` — hosts the thin-router forwarder for the deprecated `manage-incident <I###> close` form.
|
|
178
178
|
- `packages/itil/skills/restore-incident/SKILL.md` — slice 6b precedent; close-incident is the next transition after restore.
|
|
179
179
|
- `packages/itil/skills/transition-problem/SKILL.md` — the skill used to advance a linked problem from `.open.md` to `.known-error.md` so the incident close gate can pass.
|
|
@@ -8,14 +8,14 @@ allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
|
8
8
|
|
|
9
9
|
Attach an existing problem record to an incident. This is the standalone link operation — the `/wr-itil:restore-incident` skill already handles the link-at-restore flow (writing the `## Linked Problem` section as part of problem-handoff). The `link-incident` skill is for after-the-fact links: when an incident was closed with a `## No Problem` note that later turned out to be wrong, when multiple incidents share a newly-created problem and need to be linked, or when a problem existed in parallel but was not attached during restore.
|
|
10
10
|
|
|
11
|
-
This skill is the
|
|
11
|
+
This skill is the "Problem 071: Argument-based skill subcommands are not discoverable in Claude Code autocomplete" problem phased-landing split of `/wr-itil:manage-incident <I> link P<M>` per the "Rename `wr-problem` Plugin to `wr-itil`" architecture rule amended Skill Granularity rule: one skill per distinct user intent. The arguments `<I>` (incident ID) and `<P>` (problem ID) are data parameters, permitted under the amendment. The original `/wr-itil:manage-incident <I> link P<M>` subcommand route remains as a thin-router forwarder during the deprecation window but is scheduled for removal in `@windyroad/itil`'s next major version.
|
|
12
12
|
|
|
13
13
|
## Arguments
|
|
14
14
|
|
|
15
15
|
`/wr-itil:link-incident <I###> P<MMM>` — two positional data parameters:
|
|
16
16
|
|
|
17
17
|
- `<I###>` — the incident ID (e.g. `I007` or bare `007`). Resolves to `docs/incidents/<I###>-*.{investigating,mitigating,restored,closed}.md`.
|
|
18
|
-
- `P<MMM>` — the problem ID (e.g. `
|
|
18
|
+
- `P<MMM>` — the problem ID (e.g. `the "Problem 071: Argument-based skill subcommands are not discoverable in Claude Code autocomplete" problem` or bare `071`). Resolves to `docs/problems/<MMM>-*.md` (any lifecycle suffix).
|
|
19
19
|
|
|
20
20
|
If either argument is missing or malformed, report the expected shape and exit. No AskUserQuestion — both are data parameters, not decisional branches.
|
|
21
21
|
|
|
@@ -26,7 +26,7 @@ If either argument is missing or malformed, report the expected shape and exit.
|
|
|
26
26
|
Extract `<I###>` and `P<MMM>` from `$ARGUMENTS`. Normalise:
|
|
27
27
|
|
|
28
28
|
- Accept `I007`, `i007`, `007`, `7` → canonicalise the incident ID to `I007`.
|
|
29
|
-
- Accept `
|
|
29
|
+
- Accept `the "Problem 071: Argument-based skill subcommands are not discoverable in Claude Code autocomplete" problem`, `p071`, `071`, `71` → canonicalise the problem ID to `the "Problem 071: Argument-based skill subcommands are not discoverable in Claude Code autocomplete" problem`.
|
|
30
30
|
- If either is missing, report "Usage: `/wr-itil:link-incident <I###> P<MMM>`" and exit.
|
|
31
31
|
|
|
32
32
|
### 2. Locate the incident file
|
|
@@ -42,7 +42,7 @@ The link operation works on any incident status — investigating, mitigating, r
|
|
|
42
42
|
|
|
43
43
|
### 3. Locate the problem file
|
|
44
44
|
|
|
45
|
-
Dual-tolerant lookup spans flat layout AND per-state subdir layout (
|
|
45
|
+
Dual-tolerant lookup spans flat layout AND per-state subdir layout (the ": docs/problems/ flat layout migration — per-state subdirs + adopter auto-migration" release design migration window):
|
|
46
46
|
|
|
47
47
|
```bash
|
|
48
48
|
ls docs/problems/<MMM>-*.md docs/problems/*/<MMM>-*.md 2>/dev/null | head -1
|
|
@@ -96,22 +96,22 @@ Report:
|
|
|
96
96
|
- Whether the link was a new attach (Case A), an update (Case B), or a retroactive conversion from No Problem (Case C).
|
|
97
97
|
- Any quality-check warnings.
|
|
98
98
|
|
|
99
|
-
### 7. Commit the completed work (
|
|
99
|
+
### 7. Commit the completed work (the "Governance Skills Commit Their Own Completed Work" architecture rule)
|
|
100
100
|
|
|
101
|
-
Per
|
|
101
|
+
Per the "Governance Skills Commit Their Own Completed Work" architecture rule, governance skills commit their own work.
|
|
102
102
|
|
|
103
103
|
1. `git add` the modified incident file.
|
|
104
|
-
2. Delegate to `wr-risk-scorer:pipeline` (subagent_type: `wr-risk-scorer:pipeline`) to assess the staged changes and create a bypass marker. If the subagent type is not available (spawned subagent surface), invoke `/wr-risk-scorer:assess-release` via the Skill tool instead — per
|
|
104
|
+
2. Delegate to `wr-risk-scorer:pipeline` (subagent_type: `wr-risk-scorer:pipeline`) to assess the staged changes and create a bypass marker. If the subagent type is not available (spawned subagent surface), invoke `/wr-risk-scorer:assess-release` via the Skill tool instead — per the "On-Demand Assessment Skills for Governance Plugins" architecture rule it wraps the same pipeline subagent.
|
|
105
105
|
3. `git commit -m "docs(incidents): link I<NNN> to P<MMM>"`.
|
|
106
106
|
4. If risk is above appetite: report the above-appetite state clearly and exit without committing. The user can re-run the commit manually if they choose.
|
|
107
107
|
|
|
108
|
-
### 8. Auto-release when changesets are queued (
|
|
108
|
+
### 8. Auto-release when changesets are queued (the "Governance skills auto-release when changesets are queued" architecture rule)
|
|
109
109
|
|
|
110
|
-
**Skip this step if the skill is running inside an AFK orchestrator.** Orchestrators handle release cadence themselves per
|
|
110
|
+
**Skip this step if the skill is running inside an AFK orchestrator.** Orchestrators handle release cadence themselves per the "Inter-iteration release cadence for AFK loops" architecture rule (Step 6.5). When in doubt, defer to the orchestrator by skipping this step.
|
|
111
111
|
|
|
112
112
|
Otherwise, after the commit in step 7 lands, drain the release queue so the link lands on npm without requiring manual user action.
|
|
113
113
|
|
|
114
|
-
**Mechanism — delegate, do not re-implement scoring (per
|
|
114
|
+
**Mechanism — delegate, do not re-implement scoring (per the "On-Demand Assessment Skills for Governance Plugins" architecture rule):**
|
|
115
115
|
|
|
116
116
|
1. Invoke the release scorer. Two paths are valid:
|
|
117
117
|
- **Primary**: delegate to subagent type `wr-risk-scorer:pipeline` via the Agent tool.
|
|
@@ -119,7 +119,7 @@ Otherwise, after the commit in step 7 lands, drain the release queue so the link
|
|
|
119
119
|
2. Read the returned `RISK_SCORES: commit=X push=Y release=Z` line.
|
|
120
120
|
3. **Drain condition**: if `push` and `release` are both within appetite (≤ 4/25, "Low" band per `RISK-POLICY.md`), AND `.changeset/` is non-empty, proceed to the drain action. Otherwise, skip the drain and report the unreleased state.
|
|
121
121
|
|
|
122
|
-
**Drain action (non-interactive, policy-authorised per
|
|
122
|
+
**Drain action (non-interactive, policy-authorised per the "Structured User Interaction for Governance-Skill Decisions" architecture rule Rule 6):**
|
|
123
123
|
|
|
124
124
|
1. Run `npm run push:watch` (push + wait for CI to pass).
|
|
125
125
|
2. If `.changeset/` remains non-empty after push (i.e. a release PR is pending), run `npm run release:watch` (merge the release PR + wait for npm publish).
|
|
@@ -144,17 +144,17 @@ If the user wants any of the above, the skill reports the appropriate sibling an
|
|
|
144
144
|
|
|
145
145
|
## Related
|
|
146
146
|
|
|
147
|
-
- **
|
|
148
|
-
- **
|
|
149
|
-
- **
|
|
150
|
-
- **
|
|
151
|
-
- **
|
|
152
|
-
- **
|
|
153
|
-
- **
|
|
154
|
-
- **
|
|
155
|
-
- **
|
|
156
|
-
- **
|
|
157
|
-
- **
|
|
147
|
+
- **the "Problem 071: Argument-based skill subcommands are not discoverable in Claude Code autocomplete" problem** (`docs/problems/071-argument-based-skill-subcommands-are-not-discoverable.open.md`) — originating ticket. This skill is slice 6d of the "Problem 071: Argument-based skill subcommands are not discoverable in Claude Code autocomplete" problem phased-landing plan.
|
|
148
|
+
- **the "Rename `wr-problem` Plugin to `wr-itil`" architecture rule amended** (`docs/decisions/010-rename-wr-problem-to-wr-itil.proposed.md` — Skill Granularity section) — canonical skill-split naming + forwarder contract + `deprecated-arguments: true` frontmatter flag.
|
|
149
|
+
- **the "Add `manage-incident` Skill to `wr-itil` Plugin" architecture rule** (`docs/decisions/011-manage-incident-skill.proposed.md`) — incident lifecycle file-suffix conventions + Linked Problem section convention.
|
|
150
|
+
- **the "Structured User Interaction for Governance-Skill Decisions" architecture rule** Rule 1 — structured user interaction (forwarder emits systemMessage for deprecation; missing-argument is a hard-fail message, not a prompt).
|
|
151
|
+
- **the "Governance Skills Commit Their Own Completed Work" architecture rule** — governance skills commit their own work.
|
|
152
|
+
- **the "On-Demand Assessment Skills for Governance Plugins" architecture rule** — release scorer delegation pattern.
|
|
153
|
+
- **the "Governance skills auto-release when changesets are queued" architecture rule** — auto-release when changesets are queued.
|
|
154
|
+
- **the "Skill testing strategy — contract-assertion bats companion to" architecture rule** (`docs/decisions/037-skill-testing-strategy.proposed.md`) — contract-assertion bats pattern applied to this skill.
|
|
155
|
+
- **the ": Enforce Governance Without Slowing Down" user outcome** (`docs/jtbd/developer/the ": Enforce Governance Without Slowing Down" user outcome-enforce-governance.proposed.md`) — discoverable surface via `/wr-itil:` autocomplete.
|
|
156
|
+
- **the "Extend the Suite with New Plugins" user outcome** (`docs/jtbd/plugin-developer/the "Extend the Suite with New Plugins" user outcome-extend-suite.proposed.md`) — one skill per distinct user intent.
|
|
157
|
+
- **the "Restore Service Fast with an Audit Trail" user outcome** (`docs/jtbd/tech-lead/the "Restore Service Fast with an Audit Trail" user outcome-restore-service-fast.proposed.md`) — Linked Problem traceability preserved post-split.
|
|
158
158
|
- `packages/itil/skills/manage-incident/SKILL.md` — hosts the thin-router forwarder for the deprecated `manage-incident <I###> link P<MMM>` form.
|
|
159
159
|
- `packages/itil/skills/restore-incident/SKILL.md` — slice 6b precedent; writes the `## Linked Problem` section as part of problem-handoff. `link-incident` is the standalone-after-the-fact equivalent.
|
|
160
160
|
- `packages/itil/skills/manage-problem/SKILL.md` — the source of truth for problem titles / statuses read during link.
|
|
@@ -8,7 +8,7 @@ allowed-tools: Read, Bash, Grep, Glob
|
|
|
8
8
|
|
|
9
9
|
Display the active incident backlog — investigating, mitigating, and restored incidents — sorted by severity (highest first). This skill is a pure read-only view of `docs/incidents/`; it does not edit, transition, close, or create incidents. For those operations, use the dedicated skills (`/wr-itil:manage-incident` to declare / update / mitigate / restore / close / link).
|
|
10
10
|
|
|
11
|
-
This skill is the
|
|
11
|
+
This skill is the "Problem 071: Argument-based skill subcommands are not discoverable in Claude Code autocomplete" problem phased-landing split of `/wr-itil:manage-incident list` per the "Rename `wr-problem` Plugin to `wr-itil`" architecture rule amended Skill Granularity rule: one skill per distinct user intent. The original `/wr-itil:manage-incident list` subcommand route remains as a thin-router forwarder during the deprecation window but is scheduled for removal in `@windyroad/itil`'s next major version.
|
|
12
12
|
|
|
13
13
|
## Scope
|
|
14
14
|
|
|
@@ -19,7 +19,7 @@ Included in the ranking table:
|
|
|
19
19
|
|
|
20
20
|
`docs/incidents/*.closed.md` is omitted entirely (the view is of active incidents, not the closed archive). Closed incidents remain readable by filename convention; this skill does not index them.
|
|
21
21
|
|
|
22
|
-
**Severity, not WSJF** — per
|
|
22
|
+
**Severity, not WSJF** — per the "Add `manage-incident` Skill to `wr-itil` Plugin" architecture rule: incidents are time-bound events where the WSJF "effort" divisor is meaningless during a live event. Severity uses Impact × Likelihood from `RISK-POLICY.md`, interpreted as "right now, what's the live business impact?". The skill surfaces the severity score from each incident file's frontmatter directly — no re-scoring, no auto-transitioning.
|
|
23
23
|
|
|
24
24
|
## Steps
|
|
25
25
|
|
|
@@ -68,13 +68,13 @@ After the table, print one short pointer depending on what the output showed:
|
|
|
68
68
|
|
|
69
69
|
## Related
|
|
70
70
|
|
|
71
|
-
- **
|
|
72
|
-
- **
|
|
73
|
-
- **
|
|
74
|
-
- **
|
|
75
|
-
- **
|
|
76
|
-
- **
|
|
77
|
-
- **
|
|
71
|
+
- **the "Problem 071: Argument-based skill subcommands are not discoverable in Claude Code autocomplete" problem** (`docs/problems/071-argument-based-skill-subcommands-are-not-discoverable.open.md`) — originating ticket. This skill is slice 5 of the "Problem 071: Argument-based skill subcommands are not discoverable in Claude Code autocomplete" problem phased-landing plan.
|
|
72
|
+
- **the "Rename `wr-problem` Plugin to `wr-itil`" architecture rule amended** (`docs/decisions/010-rename-wr-problem-to-wr-itil.proposed.md` — Skill Granularity section) — canonical skill-split naming + forwarder contract + `deprecated-arguments: true` frontmatter flag.
|
|
73
|
+
- **the "Add `manage-incident` Skill to `wr-itil` Plugin" architecture rule** (`docs/decisions/011-manage-incident-skill-wrapping.proposed.md`) — incident lifecycle file-suffix conventions (`.investigating.md` / `.mitigating.md` / `.restored.md` / `.closed.md`) + "Severity, not WSJF" rule.
|
|
74
|
+
- **the "Skill testing strategy — contract-assertion bats companion to" architecture rule** (`docs/decisions/037-skill-testing-strategy.proposed.md`) — contract-assertion bats pattern applied to this skill.
|
|
75
|
+
- **the ": Enforce Governance Without Slowing Down" user outcome** (`docs/jtbd/developer/the ": Enforce Governance Without Slowing Down" user outcome-enforce-governance.proposed.md`) — discoverable surface via `/wr-itil:` autocomplete.
|
|
76
|
+
- **the "Extend the Suite with New Plugins" user outcome** (`docs/jtbd/plugin-developer/the "Extend the Suite with New Plugins" user outcome-extend-suite.proposed.md`) — one skill per distinct user intent.
|
|
77
|
+
- **the "Restore Service Fast with an Audit Trail" user outcome** (`docs/jtbd/tech-lead/the "Restore Service Fast with an Audit Trail" user outcome-restore-service-fast.proposed.md`) — incident status visibility for audit trail.
|
|
78
78
|
- `packages/itil/skills/manage-incident/SKILL.md` — hosts the thin-router forwarder for the deprecated `manage-incident list` form.
|
|
79
79
|
- `packages/itil/skills/list-problems/SKILL.md` — slice 1 precedent; this skill mirrors its read-only display shape.
|
|
80
80
|
|
|
@@ -8,16 +8,16 @@ allowed-tools: Read, Bash, Grep, Glob
|
|
|
8
8
|
|
|
9
9
|
Display the current problem backlog — open and known-error tickets — sorted by Weighted Shortest Job First (WSJF) priority. This skill is a pure read-only view of `docs/problems/`; it does not edit, transition, close, or create tickets. For those operations, use the dedicated skills (`/wr-itil:manage-problem`, `/wr-itil:transition-problem`, etc.).
|
|
10
10
|
|
|
11
|
-
This skill is the
|
|
11
|
+
This skill is the "Problem 071: Argument-based skill subcommands are not discoverable in Claude Code autocomplete" problem phased-landing split of `/wr-itil:manage-problem list` per the "Rename `wr-problem` Plugin to `wr-itil`" architecture rule amended Skill Granularity rule: one skill per distinct user intent. The original `/wr-itil:manage-problem list` subcommand route remains as a thin-router forwarder during the deprecation window but is scheduled for removal in `@windyroad/itil`'s next major version.
|
|
12
12
|
|
|
13
13
|
## Scope
|
|
14
14
|
|
|
15
|
-
Included in the ranking table (
|
|
15
|
+
Included in the ranking table (the ": docs/problems/ flat layout migration — per-state subdirs + adopter auto-migration" release design migration window — each glob is dual-tolerant, covering BOTH the flat `docs/problems/<NNN>-<title>.<state>.md` filename-suffix layout AND the per-state subdir `docs/problems/<state>/<NNN>-<title>.md` layout):
|
|
16
16
|
|
|
17
17
|
- `docs/problems/*.open.md` + `docs/problems/open/*.md` — open tickets (under investigation)
|
|
18
18
|
- `docs/problems/*.known-error.md` + `docs/problems/known-error/*.md` — known errors (root cause confirmed, fix NOT yet released)
|
|
19
19
|
|
|
20
|
-
Shown in separate sections, excluded from the dev-work WSJF ranking per
|
|
20
|
+
Shown in separate sections, excluded from the dev-work WSJF ranking per the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule:
|
|
21
21
|
- `docs/problems/*.verifying.md` + `docs/problems/verifying/*.md` — Verification Pending (fix released, awaiting user verification; WSJF multiplier 0)
|
|
22
22
|
- `docs/problems/*.parked.md` + `docs/problems/parked/*.md` — Parked on upstream or user-suspended (WSJF multiplier 0)
|
|
23
23
|
|
|
@@ -27,14 +27,14 @@ Shown in separate sections, excluded from the dev-work WSJF ranking per ADR-022:
|
|
|
27
27
|
|
|
28
28
|
### 1. Check README.md cache freshness
|
|
29
29
|
|
|
30
|
-
Reuse the same `git log`-based freshness test as `/wr-itil:manage-problem review` Step 9 (per
|
|
30
|
+
Reuse the same `git log`-based freshness test as `/wr-itil:manage-problem review` Step 9 (per the "Problem 031: `manage-problem work` incorrectly determines cache is fresh" problem — filesystem mtime is unreliable in worktrees and fresh checkouts, so git history is the authoritative staleness signal):
|
|
31
31
|
|
|
32
32
|
```bash
|
|
33
33
|
readme_commit=$(git log -1 --format=%H -- docs/problems/README.md 2>/dev/null)
|
|
34
34
|
if [ -z "$readme_commit" ] || \
|
|
35
35
|
git log --oneline "${readme_commit}..HEAD" -- 'docs/problems/*.md' 'docs/problems/*/*.md' ':!docs/problems/README.md' 2>/dev/null | grep -q .; then
|
|
36
36
|
# Pathspec pair `'docs/problems/*.md' 'docs/problems/*/*.md'` is the
|
|
37
|
-
#
|
|
37
|
+
# the ": docs/problems/ flat layout migration — per-state subdirs + adopter auto-migration" release design dual-tolerant transitional shape — covers BOTH the flat
|
|
38
38
|
# layout AND the per-state subdir layout.
|
|
39
39
|
echo "stale"
|
|
40
40
|
fi
|
|
@@ -46,7 +46,7 @@ fi
|
|
|
46
46
|
|
|
47
47
|
### 2. Live scan (cache-stale fallback)
|
|
48
48
|
|
|
49
|
-
Enumerate the backlog files via dual-tolerant globs (
|
|
49
|
+
Enumerate the backlog files via dual-tolerant globs (the ": docs/problems/ flat layout migration — per-state subdirs + adopter auto-migration" release design migration window — each line covers BOTH the flat `<NNN>-<title>.<state>.md` filename-suffix layout AND the per-state subdir `<state>/<NNN>-<title>.md` layout):
|
|
50
50
|
|
|
51
51
|
```bash
|
|
52
52
|
ls docs/problems/*.open.md docs/problems/*.known-error.md docs/problems/open/*.md docs/problems/known-error/*.md 2>/dev/null
|
|
@@ -56,7 +56,7 @@ ls docs/problems/*.parked.md docs/problems/parked/*.md 2>/dev/null # for
|
|
|
56
56
|
|
|
57
57
|
For each `.open.md` and `.known-error.md` file, read the `**Status**`, `**Priority**`, `**Effort**`, and `**WSJF**` lines from the frontmatter section. Compute WSJF if missing: `WSJF = (Severity × StatusMultiplier) / EffortDivisor` per `/wr-itil:manage-problem` WSJF Prioritisation. Default to M (divisor 2) when Effort is absent; flag missing scores so the user knows a review is overdue.
|
|
58
58
|
|
|
59
|
-
For each `.verifying.md` file, read the `## Fix Released` marker. The `Likely verified?` column carries an **evidence-first** cell per
|
|
59
|
+
For each `.verifying.md` file, read the `## Fix Released` marker. The `Likely verified?` column carries an **evidence-first** cell per the "VQ `Likely verified?` column uses age-based heuristic (≥14 days = yes) instead of session-observed evidence — sibling proxy-for-evidence anti-pattern to" problem (supersedes the original the "Problem 048: manage-problem does not surface Fix Released problems as verification candidates when the fix path has been exercised" problem Candidate 4 14-day heuristic). <!-- LIKELY-VERIFIED-CELL-SHAPE: evidence-based per the "VQ `Likely verified?` column uses age-based heuristic (≥14 days = yes) instead of session-observed evidence — sibling proxy-for-evidence anti-pattern to" problem --> When this skill runs against a stale cache, the live-scan path reads the cell value from the `.verifying.md` ticket's `## Fix Released` section (or carries forward the prior cell value from the cached README when present); it does NOT compute the cell from age — that responsibility moved to `/wr-itil:review-problems` Step 4 (user confirmation populates `yes — observed: …`) and `run-retro` Step 4a close-on-evidence citations.
|
|
60
60
|
|
|
61
61
|
### 3. Display
|
|
62
62
|
|
|
@@ -70,7 +70,7 @@ Render three sections matching the README.md format so cached and live output lo
|
|
|
70
70
|
| <score> | P<NNN> | <title> | <severity> | <status> | <effort> |
|
|
71
71
|
```
|
|
72
72
|
|
|
73
|
-
**Verification Queue** — `.verifying.md` tickets, sorted by `Released date ASC` (oldest at row 1; same-day releases tiebreak by ID ASC) per
|
|
73
|
+
**Verification Queue** — `.verifying.md` tickets, sorted by `Released date ASC` (oldest at row 1; same-day releases tiebreak by ID ASC) per the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule + the "Problem 048: manage-problem does not surface Fix Released problems as verification candidates when the fix path has been exercised" problem user-task semantics. <!-- VQ-SORT-DIRECTION: oldest-first per the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule --> Drift here re-opens the "docs/problems/README.md Verification Queue rendered newest-first contradicts section header "Ranked by release age, oldest first"" problem. The `Likely verified?` column carries an **evidence-first** cell per the "VQ `Likely verified?` column uses age-based heuristic (≥14 days = yes) instead of session-observed evidence — sibling proxy-for-evidence anti-pattern to" problem — three canonical values: `yes — observed: <evidence>`, `no — not observed` (default for newly-released tickets), `no — observed regression`. <!-- LIKELY-VERIFIED-CELL-SHAPE: evidence-based per the "VQ `Likely verified?` column uses age-based heuristic (≥14 days = yes) instead of session-observed evidence — sibling proxy-for-evidence anti-pattern to" problem --> Drift on the cell shape re-opens the "VQ `Likely verified?` column uses age-based heuristic (≥14 days = yes) instead of session-observed evidence — sibling proxy-for-evidence anti-pattern to" problem.
|
|
74
74
|
|
|
75
75
|
```
|
|
76
76
|
| ID | Title | Released | Likely verified? |
|
|
@@ -101,15 +101,15 @@ After the tables, print one of two short pointers depending on what the output s
|
|
|
101
101
|
|
|
102
102
|
## Related
|
|
103
103
|
|
|
104
|
-
- **
|
|
105
|
-
- **
|
|
106
|
-
- **
|
|
107
|
-
- **
|
|
108
|
-
- **
|
|
109
|
-
- **
|
|
110
|
-
- **
|
|
111
|
-
- **
|
|
112
|
-
- **
|
|
104
|
+
- **the "Problem 071: Argument-based skill subcommands are not discoverable in Claude Code autocomplete" problem** (`docs/problems/071-argument-based-skill-subcommands-are-not-discoverable.open.md`) — originating ticket. This skill is phase 1 of the "Problem 071: Argument-based skill subcommands are not discoverable in Claude Code autocomplete" problem phased-landing plan.
|
|
105
|
+
- **the "Rename `wr-problem` Plugin to `wr-itil`" architecture rule amended** (`docs/decisions/010-rename-wr-problem-to-wr-itil.proposed.md` — Skill Granularity section) — canonical skill-split naming + forwarder contract + `deprecated-arguments: true` frontmatter flag.
|
|
106
|
+
- **the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule** (`docs/decisions/022-verification-pending-status.proposed.md`) — Verification Pending status conventions; `.verifying.md` exclusion from WSJF ranking.
|
|
107
|
+
- **the "Skill testing strategy — contract-assertion bats companion to" architecture rule** (`docs/decisions/037-skill-testing-strategy.proposed.md`) — contract-assertion bats pattern applied to this skill.
|
|
108
|
+
- **the "Problem 031: `manage-problem work` incorrectly determines cache is fresh" problem** — git-history freshness check rationale (mtime unreliable in worktrees).
|
|
109
|
+
- **the "Problem 048: manage-problem does not surface Fix Released problems as verification candidates when the fix path has been exercised" problem** Candidate 4 — original `Likely verified?` column (14-day age-heuristic). Superseded by the "VQ `Likely verified?` column uses age-based heuristic (≥14 days = yes) instead of session-observed evidence — sibling proxy-for-evidence anti-pattern to" problem.
|
|
110
|
+
- **the "VQ `Likely verified?` column uses age-based heuristic (≥14 days = yes) instead of session-observed evidence — sibling proxy-for-evidence anti-pattern to" problem** — evidence-first cell shape (`yes — observed: <evidence>` / `no — not observed` / `no — observed regression`) replaces the age-based heuristic; `<!-- LIKELY-VERIFIED-CELL-SHAPE: evidence-based per the "VQ `Likely verified?` column uses age-based heuristic (≥14 days = yes) instead of session-observed evidence — sibling proxy-for-evidence anti-pattern to" problem -->` drives cross-skill drift detection.
|
|
111
|
+
- **the ": Enforce Governance Without Slowing Down" user outcome** (`docs/jtbd/developer/the ": Enforce Governance Without Slowing Down" user outcome-enforce-governance.proposed.md`) — discoverable surface via `/wr-itil:` autocomplete.
|
|
112
|
+
- **the "Extend the Suite with New Plugins" user outcome** (`docs/jtbd/plugin-developer/the "Extend the Suite with New Plugins" user outcome-extend-suite.proposed.md`) — one skill per distinct user intent.
|
|
113
113
|
- `packages/itil/skills/manage-problem/SKILL.md` — hosts the thin-router forwarder for the deprecated `manage-problem list` form.
|
|
114
114
|
|
|
115
115
|
$ARGUMENTS
|