@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,20 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: wr-itil:manage-rfc
|
|
3
|
-
description: Heavyweight RFC intake + lifecycle management following the
|
|
3
|
+
description: Heavyweight RFC intake + lifecycle management following the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule Problem-RFC-Story framework. Creates new RFCs (delegates to /wr-itil:capture-rfc for the lightweight path), updates existing RFCs, transitions through proposed → accepted → in-progress → verifying → closed lifecycle, runs WSJF re-rank reviews, and refreshes docs/rfcs/README.md per the "Problem 062: `manage-problem` does not refresh `docs/problems/README.md` on single-ticket transitions; fast-path cache goes stale silently" problem / the "Problem 094: `/wr-itil:manage-problem` does not refresh `docs/problems/README.md` on ticket creation" problem contract pattern.
|
|
4
4
|
allowed-tools: Read, Write, Edit, Bash, Grep, Glob, Task
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Manage RFC Skill
|
|
8
8
|
|
|
9
|
-
Create, update, or transition RFC tickets following the Problem-RFC-Story framework introduced by
|
|
9
|
+
Create, update, or transition RFC tickets following the Problem-RFC-Story framework introduced by the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule (accepted 2026-05-05). This skill is the heavyweight counterpart to `/wr-itil:capture-rfc` — it owns the full intake flow, lifecycle transitions, batch review, and README refresh.
|
|
10
10
|
|
|
11
|
-
**Related JTBDs**:
|
|
11
|
+
**Related JTBDs**: the ": Decompose a Fix Into Coordinated Changes" user outcome (primary — Decompose a Fix Into Coordinated Changes; this skill governs the lifecycle of decomposed work), the ": Enforce Governance Without Slowing Down" user outcome (extended scope — change-set-level governance), the "Extend the Suite with New Plugins" user outcome (atomic-fix-adopter — every fix goes through an RFC per the "Every fix goes through an RFC" architecture rule; the RFC skills are invoked deliberately, not auto-fired, because RFC scope is direction-setting per the "RFC-first: a problem's fix implements its RFC; no implementation without a pre-existing RFC" architecture rule — NOT because atomic fixes skip ceremony).
|
|
12
12
|
|
|
13
13
|
## Output Formatting
|
|
14
14
|
|
|
15
|
-
When referencing RFC IDs, problem IDs, ADR IDs, or JTBD IDs in prose output, always include the human-readable title on first mention. Use the format `RFC-
|
|
15
|
+
When referencing RFC IDs, problem IDs, ADR IDs, or JTBD IDs in prose output, always include the human-readable title on first mention. Use the format `the ": Implement + — re-home RFC decisions to ADRs and make RFC-first unconditional" release design (Decision homing implementation)`, not bare `the ": Implement + — re-home RFC decisions to ADRs and make RFC-first unconditional" release design`. Tables with separate ID and Title columns are fine as-is.
|
|
16
16
|
|
|
17
|
-
**Brief-before-ID discipline at `AskUserQuestion` surfaces (
|
|
17
|
+
**Brief-before-ID discipline at `AskUserQuestion` surfaces (the "agent surfaces decisions to user using opaque IDs (P-numbers, ADR-numbers, JTBD-numbers) without explaining what they mean — empathy gap" problem).** When this skill emits an `AskUserQuestion` (transition-trigger ambiguity, scope-expansion approval, problem-trace ratification), the question/option/description text MUST inline what each referenced artefact is and what is at stake BEFORE naming it by ID. `RFC-NNN` / `P-NNN` / `ADR-NNN` / `JTBD-NNN` references are audit-trail annotations, NEVER carriers of meaning — the user reads the prompt without project filesystem access (mobile clients, accessibility tooling, notification surfaces) and cannot follow links. Every option's substance MUST be self-contained in the briefing prose + option `label` and `description`; IDs may appear ONLY after a self-contained explanation. Mirrors the canonical `/wr-architect:create-adr` Step 5 § 5a Rule 3 ("No IDs as explainers"). See also session memory `feedback_brief_before_id.md`.
|
|
18
18
|
|
|
19
19
|
## RFC Lifecycle
|
|
20
20
|
|
|
@@ -26,23 +26,23 @@ When referencing RFC IDs, problem IDs, ADR IDs, or JTBD IDs in prose output, alw
|
|
|
26
26
|
| **Verifying** | `.verifying.md` | Work shipped, awaiting verification | All tasks complete; release marker present in `## Verification` |
|
|
27
27
|
| **Closed** | `.closed.md` | Verified; RFC complete | User confirms verification; driving problem(s) Closed or trace-bounded-escape applies |
|
|
28
28
|
|
|
29
|
-
Each transition is a `git mv` + Edit + restage + README refresh + commit per
|
|
29
|
+
Each transition is a `git mv` + Edit + restage + README refresh + commit per the "Governance Skills Commit Their Own Completed Work" architecture rule.
|
|
30
30
|
|
|
31
31
|
## I1 enforcement at lifecycle transitions
|
|
32
32
|
|
|
33
|
-
Per
|
|
33
|
+
Per the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule § Decision Outcome line 97 + § Confirmation criteria 1+2:
|
|
34
34
|
|
|
35
35
|
| Transition | I1 enforcement |
|
|
36
36
|
|------------|---------------|
|
|
37
37
|
| capture-time (`/wr-itil:capture-rfc`) | **Hard-block** on missing/malformed/unresolved problem-trace. Deny logged to `logs/rfc-capture-denials.jsonl`. |
|
|
38
38
|
| `proposed → accepted` | Hard-block if any `problems:` entry is no longer resolvable (deleted ticket file). Architect+JTBD re-review gate fires here. |
|
|
39
|
-
| `accepted → in-progress` | **Hard-block** (irreversible state per
|
|
39
|
+
| `accepted → in-progress` | **Hard-block** (irreversible state per the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule line 97) if any traced problem is missing or orphan (Closed/Parked allowed only via `Refs: RFC-<NNN>` retro-pattern; bounded-escape carve-out applies to retrospective RFCs only — see capture-rfc Step 2 rationale). |
|
|
40
40
|
| `in-progress → verifying` | **Hard-block** (irreversible state) — same rules as `→ in-progress`. |
|
|
41
|
-
| `verifying → closed` | **Advisory-with-escalation**: if driving problem is Closed/Parked AND no still-open trace exists, emit warning naming the trace history; proceed if user confirms (or AFK fallback per
|
|
41
|
+
| `verifying → closed` | **Advisory-with-escalation**: if driving problem is Closed/Parked AND no still-open trace exists, emit warning naming the trace history; proceed if user confirms (or AFK fallback per the "Structured User Interaction for Governance-Skill Decisions" architecture rule Rule 6). This is the bounded escape per the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule line 97 — closing an RFC whose driving problem was already closed is the legitimate retrospective-completion path. |
|
|
42
42
|
|
|
43
43
|
## WSJF Prioritisation (RFC-level Phase 1)
|
|
44
44
|
|
|
45
|
-
Per
|
|
45
|
+
Per the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule § Decisions Resolved: WSJF placement is **RFC-level for Phase 1**. Story-level WSJF is structurally impossible without story-mapping infrastructure (Phase 2 deferred).
|
|
46
46
|
|
|
47
47
|
**WSJF = (Severity × Status Multiplier) / Effort**
|
|
48
48
|
|
|
@@ -86,7 +86,7 @@ The argument shape determines the operation:
|
|
|
86
86
|
- **`list`** → display (Step 8).
|
|
87
87
|
- **Anything else** → halt with stderr directive directing the user to capture-rfc for new RFCs.
|
|
88
88
|
|
|
89
|
-
The lightweight + heavyweight split per
|
|
89
|
+
The lightweight + heavyweight split per the "Governance skill invocation patterns — foreground + background with deferred-question resumption" architecture rule + the "Rename `wr-problem` Plugin to `wr-itil`" architecture rule amended Skill Granularity rule means manage-rfc does NOT host new-RFC creation inline. Capture-rfc owns the intake; manage-rfc owns lifecycle.
|
|
90
90
|
|
|
91
91
|
### 6. Update flow (bare `RFC-<NNN>`)
|
|
92
92
|
|
|
@@ -102,28 +102,28 @@ Apply the update — typical edits:
|
|
|
102
102
|
- Adding `## Related` entries.
|
|
103
103
|
- Updating `decision-makers` or `adrs` frontmatter when ADRs are referenced mid-RFC execution.
|
|
104
104
|
|
|
105
|
-
**Do NOT add a "Considered Options / Alternatives Rejected" section to the RFC body.** Per
|
|
105
|
+
**Do NOT add a "Considered Options / Alternatives Rejected" section to the RFC body.** Per the "RFCs hold no independent decisions" architecture rule (RFCs hold no independent decisions), every contested choice among ≥ 2 viable options is recorded as an ADR (inheriting the ": Architect emits a Needs-Direction verdict; the main agent owns the AskUserQuestion" architecture rule confirm gate + the ": Human-oversight marker + `/wr-architect:review-decisions` drain for recorded decisions" architecture rule oversight marker) and referenced in the RFC's `adrs:` frontmatter — never re-argued in the RFC body. An RFC carries only scope, decomposition (sequencing/breakdown of already-decided work), and traces. The "Behavioural-tests-default for skill testing" architecture rule behavioural lint hard-fails any RFC body that contains a rejected-alternatives block without a matching `adrs:` reference.
|
|
106
106
|
|
|
107
|
-
#### README refresh on conditional update (
|
|
107
|
+
#### README refresh on conditional update (the "Problem 094: `/wr-itil:manage-problem` does not refresh `docs/problems/README.md` on ticket creation" problem mirror)
|
|
108
108
|
|
|
109
109
|
If the update changed any ranking-bearing field (Status, Severity-via-problems, Effort, WSJF), regenerate `docs/rfcs/README.md` in-place reflecting the new ranking and stage it in the same commit. If the edit touched only `## Summary`, `## Scope`, `## Tasks`, `## Related`, or other non-ranking sections, skip the refresh.
|
|
110
110
|
|
|
111
|
-
**Mechanism** mirrors
|
|
111
|
+
**Mechanism** mirrors the "Problem 094: `/wr-itil:manage-problem` does not refresh `docs/problems/README.md` on ticket creation" problem in `manage-problem` Step 6 — render not re-rank; trust other RFC files' stored WSJF; consume only the post-edit RFC's WSJF for the ranking table.
|
|
112
112
|
|
|
113
113
|
### 7. Status transitions
|
|
114
114
|
|
|
115
|
-
Each transition is a `git mv` + Edit + `git add` (
|
|
115
|
+
Each transition is a `git mv` + Edit + `git add` (the "Problem 057: `git mv` + Edit + `git add` staging-ordering trap drops content edits from the commit" problem staging trap) + README refresh + commit.
|
|
116
116
|
|
|
117
117
|
**Pre-flight checks before each transition**:
|
|
118
118
|
|
|
119
119
|
| Transition | Checks |
|
|
120
120
|
|------------|--------|
|
|
121
|
-
| `proposed → accepted` | All `problems:` entries resolve. Architect re-review PASS. JTBD re-review PASS. `## Scope` populated (not "deferred"). `## Tasks` decomposed (≥ 1 task; not just deferred placeholder). **`stories:` non-empty — run `wr-itil-check-rfc-has-stories <rfc-file>`; hard-block on non-zero exit (empty `stories: []` or missing).** Per **
|
|
121
|
+
| `proposed → accepted` | All `problems:` entries resolve. Architect re-review PASS. JTBD re-review PASS. `## Scope` populated (not "deferred"). `## Tasks` decomposed (≥ 1 task; not just deferred placeholder). **`stories:` non-empty — run `wr-itil-check-rfc-has-stories <rfc-file>`; hard-block on non-zero exit (empty `stories: []` or missing).** Per **the "Every RFC has at least one story" architecture rule** the empty-stories fallback is removed: an atomic fix is an RFC with exactly one full story; an empty `stories:` is permitted only on a `proposed`/draft RFC before the fix is scoped, never at `accepted`. **Every listed story approved — run `wr-itil-check-rfc-stories-ratified <rfc-file> [stories-root] [maps-root]`; hard-block on non-zero (any listed story names no story map, or names one that is unratified or has drifted).** Per **the "A release row is the RFC, and the map is the approval surface" architecture rule** a story's approval is its map's, so the remedy is always to ratify the MAP — a story carries no oversight marker of its own. Composes with the has-stories gate (has-stories checks ≥1 exists, this checks each is approved). |
|
|
122
122
|
| `accepted → in-progress` | First commit referencing `Refs: RFC-<NNN>` exists OR is being authored in this same commit. I1 hard-block on missing/orphan trace. |
|
|
123
123
|
| `in-progress → verifying` | All `## Tasks` checked. `## Verification` section drafted (release marker, user-side check, trace closure path). I1 hard-block on missing/orphan trace. |
|
|
124
|
-
| `verifying → closed` | User explicitly confirms (or AFK Rule 6 fallback for evidence-based close per
|
|
124
|
+
| `verifying → closed` | User explicitly confirms (or AFK Rule 6 fallback for evidence-based close per the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule / the "— Decision-Delegation Contract: when agents act on the framework vs ask the user" architecture rule framework-resolved silent dispatch). I1 advisory-with-escalation if driving problems Closed/Parked. |
|
|
125
125
|
|
|
126
|
-
If any pre-flight fails: report which checks failed; do NOT proceed; offer `AskUserQuestion` for direction-setting decisions (e.g., "scope still says deferred — populate now or park the transition?") only when the resolution is genuinely user-direction territory per
|
|
126
|
+
If any pre-flight fails: report which checks failed; do NOT proceed; offer `AskUserQuestion` for direction-setting decisions (e.g., "scope still says deferred — populate now or park the transition?") only when the resolution is genuinely user-direction territory per the "— Decision-Delegation Contract: when agents act on the framework vs ask the user" architecture rule.
|
|
127
127
|
|
|
128
128
|
#### Transition mechanics
|
|
129
129
|
|
|
@@ -133,46 +133,46 @@ git mv docs/rfcs/RFC-<NNN>-<slug>.<old-status>.md docs/rfcs/RFC-<NNN>-<slug>.<ne
|
|
|
133
133
|
git add docs/rfcs/RFC-<NNN>-<slug>.<new-status>.md
|
|
134
134
|
```
|
|
135
135
|
|
|
136
|
-
**
|
|
136
|
+
**the "Problem 057: `git mv` + Edit + `git add` staging-ordering trap drops content edits from the commit" problem staging trap rule**: re-stage explicitly after the Edit tool runs. `git mv` alone stages only the rename, not subsequent content edits.
|
|
137
137
|
|
|
138
|
-
#### Auto-transition detection (
|
|
138
|
+
#### Auto-transition detection (the "RFC lifecycle is not self-maintaining — it leans on human memory" problem/the ": RFC lifecycle self-maintenance" release design Piece 2; the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule line 292)
|
|
139
139
|
|
|
140
|
-
`proposed → in-progress` is **detected** by `itil-commit-trailer-transition-advisory.sh` (PostToolUse:Bash; the shared RFC+story commit-trailer trigger): when the first non-capture commit carrying `Refs: RFC-<NNN>` lands while the RFC is still `proposed`/`accepted`, the hook emits a stderr advisory. Per
|
|
140
|
+
`proposed → in-progress` is **detected** by `itil-commit-trailer-transition-advisory.sh` (PostToolUse:Bash; the shared RFC+story commit-trailer trigger): when the first non-capture commit carrying `Refs: RFC-<NNN>` lands while the RFC is still `proposed`/`accepted`, the hook emits a stderr advisory. Per the "Governance Skills Commit Their Own Completed Work" architecture rule the hook does NOT perform the `git mv` (that would land outside the commit grain) — this skill (or an AFK orchestrator acting on the advisory) performs the transition. Mirrors the manage-story draft→in-progress trigger; both share the one hook. (This closes the "future commit-trailer-trigger hook (deferred)" that manage-rfc and manage-story both named but never built.)
|
|
141
141
|
|
|
142
|
-
#### Render the `## Commits` section (
|
|
142
|
+
#### Render the `## Commits` section (the "RFC lifecycle is not self-maintaining — it leans on human memory" problem/the ": RFC lifecycle self-maintenance" release design Piece 1; the "The RFC `## Commits` section is a git-log-derived view, rendered skill-side" architecture rule)
|
|
143
143
|
|
|
144
|
-
On every transition AND every `review` (Step 9), render the affected RFC's `## Commits` section from git history — it is a derived view (`git log --grep "Refs: RFC-NNN"`), NOT stored per-commit, so it must be regenerated skill-side (a PostToolUse hook can't write it without breaking the
|
|
144
|
+
On every transition AND every `review` (Step 9), render the affected RFC's `## Commits` section from git history — it is a derived view (`git log --grep "Refs: RFC-NNN"`), NOT stored per-commit, so it must be regenerated skill-side (a PostToolUse hook can't write it without breaking the "Governance Skills Commit Their Own Completed Work" architecture rule commit grain). Invoke the helper before staging the RFC file:
|
|
145
145
|
|
|
146
146
|
```bash
|
|
147
147
|
wr-itil-update-rfc-commits-section docs/rfcs/RFC-<NNN>-<slug>.<status>.md
|
|
148
148
|
git add docs/rfcs/RFC-<NNN>-<slug>.<status>.md
|
|
149
149
|
```
|
|
150
150
|
|
|
151
|
-
`wr-itil-update-rfc-commits-section` is the
|
|
151
|
+
`wr-itil-update-rfc-commits-section` is the "Plugin-bundled scripts invoked from SKILL.md resolve via `bin/` on `$PATH`" architecture rule `$PATH` shim for `packages/itil/scripts/update-rfc-commits-section.sh` (idempotent — a current section is a byte-stable no-op, so the `git add` is a no-op when nothing changed). This closes the never-built the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule item 12; the section is honestly rendered-as-of-this-skill-run, never a false "maintained automatically" claim.
|
|
152
152
|
|
|
153
|
-
#### README refresh on every transition (
|
|
153
|
+
#### README refresh on every transition (the "Problem 062: `manage-problem` does not refresh `docs/problems/README.md` on single-ticket transitions; fast-path cache goes stale silently" problem mirror)
|
|
154
154
|
|
|
155
155
|
After renaming + Editing + `git add`-ing the transitioned RFC file, regenerate `docs/rfcs/README.md` in-place reflecting the new filename set and the transitioned RFC's new Status. Stage the refreshed README with the same commit.
|
|
156
156
|
|
|
157
|
-
Update the "Last reviewed" line on `docs/rfcs/README.md` per the **inline
|
|
157
|
+
Update the "Last reviewed" line on `docs/rfcs/README.md` per the **inline the "`docs/problems/README.md` line 3 narrative-blob accumulator bloat — sibling to (briefing tier 3) on a different surface" problem rotation mechanism** below. The mechanism is inlined here at the execution site (not deferred via cross-reference to `manage-problem` SKILL.md Step 5) so a single-pass agent reading this Step does not silently skip the archive step. **Skipping the BEFORE-rewrite archive step destroys the displaced fragment and re-opens the "transition-problem SKILL Step 7 Last-reviewed rotation silently skipped across iters" problem** (origin failure mode: iter-7 + iter-8 of 2026-05-30's AFK work-problems session silently skipped the equivalent rotation on `docs/problems/README.md` in 2 of 9 transition-bearing iters). The mechanism MUST execute IN ORDER:
|
|
158
158
|
|
|
159
159
|
1. **Read** line 3 of `docs/rfcs/README.md`: `awk 'NR==3' docs/rfcs/README.md` (`head -3 | tail -1` or `sed -n '3p'` are acceptable equivalents).
|
|
160
160
|
2. **Append-if-non-empty (BEFORE step 3, not after)** — if line 3 is non-empty AND not a same-session same-verb near-duplicate of the new fragment, append the existing line 3 verbatim to `docs/rfcs/README-history.md` (created on first rotation) under a `## YYYY-MM-DD` heading. Run this BEFORE the Edit-tool rewrite in step 3 — Edit's replace pattern destroys the displaced content otherwise.
|
|
161
|
-
3. **Rewrite** line 3 of `docs/rfcs/README.md` with the new fragment of form `> Last reviewed: YYYY-MM-DD **<event>** — <one-line summary>` (e.g. `RFC-<NNN> <status> — <one-line summary>`). Soft cap ≤ 1024 bytes per fragment; hard ceiling 5120 bytes per
|
|
162
|
-
4. **Stage both** — `git add docs/rfcs/README.md docs/rfcs/README-history.md` so the same single commit per
|
|
161
|
+
3. **Rewrite** line 3 of `docs/rfcs/README.md` with the new fragment of form `> Last reviewed: YYYY-MM-DD **<event>** — <one-line summary>` (e.g. `RFC-<NNN> <status> — <one-line summary>`). Soft cap ≤ 1024 bytes per fragment; hard ceiling 5120 bytes per the "Session-start briefing surface — SessionStart hook over tiered directory + indexed README" architecture rule Tier 3 envelope.
|
|
162
|
+
4. **Stage both** — `git add docs/rfcs/README.md docs/rfcs/README-history.md` so the same single commit per the "Governance Skills Commit Their Own Completed Work" architecture rule captures both files.
|
|
163
163
|
|
|
164
|
-
Canonical rationale anchor: `manage-problem` SKILL.md Step 5 § Last-reviewed line discipline (
|
|
164
|
+
Canonical rationale anchor: `manage-problem` SKILL.md Step 5 § Last-reviewed line discipline (the "`docs/problems/README.md` line 3 narrative-blob accumulator bloat — sibling to (briefing tier 3) on a different surface" problem). The discipline applies identically across `docs/problems/README.md`, `docs/rfcs/README.md`, and `docs/stories/README.md` (only the target index path differs). The cross-reference is preserved for the "why"; the "what" is inlined above for execution-time legibility per the "transition-problem SKILL Step 7 Last-reviewed rotation silently skipped across iters" problem.
|
|
165
165
|
|
|
166
166
|
#### Reverse trace on driving problem(s) (skill-side primary surface)
|
|
167
167
|
|
|
168
|
-
Per
|
|
168
|
+
Per the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule Phase 1 item 10 + Confirmation criterion 3 + architect Q1 verdict (skill-side primary, hook-side advisory for arbitrary commits): every transition refreshes the `## RFCs` section on each driving problem ticket inline in the same commit per the "Governance Skills Commit Their Own Completed Work" architecture rule single-commit grain.
|
|
169
169
|
|
|
170
170
|
For each `P<NNN>` in the transitioned RFC's frontmatter `problems:` list:
|
|
171
171
|
|
|
172
172
|
```bash
|
|
173
173
|
for pid_token in $(awk '/^problems:/{gsub(/[][]/,"");gsub(/,/,"\n");for(i=2;i<=NF;i++)print $i;exit}' "$rfc_file"); do
|
|
174
174
|
pid_num="${pid_token#P}"
|
|
175
|
-
# Dual-tolerant ticket discovery —
|
|
175
|
+
# Dual-tolerant ticket discovery — the ": docs/problems/ flat layout migration — per-state subdirs + adopter auto-migration" release design migration window covers
|
|
176
176
|
# BOTH flat (`docs/problems/<NNN>-<title>.<state>.md`) AND per-state
|
|
177
177
|
# subdir (`docs/problems/<state>/<NNN>-<title>.md`) layouts.
|
|
178
178
|
problem_file=$(ls docs/problems/${pid_num}-*.md docs/problems/*/${pid_num}-*.md 2>/dev/null | head -1)
|
|
@@ -182,7 +182,7 @@ for pid_token in $(awk '/^problems:/{gsub(/[][]/,"");gsub(/,/,"\n");for(i=2;i<=N
|
|
|
182
182
|
done
|
|
183
183
|
```
|
|
184
184
|
|
|
185
|
-
The helper (`packages/itil/scripts/update-problem-rfcs-section.sh`) is idempotent and applies lazy-empty discipline (zero traced RFCs → section absent — a structural rendering rule, not a ceremony exemption; a problem traces ≥ 1 RFC once it reaches fix-time per
|
|
185
|
+
The helper (`packages/itil/scripts/update-problem-rfcs-section.sh`) is idempotent and applies lazy-empty discipline (zero traced RFCs → section absent — a structural rendering rule, not a ceremony exemption; a problem traces ≥ 1 RFC once it reaches fix-time per the "Every fix goes through an RFC" architecture rule / I13). After the transition, the helper:
|
|
186
186
|
- Updates the row's `Status` column to the new lifecycle status.
|
|
187
187
|
- Removes the row when this transition de-traces a problem (frontmatter `problems:` edit removed the entry).
|
|
188
188
|
- No-op when the table is already current (idempotent contract).
|
|
@@ -191,7 +191,7 @@ The trailer hook (`itil-rfc-trailer-advisory.sh`) sits on top of this skill-side
|
|
|
191
191
|
|
|
192
192
|
#### Forward trace — `## Stories` body section (Phase 2)
|
|
193
193
|
|
|
194
|
-
Per
|
|
194
|
+
Per the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule line 270 + line 296: every transition that touches the RFC body refreshes the RFC's own `## Stories` body section from its frontmatter `stories:` array. The forward-trace surface renders the ordered execution sequence as inline links to the story files, lazy-empty when `stories: []` (an RFC not decomposed into stories). The helper is the Slice 2b sibling `update-rfc-references-section.sh`:
|
|
195
195
|
|
|
196
196
|
```bash
|
|
197
197
|
wr-itil-update-rfc-references-section "$rfc_file" "Stories"
|
|
@@ -218,11 +218,11 @@ Batch re-rank all RFCs and refresh `docs/rfcs/README.md`.
|
|
|
218
218
|
4. WSJF = (Severity × Status Multiplier) / Effort divisor.
|
|
219
219
|
5. Update WSJF/Effort lines in the RFC file if changed.
|
|
220
220
|
|
|
221
|
-
**Step 9c**: Present a WSJF-ranked table (open + accepted + in-progress only). Verifying RFCs go in a Verification Queue section sorted by Released date ASC (canonical VQ sort direction per
|
|
221
|
+
**Step 9c**: Present a WSJF-ranked table (open + accepted + in-progress only). Verifying RFCs go in a Verification Queue section sorted by Released date ASC (canonical VQ sort direction per the "docs/problems/README.md Verification Queue rendered newest-first contradicts section header "Ranked by release age, oldest first"" problem). Closed RFCs go in a Closed section (cosmetic, no ranking).
|
|
222
222
|
|
|
223
|
-
**Step 9d**: For each `.verifying.md` RFC, collect in-session evidence per
|
|
223
|
+
**Step 9d**: For each `.verifying.md` RFC, collect in-session evidence per the "— Decision-Delegation Contract: when agents act on the framework vs ask the user" architecture rule framework-resolved silent dispatch (mirrors `manage-problem` Step 9d). Concrete + unambiguous citation → close on evidence via the transition path. Ambiguous/absent → leave as Verifying.
|
|
224
224
|
|
|
225
|
-
**Step 9e**: Update changed files; refresh `docs/rfcs/README.md`; refresh the `## RFCs` reverse-trace section on every problem ticket whose traced RFCs changed status or title in this batch (per
|
|
225
|
+
**Step 9e**: Update changed files; refresh `docs/rfcs/README.md`; refresh the `## RFCs` reverse-trace section on every problem ticket whose traced RFCs changed status or title in this batch (per the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule Phase 1 item 10 + Confirmation criterion 3 — skill-side primary):
|
|
226
226
|
|
|
227
227
|
```bash
|
|
228
228
|
# Aggregate the union of P<NNN> across all RFCs touched in this review.
|
|
@@ -232,7 +232,7 @@ for problem_file in $(printf '%s\n' "${touched_problem_files[@]}" | sort -u); do
|
|
|
232
232
|
done
|
|
233
233
|
```
|
|
234
234
|
|
|
235
|
-
The helper is idempotent — a problem ticket whose `## RFCs` table is already current emits no diff, and `git add` of an unchanged file is a no-op. Any drift gets fixed in this commit per
|
|
235
|
+
The helper is idempotent — a problem ticket whose `## RFCs` table is already current emits no diff, and `git add` of an unchanged file is a no-op. Any drift gets fixed in this commit per the "Governance Skills Commit Their Own Completed Work" architecture rule single-commit grain. Commit per the "Governance Skills Commit Their Own Completed Work" architecture rule:
|
|
236
236
|
|
|
237
237
|
```
|
|
238
238
|
docs(rfcs): review — re-rank RFC priorities
|
|
@@ -253,9 +253,9 @@ Commit conventions per operation:
|
|
|
253
253
|
| `verifying → closed` | `docs(rfcs): close RFC-<NNN> <title>` |
|
|
254
254
|
| Review/re-rank | `docs(rfcs): review — re-rank RFC priorities` |
|
|
255
255
|
|
|
256
|
-
All commit messages on RFC-bearing commits carry the `Refs: RFC-<NNN>` trailer (
|
|
256
|
+
All commit messages on RFC-bearing commits carry the `Refs: RFC-<NNN>` trailer (the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule finding 8 + Phase 1 item 12).
|
|
257
257
|
|
|
258
|
-
Satisfy the commit gate per
|
|
258
|
+
Satisfy the commit gate per the "Governance Skills Commit Their Own Completed Work" architecture rule — primary path delegates to `wr-risk-scorer:pipeline` subagent; fallback invokes `/wr-risk-scorer:assess-release` skill.
|
|
259
259
|
|
|
260
260
|
### 12. Auto-release (skip in AFK orchestrator)
|
|
261
261
|
|
|
@@ -268,36 +268,36 @@ Same conditional drain as `manage-problem` Step 12: if not in an AFK orchestrato
|
|
|
268
268
|
| New RFC creation | Out of scope; redirect to capture-rfc | Owns the lightweight path |
|
|
269
269
|
| Lifecycle transitions | Owns proposed → accepted → in-progress → verifying → closed | Out of scope |
|
|
270
270
|
| WSJF re-rank | Step 9 review owns batch re-rank | Out of scope |
|
|
271
|
-
| README refresh |
|
|
271
|
+
| README refresh | the "Problem 094: `/wr-itil:manage-problem` does not refresh `docs/problems/README.md` on ticket creation" problem / the "Problem 062: `manage-problem` does not refresh `docs/problems/README.md` on single-ticket transitions; fast-path cache goes stale silently" problem inline (regenerate + stage in same commit) | Deferred (capture-time speed) |
|
|
272
272
|
| Commit grain | One commit per intake / per transition / per review | One commit per capture |
|
|
273
273
|
| AskUserQuestion authority | direction-setting (transition-trigger ambiguity), deviation-approval (scope expansion mid-RFC), silent-mechanical (status renames, README refresh) | direction-setting (problem-trace), taste (title), silent-mechanical (everything else) |
|
|
274
274
|
|
|
275
|
-
|
|
275
|
+
New RFC documents are retired. This skill manages legacy RFC documents only; new fix proposals use release rows and stories via `/wr-itil:capture-rfc`.
|
|
276
276
|
|
|
277
277
|
## Related
|
|
278
278
|
|
|
279
|
-
- **
|
|
280
|
-
- **
|
|
279
|
+
- **the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule** — Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology.
|
|
280
|
+
- **the "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.
|
|
281
281
|
- **`docs/plans/170-rfc-framework-story-map.md`** — Slice 2 task B5.T4 lands this skill.
|
|
282
|
-
- **
|
|
282
|
+
- **the ": Decompose a Fix Into Coordinated Changes" user outcome** (primary), the ": Enforce Governance Without Slowing Down" user outcome (extended scope), the "Extend the Suite with New Plugins" user outcome (atomic-fix-adopter — every fix via RFC per the "Every fix goes through an RFC" architecture rule).
|
|
283
283
|
- **`docs/rfcs/README.md`** — lifecycle index + frontmatter shape (Slice 2 B5.T1 + B5.T2 — `adc53c8`).
|
|
284
284
|
- **`packages/itil/skills/capture-rfc/SKILL.md`** — sibling lightweight capture skill.
|
|
285
285
|
- **`packages/itil/skills/manage-problem/SKILL.md`** — heavyweight counterpart at the problem tier; structural template for this skill.
|
|
286
|
-
- **
|
|
287
|
-
- **
|
|
288
|
-
- **
|
|
289
|
-
- **
|
|
290
|
-
- **
|
|
291
|
-
- **
|
|
292
|
-
- **
|
|
293
|
-
- **
|
|
294
|
-
- **
|
|
295
|
-
- **
|
|
296
|
-
- **
|
|
297
|
-
- **
|
|
298
|
-
- **
|
|
299
|
-
- **
|
|
300
|
-
- **
|
|
301
|
-
- **
|
|
302
|
-
- **
|
|
303
|
-
- **
|
|
286
|
+
- **the "Governance Skills Commit Their Own Completed Work" architecture rule** — single-commit governance grain.
|
|
287
|
+
- **the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule** — lifecycle suffix-based (RFC mirrors).
|
|
288
|
+
- **the "Governance skill invocation patterns — foreground + background with deferred-question resumption" architecture rule** — lightweight + heavyweight split.
|
|
289
|
+
- **the "Progressive disclosure + once-per-session budget for UserPromptSubmit governance prose" architecture rule** — progressive disclosure; future REFERENCE.md split deferred per the "SKILL.md runtime budget policy" architecture rule.
|
|
290
|
+
- **the "Auto-apply scorer remediations to reach within appetite — open action-class vocabulary" architecture rule** — above-appetite remediation and halt discipline.
|
|
291
|
+
- **the "— Decision-Delegation Contract: when agents act on the framework vs ask the user" architecture rule** — decision delegation contract; authority classes.
|
|
292
|
+
- **the "Plugin-bundled scripts invoked from SKILL.md resolve via `bin/` on `$PATH`" architecture rule** — `wr-itil-reconcile-rfcs` shim grammar (Slice 3).
|
|
293
|
+
- **the "`@windyroad/*` plugin READMEs anchor on JTBD job IDs with load-bearing commit-hook + prose-woven framing" architecture rule** — load-bearing-from-the-start; I1 hard-block on day one.
|
|
294
|
+
- **the "Behavioural-tests-default for skill testing" architecture rule** — behavioural-tests default; bats coverage in Slice 2 B5.T5.
|
|
295
|
+
- **the "Problem 057: `git mv` + Edit + `git add` staging-ordering trap drops content edits from the commit" problem** — staging trap rule (re-stage after Edit on every transition).
|
|
296
|
+
- **the "Problem 062: `manage-problem` does not refresh `docs/problems/README.md` on single-ticket transitions; fast-path cache goes stale silently" problem** — README refresh on transition.
|
|
297
|
+
- **the "Problem 094: `/wr-itil:manage-problem` does not refresh `docs/problems/README.md` on ticket creation" problem** — README refresh on conditional update.
|
|
298
|
+
- **the "`docs/problems/README.md` drifts from filesystem truth across sessions despite (refresh-on-create) and (refresh-on-transition) both Closed" problem** — README reconciliation contract.
|
|
299
|
+
- **the "Agents over-ask in interactive sessions — conflating mechanical-stages with user-interactive-stages of multi-stage skill contracts (inverse-)" problem** + inverse-the "Problem 078: Assistant does not offer to capture a problem ticket when the user delivers strong-signal correction" problem — mechanical-stage carve-outs prevent over-asking.
|
|
300
|
+
- **the "`docs/problems/README.md` line 3 narrative-blob accumulator bloat — sibling to (briefing tier 3) on a different surface" problem** — Last-reviewed line discipline (single fragment + history archive).
|
|
301
|
+
- **the "`docs/problems/README.md` WSJF Rankings table row order doesn't match `/wr-itil:work-problems`'s tie-break selection — users assume the orchestrator is broken" problem** — tie-break ladder consistency.
|
|
302
|
+
- **the "docs/problems/README.md Verification Queue rendered newest-first contradicts section header "Ranked by release age, oldest first"" problem** — Verification Queue sort direction.
|
|
303
|
+
- **the "Changeset holding does not withhold shipment — held code ships with any sibling release" problem** — changeset holding does not withhold shipped code.
|