memento-mori-jester 0.1.49 → 0.1.51

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,18 @@ All notable changes to Memento Mori Jester are tracked here.
4
4
 
5
5
  ## Unreleased
6
6
 
7
+ ## 0.1.51
8
+
9
+ - Added `docs/MAINTAINER_TRIAGE.md` with a repeatable flow for triaging bugs, false positives, security-sensitive reports, and fixture candidates.
10
+ - Updated fixture docs so useful noisy-rule reports can become small redacted fixture cases instead of one-off anecdotes.
11
+ - Expanded the production readiness guard so maintainer triage and fixture-conversion guidance stay present in future releases.
12
+
13
+ ## 0.1.50
14
+
15
+ - Added `SECURITY.md` with vulnerability reporting guidance, supported-version expectations, scope, and redacted diagnostic guidance.
16
+ - Added GitHub issue templates for bug reports, false-positive/noisy-rule reports, and feature requests.
17
+ - Expanded the production readiness guard so `SECURITY.md`, issue templates, and support-intake docs stay present in future releases.
18
+
7
19
  ## 0.1.49
8
20
 
9
21
  - Expanded `jester doctor` into a support-focused diagnostic report covering package version, Node, MCP server file, review engine, config loading, git hook status, and generated GitHub Action status.
package/README.md CHANGED
@@ -430,6 +430,8 @@ More setup examples:
430
430
  - [Preset Example Packs](examples/presets)
431
431
  - [Review Fixtures](examples/fixtures)
432
432
  - [Framework CI Examples](examples/ci)
433
+ - [Security Policy](SECURITY.md)
434
+ - [Maintainer Triage](docs/MAINTAINER_TRIAGE.md)
433
435
  - [Changelog](CHANGELOG.md)
434
436
  - [Roadmap](ROADMAP.md)
435
437
  - [Trusted npm Publishing](docs/TRUSTED_PUBLISHING.md)
@@ -491,6 +493,16 @@ Both scripts check Node 20+, run a smoke `doctor`, and print MCP config.
491
493
  - Final answers with "done/fixed/works" claims that do not mention evidence, or that admit tests were not run.
492
494
  - Project-specific commands, domains, and regex rules from `jester.config.json`.
493
495
 
496
+ ## Support
497
+
498
+ When filing a bug, include redacted `jester doctor --json` output. The GitHub issue templates ask for the command, workflow step, config, and observed output so support does not start with guesswork.
499
+
500
+ Use the false-positive template for noisy cautions or blocks. Include `jester summary` and `jester tune <rule-id> --json` output when possible so rule changes can be backed by evidence.
501
+
502
+ Maintainers can use [docs/MAINTAINER_TRIAGE.md](docs/MAINTAINER_TRIAGE.md) to turn useful false-positive reports into redacted fixtures.
503
+
504
+ For vulnerabilities, private code exposure, or credential-handling concerns, follow [SECURITY.md](SECURITY.md) instead of opening a public issue with sensitive details.
505
+
494
506
  ## Publishing
495
507
 
496
508
  Release checklist:
package/ROADMAP.md CHANGED
@@ -6,6 +6,8 @@ Memento Mori Jester is usable today as a CLI, MCP server, GitHub Action, and git
6
6
 
7
7
  ## Recently Shipped
8
8
 
9
+ - Maintainer triage guide in v0.1.51 for turning useful false-positive reports into redacted fixture coverage.
10
+ - Security policy and GitHub issue templates in v0.1.50 for bug reports, false positives, feature requests, and vulnerability intake.
9
11
  - Support-focused `doctor --json` diagnostics in v0.1.49 for package, config, hook, MCP, and GitHub Action state.
10
12
  - Production readiness checklist and static guard in v0.1.48 for package, workflow, docs, release, and support drift.
11
13
  - README onboarding polish in v0.1.47 around the shortest path from `npx` to playground, agent setup, hooks, and CI.
@@ -38,7 +40,8 @@ Memento Mori Jester is usable today as a CLI, MCP server, GitHub Action, and git
38
40
 
