memento-mori-jester 0.1.96 → 0.1.97

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/CHANGELOG.md CHANGED
@@ -4,6 +4,12 @@ All notable changes to Memento Mori Jester are tracked here.
4
4
 
5
5
  ## Unreleased
6
6
 
7
+ ## 0.1.97
8
+
9
+ - Extended the checked support lifecycle overview so it now covers report, triage, response, closeout, prioritization, backlog record, and backlog review stages.
10
+ - Updated `support-lifecycle.json`, `npm run support:check`, and production-readiness checks so every support outcome points at the full checked artifact chain.
11
+ - Refreshed support docs, maintainer triage docs, production-readiness docs, roadmap, and release notes for the full lifecycle index.
12
+
7
13
  ## 0.1.96
8
14
 
9
15
  - Added a checked public-safe support backlog review checklist for deciding whether backlog records remain docs clarifications, fixture backlog items, rule-review candidates, or close with no action.
package/ROADMAP.md CHANGED
@@ -6,6 +6,7 @@ Memento Mori Jester is usable today as a CLI, MCP server, GitHub Action, and git
6
6
 
7
7
  ## Recently Shipped
8
8
 
9
+ - Full checked support lifecycle overview in v0.1.97, extending the index from report, triage, response, and closeout through prioritization, backlog records, and backlog review.
9
10
  - Checked support backlog review in v0.1.96, helping maintainers revisit backlog records and keep them as docs, fixture, or rule-review work, or close them with no action when evidence goes stale.
10
11
  - Checked support backlog records in v0.1.95, turning closed and prioritized support outcomes into public-safe docs clarification, fixture backlog, or rule-review candidate artifacts.
11
12
  - Checked support outcome prioritization in v0.1.94, helping maintainers turn closed support reports into docs, fixture backlog, or rule-review work based on public-safe evidence thresholds.
@@ -87,6 +88,7 @@ Memento Mori Jester is usable today as a CLI, MCP server, GitHub Action, and git
87
88
 
88
89
  - Collect real-world reports and fold the strongest redacted cases into more framework tuning cookbook recipes.
89
90
  - Add a small checked maintainer dashboard or report that summarizes open support backlog review states from public-safe JSON.
91
+ - Add a compact support lifecycle diagram or generated summary once the lifecycle JSON shape has settled.
90
92
  - Use support backlog record counts to choose the next docs, fixture, report-gallery, or rule-guidance batch.
91
93
  - Use repeated prioritized support outcomes to choose the next redacted fixture, report-gallery update, or rule-guidance review.
92
94
  - Add a hosted-page option or GitHub Pages instructions once the static page has settled.
@@ -21,7 +21,7 @@ For users who just need to understand what a healthy report looks like, point th
21
21
 
22
22
  For users who say a gallery report is confusing, stale, or hard to compare with their local output, point them at [examples/reports/feedback-template.md](../examples/reports/feedback-template.md) or the GitHub [report gallery feedback issue template](../.github/ISSUE_TEMPLATE/report_gallery_feedback.yml). It asks for the nearest checked example, sanitized command and output summaries, version, and redacted diagnostics without asking for private code.
23
23
 
