memento-mori-jester 0.1.44 → 0.1.46

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.46
8
+
9
+ - Added one-click sample buttons to the local playground for command, plan, diff, and final-answer reviews.
10
+ - The sample buttons populate both subject and content, switch the active review kind, and preserve the existing local-only review API.
11
+ - Added playground tests for deterministic sample rendering and review-kind coverage.
12
+
13
+ ## 0.1.45
14
+
15
+ - Added eight focused preset review fixtures for `risky-domain`, `missing-verification-step`, `confidence-theater`, and `done-without-evidence`.
16
+ - Curated intentional overlap expectations for existing fixtures so `jester tune coverage` no longer treats auth, security-group, eval, skip-tests, and migration intersections as surprise matches.
17
+ - Improved the fixture coverage baseline from low/thin families to medium-or-better support across the built-in and structural rule set.
18
+
7
19
  ## 0.1.44
8
20
 
9
21
  - Added `jester tune coverage` and `jester tune coverage --json` as read-only maintenance reports for fixture support across every rule.
package/README.md CHANGED
@@ -166,6 +166,8 @@ jester mcp-config --mode npx
166
166
  jester mcp-config --agent claude --mode npx
167
167
  ```
168
168
 
169
+ `jester playground` includes one-click samples for command, plan, diff, and final-answer reviews, so you can see a block, caution, or evidence check without inventing input first.
170
+
169
171
  The package-name binary works too:
170
172
 
171
173
  ```powershell
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
+ - Playground sample buttons in v0.1.46 for trying command, plan, diff, and final-answer reviews from the first screen.
10
+ - Fixture curation pass in v0.1.45 that moved all built-in and structural rule evidence to medium-or-better confidence.
9
11
  - Additional precision pass for fixture-driven tuning signals (scoped to high-signal rule families first).
10
12
  - Fixture-informed `jester tune` evidence from preset review cases, including matched fixture IDs and verdict buckets.
11
13
  - Framework-specific GitHub Actions examples for Next.js, Vite React, Express API, FastAPI, Terraform/Kubernetes, and AI MCP repos.
@@ -33,7 +35,7 @@ Memento Mori Jester is usable today as a CLI, MCP server, GitHub Action, and git
33
35
 
34
36
  ## Product Ideas
35
37
 
36
- - Use the coverage report to add example-backed fixtures for the weakest important rule families, then improve playground onboarding samples.
38
+ - Polish README onboarding around the shortest path from `npx` to playground, agent setup, and hooks.
37
39
 
38
40
  ## Quality And Safety
39
41
 
@@ -1,5 +1,5 @@
1
1
  import { type Server } from "node:http";
2
- import { type UserJesterConfig } from "./types.js";
2
+ import { type ReviewKind, type UserJesterConfig } from "./types.js";
3
3
  export declare const playgroundHost = "127.0.0.1";
4
4
  export declare const playgroundPortDefault = 4818;
5
5
  export type PlaygroundServerOptions = {
@@ -13,6 +13,14 @@ export type StartedPlayground = {
13
13
  url: string;
14
14
  port: number;
15
15
  };
16
+ export type PlaygroundSample = {
17
+ id: string;
18
+ label: string;
19
+ kind: ReviewKind;
20
+ subject: string;
21
+ content: string;
22
+ };
23
+ export declare const playgroundSamples: PlaygroundSample[];
16
24
  export declare function createPlaygroundServer(options?: PlaygroundServerOptions): Server;
17
25
  export declare function startPlaygroundServer(options?: StartPlaygroundOptions): Promise<StartedPlayground>;
18
26
  export declare function renderPlaygroundHtml(): string;
@@ -10,16 +10,46 @@ class HttpError extends Error {
10
10
  this.status = status;
11
11
  }
12
12
  }