39
41
  ## Product Ideas
40
42
 
41
- - Add `SECURITY.md` and issue templates so diagnostics and bug reports are easier to collect.
43
+ - Add more framework-specific false-positive examples from real reports so tuning guidance keeps getting sharper.
44
+ - Add a fixture authoring validator for duplicate IDs, missing expected matches, and weak metadata.
42
45
 
43
46
  ## Quality And Safety
44
47
 
package/SECURITY.md ADDED
@@ -0,0 +1,48 @@
1
+ # Security Policy
2
+
3
+ Memento Mori Jester is a local CLI, MCP server, GitHub Action, and git-hook helper. It is designed to review text you provide locally; it should not send project code to a hosted service.
4
+
5
+ ## Supported Versions
6
+
7
+ Security fixes target the latest npm release and the `main` branch.
8
+
9
+ If you are using an older version, first confirm the issue still appears on the latest package:
10
+
11
+ ```powershell
12
+ npx -y memento-mori-jester@latest doctor
13
+ ```
14
+
15
+ ## Reporting A Vulnerability
16
+
17
+ Please do not put secrets, exploit details, private repository content, or live credentials in a public issue.
18
+
19
+ Use GitHub's private vulnerability report flow when available:
20
+
21
+ <https://github.com/Martin123132/Memento-Mori/security/advisories/new>
22
+
23
+ If that flow is unavailable, open a minimal public issue asking for a private security contact, but do not include sensitive details.
24
+
25
+ Helpful report details:
26
+
27
+ - affected package version and install method,
28
+ - operating system and Node version,
29
+ - the command, GitHub Action, MCP setup, hook, or installer path involved,
30
+ - the expected behavior and the observed behavior,
31
+ - whether credentials, private code, generated SARIF, or CI logs are involved,
32
+ - redacted `jester doctor --json` output.
33
+
34
+ ## Scope
35
+
36
+ Useful security reports include:
37
+
38
+ - command execution or shell-injection risks in CLI, hooks, installers, or GitHub Action paths,
39
+ - unexpected network access or code disclosure,
40
+ - unsafe handling of config, SARIF, fixture, or diagnostic output,
41
+ - supply-chain or package-publishing concerns,
42
+ - MCP server behavior that could expose more data than the caller provided.
43
+
44
+ Reports about noisy rules or false positives are welcome too, but use the false-positive issue template unless there is a concrete vulnerability.
45
+
46
+ ## Handling Notes
47
+
48
+ This is a small project, so response times are best effort. Security reports get priority over normal bugs, and fixes should preserve the project's local-first, deterministic behavior wherever possible.
package/docs/CLI.md CHANGED
@@ -51,6 +51,8 @@ jester doctor --json
51
51
 
52
52
  Use `jester doctor --json` when filing an issue or debugging automation. It includes stable keys for package version, Node version, MCP server path, review-engine health, config mode/path, hook status, and generated workflow status.
53
53
 
54
+ The bug-report issue template asks for this redacted JSON so maintainers can separate install, config, hook, MCP, and GitHub Action problems quickly.
55
+
54
56
  ## Playground
55
57
 
56
58
  Start a local-only paste-in playground:
@@ -154,6 +156,8 @@ Use `jester rule <id>` before muting a rule. It explains why the rule exists, co
154
156
 
155
157
  Use `jester tune <id>` when the question is practical: should this noisy rule be muted here, and what exact commands do I run? It is read-only and prints a before-muting checklist, a recommendation, and `disable-rule` / `enable-rule` commands.
156
158
 
159
+ When filing a false-positive issue, include redacted `jester summary` output and `jester tune <rule-id> --json` output when possible.
160
+
157
161
  Use `jester tune coverage` when maintaining the rule set. It ranks every rule by fixture support and confidence, shows expected vs unexpected fixture weight, and suggests the next maintenance action for each rule.
158
162
 
159
163
  `jester tune` now also includes fixture evidence:
package/docs/DEMO.md CHANGED
@@ -347,6 +347,8 @@ Preset packs:
347
347
 