24
- When a report has enough public-safe detail to triage, start with the checked [support lifecycle overview](../examples/support/support-lifecycle.md) to see the whole path from report to closeout. Then compare it with the checked [support triage playbook](../examples/support). The playbook walks sanitized report-gallery and false-positive reports through first response, classification, and a follow-up outcome. Use [response-snippets.md](../examples/support/response-snippets.md) to reply consistently after choosing the outcome, then use [closeout-checklist.md](../examples/support/closeout-checklist.md) to record whether the docs clarification shipped or queued, fixture backlog was created, or rule-review candidate was opened. Use [outcome-prioritization.md](../examples/support/outcome-prioritization.md) after closeout to decide whether the follow-up work is low-priority docs, medium-priority fixture backlog, or high-priority rule review. Use [backlog-records.md](../examples/support/backlog-records.md) when that prioritized follow-up needs a public-safe backlog artifact, then use [backlog-review.md](../examples/support/backlog-review.md) to revisit whether that artifact remains active or closes with no action.
24
+ When a report has enough public-safe detail to triage, start with the checked [support lifecycle overview](../examples/support/support-lifecycle.md) to see the whole path from report to backlog review. Then compare it with the checked [support triage playbook](../examples/support). The playbook walks sanitized report-gallery and false-positive reports through first response, classification, and a follow-up outcome. Use [response-snippets.md](../examples/support/response-snippets.md) to reply consistently after choosing the outcome, then use [closeout-checklist.md](../examples/support/closeout-checklist.md) to record whether the docs clarification shipped or queued, fixture backlog was created, or rule-review candidate was opened. Use [outcome-prioritization.md](../examples/support/outcome-prioritization.md) after closeout to decide whether the follow-up work is low-priority docs, medium-priority fixture backlog, or high-priority rule review. Use [backlog-records.md](../examples/support/backlog-records.md) when that prioritized follow-up needs a public-safe backlog artifact, then use [backlog-review.md](../examples/support/backlog-review.md) to revisit whether that artifact remains active or closes with no action.
25
25
 
26
26
  Do not ask users to paste secrets, private code, customer data, live credentials, complete CI logs, or unredacted SARIF. If the report involves credential exposure, command execution, unexpected network access, private code disclosure, package publishing, or MCP data exposure, route it through [SECURITY.md](../SECURITY.md).
27
27
 
@@ -47,7 +47,7 @@ This checklist defines what "production grade" means for Memento Mori Jester rig
47
47
  - `README.md` leads with a no-write first run, project bootstrap, agent setup, and optional hooks/CI.
48
48
  - `docs/GETTING_STARTED.md`, `docs/CLI.md`, `docs/RELEASE.md`, and `docs/TRUSTED_PUBLISHING.md` cover the core adoption and release paths.
49
49
  - `examples/reports` provides checked, public-safe report examples for fresh install diagnostics, summary output, blocked command reviews, and report-gallery feedback.
50
- - `examples/support` provides a checked support lifecycle overview, outcome prioritization guide, backlog records, backlog review checklist, maintainer triage playbook, response snippets, and closeout checklist for first response, classification, follow-up outcomes, public-safe decision records, backlog prioritization, backlog artifacts, and aging review from sanitized support reports.
50
+ - `examples/support` provides a checked support lifecycle overview covering report, triage, response, closeout, prioritization, backlog record, and backlog review, plus the supporting outcome prioritization guide, backlog records, backlog review checklist, maintainer triage playbook, response snippets, and closeout checklist.
51
51
  - `site/index.html` gives maintainers a static one-page share surface that reuses the demo, social card, start command, and public links.
52
52
  - Every public release has matching `CHANGELOG.md` notes and `docs/RELEASE_NOTES_vX.Y.Z.md`.
53
53
 