13
- const sampleInputs = {
14
- command: "git reset --hard",
15
- plan: "I will just refactor auth and ship it.",
16
- final: "Implemented the fix, but tests not run.",
17
- diff: `diff --git a/.env b/.env
13
+ export const playgroundSamples = [
14
+ {
15
+ id: "command-hard-reset",
16
+ label: "Hard reset",
17
+ kind: "command",
18
+ subject: "destructive git command",
19
+ content: "git reset --hard"
20
+ },
21
+ {
22
+ id: "plan-auth-ship",
23
+ label: "Overconfident plan",
24
+ kind: "plan",
25
+ subject: "auth refactor plan",
26
+ content: "I will just refactor auth and ship it."
27
+ },
28
+ {
29
+ id: "diff-public-token",
30
+ label: "Public token diff",
31
+ kind: "diff",
32
+ subject: "environment diff",
33
+ content: `diff --git a/.env b/.env
18
34
  index 1111111..2222222 100644
19
35
  --- a/.env
20
36
  +++ b/.env
21
37
  @@ -1 +1,2 @@
22
38
  +PUBLIC_TOKEN=redacted-demo-value`
39
+ },
40
+ {
41
+ id: "final-tests-not-run",
42
+ label: "Untested final",
43
+ kind: "final",
44
+ subject: "final answer",
45
+ content: "Implemented the fix, but tests not run."
46
+ }
47
+ ];
48
+ const defaultSampleByKind = {
49
+ command: playgroundSamples[0],
50
+ plan: playgroundSamples[1],
51
+ diff: playgroundSamples[2],
52
+ final: playgroundSamples[3]
23
53
  };
24
54
  export function createPlaygroundServer(options = {}) {
25
55
  return createServer(async (request, response) => {
@@ -332,6 +362,31 @@ export function renderPlaygroundHtml() {
332
362
  gap: 12px;
333
363
  }
334
364
 
365
+ .sample-grid {
366
+ display: grid;
367
+ grid-template-columns: repeat(4, minmax(0, 1fr));
368
+ gap: 8px;
369
+ }
370
+
371
+ .sample-button {
372
+ min-height: 38px;
373
+ padding: 0 10px;
374
+ border: 1px solid var(--line);
375
+ border-radius: 8px;
376
+ background: #fff;
377
+ color: var(--ink);
378
+ cursor: pointer;
379
+ font-size: 12px;
380
+ font-weight: 760;
381
+ white-space: normal;
382
+ }
383
+
384
+ .sample-button[aria-pressed="true"] {
385
+ border-color: var(--accent);
386
+ background: var(--accent-soft);
387
+ color: var(--accent);
388
+ }
389
+
335
390
  .actions {
336
391
  display: flex;
337
392
  align-items: center;
@@ -491,6 +546,10 @@ export function renderPlaygroundHtml() {
491
546
  grid-template-columns: 1fr;
492
547
  }
493
548
 
549
+ .sample-grid {
550
+ grid-template-columns: repeat(2, minmax(0, 1fr));
551
+ }
552
+
494
553
  .segmented {
495
554
  grid-template-columns: repeat(2, minmax(0, 1fr));
496
555
  }
@@ -541,6 +600,10 @@ export function renderPlaygroundHtml() {
541
600
  <textarea id="content" name="content" spellcheck="false"></textarea>
542
601
  </label>
543
602
 
603
+ <div class="sample-grid" aria-label="Sample inputs">
604
+ ${playgroundSamples.map((sample) => `<button class="sample-button" type="button" data-sample-id="${sample.id}" aria-pressed="false">${sample.label}</button>`).join("\n ")}
605
+ </div>
606
+
544
607
  <div class="row">
545
608
  <label>
546
609
  Tone
@@ -580,8 +643,10 @@ export function renderPlaygroundHtml() {
580
643
  </main>
581
644
 
582
645
  <script>
583
- const samples = ${JSON.stringify(sampleInputs, null, 6)};
646
+ const samples = ${JSON.stringify(playgroundSamples, null, 6)};
647
+ const defaultSamples = ${JSON.stringify(defaultSampleByKind, null, 6)};
584
648
  let activeKind = "command";
649
+ let activeSampleId = "";
585
650
 
586
651
  const content = document.querySelector("#content");
587
652
  const subject = document.querySelector("#subject");
@@ -589,6 +654,7 @@ export function renderPlaygroundHtml() {
589
654
  const risk = document.querySelector("#risk");
590
655
  const result = document.querySelector("#result");
591
656
  const kindButtons = Array.from(document.querySelectorAll("[data-kind]"));
657
+ const sampleButtons = Array.from(document.querySelectorAll("[data-sample-id]"));
592
658
 
593
659
  function escapeHtml(value) {
594
660
  return String(value)
@@ -598,14 +664,28 @@ export function renderPlaygroundHtml() {
598
664
  .replaceAll('"', "&quot;");
599
665
  }
600
666
 
601
- function setKind(kind) {
602
- activeKind = kind;
603
- content.value = samples[kind];
667
+ function syncButtons() {
604
668
  for (const button of kindButtons) {
605
- button.setAttribute("aria-pressed", String(button.dataset.kind === kind));
669
+ button.setAttribute("aria-pressed", String(button.dataset.kind === activeKind));
670
+ }
671
+ for (const button of sampleButtons) {
672
+ button.setAttribute("aria-pressed", String(button.dataset.sampleId === activeSampleId));
606
673
  }
607
674
  }
608
675
 
676
+ function loadSample(sample) {
677
+ activeKind = sample.kind;
678
+ activeSampleId = sample.id;
679
+ subject.value = sample.subject;
680
+ content.value = sample.content;
681
+ syncButtons();
682
+ }
683
+
684
+ function setKind(kind) {
685
+ activeKind = kind;
686
+ loadSample(defaultSamples[kind]);
687
+ }
688
+
609
689
  function issueList(issues) {
610
690
  if (!issues.length) {
611
691
  return "";
@@ -667,6 +747,15 @@ export function renderPlaygroundHtml() {
667
747
  button.addEventListener("click", () => setKind(button.dataset.kind));
668
748
  }
669
749
 
750
+ for (const button of sampleButtons) {
751
+ button.addEventListener("click", () => {
752
+ const sample = samples.find((entry) => entry.id === button.dataset.sampleId);
753
+ if (sample) {
754
+ loadSample(sample);
755
+ }
756
+ });
757
+ }
758
+
670
759
  document.querySelector("#sample").addEventListener("click", () => setKind(activeKind));
671
760
  document.querySelector("#review-form").addEventListener("submit", (event) => {
672
761
  event.preventDefault();
@@ -1 +1 @@
1
- {"version":3,"file":"playground.js","sourceRoot":"","sources":["../src/playground.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"playground.js","sourceRoot":"","sources":["../src/playground.ts"],"names":[],"mappings":"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"}
package/docs/CLI.md CHANGED
@@ -49,6 +49,7 @@ jester playground --port 4919
49
49
  ```
50
50
 
51
51
  The playground listens on `127.0.0.1`, loads the same project config as the CLI, and reviews commands, plans, diffs, and final answers through the same rule engine.
52
+ It includes one-click samples for the four review kinds so you can try realistic inputs before wiring Jester into an agent or hook.
52
53
 
53
54
  ## Start
54
55
 
package/docs/DEMO.md CHANGED
@@ -83,6 +83,13 @@ Config: built-in defaults
83
83
  Press Ctrl+C to stop.
84
84
  ```
85
85
 
86
+ The browser playground includes sample buttons for:
87
+
88
+ - `Hard reset`
89
+ - `Overconfident plan`
90
+ - `Public token diff`
91
+ - `Untested final`
92
+
86
93
  ## 5. Preset Recommendation And Preview
87
94
 
88
95
  Command:
@@ -176,24 +183,31 @@ Typical output:
176
183
  Memento Mori Jester tuning advice
177
184
 
178
185
  Rule: risky-domain [enabled]
186
+ Title: High-risk domain touched
179
187
  Severity: S3
188
+ Source: built-in
189
+ Kinds: plan, command, diff, final
190
+ Project config: none loaded
191
+
180
192
  Fixture tuning evidence:
181
- Support: thin
182
- Confidence: low
183
- Total fixtures checked: 50
184
- Weighted fixtures checked: 96.95
185
- Matching fixtures: 6
186
- Weighted matches: 13
187
- Expected-match weight: 2
188
- Unexpected-match weight: 11
193
+ Support: limited
194
+ Confidence: medium
195
+ Total fixtures checked: 58
196
+ Weighted fixtures checked: 112.95
197
+ Matching fixtures: 8
198
+ Weighted matches: 17
199
+ Expected-match weight: 14
200
+ Unexpected-match weight: 3
189
201
  Edge-case matches: 0
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
202
+ By kind: command 0, plan 3, diff 4, final 1
203
+ Fixture coverage: 8/58 (15.1% weighted)
204
+ By verdict: pass 0, caution 3, block 5
193
205
  Matched fixture samples:
194
- web-token-localstorage-block: Token storage in localStorage should block.
195
206
  infra-public-ingress-block: Public ingress should block in low-risk-tolerance infra repos.
207
+ plan-missing-verification-step: Implementation plan without verification steps should trigger the structural rule.
196
208
  sec-secret-material-openai: Hard-coded OpenAI-like token should map to the secret-material rule.
209
+ universal-risky-domain-auth-caution-2: Auth callback changes should keep the broad risky-domain signal covered when verification is present.
210
+ universal-risky-domain-billing-final: Billing changes in final responses should remain covered when evidence is supplied.
197
211
 
198
212
  When it may be noisy:
199
213
  It can be noisy in docs, release notes, or rule text that merely mentions a sensitive word.
@@ -0,0 +1,22 @@
1
+ # v0.1.45 Release Notes
2
+
3
+ This release improves the fixture evidence behind `jester tune` and `jester tune coverage`. It does not change review matching, scoring, verdicts, config, MCP tools, or GitHub Action behavior.
4
+
5
+ ## Changed
6
+
7
+ - Added focused fixtures for `risky-domain`, `missing-verification-step`, `confidence-theater`, and `done-without-evidence`.
8
+ - Marked intentional overlaps in existing fixtures so the coverage report can distinguish real surprise matches from expected multi-rule risk.
9
+ - Raised built-in and structural rule coverage to medium-or-better confidence in the default coverage report.
10
+
11
+ ## Release Validation
12
+
13
+ ```powershell
14
+ npm.cmd test
15
+ npm.cmd run demo:svg:check
16
+ npm.cmd run pack:dry
17
+ git diff --check
18
+ node .\dist\cli.js tune coverage --json --no-config
19
+ node .\dist\cli.js tune risky-domain --no-config
20
+ node .\dist\cli.js tune missing-verification-step --no-config
21
+ git diff | node .\dist\cli.js diff --fail-on block --subject "v0.1.45 fixture curation"
22
+ ```
@@ -0,0 +1,24 @@
1
+ # v0.1.46 Release Notes
2
+
3
+ This release makes the local playground easier to try by adding one-click sample inputs for each review kind. It does not change review matching, scoring, verdicts, config, MCP tools, GitHub Action behavior, or release automation.
4
+
5
+ ## Changed
6
+
7
+ - Added playground sample buttons:
8
+ - `Hard reset`
9
+ - `Overconfident plan`
10
+ - `Public token diff`
11
+ - `Untested final`
12
+ - Sample buttons switch the active review kind and populate the subject/content fields.
13
+ - Added tests that the rendered playground exposes all sample buttons and keeps sample review-kind coverage deterministic.
14
+
15
+ ## Release Validation
16
+
17
+ ```powershell
18
+ npm.cmd test
19
+ npm.cmd run demo:svg:check
20
+ npm.cmd run pack:dry
21
+ git diff --check
22
+ node .\dist\cli.js playground
23
+ git diff | node .\dist\cli.js diff --fail-on block --subject "v0.1.46 playground sample buttons"
24
+ ```
@@ -36,7 +36,10 @@
36
36
  "weight": 2,
37
37
  "expectedVerdict": "block",
38
38
  "expectedRuleIds": [
39
- "custom-web-storage-sensitive-value"
39
+ "custom-web-storage-sensitive-value",
40
+ "risky-domain",
41
+ "configured-sensitive-domain-auth",
42
+ "configured-sensitive-domain-session"
40
43
  ]
41
44
  },
42
45
  {
@@ -88,7 +91,8 @@
88
91
  "expectedVerdict": "block",
89
92
  "weight": 2,
90
93
  "expectedRuleIds": [
91
- "custom-infra-public-exposure"
94
+ "custom-infra-public-exposure",
95
+ "risky-domain"
92
96
  ]
93
97
  },
94
98
  {
@@ -128,7 +132,9 @@
128
132
  "expectedVerdict": "block",
129
133
  "weight": 2,
130
134
  "expectedRuleIds": [
131
- "custom-ai-evals-skipped"
135
+ "custom-ai-evals-skipped",
136
+ "configured-sensitive-domain-eval",
137
+ "missing-verification-step"
132
138
  ]
133
139
  },
134
140
  {
@@ -152,7 +158,9 @@
152
158
  "weight": 2,
153
159
  "expectedVerdict": "block",
154
160
  "expectedRuleIds": [
155
- "secret-material"
161
+ "secret-material",
162
+ "risky-domain",
163
+ "configured-sensitive-domain-auth"
156
164
  ]
157
165
  },
158
166
  {
@@ -272,7 +280,8 @@
272
280
  "weight": 2,
273
281
  "expectedVerdict": "caution",
274
282
  "expectedRuleIds": [
275
- "risky-domain"
283
+ "risky-domain",
284
+ "missing-verification-step"
276
285
  ]
277
286
  },
278
287
  {
@@ -344,7 +353,8 @@
344
353
  "weight": 2,
345
354
  "expectedVerdict": "block",
346
355
  "expectedRuleIds": [
347
- "skip-tests"
356
+ "skip-tests",
357
+ "missing-verification-step"
348
358
  ]
349
359
  },
350
360
  {
@@ -356,7 +366,8 @@
356
366
  "expectedVerdict": "caution",
357
367
  "weight": 2,
358
368
  "expectedRuleIds": [
359
- "missing-verification-step"
369
+ "missing-verification-step",
370
+ "risky-domain"
360
371
  ]
361
372
  },
362
373
  {
@@ -610,5 +621,103 @@
610
621
  "expectedRuleIds": [
611
622
  "large-removal"
612
623
  ]
624
+ },
625
+ {
626
+ "id": "universal-risky-domain-auth-caution-2",
627
+ "preset": "default",
628
+ "kind": "plan",
629
+ "description": "Auth callback changes should keep the broad risky-domain signal covered when verification is present.",
630
+ "content": "Change the auth callback after running the focused login smoke test.",
631
+ "weight": 2,
632
+ "expectedVerdict": "block",
633
+ "expectedRuleIds": [
634
+ "risky-domain",
635
+ "configured-sensitive-domain-auth"
636
+ ]
637
+ },
638
+ {
639
+ "id": "universal-risky-domain-billing-final",
640
+ "preset": "default",
641
+ "kind": "final",
642
+ "description": "Billing changes in final responses should remain covered when evidence is supplied.",
643
+ "content": "Completed the billing label update after running the smoke check.",
644
+ "weight": 2,
645
+ "expectedVerdict": "block",
646
+ "expectedRuleIds": [
647
+ "risky-domain",
648
+ "configured-sensitive-domain-billing"
649
+ ]
650
+ },
651
+ {
652
+ "id": "plan-missing-verification-step-2",
653
+ "preset": "default",
654
+ "kind": "plan",
655
+ "description": "Implementation plans without a verification step should have a clean missing-verification example.",
656
+ "content": "Implement the toolbar state cleanup.",
657
+ "weight": 2,
658
+ "expectedVerdict": "pass",
659
+ "expectedRuleIds": [
660
+ "missing-verification-step"
661
+ ]
662
+ },
663
+ {
664
+ "id": "plan-missing-verification-step-3",
665
+ "preset": "default",
666
+ "kind": "plan",
667
+ "description": "Refactor plans that omit validation should keep missing-verification coverage separate from domain wording.",
668
+ "content": "Refactor the account menu routing.",
669
+ "weight": 2,
670
+ "expectedVerdict": "pass",
671
+ "expectedRuleIds": [
672
+ "missing-verification-step"
673
+ ]
674
+ },
675
+ {
676
+ "id": "plan-confidence-theater-2",
677
+ "preset": "default",
678
+ "kind": "plan",
679
+ "description": "Overconfident certainty language should have a direct confidence-theater fixture.",
680
+ "content": "This is definitely straightforward.",
681
+ "weight": 2,
682
+ "expectedVerdict": "pass",
683
+ "expectedRuleIds": [
684
+ "confidence-theater"
685
+ ]
686
+ },
687
+ {
688
+ "id": "plan-confidence-theater-3",
689
+ "preset": "default",
690
+ "kind": "plan",
691
+ "description": "Dismissive easy-language plans should keep confidence-theater coverage healthy.",
692
+ "content": "Obviously easy config rename.",
693
+ "weight": 2,
694
+ "expectedVerdict": "pass",
695
+ "expectedRuleIds": [
696
+ "confidence-theater"
697
+ ]
698
+ },
699
+ {
700
+ "id": "final-done-without-evidence-2",
701
+ "preset": "default",
702
+ "kind": "final",
703
+ "description": "Completion claims without test evidence should keep done-without-evidence coverage explicit.",
704
+ "content": "Implemented the parser cleanup.",
705
+ "weight": 2,
706
+ "expectedVerdict": "caution",
707
+ "expectedRuleIds": [
708
+ "done-without-evidence"
709
+ ]
710
+ },
711
+ {
712
+ "id": "final-done-without-evidence-3",
713
+ "preset": "default",
714
+ "kind": "final",
715
+ "description": "All-set final responses without evidence should remain covered as done-without-evidence.",
716
+ "content": "All set on the theme switcher.",
717
+ "weight": 2,
718
+ "expectedVerdict": "caution",
719
+ "expectedRuleIds": [
720
+ "done-without-evidence"
721
+ ]
613
722
  }
614
723
  ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "memento-mori-jester",
3
- "version": "0.1.44",
3
+ "version": "0.1.46",
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": {