348
348
  The fixture suite in `examples/fixtures/preset-review-cases.json` captures small real-usage examples with expected `pass`, `caution`, or `block` verdicts. These examples are run by `npm test`, so preset tuning changes stay visible.
349
349
 
350
+ Maintainers can use `docs/MAINTAINER_TRIAGE.md` to turn useful false-positive reports into redacted fixture cases.
351
+
350
352
  ## 14. Framework CI Examples
351
353
 
352
354
  The workflow examples in `examples/ci` show copy-paste GitHub Actions setups for Next.js, Vite React, Express API, FastAPI, Terraform/Kubernetes, and AI MCP repos. Each workflow uploads SARIF and writes the readable Jester job summary.
@@ -108,4 +108,14 @@ Then tell them to open `MEMENTO_MORI.md`.
108
108
 
109
109
  For copy-paste agent and hook examples, see [examples](../examples). For stack-specific config examples, see [preset example packs](../examples/presets) for Next.js, Vite React, Express API, FastAPI, Terraform/Kubernetes, and AI MCP repos. For copy-paste CI workflows, see [framework CI examples](../examples/ci). For concrete pass, caution, and block cases, see [review fixtures](../examples/fixtures).
110
110
 
111
+ ## Need Help?
112
+
113
+ Run this before opening a bug report:
114
+
115
+ ```powershell
116
+ npx -y memento-mori-jester@latest doctor --json
117
+ ```
118
+
119
+ Use the GitHub false-positive template for noisy rules and include `jester tune <rule-id> --json` when possible. For vulnerabilities, private code exposure, or credential-handling concerns, follow [SECURITY.md](../SECURITY.md) instead of posting sensitive details publicly.
120
+
111
121
  For where this is going next, see [ROADMAP.md](../ROADMAP.md).
