memento-mori-jester 0.1.75 → 0.1.77
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 +12 -0
- package/README.md +2 -1
- package/ROADMAP.md +4 -2
- package/docs/DEMO.md +1 -1
- package/docs/RELEASE_NOTES_v0.1.76.md +43 -0
- package/docs/RELEASE_NOTES_v0.1.77.md +46 -0
- package/examples/fixtures/README.md +1 -0
- package/examples/fixtures/preset-review-cases.json +122 -0
- package/package.json +1 -1
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.77
|
|
8
|
+
|
|
9
|
+
- Added a repo-local promo/share kit with X post copy, a 30-second demo script, posting checklist, and asset guidance.
|
|
10
|
+
- Added four vertical still images extracted from the existing X demo video for single-post and thread use.
|
|
11
|
+
- Linked the promo kit from the README while keeping `promo/` outside the npm package.
|
|
12
|
+
|
|
13
|
+
## 0.1.76
|
|
14
|
+
|
|
15
|
+
- Added eight real-world quiet-pass fixtures across python, security, web, and AI preset slices, growing the corpus to 216 fixtures.
|
|
16
|
+
- Strengthened safe near-miss evidence for Pydantic parsing, Pyright checks, SBOM generation, vulnerability-report docs, escaped React rendering, session-cookie docs, model regression checks, and static action allowlists.
|
|
17
|
+
- Refreshed demo, roadmap, fixture docs, and release notes for the expanded preset curation batch.
|
|
18
|
+
|
|
7
19
|
## 0.1.75
|
|
8
20
|
|
|
9
21
|
- Added `npm run fixtures:report -- --markdown` for paste-ready fixture coverage snapshots.
|
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@ It roasts the reasoning, not the human.
|
|
|
12
12
|
|
|
13
13
|
[](docs/DEMO.md)
|
|
14
14
|
|
|
15
|
-
See the full [demo transcript](docs/DEMO.md).
|
|
15
|
+
See the full [demo transcript](docs/DEMO.md), or use the [promo/share kit](promo) for X post copy, stills, and a 30-second demo script.
|
|
16
16
|
|
|
17
17
|
## Start Here
|
|
18
18
|
|
|
@@ -426,6 +426,7 @@ More setup examples:
|
|
|
426
426
|
- [MCP Tool Reference](docs/MCP_TOOLS.md)
|
|
427
427
|
- [GitHub Actions](docs/GITHUB_ACTIONS.md)
|
|
428
428
|
- [Demo Script](docs/DEMO.md)
|
|
429
|
+
- [Promo Share Kit](promo)
|
|
429
430
|
- [Examples](examples)
|
|
430
431
|
- [Preset Example Packs](examples/presets)
|
|
431
432
|
- [Review Fixtures](examples/fixtures)
|
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
|
+
- Promo/share kit in v0.1.77, adding X post copy, a short demo script, a posting checklist, and still images from the existing demo video.
|
|
10
|
+
- Real-world preset quiet-pass curation in v0.1.76, adding eight safe examples across python, security, web, and AI workflows while keeping fixture coverage gaps clean.
|
|
9
11
|
- Markdown fixture report export in v0.1.75 for paste-ready coverage snapshots in release notes, GitHub issues, and maintainer updates.
|
|
10
12
|
- API fixture curation in v0.1.74, adding six quiet-pass examples for schema parsing, query-builder filters, enabled rate limiting, read-only Prisma migration diffs, signed-webhook docs, and OpenAPI schema docs.
|
|
11
13
|
- Web/AI fixture curation in v0.1.73, adding six quiet-pass examples for safe text rendering, allowlisted target paths, public analytics IDs, model-check commands, tool allowlist checks, and public model-name config.
|
|
@@ -64,9 +66,9 @@ Memento Mori Jester is usable today as a CLI, MCP server, GitHub Action, and git
|
|
|
64
66
|
|
|
65
67
|
## Product Ideas
|
|
66
68
|
|
|
67
|
-
- Collect real-world reports for the next lowest-count preset slices
|
|
69
|
+
- Collect real-world reports for the next lowest-count preset slices now highlighted by `fixtures:report`.
|
|
68
70
|
- Add more framework-specific false-positive examples from real reports so tuning guidance keeps getting sharper.
|
|
69
|
-
- Add a
|
|
71
|
+
- Add a fresh demo render that reflects the latest release number and fixture totals.
|
|
70
72
|
|
|
71
73
|
## Quality And Safety
|
|
72
74
|
|
package/docs/DEMO.md
CHANGED
|
@@ -353,7 +353,7 @@ Preset packs:
|
|
|
353
353
|
|
|
354
354
|
## 13. Review Fixtures
|
|
355
355
|
|
|
356
|
-
The fixture suite in `examples/fixtures/preset-review-cases.json` captures small real-usage examples with expected `pass`, `caution`, or `block` verdicts. It also includes matched-pass examples for low-severity rules, quiet-pass `absentRuleIds` examples that prove noisy rules stay silent for safe near-misses, stack-specific coverage for every built-in preset, quiet-pass boundaries across built-in, structural, custom, and preset/config-derived rules, second firing examples for preset blocked-command rules, second examples for AI/API, framework custom, built-in, and configured sensitive-domain rules, AI tool-dispatch examples with safe allowlist/schema boundaries, and real-world low-count preset examples across node, python, web, infra, AI, and security slices. Recent quiet-pass examples cover typechecks, prebuild scripts, mypy, dataclass parsing, CodeQL, Dependabot limits, form validation, accessibility copy, read-only Kubernetes inspection, Docker disk usage, Terraform linting, public-IP hardening changes, npm audit/outdated/ci, development-mode Node commands, package export maps, workspace test scripts, Bandit, pip-audit, coverage/pytest, Trivy filesystem scans, npm audit, TLS verification-enabled diffs, safe text rendering, allowlisted target paths, public analytics IDs, model-check commands, tool allowlist checks, public model-name config, API schema parsing, query-builder filters, enabled rate limiting, read-only Prisma migration diffs, signed-webhook docs,
|
|
356
|
+
The fixture suite in `examples/fixtures/preset-review-cases.json` captures small real-usage examples with expected `pass`, `caution`, or `block` verdicts. It also includes matched-pass examples for low-severity rules, quiet-pass `absentRuleIds` examples that prove noisy rules stay silent for safe near-misses, stack-specific coverage for every built-in preset, quiet-pass boundaries across built-in, structural, custom, and preset/config-derived rules, second firing examples for preset blocked-command rules, second examples for AI/API, framework custom, built-in, and configured sensitive-domain rules, AI tool-dispatch examples with safe allowlist/schema boundaries, and real-world low-count preset examples across node, python, web, infra, AI, and security slices. Recent quiet-pass examples cover typechecks, prebuild scripts, mypy, dataclass parsing, CodeQL, Dependabot limits, form validation, accessibility copy, read-only Kubernetes inspection, Docker disk usage, Terraform linting, public-IP hardening changes, npm audit/outdated/ci, development-mode Node commands, package export maps, workspace test scripts, Bandit, pip-audit, coverage/pytest, Trivy filesystem scans, npm audit, TLS verification-enabled diffs, safe text rendering, allowlisted target paths, public analytics IDs, model-check commands, tool allowlist checks, public model-name config, API schema parsing, query-builder filters, enabled rate limiting, read-only Prisma migration diffs, signed-webhook docs, OpenAPI schema docs, Pydantic parsing, Pyright checks, SBOM generation, vulnerability-report docs, escaped React rendering, session-cookie docs, model regression checks, and static action allowlists. These examples are run by `npm test`, so preset tuning changes stay visible.
|
|
357
357
|
|
|
358
358
|
Maintainers can run `npm run fixtures:report` to see coverage by verdict, kind, preset, rule family, and preset slice. The report also includes a `Curation next` section that points at the next useful fixture batch, such as thin rules, feasible pass-case evidence, rule-family gaps, or lower-count presets. Use `npm run fixtures:report -- --markdown` for a paste-ready version of the same snapshot.
|
|
359
359
|
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Memento Mori Jester v0.1.76
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
This release expands the real-world quiet-pass fixture corpus for the lowest-count preset slices: `python`, `security`, `web`, and `ai`.
|
|
6
|
+
|
|
7
|
+
## What Changed
|
|
8
|
+
|
|
9
|
+
- Added eight pass fixtures, growing the fixture suite from 208 to 216 cases.
|
|
10
|
+
- Added python safe-boundary examples for Pydantic model validation and Pyright type checks.
|
|
11
|
+
- Added security safe-boundary examples for SBOM generation and vulnerability-report documentation.
|
|
12
|
+
- Added web safe-boundary examples for escaped React rendering and docs-only session-cookie guidance.
|
|
13
|
+
- Added AI safe-boundary examples for model regression checks and static action allowlists.
|
|
14
|
+
- Refreshed the fixture docs, demo transcript, changelog, and roadmap.
|
|
15
|
+
|
|
16
|
+
## Public Interface
|
|
17
|
+
|
|
18
|
+
- No CLI command changes.
|
|
19
|
+
- No MCP tool changes.
|
|
20
|
+
- No config schema changes.
|
|
21
|
+
- No review rule, scoring, or verdict behavior changes.
|
|
22
|
+
- Fixture reports now reflect 216 total fixtures and the updated preset counts.
|
|
23
|
+
|
|
24
|
+
## Release Validation
|
|
25
|
+
|
|
26
|
+
```powershell
|
|
27
|
+
npm.cmd test
|
|
28
|
+
npm.cmd run demo:svg:check
|
|
29
|
+
npm.cmd run fixtures:report
|
|
30
|
+
npm.cmd run fixtures:report -- --json
|
|
31
|
+
npm.cmd run fixtures:report -- --markdown
|
|
32
|
+
npm.cmd run pack:dry
|
|
33
|
+
git diff --check
|
|
34
|
+
git diff | node .\dist\cli.js diff --fail-on block --subject "v0.1.76 real-world preset quiet-pass curation"
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Expected fixture report checks:
|
|
38
|
+
|
|
39
|
+
- `Fixtures: 216`
|
|
40
|
+
- no thin rule coverage
|
|
41
|
+
- no preset/kind gaps
|
|
42
|
+
- no rules without quiet-pass coverage
|
|
43
|
+
- deterministic `Curation next` guidance
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Memento Mori Jester v0.1.77
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
This release adds a repo-local promo/share kit so Memento Mori Jester is easier to explain and post publicly without changing runtime behavior.
|
|
6
|
+
|
|
7
|
+
## What Changed
|
|
8
|
+
|
|
9
|
+
- Added [promo/README.md](../promo/README.md) as the entry point for sharing assets.
|
|
10
|
+
- Added [promo/share-kit/README.md](../promo/share-kit/README.md) with still-image guidance, alt text, thread order, and a posting checklist.
|
|
11
|
+
- Added [promo/share-kit/x-posts.md](../promo/share-kit/x-posts.md) with short, medium, builder-focused, and thread-style X copy.
|
|
12
|
+
- Added [promo/share-kit/demo-script.md](../promo/share-kit/demo-script.md) with a 30-second walkthrough and a 10-second reply version.
|
|
13
|
+
- Added four vertical stills extracted from the existing X demo video.
|
|
14
|
+
- Linked the promo kit from the README.
|
|
15
|
+
|
|
16
|
+
## Public Interface
|
|
17
|
+
|
|
18
|
+
- No CLI command changes.
|
|
19
|
+
- No MCP tool changes.
|
|
20
|
+
- No config schema changes.
|
|
21
|
+
- No review rule, scoring, or verdict behavior changes.
|
|
22
|
+
- No GitHub Action behavior changes.
|
|
23
|
+
- `promo/` remains outside the npm package `files` list.
|
|
24
|
+
|
|
25
|
+
## Release Validation
|
|
26
|
+
|
|
27
|
+
```powershell
|
|
28
|
+
npm.cmd test
|
|
29
|
+
npm.cmd run demo:svg:check
|
|
30
|
+
npm.cmd run pack:dry
|
|
31
|
+
git diff --check
|
|
32
|
+
git diff | node .\dist\cli.js diff --fail-on block --subject "v0.1.77 promo share kit"
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Additional checks:
|
|
36
|
+
|
|
37
|
+
```powershell
|
|
38
|
+
git ls-files promo
|
|
39
|
+
npm.cmd pack --dry-run | Select-String "promo/"
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Expected:
|
|
43
|
+
|
|
44
|
+
- promo files are tracked in Git,
|
|
45
|
+
- promo files are not included in the npm tarball,
|
|
46
|
+
- GitHub Release and npm Publish complete from the `v0.1.77` tag.
|
|
@@ -29,6 +29,7 @@ Maintainer triage guidance lives in [docs/MAINTAINER_TRIAGE.md](../../docs/MAINT
|
|
|
29
29
|
- Quiet-pass examples for Bandit, pip-audit, coverage/pytest, Trivy filesystem scans, npm audit, and TLS verification-enabled diffs.
|
|
30
30
|
- Quiet-pass examples for safe text rendering, allowlisted target paths, public analytics IDs, model-check commands, tool allowlist checks, and public model-name config.
|
|
31
31
|
- Quiet-pass examples for API schema parsing, query-builder filters, enabled rate limiting, read-only Prisma migration diffs, signed-webhook docs, and OpenAPI schema docs.
|
|
32
|
+
- Quiet-pass examples for Pydantic parsing, Pyright checks, SBOM generation, vulnerability-report docs, escaped React rendering, session-cookie docs, model regression checks, and static action allowlists.
|
|
32
33
|
- Fixture metadata like `weight` and `edgeCase` to support precision-weighted tuning evidence.
|
|
33
34
|
|
|
34
35
|
## Local Check
|
|
@@ -2737,5 +2737,127 @@
|
|
|
2737
2737
|
"absentRuleIds": [
|
|
2738
2738
|
"configured-sensitive-domain-openapi"
|
|
2739
2739
|
]
|
|
2740
|
+
},
|
|
2741
|
+
{
|
|
2742
|
+
"id": "python-pydantic-parse-diff-pass",
|
|
2743
|
+
"preset": "python",
|
|
2744
|
+
"kind": "diff",
|
|
2745
|
+
"description": "Pydantic model validation should stay quiet around Python dynamic execution checks.",
|
|
2746
|
+
"content": "diff --git a/app/settings.py b/app/settings.py\n--- a/app/settings.py\n+++ b/app/settings.py\n@@ -1 +1,2 @@\n+settings = SettingsModel.model_validate(raw_settings)\n",
|
|
2747
|
+
"expectedVerdict": "pass",
|
|
2748
|
+
"weight": 2,
|
|
2749
|
+
"expectedRuleIds": [],
|
|
2750
|
+
"absentRuleIds": [
|
|
2751
|
+
"custom-python-eval-exec",
|
|
2752
|
+
"custom-python-pickle-load"
|
|
2753
|
+
]
|
|
2754
|
+
},
|
|
2755
|
+
{
|
|
2756
|
+
"id": "python-pyright-command-pass",
|
|
2757
|
+
"preset": "python",
|
|
2758
|
+
"kind": "command",
|
|
2759
|
+
"description": "Python type-check commands should not trip eval, pickle, or unsafe package checks.",
|
|
2760
|
+
"content": "python -m pyright app tests",
|
|
2761
|
+
"expectedVerdict": "pass",
|
|
2762
|
+
"weight": 2,
|
|
2763
|
+
"expectedRuleIds": [],
|
|
2764
|
+
"absentRuleIds": [
|
|
2765
|
+
"blocked-command-pip-install-break-system-packages",
|
|
2766
|
+
"custom-python-eval-exec",
|
|
2767
|
+
"custom-python-pickle-load"
|
|
2768
|
+
]
|
|
2769
|
+
},
|
|
2770
|
+
{
|
|
2771
|
+
"id": "sec-sbom-command-pass",
|
|
2772
|
+
"preset": "security",
|
|
2773
|
+
"kind": "command",
|
|
2774
|
+
"description": "SBOM generation commands should stay quiet around security preset danger checks.",
|
|
2775
|
+
"content": "syft dir:. -o cyclonedx-json > sbom.json",
|
|
2776
|
+
"expectedVerdict": "pass",
|
|
2777
|
+
"weight": 2,
|
|
2778
|
+
"expectedRuleIds": [],
|
|
2779
|
+
"absentRuleIds": [
|
|
2780
|
+
"blocked-command-chmod-r-777",
|
|
2781
|
+
"custom-broad-cors",
|
|
2782
|
+
"custom-insecure-tls-disabled",
|
|
2783
|
+
"secret-material"
|
|
2784
|
+
]
|
|
2785
|
+
},
|
|
2786
|
+
{
|
|
2787
|
+
"id": "sec-vulnerability-report-docs-pass",
|
|
2788
|
+
"preset": "security",
|
|
2789
|
+
"kind": "diff",
|
|
2790
|
+
"description": "Docs for vulnerability reports should stay quiet when they only say not to paste sensitive material.",
|
|
2791
|
+
"content": "diff --git a/docs/VULNERABILITY_REPORTS.md b/docs/VULNERABILITY_REPORTS.md\n--- a/docs/VULNERABILITY_REPORTS.md\n+++ b/docs/VULNERABILITY_REPORTS.md\n@@ -1 +1,2 @@\n+Ask reporters to redact tokens, private keys, and exploit logs before filing public issues.\n",
|
|
2792
|
+
"expectedVerdict": "pass",
|
|
2793
|
+
"edgeCase": true,
|
|
2794
|
+
"weight": 1,
|
|
2795
|
+
"expectedRuleIds": [],
|
|
2796
|
+
"absentRuleIds": [
|
|
2797
|
+
"configured-sensitive-domain-token",
|
|
2798
|
+
"configured-sensitive-domain-private-key",
|
|
2799
|
+
"secret-material"
|
|
2800
|
+
]
|
|
2801
|
+
},
|
|
2802
|
+
{
|
|
2803
|
+
"id": "web-react-escaped-output-diff-pass",
|
|
2804
|
+
"preset": "web",
|
|
2805
|
+
"kind": "diff",
|
|
2806
|
+
"description": "Escaped React text rendering should not trip unsafe HTML injection checks.",
|
|
2807
|
+
"content": "diff --git a/src/components/UserName.tsx b/src/components/UserName.tsx\n--- a/src/components/UserName.tsx\n+++ b/src/components/UserName.tsx\n@@ -1 +1,2 @@\n+return <span>{displayName}</span>;\n",
|
|
2808
|
+
"expectedVerdict": "pass",
|
|
2809
|
+
"weight": 2,
|
|
2810
|
+
"expectedRuleIds": [],
|
|
2811
|
+
"absentRuleIds": [
|
|
2812
|
+
"custom-web-unsafe-html-injection",
|
|
2813
|
+
"configured-sensitive-domain-dangerouslysetinnerhtml",
|
|
2814
|
+
"configured-sensitive-domain-innerhtml"
|
|
2815
|
+
]
|
|
2816
|
+
},
|
|
2817
|
+
{
|
|
2818
|
+
"id": "web-session-cookie-docs-pass",
|
|
2819
|
+
"preset": "web",
|
|
2820
|
+
"kind": "diff",
|
|
2821
|
+
"description": "Docs-only browser session guidance should not trip storage, redirect, or cookie noise.",
|
|
2822
|
+
"content": "diff --git a/docs/WEB_SESSIONS.md b/docs/WEB_SESSIONS.md\n--- a/docs/WEB_SESSIONS.md\n+++ b/docs/WEB_SESSIONS.md\n@@ -1 +1,2 @@\n+Prefer httpOnly cookies for sessions and keep redirects limited to same-origin paths.\n",
|
|
2823
|
+
"expectedVerdict": "pass",
|
|
2824
|
+
"edgeCase": true,
|
|
2825
|
+
"weight": 1,
|
|
2826
|
+
"expectedRuleIds": [],
|
|
2827
|
+
"absentRuleIds": [
|
|
2828
|
+
"configured-sensitive-domain-cookies",
|
|
2829
|
+
"configured-sensitive-domain-redirect",
|
|
2830
|
+
"configured-sensitive-domain-session",
|
|
2831
|
+
"custom-web-open-redirect-shape",
|
|
2832
|
+
"custom-web-storage-sensitive-value",
|
|
2833
|
+
"risky-domain"
|
|
2834
|
+
]
|
|
2835
|
+
},
|
|
2836
|
+
{
|
|
2837
|
+
"id": "ai-model-regression-command-pass",
|
|
2838
|
+
"preset": "ai",
|
|
2839
|
+
"kind": "command",
|
|
2840
|
+
"description": "Running model regression checks should not look like skipped AI safety checks.",
|
|
2841
|
+
"content": "npm run model:checks -- --suite prompt-regression",
|
|
2842
|
+
"expectedVerdict": "pass",
|
|
2843
|
+
"weight": 2,
|
|
2844
|
+
"expectedRuleIds": [],
|
|
2845
|
+
"absentRuleIds": [
|
|
2846
|
+
"custom-ai-evals-skipped"
|
|
2847
|
+
]
|
|
2848
|
+
},
|
|
2849
|
+
{
|
|
2850
|
+
"id": "ai-tool-registry-allowlist-diff-pass",
|
|
2851
|
+
"preset": "ai",
|
|
2852
|
+
"kind": "diff",
|
|
2853
|
+
"description": "Static action allowlists should not trip user-controlled dispatch checks.",
|
|
2854
|
+
"content": "diff --git a/src/actions/registry.ts b/src/actions/registry.ts\n--- a/src/actions/registry.ts\n+++ b/src/actions/registry.ts\n@@ -1 +1,2 @@\n+export const allowedActions = new Set([\"search_docs\", \"summarize_ticket\"]);\n",
|
|
2855
|
+
"expectedVerdict": "pass",
|
|
2856
|
+
"weight": 2,
|
|
2857
|
+
"expectedRuleIds": [],
|
|
2858
|
+
"absentRuleIds": [
|
|
2859
|
+
"custom-ai-user-controlled-tool-dispatch",
|
|
2860
|
+
"custom-ai-model-output-execution"
|
|
2861
|
+
]
|
|
2740
2862
|
}
|
|
2741
2863
|
]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "memento-mori-jester",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.77",
|
|
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": {
|