@@ -0,0 +1,58 @@
1
+ # Memento Mori Jester v0.1.97
2
+
3
+ ## Summary
4
+
5
+ This release updates the checked support lifecycle overview so it reflects the full public-safe support chain: report, triage, response, closeout, prioritization, backlog record, and backlog review.
6
+
7
+ ## What Changed
8
+
9
+ - Extended `examples/support/support-lifecycle.md` to show the full seven-stage lifecycle.
10
+ - Extended `examples/support/support-lifecycle.json` so every support outcome links to prioritization, backlog record, and backlog review artifacts.
11
+ - Updated `scripts/check-support-triage.mjs` to validate the seven lifecycle stages and artifact references.
12
+ - Extended production-readiness checks for the full lifecycle index.
13
+ - Updated support docs, maintainer triage docs, production-readiness docs, roadmap, and changelog.
14
+
15
+ ## Public Interface
16
+
17
+ - No CLI command changes.
18
+ - No MCP tool changes.
19
+ - No config schema changes.
20
+ - No review rule, scoring, matching, or verdict behavior changes.
21
+ - No GitHub Action input changes.
22
+ - Support docs and package examples now include the full checked support lifecycle index.
23
+
24
+ ## Release Validation
25
+
26
+ ```powershell
27
+ npm.cmd test
28
+ npm.cmd run support:check
29
+ npm.cmd run reports:check
30
+ npm.cmd run demo:svg:check
31
+ npm.cmd run promo:card:check
32
+ npm.cmd run promo:check
33
+ npm.cmd run fixtures:report
34
+ npm.cmd run fixtures:report -- --json
35
+ npm.cmd run fixtures:report -- --markdown
36
+ npm.cmd run pack:dry
37
+ git diff --check
38
+ node .\dist\cli.js doctor
39
+ node .\dist\cli.js summary --kind command "git reset --hard"
40
+ git diff | node .\dist\cli.js diff --fail-on block --subject "v0.1.97 full support lifecycle overview"
41
+ ```
42
+
43
+ Expected:
44
+
45
+ - `support:check` verifies issue templates, feedback templates, the full support lifecycle overview, outcome prioritization guide, backlog records, backlog review checklist, maintainer triage playbook, response snippets, and closeout checklist.
46
+ - `reports:check` still verifies the installed-package report gallery.
47
+ - fixture report still shows `Fixtures: 222`.
48
+ - GitHub Release and npm Publish complete from the `v0.1.97` tag.
49
+
50
+ After publish:
51
+
52
+ ```powershell
53
+ npm.cmd view memento-mori-jester version --silent
54
+ npx.cmd -y memento-mori-jester@latest doctor
55
+ npx.cmd -y memento-mori-jester@latest summary --kind command "git reset --hard"
56
+ npm.cmd run support:check
57
+ npm.cmd run reports:check -- --package memento-mori-jester@latest
58
+ ```
@@ -2,7 +2,7 @@
2
2
 
3
3
  This playbook shows how to handle sanitized adopter reports without turning every surprise into an immediate rule change. It pairs with [docs/MAINTAINER_TRIAGE.md](../../docs/MAINTAINER_TRIAGE.md), the [report gallery feedback template](../reports/feedback-template.md), and the GitHub issue templates.
4
4
 
5
- Start with the checked [support lifecycle overview](support-lifecycle.md) when you need the whole path in one place. The lifecycle source is [support-lifecycle.json](support-lifecycle.json). Use [outcome-prioritization.md](outcome-prioritization.md) after closeout to decide whether follow-up work should become docs, fixture backlog, or rule-review work. Use [backlog-records.md](backlog-records.md) to turn that decision into a public-safe backlog artifact, then use [backlog-review.md](backlog-review.md) to decide whether the item stays active or closes with no action.
5
+ Start with the checked [support lifecycle overview](support-lifecycle.md) when you need the whole path in one place: report, triage, response, closeout, prioritization, backlog record, and backlog review. The lifecycle source is [support-lifecycle.json](support-lifecycle.json). Use [outcome-prioritization.md](outcome-prioritization.md) after closeout to decide whether follow-up work should become docs, fixture backlog, or rule-review work. Use [backlog-records.md](backlog-records.md) to turn that decision into a public-safe backlog artifact, then use [backlog-review.md](backlog-review.md) to decide whether the item stays active or closes with no action.
6
6
 
7
7
  The checked source is [triage-playbook.json](triage-playbook.json). Use [response-snippets.md](response-snippets.md) for copy-paste replies after a report is classified. The snippet source is [response-snippets.json](response-snippets.json). Use [closeout-checklist.md](closeout-checklist.md) to record what happened after the response. The closeout source is [closeout-checklist.json](closeout-checklist.json). The backlog source is [backlog-records.json](backlog-records.json). The review source is [backlog-review.json](backlog-review.json).
8
8
 
@@ -26,6 +26,24 @@
26
26
  "artifact": "examples/support/closeout-checklist.json",
27
27
  "reference": "docs-clarification-closeout",
28
28
  "purpose": "Record whether the docs clarification shipped or is queued, then link the public-safe follow-up."