@@ -0,0 +1,105 @@
1
+ # Maintainer Triage
2
+
3
+ This guide turns support reports into repeatable maintenance work. The goal is simple: every useful bug or false-positive report should either become a clearer answer, a better fixture, or a focused code change.
4
+
5
+ ## First Response
6
+
7
+ Ask for redacted diagnostics when they are missing:
8
+
9
+ ```powershell
10
+ npx -y memento-mori-jester@latest doctor --json
11
+ ```
12
+
13
+ For noisy rule reports, also ask for:
14
+
15
+ ```powershell
16
+ npx -y memento-mori-jester@latest summary --kind <command|plan|diff|final> "<minimal input>"
17
+ npx -y memento-mori-jester@latest tune <rule-id> --json
18
+ ```
19
+
20
+ 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).
21
+
22
+ ## Triage Labels
23
+
24
+ Use a small, boring label vocabulary:
25
+
26
+ - `bug`: behavior is broken or misleading.
27
+ - `false-positive`: Jester warned or blocked when the minimal example should probably pass.
28
+ - `rules`: rule matching, severity, fixture evidence, or tuning behavior.
29
+ - `docs`: documentation is unclear or missing.
30
+ - `enhancement`: a new command, preset, workflow, or larger product idea.
31
+ - `security`: only for public tracking with no sensitive details; private details belong in the security report flow.
32
+
33
+ ## False-Positive Decision Tree
34
+
35
+ 1. Confirm the minimal input reproduces on `latest` or local `main`.
36
+ 2. Identify the rule id from `summary` output.
37
+ 3. Run `jester tune <rule-id> --json` and inspect `fixtureEvidence`.
38
+ 4. Decide whether the current behavior is:
39
+ - expected and should be explained,
40
+ - noisy but acceptable with tuning guidance,
41
+ - a fixture gap,
42
+ - a rule bug,
43
+ - or a preset mismatch.
44
+
45
+ If the user has a safe example that should pass, prefer adding a pass fixture before loosening a rule. If the example should still caution but the wording is confusing, update the rule guidance or docs instead of changing matching behavior.
46
+
47
+ ## Converting Reports Into Fixtures
48
+
49
+ Add a fixture when the report is minimal, redacted, realistic, and captures a rule behavior worth preserving.
50
+
51
+ Good fixture candidates:
52
+
53
+ - use the smallest command, plan, diff, or final answer that reproduces the behavior,
54
+ - identify the preset or default config needed to reproduce it,
55
+ - include the expected verdict,
56
+ - include the expected rule id when the fixture should cover a specific rule,
57
+ - include `expectedMatches` for intentional multi-rule overlaps,
58
+ - include `weight` when the case should strongly influence tuning confidence,
59
+ - set `edgeCase: true` when the example is useful but unusual.
60
+
61
+ Avoid fixtures that:
62
+
63
+ - contain secrets, private paths, private code, customer data, or identifiable logs,
64
+ - depend on network calls, local machine state, dates, or npm/GitHub availability,
65
+ - encode a one-off project preference as a global default,
66
+ - duplicate an existing fixture without adding a new rule, preset, kind, or edge case.
67
+
68
+ ## Fixture Workflow
69
+
70
+ 1. Add or edit a case in [examples/fixtures/preset-review-cases.json](../examples/fixtures/preset-review-cases.json).
71
+ 2. Keep fixture IDs stable and descriptive, for example `web-localstorage-token-pass-2`.
72
+ 3. Prefer deterministic content over full real-world excerpts.
73
+ 4. Run:
74
+
75
+ ```powershell
76
+ npm.cmd test
77
+ node .\dist\cli.js tune <rule-id>
78
+ node .\dist\cli.js tune <rule-id> --json
79
+ node .\dist\cli.js tune coverage
80
+ ```
81
+
82
+ 5. Check whether support/confidence changed in the expected direction.
83
+ 6. If the fixture changes verdict behavior, mention the exact rule impact in `CHANGELOG.md`.
84
+
85
+ ## When To Change A Rule
86
+
87
+ Change rule logic only when fixtures show the current matcher is broadly wrong or too blunt. Keep the change small:
88
+
89
+ - preserve existing JSON output shapes unless the release explicitly changes them,
90
+ - add pass and caution/block fixtures around the boundary,
91
+ - update `jester rule <id>` guidance when the safe alternative or tuning advice changes,
92
+ - keep docs-only noise suppression conservative,
93
+ - never suppress project custom rules globally.
94
+
95
+ ## Closing Notes
96
+
97
+ Close with the command users can run next. Good closes include:
98
+
99
+ ```powershell
100
+ npx -y memento-mori-jester@latest tune <rule-id>
101
+ npx -y memento-mori-jester@latest config disable-rule <rule-id>
102
+ npx -y memento-mori-jester@latest config validate
103
+ ```
104
+
105
+ If the report produced a fixture, mention the fixture ID in the issue. That gives future maintainers a trail from user pain to test coverage.
@@ -15,6 +15,7 @@ This checklist defines what "production grade" means for Memento Mori Jester rig
15
15
  - `package.json` includes repository, homepage, bugs, binaries, exports, public package files, and public publish access.
16
16
  - `package-lock.json` version matches `package.json`.
17
17
  - `npm run pack:dry` confirms the package includes `dist`, `docs`, `examples`, `scripts`, `README.md`, `CHANGELOG.md`, `ROADMAP.md`, and `LICENSE`.
18
+ - `SECURITY.md` ships with the package so vulnerability reporting guidance is visible from the repository and npm tarball.
18
19
  - `prepublishOnly` runs tests and a package dry run for local publish attempts.
19
20
 
20
21
  ## GitHub Action
@@ -48,6 +49,9 @@ This checklist defines what "production grade" means for Memento Mori Jester rig
48
49
  - Package metadata points bug reports at the GitHub issues page.
49
50
  - `jester doctor --json`, `jester config validate`, and `jester rules` are the first troubleshooting commands.
50
51
  - `jester tune`, `jester tune coverage`, and the fixture suite give maintainers a way to inspect noisy rules before changing defaults.
