memento-mori-jester 0.1.39 → 0.1.41
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 +25 -0
- package/ROADMAP.md +2 -1
- package/docs/DEMO.md +5 -5
- package/docs/RELEASE_NOTES_v0.1.40.md +29 -0
- package/docs/RELEASE_NOTES_v0.1.41.md +30 -0
- package/examples/fixtures/preset-review-cases.json +168 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,31 @@ All notable changes to Memento Mori Jester are tracked here.
|
|
|
4
4
|
|
|
5
5
|
## Unreleased
|
|
6
6
|
|
|
7
|
+
## 0.1.41
|
|
8
|
+
|
|
9
|
+
- Added a focused precision-fixture pass for `jester tune` evidence so more sparse rule families now have at least two matching examples.
|
|
10
|
+
- Added new `preset-review-cases.json` fixtures for:
|
|
11
|
+
- `universal-privileged-command-plan`
|
|
12
|
+
- `plan-skip-tests-2`
|
|
13
|
+
- `plan-vibes-based-plan-2`
|
|
14
|
+
- `diff-test-removal-caution-2`
|
|
15
|
+
- `diff-ts-ignore-pass-3`
|
|
16
|
+
- `diff-temporary-marker-pass-3`
|
|
17
|
+
- `diff-console-debug-pass`
|
|
18
|
+
- `diff-package-install-script-pass-3`
|
|
19
|
+
- `command-chmod-777-pass`
|
|
20
|
+
- `diff-large-removal-pass-2`
|
|
21
|
+
- Updated demo fixture counters in `docs/DEMO.md` to the expanded corpus.
|
|
22
|
+
|
|
23
|
+
## 0.1.40
|
|
24
|
+
|
|
25
|
+
- Added more deterministic fixture examples for `jester tune` so sparse signals get stronger, more stable evidence:
|
|
26
|
+
- additional `ts-ignore` case
|
|
27
|
+
- additional `temporary-marker` case
|
|
28
|
+
- additional `package-install-script` case
|
|
29
|
+
- additional `wildcard-file-operation` case
|
|
30
|
+
- Updated demo fixture statistics in `docs/DEMO.md` to reflect the current fixture corpus.
|
|
31
|
+
|
|
7
32
|
## 0.1.39
|
|
8
33
|
|
|
9
34
|
- Added deterministic fixture support guidance to `jester tune` so each rule now gets a `support` signal:
|
package/ROADMAP.md
CHANGED
|
@@ -26,10 +26,11 @@ Memento Mori Jester is usable today as a CLI, MCP server, GitHub Action, and git
|
|
|
26
26
|
- README demo snapshot generated as a small deterministic SVG.
|
|
27
27
|
- Kind-aware fixture coverage and confidence-triage surface for `jester tune` outputs.
|
|
28
28
|
- Deterministic tune fixture support signal (`none` / `thin` / `limited` / `strong`) for sparse/noisy families.
|
|
29
|
+
- Precision-pass fixture expansion in v0.1.41 to strengthen repeat signal coverage for plan/command/diff families.
|
|
29
30
|
|
|
30
31
|
## Product Ideas
|
|
31
32
|
|
|
32
|
-
- Continue precision pass work by adding
|
|
33
|
+
- Continue precision pass work by adding example-backed rule-specific fixtures for the remaining thin families, then add a second-pass confidence signal before broad rollout.
|
|
33
34
|
|
|
34
35
|
## Quality And Safety
|
|
35
36
|
|
package/docs/DEMO.md
CHANGED
|
@@ -180,16 +180,16 @@ Severity: S3
|
|
|
180
180
|
Fixture tuning evidence:
|
|
181
181
|
Support: thin
|
|
182
182
|
Confidence: low
|
|
183
|
-
Total fixtures checked:
|
|
184
|
-
Weighted fixtures checked:
|
|
183
|
+
Total fixtures checked: 50
|
|
184
|
+
Weighted fixtures checked: 96.95
|
|
185
185
|
Matching fixtures: 6
|
|
186
186
|
Weighted matches: 13
|
|
187
187
|
Expected-match weight: 2
|
|
188
188
|
Unexpected-match weight: 11
|
|
189
189
|
Edge-case matches: 0
|
|
190
|
-
Fixture coverage: 6/
|
|
191
|
-
By kind: command 0, plan
|
|
192
|
-
By verdict: pass 0, caution
|
|
190
|
+
Fixture coverage: 6/40 (16.9% weighted)
|
|
191
|
+
By kind: command 0, plan 2, diff 4, final 0
|
|
192
|
+
By verdict: pass 0, caution 5, block 1
|
|
193
193
|
Matched fixture samples:
|
|
194
194
|
web-token-localstorage-block: Token storage in localStorage should block.
|
|
195
195
|
infra-public-ingress-block: Public ingress should block in low-risk-tolerance infra repos.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# v0.1.40 Release Notes
|
|
2
|
+
|
|
3
|
+
This release is a precision-tuning maintenance update for `jester tune`, adding a few deterministic fixture cases so sparse-rule guidance is less jumpy.
|
|
4
|
+
|
|
5
|
+
## Added
|
|
6
|
+
|
|
7
|
+
- Added additional `preset-review-cases.json` fixtures for tune evidence:
|
|
8
|
+
- `diff-ts-ignore-pass-2`
|
|
9
|
+
- `diff-temporary-marker-pass-2`
|
|
10
|
+
- `diff-package-install-script-pass-2`
|
|
11
|
+
- `command-wildcard-file-operation-pass-2`
|
|
12
|
+
- Updated `docs/DEMO.md` fixture counters to match the current fixture corpus.
|
|
13
|
+
|
|
14
|
+
## Release Validation
|
|
15
|
+
|
|
16
|
+
```powershell
|
|
17
|
+
npm.cmd test
|
|
18
|
+
npm.cmd run demo:svg:check
|
|
19
|
+
npm.cmd run pack:dry
|
|
20
|
+
git diff --check
|
|
21
|
+
node .\dist\cli.js tune risky-domain --json
|
|
22
|
+
node .\dist\cli.js tune risky-domain
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Highlights
|
|
26
|
+
|
|
27
|
+
- No review behavior changes.
|
|
28
|
+
- No CLI command surface changes.
|
|
29
|
+
- No release/workflow behavior changes.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# v0.1.41 Release Notes
|
|
2
|
+
|
|
3
|
+
This maintenance pass adds fixture-backed precision improvements for `jester tune` so sparse/noisy families have broader deterministic guidance coverage.
|
|
4
|
+
|
|
5
|
+
## Added
|
|
6
|
+
|
|
7
|
+
- Added additional deterministic fixtures to `examples/fixtures/preset-review-cases.json`:
|
|
8
|
+
- `universal-privileged-command-plan`
|
|
9
|
+
- `plan-skip-tests-2`
|
|
10
|
+
- `plan-vibes-based-plan-2`
|
|
11
|
+
- `diff-test-removal-caution-2`
|
|
12
|
+
- `diff-ts-ignore-pass-3`
|
|
13
|
+
- `diff-temporary-marker-pass-3`
|
|
14
|
+
- `diff-console-debug-pass`
|
|
15
|
+
- `diff-package-install-script-pass-3`
|
|
16
|
+
- `command-chmod-777-pass`
|
|
17
|
+
- `diff-large-removal-pass-2`
|
|
18
|
+
- Updated demo fixture counters in `docs/DEMO.md` for the expanded suite.
|
|
19
|
+
- No review logic or CLI behavior changes.
|
|
20
|
+
|
|
21
|
+
## Release Validation
|
|
22
|
+
|
|
23
|
+
```powershell
|
|
24
|
+
npm.cmd test
|
|
25
|
+
npm.cmd run demo:svg:check
|
|
26
|
+
npm.cmd run pack:dry
|
|
27
|
+
git diff --check
|
|
28
|
+
node .\dist\cli.js tune risky-domain --json
|
|
29
|
+
node .\dist\cli.js tune risky-domain
|
|
30
|
+
```
|
|
@@ -251,6 +251,18 @@
|
|
|
251
251
|
"privileged-command"
|
|
252
252
|
]
|
|
253
253
|
},
|
|
254
|
+
{
|
|
255
|
+
"id": "universal-privileged-command-plan",
|
|
256
|
+
"preset": "default",
|
|
257
|
+
"kind": "plan",
|
|
258
|
+
"description": "Plan language requesting elevated command should still be surfaced as privileged.",
|
|
259
|
+
"content": "This step requires sudo to patch the cert store. Keep it narrow and documented.",
|
|
260
|
+
"weight": 2,
|
|
261
|
+
"expectedVerdict": "caution",
|
|
262
|
+
"expectedRuleIds": [
|
|
263
|
+
"privileged-command"
|
|
264
|
+
]
|
|
265
|
+
},
|
|
254
266
|
{
|
|
255
267
|
"id": "universal-risky-domain-caution",
|
|
256
268
|
"preset": "default",
|
|
@@ -299,6 +311,18 @@
|
|
|
299
311
|
"vibes-based-plan"
|
|
300
312
|
]
|
|
301
313
|
},
|
|
314
|
+
{
|
|
315
|
+
"id": "plan-vibes-based-plan-2",
|
|
316
|
+
"preset": "default",
|
|
317
|
+
"kind": "plan",
|
|
318
|
+
"description": "A second style of vibes-based language should remain a caution.",
|
|
319
|
+
"content": "This is just probably should work once the cache warms up.",
|
|
320
|
+
"weight": 2,
|
|
321
|
+
"expectedVerdict": "caution",
|
|
322
|
+
"expectedRuleIds": [
|
|
323
|
+
"vibes-based-plan"
|
|
324
|
+
]
|
|
325
|
+
},
|
|
302
326
|
{
|
|
303
327
|
"id": "plan-skip-tests",
|
|
304
328
|
"preset": "default",
|
|
@@ -311,6 +335,18 @@
|
|
|
311
335
|
"skip-tests"
|
|
312
336
|
]
|
|
313
337
|
},
|
|
338
|
+
{
|
|
339
|
+
"id": "plan-skip-tests-2",
|
|
340
|
+
"preset": "default",
|
|
341
|
+
"kind": "plan",
|
|
342
|
+
"description": "Explicitly declining tests in a second style should still trigger the skip-tests check.",
|
|
343
|
+
"content": "Skip tests for this change in the rollout path.",
|
|
344
|
+
"weight": 2,
|
|
345
|
+
"expectedVerdict": "block",
|
|
346
|
+
"expectedRuleIds": [
|
|
347
|
+
"skip-tests"
|
|
348
|
+
]
|
|
349
|
+
},
|
|
314
350
|
{
|
|
315
351
|
"id": "plan-missing-verification-step",
|
|
316
352
|
"preset": "default",
|
|
@@ -371,6 +407,18 @@
|
|
|
371
407
|
"test-removal"
|
|
372
408
|
]
|
|
373
409
|
},
|
|
410
|
+
{
|
|
411
|
+
"id": "diff-test-removal-caution-2",
|
|
412
|
+
"preset": "default",
|
|
413
|
+
"kind": "diff",
|
|
414
|
+
"description": "Removing another test chunk should also surface the test-removal check.",
|
|
415
|
+
"content": "diff --git a/src/utils.spec.ts b/src/utils.spec.ts\n--- a/src/utils.spec.ts\n+++ b/src/utils.spec.ts\n@@ -1,3 +1,0 @@\n-it(\"helper helper\", () => {});\n-it(\"edge\", () => {});\n",
|
|
416
|
+
"weight": 2,
|
|
417
|
+
"expectedVerdict": "caution",
|
|
418
|
+
"expectedRuleIds": [
|
|
419
|
+
"test-removal"
|
|
420
|
+
]
|
|
421
|
+
},
|
|
374
422
|
{
|
|
375
423
|
"id": "diff-ts-ignore-pass",
|
|
376
424
|
"preset": "default",
|
|
@@ -383,6 +431,30 @@
|
|
|
383
431
|
"ts-ignore"
|
|
384
432
|
]
|
|
385
433
|
},
|
|
434
|
+
{
|
|
435
|
+
"id": "diff-ts-ignore-pass-2",
|
|
436
|
+
"preset": "default",
|
|
437
|
+
"kind": "diff",
|
|
438
|
+
"description": "TypeScript ignore markers should stay visible in alternate formatting.",
|
|
439
|
+
"content": "diff --git a/src/bridge.ts b/src/bridge.ts\n--- a/src/bridge.ts\n+++ b/src/bridge.ts\n@@ -1 +1,2 @@\n+const value: string = 42 as any;\n+// @ts-ignore\n",
|
|
440
|
+
"expectedVerdict": "pass",
|
|
441
|
+
"weight": 1,
|
|
442
|
+
"expectedRuleIds": [
|
|
443
|
+
"ts-ignore"
|
|
444
|
+
]
|
|
445
|
+
},
|
|
446
|
+
{
|
|
447
|
+
"id": "diff-ts-ignore-pass-3",
|
|
448
|
+
"preset": "default",
|
|
449
|
+
"kind": "diff",
|
|
450
|
+
"description": "TS expect-error markers should stay visible in fixture evidence too.",
|
|
451
|
+
"content": "diff --git a/src/bridge.ts b/src/bridge.ts\n--- a/src/bridge.ts\n+++ b/src/bridge.ts\n@@ -1 +1,2 @@\n+// @ts-expect-error\n+const value: number = \"oops\";\n",
|
|
452
|
+
"weight": 2,
|
|
453
|
+
"expectedVerdict": "pass",
|
|
454
|
+
"expectedRuleIds": [
|
|
455
|
+
"ts-ignore"
|
|
456
|
+
]
|
|
457
|
+
},
|
|
386
458
|
{
|
|
387
459
|
"id": "diff-temporary-marker-pass",
|
|
388
460
|
"preset": "default",
|
|
@@ -395,6 +467,30 @@
|
|
|
395
467
|
"temporary-marker"
|
|
396
468
|
]
|
|
397
469
|
},
|
|
470
|
+
{
|
|
471
|
+
"id": "diff-temporary-marker-pass-2",
|
|
472
|
+
"preset": "default",
|
|
473
|
+
"kind": "diff",
|
|
474
|
+
"description": "Legacy migration markers should still trigger the temporary marker check.",
|
|
475
|
+
"content": "diff --git a/src/legacy.ts b/src/legacy.ts\n--- a/src/legacy.ts\n+++ b/src/legacy.ts\n@@ -1 +1,2 @@\n+// FIXME: remove this helper before shipping\n",
|
|
476
|
+
"expectedVerdict": "pass",
|
|
477
|
+
"weight": 1,
|
|
478
|
+
"expectedRuleIds": [
|
|
479
|
+
"temporary-marker"
|
|
480
|
+
]
|
|
481
|
+
},
|
|
482
|
+
{
|
|
483
|
+
"id": "diff-temporary-marker-pass-3",
|
|
484
|
+
"preset": "default",
|
|
485
|
+
"kind": "diff",
|
|
486
|
+
"description": "Hack markers should still be called out.",
|
|
487
|
+
"content": "diff --git a/src/legacy.ts b/src/legacy.ts\n--- a/src/legacy.ts\n+++ b/src/legacy.ts\n@@ -1 +1,2 @@\n+// HACK: keep this around until partner team updates their integration.\n",
|
|
488
|
+
"weight": 2,
|
|
489
|
+
"expectedVerdict": "pass",
|
|
490
|
+
"expectedRuleIds": [
|
|
491
|
+
"temporary-marker"
|
|
492
|
+
]
|
|
493
|
+
},
|
|
398
494
|
{
|
|
399
495
|
"id": "diff-console-log-pass",
|
|
400
496
|
"preset": "default",
|
|
@@ -407,6 +503,18 @@
|
|
|
407
503
|
"console-log"
|
|
408
504
|
]
|
|
409
505
|
},
|
|
506
|
+
{
|
|
507
|
+
"id": "diff-console-debug-pass",
|
|
508
|
+
"preset": "default",
|
|
509
|
+
"kind": "diff",
|
|
510
|
+
"description": "Console debug calls should be flagged in alternate method form.",
|
|
511
|
+
"content": "diff --git a/src/trace.ts b/src/trace.ts\n--- a/src/trace.ts\n+++ b/src/trace.ts\n@@ -1 +1,2 @@\n+console.debug(\"Trace path entered\");\n",
|
|
512
|
+
"weight": 1,
|
|
513
|
+
"expectedVerdict": "pass",
|
|
514
|
+
"expectedRuleIds": [
|
|
515
|
+
"console-log"
|
|
516
|
+
]
|
|
517
|
+
},
|
|
410
518
|
{
|
|
411
519
|
"id": "diff-package-install-script-pass",
|
|
412
520
|
"preset": "default",
|
|
@@ -419,6 +527,30 @@
|
|
|
419
527
|
"package-install-script"
|
|
420
528
|
]
|
|
421
529
|
},
|
|
530
|
+
{
|
|
531
|
+
"id": "diff-package-install-script-pass-3",
|
|
532
|
+
"preset": "default",
|
|
533
|
+
"kind": "diff",
|
|
534
|
+
"description": "Prepare/install scripts are still high-risk and should remain a fixture signal.",
|
|
535
|
+
"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+ \"prepare\": \"node scripts/prepare.js\"\n }\n ",
|
|
536
|
+
"weight": 2,
|
|
537
|
+
"expectedVerdict": "caution",
|
|
538
|
+
"expectedRuleIds": [
|
|
539
|
+
"package-install-script"
|
|
540
|
+
]
|
|
541
|
+
},
|
|
542
|
+
{
|
|
543
|
+
"id": "diff-package-install-script-pass-2",
|
|
544
|
+
"preset": "default",
|
|
545
|
+
"kind": "diff",
|
|
546
|
+
"description": "Postinstall script additions should share the same install-script caution.",
|
|
547
|
+
"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+ \"postinstall\": \"node scripts/verify.js\"\n }\n ",
|
|
548
|
+
"expectedVerdict": "caution",
|
|
549
|
+
"weight": 1,
|
|
550
|
+
"expectedRuleIds": [
|
|
551
|
+
"package-install-script"
|
|
552
|
+
]
|
|
553
|
+
},
|
|
422
554
|
{
|
|
423
555
|
"id": "diff-large-removal-pass",
|
|
424
556
|
"preset": "default",
|
|
@@ -442,5 +574,41 @@
|
|
|
442
574
|
"expectedRuleIds": [
|
|
443
575
|
"wildcard-file-operation"
|
|
444
576
|
]
|
|
577
|
+
},
|
|
578
|
+
{
|
|
579
|
+
"id": "command-chmod-777-pass",
|
|
580
|
+
"preset": "default",
|
|
581
|
+
"kind": "command",
|
|
582
|
+
"description": "Another over-broad permissions command should keep the same caution signal alive.",
|
|
583
|
+
"content": "chmod -R 777 ./tmp/secrets",
|
|
584
|
+
"weight": 2,
|
|
585
|
+
"expectedVerdict": "caution",
|
|
586
|
+
"expectedRuleIds": [
|
|
587
|
+
"chmod-777"
|
|
588
|
+
]
|
|
589
|
+
},
|
|
590
|
+
{
|
|
591
|
+
"id": "command-wildcard-file-operation-pass-2",
|
|
592
|
+
"preset": "default",
|
|
593
|
+
"kind": "command",
|
|
594
|
+
"description": "Wildcard copies can also over-match files in command surfaces.",
|
|
595
|
+
"content": "cp *.md ./docs/",
|
|
596
|
+
"expectedVerdict": "pass",
|
|
597
|
+
"weight": 1,
|
|
598
|
+
"expectedRuleIds": [
|
|
599
|
+
"wildcard-file-operation"
|
|
600
|
+
]
|
|
601
|
+
},
|
|
602
|
+
{
|
|
603
|
+
"id": "diff-large-removal-pass-2",
|
|
604
|
+
"preset": "default",
|
|
605
|
+
"kind": "diff",
|
|
606
|
+
"description": "Another large deletion example for structural coverage.",
|
|
607
|
+
"content": "diff --git a/src/big-cleanup.ts b/src/big-cleanup.ts\n--- a/src/big-cleanup.ts\n+++ b/src/big-cleanup.ts\n@@ -1,90 +1,4 @@\n-old-item-01\n-old-item-02\n-old-item-03\n-old-item-04\n-old-item-05\n-old-item-06\n-old-item-07\n-old-item-08\n-old-item-09\n-old-item-10\n-old-item-11\n-old-item-12\n-old-item-13\n-old-item-14\n-old-item-15\n-old-item-16\n-old-item-17\n-old-item-18\n-old-item-19\n-old-item-20\n-old-item-21\n-old-item-22\n-old-item-23\n-old-item-24\n-old-item-25\n-old-item-26\n-old-item-27\n-old-item-28\n-old-item-29\n-old-item-30\n-old-item-31\n-old-item-32\n-old-item-33\n-old-item-34\n-old-item-35\n-old-item-36\n-old-item-37\n-old-item-38\n-old-item-39\n-old-item-40\n-old-item-41\n-old-item-42\n-old-item-43\n-old-item-44\n-old-item-45\n-old-item-46\n-old-item-47\n-old-item-48\n-old-item-49\n-old-item-50\n-old-item-51\n-old-item-52\n-old-item-53\n-old-item-54\n-old-item-55\n-old-item-56\n-old-item-57\n-old-item-58\n-old-item-59\n-old-item-60\n-old-item-61\n-old-item-62\n-old-item-63\n-old-item-64\n-old-item-65\n-old-item-66\n-old-item-67\n-old-item-68\n-old-item-69\n-old-item-70\n-old-item-71\n-old-item-72\n-old-item-73\n-old-item-74\n-old-item-75\n-old-item-76\n-old-item-77\n-old-item-78\n-old-item-79\n-old-item-80\n-old-item-81\n-old-item-82\n-old-item-83\n-old-item-84\n-old-item-85\n+// intentional cleanup with replacement notes\n+// review replacement path separately\n",
|
|
608
|
+
"weight": 3,
|
|
609
|
+
"expectedVerdict": "pass",
|
|
610
|
+
"expectedRuleIds": [
|
|
611
|
+
"large-removal"
|
|
612
|
+
]
|
|
445
613
|
}
|
|
446
614
|
]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "memento-mori-jester",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.41",
|
|
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": {
|