29
+ },
30
+ {
31
+ "id": "prioritization",
32
+ "artifact": "examples/support/outcome-prioritization.json",
33
+ "reference": "docs-example",
34
+ "purpose": "Confirm the follow-up is low-priority docs clarification before opening a backlog record."
35
+ },
36
+ {
37
+ "id": "backlog-record",
38
+ "artifact": "examples/support/backlog-records.json",
39
+ "reference": "docs-clarification-backlog-record",
40
+ "purpose": "Record the public-safe docs backlog artifact and the checks needed after copy changes."
41
+ },
42
+ {
43
+ "id": "backlog-review",
44
+ "artifact": "examples/support/backlog-review.json",
45
+ "reference": "docs-clarification-review",
46
+ "purpose": "Revisit whether the docs backlog item remains active or should close with no action."
29
47
  }
30
48
  ],
31
49
  "requiredChecks": ["npm run reports:check", "npm run support:check"]
@@ -57,6 +75,24 @@
57
75
  "artifact": "examples/support/closeout-checklist.json",
58
76
  "reference": "fixture-backlog-closeout",
59
77
  "purpose": "Record that a redacted fixture backlog item exists and the rule remains unchanged."
78
+ },
79
+ {
80
+ "id": "prioritization",
81
+ "artifact": "examples/support/outcome-prioritization.json",
82
+ "reference": "fixture-backlog",
83
+ "purpose": "Confirm the follow-up is medium-priority fixture backlog before changing any matcher."
84
+ },
85
+ {
86
+ "id": "backlog-record",
87
+ "artifact": "examples/support/backlog-records.json",
88
+ "reference": "fixture-backlog-record",
89
+ "purpose": "Record the public-safe fixture backlog artifact and the expected pass or quiet-pass boundary."
90
+ },
91
+ {
92
+ "id": "backlog-review",
93
+ "artifact": "examples/support/backlog-review.json",
94
+ "reference": "fixture-backlog-review",
95
+ "purpose": "Revisit whether the fixture backlog item remains active or is already covered elsewhere."
60
96
  }
61
97
  ],
62
98
  "requiredChecks": ["npm run fixtures:check", "npm run fixtures:report", "npm run support:check"]
@@ -88,6 +124,24 @@
88
124
  "artifact": "examples/support/closeout-checklist.json",
89
125
  "reference": "rule-review-closeout",
90
126
  "purpose": "Record that a rule-review candidate was opened and fixture evidence will be compared."
127
+ },
128
+ {
129
+ "id": "prioritization",
130
+ "artifact": "examples/support/outcome-prioritization.json",
131
+ "reference": "rule-review-candidate",
132
+ "purpose": "Confirm the follow-up is high-priority rule review backed by repeated sanitized reports."
133
+ },
134
+ {
135
+ "id": "backlog-record",
136
+ "artifact": "examples/support/backlog-records.json",
137
+ "reference": "rule-review-candidate-backlog-record",
138
+ "purpose": "Record the public-safe rule-review backlog artifact and the fixture evidence to compare."
139
+ },
140
+ {
141
+ "id": "backlog-review",
142
+ "artifact": "examples/support/backlog-review.json",
143
+ "reference": "rule-review-candidate-review",
144
+ "purpose": "Revisit whether repeated evidence still warrants rule review before any behavior change."
91
145
  }
92
146
  ],
93
147
  "requiredChecks": ["npm run fixtures:report -- --markdown", "npm run support:check"]
@@ -3,18 +3,18 @@
3
3
  This index shows the public-safe support path at a glance:
4
4
 
5
5
  ```text
6
- report -> triage -> response -> closeout
6
+ report -> triage -> response -> closeout -> prioritization -> backlog-record -> backlog-review
7
7
  ```
8
8
 
9
- The checked source is [support-lifecycle.json](support-lifecycle.json). It ties together the [report gallery feedback template](../reports/feedback-template.md), [triage playbook](triage-playbook.json), [response snippets](response-snippets.md), and [closeout checklist](closeout-checklist.md).
9
+ The checked source is [support-lifecycle.json](support-lifecycle.json). It ties together the [report gallery feedback template](../reports/feedback-template.md), [triage playbook](triage-playbook.json), [response snippets](response-snippets.md), [closeout checklist](closeout-checklist.md), [outcome prioritization guide](outcome-prioritization.md), [backlog records](backlog-records.md), and [backlog review checklist](backlog-review.md).
10
10
 