52
+ - GitHub issue templates collect bug reports, false-positive reports, and feature requests with the diagnostic context maintainers need.
53
+ - `SECURITY.md` routes vulnerability reports away from public issues and asks for redacted diagnostics.
54
+ - `docs/MAINTAINER_TRIAGE.md` explains how to turn useful false-positive reports into fixture coverage before changing rule logic.
51
55
  - npm publish has a manual workflow fallback, but the normal release path is tag-driven trusted publishing.
52
56
 
53
57
  ## Static Guard
@@ -58,11 +62,13 @@ This checklist defines what "production grade" means for Memento Mori Jester rig
58
62
  - package metadata and public package files are present,
59
63
  - CI, release, publish, and composite action workflows use the expected runtime and steps,
60
64
  - onboarding docs mention the important adoption paths,
61
- - production readiness documentation covers package, GitHub Action, MCP, git hooks, docs, and support.
65
+ - production readiness documentation covers package, GitHub Action, MCP, git hooks, docs, and support,
66
+ - `SECURITY.md` and GitHub issue templates exist and ask for the right diagnostics.
67
+ - maintainer triage docs exist and link noisy-rule reports back to fixture coverage.
62
68
 
63
69
  `npm test` runs this check after the TypeScript build and unit tests.
64
70
 
65
71
  ## Known Next Gaps
66
72
 
67
- - Add `SECURITY.md` and issue templates for clearer support intake.
68
73
  - Continue expanding pass-case fixtures from real-world usage so false-positive tuning remains evidence-based.
74
+ - Add more framework-specific false-positive examples as people report real noisy cases.
package/docs/RELEASE.md CHANGED
@@ -17,7 +17,7 @@ Move the current changelog bullets into a matching version section and add `docs
17
17
  ## 2. Tag And Push
18
18
 
19
19
  ```powershell
20
- git add package.json package-lock.json CHANGELOG.md docs/RELEASE_NOTES_v0.1.x.md
20
+ git add package.json package-lock.json CHANGELOG.md docs/RELEASE_NOTES_v0.1.x.md docs/PRODUCTION_READINESS.md docs/MAINTAINER_TRIAGE.md SECURITY.md .github/ISSUE_TEMPLATE
21
21
  git commit -m "Release v0.1.x"
22
22
  git tag -a v0.1.x -m "Memento Mori Jester v0.1.x"
23
23
  git push origin main
@@ -0,0 +1,28 @@
1
+ # v0.1.50 Release Notes
2
+
3
+ This release adds clearer public support intake so bug reports, false-positive reports, feature requests, and security reports arrive with the context maintainers need.
4
+
5
+ ## What Changed
6
+
7
+ - Added `SECURITY.md` with vulnerability reporting guidance, scope, and safe redaction expectations.
8
+ - Added GitHub issue templates for bug reports, false positives/noisy rules, and feature requests.
9
+ - Added GitHub issue-template contact links for security reports and getting-started docs.
10
+ - Updated README and production-readiness docs so `jester doctor --json` and issue templates are part of the support contract.
11
+ - Expanded `npm run production:check` so future releases keep the security policy and issue templates in place.
12
+
13
+ ## Behavior Notes
14
+
15
+ - No CLI, MCP, config, rule, playground, GitHub Action runtime, or release automation behavior changed.
16
+ - `SECURITY.md` is now included in the npm package file list.
17
+
18
+ ## Release Validation
19
+
20
+ ```powershell
21
+ npm.cmd test
22
+ npm.cmd run production:check
23
+ npm.cmd run demo:svg:check
24
+ npm.cmd run pack:dry
25
+ git diff --check
26
+ node .\dist\cli.js doctor --json
27
+ git diff | node .\dist\cli.js diff --fail-on block --subject "v0.1.50 support intake"
28
+ ```
@@ -0,0 +1,29 @@
1
+ # v0.1.51 Release Notes
2
+
3
+ This release adds a maintainer triage guide so support reports can feed back into better fixture coverage and rule tuning.
4
+
5
+ ## What Changed
6
+
7
+ - Added `docs/MAINTAINER_TRIAGE.md`.
8
+ - Documented the first-response diagnostic commands for bug and false-positive reports.
9
+ - Added a false-positive decision tree for deciding between explanation, tuning guidance, fixture coverage, rule fixes, and preset fixes.
10
+ - Updated `examples/fixtures/README.md` with guidance for converting safe reports into redacted fixture cases.
11
+ - Updated README, demo docs, roadmap, changelog, release docs, and production readiness docs.
12
+ - Expanded `npm run production:check` so maintainer triage and fixture-conversion guidance remain part of the release contract.
13
+
14
+ ## Behavior Notes
15
+
16
+ - No CLI, MCP, config, rule, playground, GitHub Action runtime, or release automation behavior changed.
17
+ - This is a support and maintenance release.
18
+
19
+ ## Release Validation
20
+
21
+ ```powershell
22
+ npm.cmd test
23
+ npm.cmd run production:check
24
+ npm.cmd run demo:svg:check
25
+ npm.cmd run pack:dry
26
+ git diff --check
27
+ node .\dist\cli.js doctor --json
28
+ git diff | node .\dist\cli.js diff --fail-on block --subject "v0.1.51 maintainer triage"
29
+ ```
@@ -4,6 +4,8 @@ These fixtures are small, real-usage-shaped examples for preset tuning. They are
4
4
 
