memento-mori-jester 0.1.69 → 0.1.71
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 +13 -0
- package/ROADMAP.md +3 -1
- package/docs/DEMO.md +4 -4
- package/docs/RELEASE_NOTES_v0.1.70.md +36 -0
- package/docs/RELEASE_NOTES_v0.1.71.md +39 -0
- package/examples/fixtures/README.md +2 -0
- package/examples/fixtures/preset-review-cases.json +171 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,19 @@ All notable changes to Memento Mori Jester are tracked here.
|
|
|
4
4
|
|
|
5
5
|
## Unreleased
|
|
6
6
|
|
|
7
|
+
## 0.1.71
|
|
8
|
+
|
|
9
|
+
- Added six Node quiet-pass fixtures, growing the corpus to 190 fixtures.
|
|
10
|
+
- Strengthened safe near-miss evidence for npm audit/outdated/ci, development-mode Node commands, package export maps, and workspace test scripts.
|
|
11
|
+
- Added a repo-local X demo video asset under `promo/x-demo-v0.1.70` while keeping it outside the npm package.
|
|
12
|
+
- Refreshed demo, roadmap, fixture docs, and release notes for the Node-focused curation batch.
|
|
13
|
+
|
|
14
|
+
## 0.1.70
|
|
15
|
+
|
|
16
|
+
- Added six infra quiet-pass fixtures, growing the corpus to 184 fixtures.
|
|
17
|
+
- Strengthened safe near-miss evidence for read-only Kubernetes inspection, Docker disk usage, Terraform linting, and disabling public IP assignment.
|
|
18
|
+
- Refreshed demo, roadmap, fixture docs, and release notes for the infra-focused curation batch.
|
|
19
|
+
|
|
7
20
|
## 0.1.69
|
|
8
21
|
|
|
9
22
|
- Added eight real-world quiet-pass fixtures across node, python, security, and web preset slices, growing the corpus to 178 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
|
+
- Node preset fixture curation in v0.1.71, adding six quiet-pass examples for npm audit/outdated/ci, development-mode Node commands, package export maps, and workspace test scripts, plus a repo-local X demo video asset.
|
|
10
|
+
- Infra preset fixture curation in v0.1.70, adding six quiet-pass operational examples for read-only Kubernetes, Docker, Terraform linting, and public-IP hardening changes.
|
|
9
11
|
- Node/python/security/web preset fixture curation in v0.1.69, adding eight quiet-pass real-world examples while keeping all fixture coverage gates clean.
|
|
10
12
|
- AI tool-dispatch fixture curation in v0.1.68, adding request-body and URL-parameter caution examples plus allowlist/schema quiet-pass boundaries.
|
|
11
13
|
- Security/web/node/python preset fixture curation in v0.1.67, adding real-world quiet-pass examples while keeping thin, quiet-pass, feasible pass-case, and preset-kind gaps at zero.
|
|
@@ -58,7 +60,7 @@ Memento Mori Jester is usable today as a CLI, MCP server, GitHub Action, and git
|
|
|
58
60
|
|
|
59
61
|
## Product Ideas
|
|
60
62
|
|
|
61
|
-
- Collect real-world reports for the next lowest-count preset slices:
|
|
63
|
+
- Collect real-world reports for the next lowest-count preset slices: python, security, then web.
|
|
62
64
|
- Add more framework-specific false-positive examples from real reports so tuning guidance keeps getting sharper.
|
|
63
65
|
- Add a Markdown export for fixture reports so maintainers can paste coverage snapshots into issues or release notes.
|
|
64
66
|
|
package/docs/DEMO.md
CHANGED
|
@@ -192,8 +192,8 @@ Project config: none loaded
|
|
|
192
192
|
Fixture tuning evidence:
|
|
193
193
|
Support: limited
|
|
194
194
|
Confidence: medium
|
|
195
|
-
Total fixtures checked:
|
|
196
|
-
Weighted fixtures checked:
|
|
195
|
+
Total fixtures checked: 190
|
|
196
|
+
Weighted fixtures checked: 365.9
|
|
197
197
|
Matching fixtures: 11
|
|
198
198
|
Weighted matches: 23
|
|
199
199
|
Expected-match weight: 18
|
|
@@ -202,7 +202,7 @@ Edge-case matches: 0
|
|
|
202
202
|
Quiet-pass fixtures: 5
|
|
203
203
|
Quiet-pass weight: 3.6
|
|
204
204
|
By kind: command 0, plan 5, diff 5, final 1
|
|
205
|
-
Fixture coverage: 11/
|
|
205
|
+
Fixture coverage: 11/190 (6.3% weighted)
|
|
206
206
|
By verdict: pass 0, caution 3, block 8
|
|
207
207
|
Matched fixture samples:
|
|
208
208
|
infra-public-ingress-block: Public ingress should block in low-risk-tolerance infra repos.
|
|
@@ -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, and
|
|
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, and workspace test scripts. 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.
|
|
359
359
|
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Memento Mori Jester v0.1.70
|
|
2
|
+
|
|
3
|
+
This release follows the fixture report's infra-first curation guidance. It adds practical quiet-pass infra examples only; review behavior is unchanged.
|
|
4
|
+
|
|
5
|
+
## What Changed
|
|
6
|
+
|
|
7
|
+
- Added 6 fixture cases, growing the corpus from 178 to 184 fixtures.
|
|
8
|
+
- Added infra quiet-pass examples for:
|
|
9
|
+
- `kubectl diff`.
|
|
10
|
+
- `kubectl logs`.
|
|
11
|
+
- `kubectl describe`.
|
|
12
|
+
- Docker disk-usage inspection.
|
|
13
|
+
- Terraform linting.
|
|
14
|
+
- Disabling automatic public IP assignment.
|
|
15
|
+
- Kept thin rule coverage, quiet-pass gaps, feasible pass-case gaps, and preset/kind gaps at zero.
|
|
16
|
+
|
|
17
|
+
## Public Interface
|
|
18
|
+
|
|
19
|
+
- No CLI command changes.
|
|
20
|
+
- No config schema changes.
|
|
21
|
+
- No rule matching, scoring, or verdict behavior changes.
|
|
22
|
+
- No MCP, playground, GitHub Action, or npm publishing changes.
|
|
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 pack:dry
|
|
32
|
+
git diff --check
|
|
33
|
+
node .\dist\cli.js tune coverage --no-config
|
|
34
|
+
node .\dist\cli.js tune risky-domain --json --no-config
|
|
35
|
+
git diff | node .\dist\cli.js diff --fail-on block --subject "v0.1.70 infra quiet-pass curation"
|
|
36
|
+
```
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Memento Mori Jester v0.1.71
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
This release continues fixture-report curation for the Node preset and adds a repo-local X demo video asset. Review behavior, rule matching, scoring, MCP behavior, and release automation are unchanged.
|
|
6
|
+
|
|
7
|
+
## Changes
|
|
8
|
+
|
|
9
|
+
- Added six Node quiet-pass fixtures:
|
|
10
|
+
- `npm audit --audit-level=high`
|
|
11
|
+
- `npm outdated --long`
|
|
12
|
+
- `npm ci --ignore-scripts`
|
|
13
|
+
- `NODE_ENV=development npm test`
|
|
14
|
+
- package export map diffs
|
|
15
|
+
- workspace test script diffs
|
|
16
|
+
- Grew the fixture corpus from 184 to 190 examples.
|
|
17
|
+
- Added editable HyperFrames source and a final vertical MP4 under `promo/x-demo-v0.1.70`.
|
|
18
|
+
- Kept `promo/` outside the npm package `files` list so the published CLI remains small.
|
|
19
|
+
|
|
20
|
+
## Public Interface
|
|
21
|
+
|
|
22
|
+
- No CLI command changes.
|
|
23
|
+
- No config schema changes.
|
|
24
|
+
- No rule matching, scoring, or verdict behavior changes.
|
|
25
|
+
- No MCP, playground, GitHub Action, or npm publishing changes.
|
|
26
|
+
- New repo-local promo files live under `promo/`, which is not included in the npm package.
|
|
27
|
+
|
|
28
|
+
## Release Validation
|
|
29
|
+
|
|
30
|
+
```powershell
|
|
31
|
+
npm.cmd test
|
|
32
|
+
npm.cmd run demo:svg:check
|
|
33
|
+
npm.cmd run fixtures:report -- --json
|
|
34
|
+
npm.cmd run pack:dry
|
|
35
|
+
git diff --check
|
|
36
|
+
node .\dist\cli.js tune coverage --no-config
|
|
37
|
+
node .\dist\cli.js tune risky-domain --json --no-config
|
|
38
|
+
git diff | node .\dist\cli.js diff --fail-on block --subject "v0.1.71 node quiet-pass curation and promo asset"
|
|
39
|
+
```
|
|
@@ -24,6 +24,8 @@ Maintainer triage guidance lives in [docs/MAINTAINER_TRIAGE.md](../../docs/MAINT
|
|
|
24
24
|
- Second firing examples for remaining built-in and configured sensitive-domain thin rules, leaving no thin coverage gaps.
|
|
25
25
|
- Real-world low-count preset examples for node, python, web, infra, AI, and security workflows.
|
|
26
26
|
- Quiet-pass examples for typechecking, prebuild scripts, mypy, dataclass parsing, CodeQL, Dependabot limits, form validation, and accessibility copy.
|
|
27
|
+
- Quiet-pass examples for read-only Kubernetes inspection, Docker disk usage, Terraform linting, and public-IP hardening changes.
|
|
28
|
+
- Quiet-pass examples for npm audit/outdated/ci, development-mode Node commands, package export maps, and workspace test scripts.
|
|
27
29
|
- Fixture metadata like `weight` and `edgeCase` to support precision-weighted tuning evidence.
|
|
28
30
|
|
|
29
31
|
## Local Check
|
|
@@ -2313,5 +2313,176 @@
|
|
|
2313
2313
|
"custom-web-public-secret-name",
|
|
2314
2314
|
"custom-web-unsafe-html-injection"
|
|
2315
2315
|
]
|
|
2316
|
+
},
|
|
2317
|
+
{
|
|
2318
|
+
"id": "infra-kubectl-diff-command-pass",
|
|
2319
|
+
"preset": "infra",
|
|
2320
|
+
"kind": "command",
|
|
2321
|
+
"description": "Read-only Kubernetes diff commands should not trip delete or apply-style infra checks.",
|
|
2322
|
+
"content": "kubectl diff -f k8s/deployment.yaml",
|
|
2323
|
+
"expectedVerdict": "pass",
|
|
2324
|
+
"weight": 2,
|
|
2325
|
+
"expectedRuleIds": [],
|
|
2326
|
+
"absentRuleIds": [
|
|
2327
|
+
"blocked-command-kubectl-delete",
|
|
2328
|
+
"custom-infra-production-change"
|
|
2329
|
+
]
|
|
2330
|
+
},
|
|
2331
|
+
{
|
|
2332
|
+
"id": "infra-kubectl-logs-command-pass",
|
|
2333
|
+
"preset": "infra",
|
|
2334
|
+
"kind": "command",
|
|
2335
|
+
"description": "Kubernetes log inspection should stay quiet around destructive infra commands.",
|
|
2336
|
+
"content": "kubectl logs deployment/api --tail=100",
|
|
2337
|
+
"expectedVerdict": "pass",
|
|
2338
|
+
"weight": 2,
|
|
2339
|
+
"expectedRuleIds": [],
|
|
2340
|
+
"absentRuleIds": [
|
|
2341
|
+
"blocked-command-kubectl-delete",
|
|
2342
|
+
"custom-infra-production-change"
|
|
2343
|
+
]
|
|
2344
|
+
},
|
|
2345
|
+
{
|
|
2346
|
+
"id": "infra-docker-system-df-command-pass",
|
|
2347
|
+
"preset": "infra",
|
|
2348
|
+
"kind": "command",
|
|
2349
|
+
"description": "Docker disk-usage inspection should not trip destructive prune checks.",
|
|
2350
|
+
"content": "docker system df",
|
|
2351
|
+
"expectedVerdict": "pass",
|
|
2352
|
+
"weight": 2,
|
|
2353
|
+
"expectedRuleIds": [],
|
|
2354
|
+
"absentRuleIds": [
|
|
2355
|
+
"custom-infra-production-change"
|
|
2356
|
+
]
|
|
2357
|
+
},
|
|
2358
|
+
{
|
|
2359
|
+
"id": "infra-kubectl-describe-command-pass",
|
|
2360
|
+
"preset": "infra",
|
|
2361
|
+
"kind": "command",
|
|
2362
|
+
"description": "Kubernetes describe commands should stay quiet around delete checks.",
|
|
2363
|
+
"content": "kubectl describe deployment api",
|
|
2364
|
+
"expectedVerdict": "pass",
|
|
2365
|
+
"weight": 2,
|
|
2366
|
+
"expectedRuleIds": [],
|
|
2367
|
+
"absentRuleIds": [
|
|
2368
|
+
"blocked-command-kubectl-delete",
|
|
2369
|
+
"custom-infra-production-change"
|
|
2370
|
+
]
|
|
2371
|
+
},
|
|
2372
|
+
{
|
|
2373
|
+
"id": "infra-tflint-command-pass",
|
|
2374
|
+
"preset": "infra",
|
|
2375
|
+
"kind": "command",
|
|
2376
|
+
"description": "Terraform linting commands should not trip terraform destroy checks.",
|
|
2377
|
+
"content": "tflint --chdir=infra",
|
|
2378
|
+
"expectedVerdict": "pass",
|
|
2379
|
+
"weight": 2,
|
|
2380
|
+
"expectedRuleIds": [],
|
|
2381
|
+
"absentRuleIds": [
|
|
2382
|
+
"blocked-command-terraform-destroy",
|
|
2383
|
+
"custom-infra-production-change"
|
|
2384
|
+
]
|
|
2385
|
+
},
|
|
2386
|
+
{
|
|
2387
|
+
"id": "infra-public-ip-disabled-diff-pass",
|
|
2388
|
+
"preset": "infra",
|
|
2389
|
+
"kind": "diff",
|
|
2390
|
+
"description": "Disabling automatic public IP assignment should stay quiet around public exposure checks.",
|
|
2391
|
+
"content": "diff --git a/infra/network.tf b/infra/network.tf\n--- a/infra/network.tf\n+++ b/infra/network.tf\n@@ -1 +1,2 @@\n+map_public_ip_on_launch = false\n",
|
|
2392
|
+
"expectedVerdict": "pass",
|
|
2393
|
+
"weight": 2,
|
|
2394
|
+
"expectedRuleIds": [],
|
|
2395
|
+
"absentRuleIds": [
|
|
2396
|
+
"custom-infra-public-exposure"
|
|
2397
|
+
]
|
|
2398
|
+
},
|
|
2399
|
+
{
|
|
2400
|
+
"id": "node-npm-audit-command-pass",
|
|
2401
|
+
"preset": "node",
|
|
2402
|
+
"kind": "command",
|
|
2403
|
+
"description": "npm audit commands should stay quiet around publish, production, and install-script checks.",
|
|
2404
|
+
"content": "npm audit --audit-level=high",
|
|
2405
|
+
"expectedVerdict": "pass",
|
|
2406
|
+
"weight": 2,
|
|
2407
|
+
"expectedRuleIds": [],
|
|
2408
|
+
"absentRuleIds": [
|
|
2409
|
+
"blocked-command-npm-publish-force",
|
|
2410
|
+
"custom-node-env-production-change",
|
|
2411
|
+
"custom-node-install-script-change"
|
|
2412
|
+
]
|
|
2413
|
+
},
|
|
2414
|
+
{
|
|
2415
|
+
"id": "node-npm-outdated-command-pass",
|
|
2416
|
+
"preset": "node",
|
|
2417
|
+
"kind": "command",
|
|
2418
|
+
"description": "npm outdated inspection should not look like forced publishing or install-script changes.",
|
|
2419
|
+
"content": "npm outdated --long",
|
|
2420
|
+
"expectedVerdict": "pass",
|
|
2421
|
+
"weight": 2,
|
|
2422
|
+
"expectedRuleIds": [],
|
|
2423
|
+
"absentRuleIds": [
|
|
2424
|
+
"blocked-command-npm-publish-force",
|
|
2425
|
+
"custom-node-env-production-change",
|
|
2426
|
+
"custom-node-install-script-change"
|
|
2427
|
+
]
|
|
2428
|
+
},
|
|
2429
|
+
{
|
|
2430
|
+
"id": "node-npm-ci-ignore-scripts-command-pass",
|
|
2431
|
+
"preset": "node",
|
|
2432
|
+
"kind": "command",
|
|
2433
|
+
"description": "Installing locked dependencies with scripts disabled should stay quiet for node preset guards.",
|
|
2434
|
+
"content": "npm ci --ignore-scripts",
|
|
2435
|
+
"expectedVerdict": "pass",
|
|
2436
|
+
"weight": 2,
|
|
2437
|
+
"expectedRuleIds": [],
|
|
2438
|
+
"absentRuleIds": [
|
|
2439
|
+
"blocked-command-npm-publish-force",
|
|
2440
|
+
"custom-node-env-production-change",
|
|
2441
|
+
"custom-node-install-script-change"
|
|
2442
|
+
]
|
|
2443
|
+
},
|
|
2444
|
+
{
|
|
2445
|
+
"id": "node-env-development-command-pass",
|
|
2446
|
+
"preset": "node",
|
|
2447
|
+
"kind": "command",
|
|
2448
|
+
"description": "Development-mode Node commands should not trip production-mode checks.",
|
|
2449
|
+
"content": "NODE_ENV=development npm test",
|
|
2450
|
+
"expectedVerdict": "pass",
|
|
2451
|
+
"weight": 2,
|
|
2452
|
+
"expectedRuleIds": [],
|
|
2453
|
+
"absentRuleIds": [
|
|
2454
|
+
"custom-node-env-production-change",
|
|
2455
|
+
"configured-sensitive-domain-production"
|
|
2456
|
+
]
|
|
2457
|
+
},
|
|
2458
|
+
{
|
|
2459
|
+
"id": "node-package-exports-diff-pass",
|
|
2460
|
+
"preset": "node",
|
|
2461
|
+
"kind": "diff",
|
|
2462
|
+
"description": "Package export map additions should not be mistaken for install lifecycle scripts.",
|
|
2463
|
+
"content": "diff --git a/package.json b/package.json\n--- a/package.json\n+++ b/package.json\n@@ -1,5 +1,6 @@\n {\n+ \"exports\": \"./dist/index.js\",\n \"type\": \"module\"\n }\n",
|
|
2464
|
+
"expectedVerdict": "pass",
|
|
2465
|
+
"weight": 2,
|
|
2466
|
+
"expectedRuleIds": [],
|
|
2467
|
+
"absentRuleIds": [
|
|
2468
|
+
"custom-node-install-script-change",
|
|
2469
|
+
"package-install-script",
|
|
2470
|
+
"configured-sensitive-domain-postinstall"
|
|
2471
|
+
]
|
|
2472
|
+
},
|
|
2473
|
+
{
|
|
2474
|
+
"id": "node-workspace-test-script-diff-pass",
|
|
2475
|
+
"preset": "node",
|
|
2476
|
+
"kind": "diff",
|
|
2477
|
+
"description": "Workspace test scripts should not trip install lifecycle script checks.",
|
|
2478
|
+
"content": "diff --git a/package.json b/package.json\n--- a/package.json\n+++ b/package.json\n@@ -3,6 +3,7 @@\n \"scripts\": {\n+ \"test:packages\": \"npm -ws test\",\n \"test\": \"node --test\"\n }\n",
|
|
2479
|
+
"expectedVerdict": "pass",
|
|
2480
|
+
"weight": 2,
|
|
2481
|
+
"expectedRuleIds": [],
|
|
2482
|
+
"absentRuleIds": [
|
|
2483
|
+
"custom-node-install-script-change",
|
|
2484
|
+
"package-install-script",
|
|
2485
|
+
"configured-sensitive-domain-postinstall"
|
|
2486
|
+
]
|
|
2316
2487
|
}
|
|
2317
2488
|
]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "memento-mori-jester",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.71",
|
|
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": {
|