11
11
  ## Outcomes
12
12
 
13
- | Outcome | Report | Triage | Response | Closeout |
14
- | --- | --- | --- | --- | --- |
15
- | `docs-example` | `report-gallery-feedback` | `gallery-expected-block-docs` | `docs-example-response` | `docs-clarification-closeout` |
16
- | `fixture-backlog` | `false-positive` | `false-positive-fixture-backlog` | `fixture-backlog-response` | `fixture-backlog-closeout` |
17
- | `rule-review-candidate` | `false-positive` | `repeated-risky-domain-rule-review` | `rule-review-candidate-response` | `rule-review-closeout` |
13
+ | Outcome | Report | Triage | Response | Closeout | Prioritization | Backlog Record | Backlog Review |
14
+ | --- | --- | --- | --- | --- | --- | --- | --- |
15
+ | `docs-example` | `report-gallery-feedback` | `gallery-expected-block-docs` | `docs-example-response` | `docs-clarification-closeout` | `docs-example` | `docs-clarification-backlog-record` | `docs-clarification-review` |
16
+ | `fixture-backlog` | `false-positive` | `false-positive-fixture-backlog` | `fixture-backlog-response` | `fixture-backlog-closeout` | `fixture-backlog` | `fixture-backlog-record` | `fixture-backlog-review` |
17
+ | `rule-review-candidate` | `false-positive` | `repeated-risky-domain-rule-review` | `rule-review-candidate-response` | `rule-review-closeout` | `rule-review-candidate` | `rule-review-candidate-backlog-record` | `rule-review-candidate-review` |
18
18
 
19
19
  ## Audit Checklist
20
20
 
@@ -24,6 +24,9 @@ For each public support issue, confirm:
24
24
  - the triage outcome is one of `docs-example`, `fixture-backlog`, or `rule-review-candidate`,
25
25
  - the response snippet matches the chosen outcome,
26
26
  - the closeout record says whether the docs clarification shipped or queued, fixture backlog was created, or rule-review candidate was opened,
27
+ - the prioritization record says whether follow-up is low-priority docs, medium-priority fixture backlog, or high-priority rule review,
28
+ - the backlog record captures the public-safe follow-up artifact without changing rule behavior first,
29
+ - the backlog review keeps the item active as docs, fixture, or rule-review work only while evidence still holds, otherwise it closes as `closed-no-action`,
27
30
  - no secrets, private code, private paths, customer data, full logs, unredacted SARIF, or exploitable security details appear in the public record.
28
31
 
29
32
  ## Checks
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "memento-mori-jester",
3
- "version": "0.1.96",
3
+ "version": "0.1.97",
4
4
  "description": "A local court-jester sidecar for AI coding agents: review plans, commands, diffs, and final claims before they get too pleased with themselves.",
5
5
  "type": "module",