5
5
  The fixture file is [preset-review-cases.json](preset-review-cases.json).
6
6
 
7
+ Maintainer triage guidance lives in [docs/MAINTAINER_TRIAGE.md](../../docs/MAINTAINER_TRIAGE.md).
8
+
7
9
  ## What They Cover
8
10
 
9
11
  - Documentation-only diffs that should stay quiet.
@@ -24,3 +26,16 @@ For one-off manual review, paste a fixture `content` value into:
24
26
  ```powershell
25
27
  npx -y memento-mori-jester@latest playground
26
28
  ```
29
+
30
+ ## Adding A Fixture From A Report
31
+
32
+ Use the smallest redacted example that still reproduces the behavior. A good fixture records:
33
+
34
+ - the review `kind`,
35
+ - the preset or config needed to reproduce it,
36
+ - the expected verdict,
37
+ - the rule ids that should match,
38
+ - any intentional overlaps in `expectedMatches`,
39
+ - and whether the case is an unusual `edgeCase`.
40
+
41
+ Do not add secrets, private code, customer data, complete logs, or machine-specific paths. If a false-positive report is safe but broad, add a passing fixture before loosening a rule.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "memento-mori-jester",
3
- "version": "0.1.49",
3
+ "version": "0.1.51",
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": {
@@ -32,6 +32,7 @@
32
32
  "scripts",
33
33
  "CHANGELOG.md",
34
34
  "LICENSE",
35
+ "SECURITY.md",
35
36
  "README.md",
36
37
  "ROADMAP.md"
37
38
  ],
