@windyroad/itil 0.50.2 → 0.50.3

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.
@@ -497,5 +497,5 @@
497
497
  }
498
498
  },
499
499
  "name": "wr-itil",
500
- "version": "0.50.2"
500
+ "version": "0.50.3"
501
501
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@windyroad/itil",
3
- "version": "0.50.2",
3
+ "version": "0.50.3",
4
4
  "description": "ITIL-aligned IT service management for Claude Code (problem, and future incident/change skills)",
5
5
  "bin": {
6
6
  "windyroad-itil": "./bin/install.mjs"
@@ -853,9 +853,9 @@ After the rename + README refresh land but BEFORE the Step 11 commit, fire the b
853
853
 
854
854
  This subsection is the **copy-not-move sibling** of `transition-problem` SKILL.md Step 7b per [ADR-010](../../../docs/decisions/010-rename-wr-problem-to-wr-itil.proposed.md) amended "Split-skill execution ownership" rule (P093). The user-initiated transition path lives in `/wr-itil:transition-problem`; the in-skill callers (Step 9b auto-transition, Step 9d closure inside review, the Parked path) need the same lifecycle-update trigger and carry their own scoped copy. Drift between the two copies re-opens P080's bidirectional gap on the in-skill paths.
855
855
 
856
- The trigger is **unconditional** — fire on every transition regardless of whether the ticket carries `## Reported Upstream`. The sibling skill's no-op exit (Step 1 of `/wr-itil:update-upstream`) absorbs the misses cheaply; per-transition decision cost is bounded.
856
+ The trigger fires **whenever the ticket carries a `## Reported Upstream` section** — gate the Skill-tool dispatch behind a one-line mechanical pre-check rather than dispatching on every transition. Dispatching unconditionally pays the full `/wr-itil:update-upstream` SKILL.md context load (~14 KB into the calling agent's context) just to hit the sibling skill's no-op exit; the common case is a ticket with no upstream section, so the load is wasted (P362). The grep IS the trigger: it preserves the fire-whenever-the-section-exists semantics — an upstream comment posts iff the section is present — while eliminating the context load for the common no-op case. Authority: [ADR-054](../../../docs/decisions/054-skill-md-runtime-budget-policy.proposed.md) (SKILL.md runtime-budget policy; [ADR-038](../../../docs/decisions/038-progressive-disclosure-for-governance-tooling-context.proposed.md) progressive-disclosure as the ancestor principle).
857
857
 
858
- Invoke via the Skill tool:
858
+ **Pre-check first** (mechanical — no user decision): run `grep -q '^## Reported Upstream' <ticket-file>`. If it does NOT match, skip the Skill dispatch entirely, log one line (`no ## Reported Upstream section; skipping upstream lifecycle update`), and proceed to Step 11. Only when it matches, invoke the sibling skill via the Skill tool:
859
859
 
860
860
  ```
861
861
  /wr-itil:update-upstream <NNN>
@@ -863,7 +863,7 @@ Invoke via the Skill tool:
863
863
 
864
864
  Behaviour matrix:
865
865
 
866
- - **No `## Reported Upstream` section on the local ticket** → the sibling skill no-op-exits with a one-line `Nothing to update` message. Proceed to Step 11.
866
+ - **No `## Reported Upstream` section on the local ticket** → the grep pre-check skips the Skill dispatch (no context load); log `no ## Reported Upstream section; skipping upstream lifecycle update` and proceed to Step 11. (The sibling skill retains its own Step 1 no-op exit as defence-in-depth for any path that reaches it directly.)
867
867
  - **`## Reported Upstream` present AND both gates within appetite** → the sibling skill posts via `gh issue comment` (and on Verifying → Closed, also `gh issue close`), back-writes to `## Upstream Lifecycle Updates`, and stages the back-write into the index. The Step 11 commit captures the back-write alongside the transition.
868
868
  - **`## Reported Upstream` present AND above-appetite (after silent risk-reduce + re-score)** → the sibling skill saves the drafted comment to `## Queued Upstream Update` and queues an `outstanding_questions` entry. The Step 11 commit captures the `## Queued Upstream Update` appendage alongside the transition. **The orchestrator continues per P352 queue-and-continue** — do NOT halt the transition on an above-appetite upstream update.
869
869
 
@@ -260,9 +260,9 @@ The refresh uses the same rendering rules as `/wr-itil:review-problems` Step 9e
260
260
 
261
261
  After the rename + README refresh land but BEFORE the Step 8 commit, fire the bidirectional lifecycle-update sibling skill so the upstream issue (if any) receives the lifecycle update comment in the SAME commit as the transition per ADR-014 single-commit grain. This is the **outbound-lifecycle-update leg** of the reporter loop (the inbound-discovery leg is owned by ADR-062's assessment pipeline; together they close the reporter relationship per JTBD-301 + JTBD-201).
262
262
 
263
- The trigger is **unconditional** — fire on every transition regardless of whether the ticket carries `## Reported Upstream`. The sibling skill's no-op exit (Step 1 of `/wr-itil:update-upstream`) absorbs the misses cheaply; per-transition decision cost is bounded.
263
+ The trigger fires **whenever the ticket carries a `## Reported Upstream` section** — gate the Skill-tool dispatch behind a one-line mechanical pre-check rather than dispatching on every transition. Dispatching unconditionally pays the full `/wr-itil:update-upstream` SKILL.md context load (~14 KB into the calling agent's context) just to hit the sibling skill's no-op exit; the common case is a ticket with no upstream section, so the load is wasted (P362). The grep IS the trigger: it preserves the fire-whenever-the-section-exists semantics — an upstream comment posts iff the section is present — while eliminating the context load for the common no-op case. Authority: [ADR-054](../../../docs/decisions/054-skill-md-runtime-budget-policy.proposed.md) (SKILL.md runtime-budget policy; [ADR-038](../../../docs/decisions/038-progressive-disclosure-for-governance-tooling-context.proposed.md) progressive-disclosure as the ancestor principle).
264
264
 
265
- Invoke via the Skill tool:
265
+ **Pre-check first** (mechanical — no user decision): run `grep -q '^## Reported Upstream' <ticket-file>`. If it does NOT match, skip the Skill dispatch entirely, log one line (`no ## Reported Upstream section; skipping upstream lifecycle update`), and proceed to Step 8. Only when it matches, invoke the sibling skill via the Skill tool:
266
266
 
267
267
  ```
268
268
  /wr-itil:update-upstream <NNN>
@@ -270,7 +270,7 @@ Invoke via the Skill tool:
270
270
 
271
271
  Behaviour matrix:
272
272
 
273
- - **No `## Reported Upstream` section on the local ticket** → the sibling skill no-op-exits with a one-line `Nothing to update` message. Proceed to Step 8.
273
+ - **No `## Reported Upstream` section on the local ticket** → the grep pre-check skips the Skill dispatch (no context load); log `no ## Reported Upstream section; skipping upstream lifecycle update` and proceed to Step 8. (The sibling skill retains its own Step 1 no-op exit as defence-in-depth for any path that reaches it directly.)
274
274
  - **`## Reported Upstream` present AND both gates within appetite** → the sibling skill posts via `gh issue comment` (and on Verifying → Closed, also `gh issue close`), back-writes to `## Upstream Lifecycle Updates`, and stages the back-write into the index. The Step 8 commit captures the back-write alongside the transition.
275
275
  - **`## Reported Upstream` present AND above-appetite (after silent risk-reduce + re-score)** → the sibling skill saves the drafted comment to `## Queued Upstream Update` and queues an `outstanding_questions` entry. The Step 8 commit captures the `## Queued Upstream Update` appendage alongside the transition. **The orchestrator continues per P352 queue-and-continue** — do NOT halt the transition on an above-appetite upstream update.
276
276