6
6
  "repository": {
@@ -258,13 +258,18 @@ requireText("examples/support/closeout-checklist.json", /fixture-backlog-closeou
258
258
  requireText("examples/support/closeout-checklist.json", /rule-review-closeout/, "support rule-review closeout record");
259
259
  requireText("examples/support/support-lifecycle.md", /Support Lifecycle Overview/, "support lifecycle heading");
260
260
  requireText("examples/support/support-lifecycle.md", /support-lifecycle\.json/, "support lifecycle JSON link");
261
- requireText("examples/support/support-lifecycle.md", /report -> triage -> response -> closeout/, "support lifecycle flow");
261
+ requireText("examples/support/support-lifecycle.md", /report -> triage -> response -> closeout -> prioritization -> backlog-record -> backlog-review/, "support lifecycle flow");
262
262
  requireText("examples/support/support-lifecycle.md", /docs-example/, "support lifecycle docs outcome");
263
263
  requireText("examples/support/support-lifecycle.md", /fixture-backlog/, "support lifecycle fixture outcome");
264
264
  requireText("examples/support/support-lifecycle.md", /rule-review-candidate/, "support lifecycle rule-review outcome");
265
+ requireText("examples/support/support-lifecycle.md", /backlog records/, "support lifecycle backlog records stage");
266
+ requireText("examples/support/support-lifecycle.md", /backlog review checklist/, "support lifecycle backlog review stage");
265
267
  requireText("examples/support/support-lifecycle.json", /docs-example-response/, "support lifecycle docs response");
266
268
  requireText("examples/support/support-lifecycle.json", /fixture-backlog-response/, "support lifecycle fixture response");
267
269
  requireText("examples/support/support-lifecycle.json", /rule-review-candidate-response/, "support lifecycle rule-review response");
270
+ requireText("examples/support/support-lifecycle.json", /outcome-prioritization\.json/, "support lifecycle prioritization artifact");
271
+ requireText("examples/support/support-lifecycle.json", /backlog-records\.json/, "support lifecycle backlog records artifact");
272
+ requireText("examples/support/support-lifecycle.json", /backlog-review\.json/, "support lifecycle backlog review artifact");
268
273
  requireText("examples/support/outcome-prioritization.md", /Support Outcome Prioritization/, "support outcome prioritization heading");
269
274
  requireText("examples/support/outcome-prioritization.md", /outcome-prioritization\.json/, "support outcome prioritization JSON link");
270
275
  requireText("examples/support/outcome-prioritization.md", /docs-example/, "support outcome prioritization docs outcome");
@@ -120,19 +120,26 @@ requireText("examples/support/closeout-checklist.json", /fixture-backlog-closeou
120
120
  requireText("examples/support/closeout-checklist.json", /rule-review-closeout/, "rule-review closeout record");
121
121
  requireText("examples/support/support-lifecycle.md", /Support Lifecycle Overview/, "support lifecycle heading");
122
122
  requireText("examples/support/support-lifecycle.md", /support-lifecycle\.json/, "support lifecycle JSON link");
123
- requireText("examples/support/support-lifecycle.md", /report -> triage -> response -> closeout/, "support lifecycle flow");
123
+ requireText("examples/support/support-lifecycle.md", /report -> triage -> response -> closeout -> prioritization -> backlog-record -> backlog-review/, "support lifecycle flow");
124
124
  requireText("examples/support/support-lifecycle.md", /report gallery feedback template/, "report feedback lifecycle link");
125
125
  requireText("examples/support/support-lifecycle.md", /triage playbook/, "triage lifecycle link");
126
126
  requireText("examples/support/support-lifecycle.md", /response snippets/, "response lifecycle link");
127
127
  requireText("examples/support/support-lifecycle.md", /closeout checklist/, "closeout lifecycle link");
128
+ requireText("examples/support/support-lifecycle.md", /outcome prioritization guide/, "prioritization lifecycle link");
129
+ requireText("examples/support/support-lifecycle.md", /backlog records/, "backlog records lifecycle link");
130
+ requireText("examples/support/support-lifecycle.md", /backlog review checklist/, "backlog review lifecycle link");
128
131
  requireText("examples/support/support-lifecycle.md", /docs-example/, "docs lifecycle outcome");
129
132
  requireText("examples/support/support-lifecycle.md", /fixture-backlog/, "fixture lifecycle outcome");
130
133
  requireText("examples/support/support-lifecycle.md", /rule-review-candidate/, "rule-review lifecycle outcome");
134
+ requireText("examples/support/support-lifecycle.md", /closed-no-action/, "closed no-action lifecycle review");
131
135
  requireText("examples/support/support-lifecycle.md", /doctor --json/, "doctor JSON lifecycle prompt");
132
136
  requireText("examples/support/support-lifecycle.md", /SECURITY\.md/, "lifecycle security redirect");
133
137
  requireText("examples/support/support-lifecycle.json", /docs-example-response/, "docs lifecycle response");
134
138
  requireText("examples/support/support-lifecycle.json", /fixture-backlog-response/, "fixture lifecycle response");
135
139
  requireText("examples/support/support-lifecycle.json", /rule-review-candidate-response/, "rule-review lifecycle response");
140
+ requireText("examples/support/support-lifecycle.json", /outcome-prioritization\.json/, "lifecycle prioritization artifact");
141
+ requireText("examples/support/support-lifecycle.json", /backlog-records\.json/, "lifecycle backlog records artifact");
142
+ requireText("examples/support/support-lifecycle.json", /backlog-review\.json/, "lifecycle backlog review artifact");
136
143
  requireText("examples/support/outcome-prioritization.md", /Support Outcome Prioritization/, "support outcome prioritization heading");
137
144
  requireText("examples/support/outcome-prioritization.md", /outcome-prioritization\.json/, "support prioritization JSON link");
138
145
  requireText("examples/support/outcome-prioritization.md", /support lifecycle overview/, "support lifecycle prioritization link");
@@ -534,26 +541,53 @@ function checkSupportLifecycle() {
534
541
  const expected = [
535
542
  {
536
543
  outcome: "docs-example",
537
- stageReferences: ["report-gallery-feedback", "gallery-expected-block-docs", "docs-example-response", "docs-clarification-closeout"],
544
+ stageReferences: [
545
+ "report-gallery-feedback",
546
+ "gallery-expected-block-docs",
547
+ "docs-example-response",
548
+ "docs-clarification-closeout",
549
+ "docs-example",
550
+ "docs-clarification-backlog-record",
551
+ "docs-clarification-review"
552
+ ],
538
553
  checks: ["npm run reports:check", "npm run support:check"]
539
554
  },
540
555
  {
541
556
  outcome: "fixture-backlog",
542
- stageReferences: ["false-positive", "false-positive-fixture-backlog", "fixture-backlog-response", "fixture-backlog-closeout"],
557
+ stageReferences: [
558
+ "false-positive",
559
+ "false-positive-fixture-backlog",
560
+ "fixture-backlog-response",
561
+ "fixture-backlog-closeout",
562
+ "fixture-backlog",
563
+ "fixture-backlog-record",
564
+ "fixture-backlog-review"
565
+ ],
543
566
  checks: ["npm run fixtures:check", "npm run fixtures:report", "npm run support:check"]
544
567
  },
545
568
  {
546
569
  outcome: "rule-review-candidate",
547
- stageReferences: ["false-positive", "repeated-risky-domain-rule-review", "rule-review-candidate-response", "rule-review-closeout"],
570
+ stageReferences: [
571
+ "false-positive",
572
+ "repeated-risky-domain-rule-review",
573
+ "rule-review-candidate-response",
574
+ "rule-review-closeout",
575
+ "rule-review-candidate",
576
+ "rule-review-candidate-backlog-record",
577
+ "rule-review-candidate-review"
578
+ ],
548
579
  checks: ["npm run fixtures:report -- --markdown", "npm run support:check"]
549
580
  }
550
581
  ];
551
- const expectedStageIds = ["report", "triage", "response", "closeout"];
582
+ const expectedStageIds = ["report", "triage", "response", "closeout", "prioritization", "backlog-record", "backlog-review"];
552
583
  const expectedArtifacts = [
553
584
  "examples/reports/feedback-template.md",
554
585
  "examples/support/triage-playbook.json",
555
586
  "examples/support/response-snippets.json",
556
- "examples/support/closeout-checklist.json"
587
+ "examples/support/closeout-checklist.json",
588
+ "examples/support/outcome-prioritization.json",
589
+ "examples/support/backlog-records.json",
590
+ "examples/support/backlog-review.json"
557
591
  ];
558
592
  const seenOutcomes = new Set();
559
593
 
@@ -573,8 +607,8 @@ function checkSupportLifecycle() {
573
607
  failures.push(`${entry.outcome}.title should explain the lifecycle outcome.`);
574
608
  }
575
609
 
576
- if (!Array.isArray(entry.stages) || entry.stages.length !== 4) {
577
- failures.push(`${entry.outcome}.stages should contain report, triage, response, and closeout.`);
610
+ if (!Array.isArray(entry.stages) || entry.stages.length !== 7) {
611
+ failures.push(`${entry.outcome}.stages should contain report, triage, response, closeout, prioritization, backlog-record, and backlog-review.`);
578
612
  continue;
579
613
  }
580
614