@@ -50,11 +50,17 @@ for (const path of [
50
50
  "CHANGELOG.md",
51
51
  "ROADMAP.md",
52
52
  "LICENSE",
53
+ "SECURITY.md",
53
54
  "docs/RELEASE.md",
54
55
  "docs/TRUSTED_PUBLISHING.md",
55
56
  "docs/PRODUCTION_READINESS.md",
57
+ "docs/MAINTAINER_TRIAGE.md",
56
58
  `docs/RELEASE_NOTES_${tag}.md`,
57
59
  "action.yml",
60
+ ".github/ISSUE_TEMPLATE/bug_report.yml",
61
+ ".github/ISSUE_TEMPLATE/false_positive.yml",
62
+ ".github/ISSUE_TEMPLATE/feature_request.yml",
63
+ ".github/ISSUE_TEMPLATE/config.yml",
58
64
  ".github/workflows/ci.yml",
59
65
  ".github/workflows/npm-publish.yml",
60
66
  ".github/workflows/release.yml",
@@ -74,6 +80,9 @@ requireText("README.md", /doctor --json/, "doctor JSON support guidance");
74
80
  requireText("README.md", /config recommend/, "preset recommendation onboarding");
75
81
  requireText("README.md", /setup --agent codex/, "Codex setup onboarding");
76
82
  requireText("README.md", /github-action --write/, "GitHub Action onboarding");
83
+ requireText("README.md", /SECURITY\.md/, "security policy link");
84
+ requireText("README.md", /false-positive/i, "false-positive support guidance");
85
+ requireText("README.md", /MAINTAINER_TRIAGE\.md/, "maintainer triage guide link");
77
86
  requireText("README.md", /License: PolyForm Noncommercial/, "the noncommercial license badge");
78
87
  requireText("docs/PRODUCTION_READINESS.md", /npm package/i, "npm package readiness");
79
88
  requireText("docs/PRODUCTION_READINESS.md", /GitHub Action/i, "GitHub Action readiness");
@@ -81,9 +90,26 @@ requireText("docs/PRODUCTION_READINESS.md", /MCP/i, "MCP readiness");
81
90
  requireText("docs/PRODUCTION_READINESS.md", /git hooks/i, "git hook readiness");
82
91
  requireText("docs/PRODUCTION_READINESS.md", /support/i, "support readiness");
83
92
  requireText("docs/PRODUCTION_READINESS.md", /doctor --json/, "doctor JSON support diagnostics");
93
+ requireText("docs/PRODUCTION_READINESS.md", /SECURITY\.md/, "security policy readiness");
94
+ requireText("docs/PRODUCTION_READINESS.md", /issue templates/i, "issue template readiness");
95
+ requireText("docs/PRODUCTION_READINESS.md", /MAINTAINER_TRIAGE\.md/, "maintainer triage readiness");
84
96
  requireText("docs/CLI.md", /jester doctor --json/, "doctor JSON CLI docs");
85
-
86
- for (const publicFile of ["dist", "docs", "examples", "scripts", "CHANGELOG.md", "LICENSE", "README.md", "ROADMAP.md"]) {
97
+ requireText("docs/MAINTAINER_TRIAGE.md", /doctor --json/, "doctor JSON triage prompt");
98
+ requireText("docs/MAINTAINER_TRIAGE.md", /tune <rule-id> --json/, "tune JSON triage prompt");
99
+ requireText("docs/MAINTAINER_TRIAGE.md", /preset-review-cases\.json/, "fixture suite link");
100
+ requireText("docs/MAINTAINER_TRIAGE.md", /expectedMatches/, "fixture overlap guidance");
101
+ requireText("examples/fixtures/README.md", /MAINTAINER_TRIAGE\.md/, "maintainer triage link");
102
+ requireText("examples/fixtures/README.md", /Adding A Fixture From A Report/, "fixture report conversion guidance");
103
+ requireText("SECURITY.md", /doctor --json/, "doctor JSON redaction guidance");
104
+ requireText("SECURITY.md", /security\/advisories\/new/, "private vulnerability report link");
105
+ requireText(".github/ISSUE_TEMPLATE/bug_report.yml", /doctor --json/, "doctor JSON support prompt");
106
+ requireText(".github/ISSUE_TEMPLATE/bug_report.yml", /SECURITY\.md|security policy/i, "security redirect");
107
+ requireText(".github/ISSUE_TEMPLATE/false_positive.yml", /jester tune <rule-id> --json/, "tune JSON prompt");
108
+ requireText(".github/ISSUE_TEMPLATE/false_positive.yml", /false-positive|noisy rule/i, "false-positive scope");
109
+ requireText(".github/ISSUE_TEMPLATE/feature_request.yml", /local-first and deterministic/, "project constraint prompt");
110
+ requireText(".github/ISSUE_TEMPLATE/config.yml", /security\/advisories\/new/, "security contact link");
111
+
112
+ for (const publicFile of ["dist", "docs", "examples", "scripts", "CHANGELOG.md", "LICENSE", "SECURITY.md", "README.md", "ROADMAP.md"]) {
87
113
  requirePackageFile(packageJson, publicFile);
88
114
  }
89
115