skalpel 4.0.32 → 4.0.33

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.
Files changed (2) hide show
  1. package/card.mjs +7 -4
  2. package/package.json +1 -1
package/card.mjs CHANGED
@@ -66,7 +66,10 @@ export function isGenuineCatch(row) {
66
66
  const failed = row.outcome === "GENUINE_FAIL" || row.pass_fail === "FAIL";
67
67
  // A real catch must carry the two things the card indicts the agent with: what it claimed, and the
68
68
  // proof that contradicts it. A row missing either can't be rendered honestly, so it isn't a catch.
69
- return failed && !!row.proof_command && !!row.claim_text;
69
+ // Ship-status catches (category:"ship", outcome SHIP_FAIL) record the check under probe_command, not
70
+ // proof_command — accept either so a genuine "you said deployed, it's 404" catch is not invisible.
71
+ const command = row.proof_command || row.probe_command;
72
+ return failed && !!command && !!row.claim_text;
70
73
  }
71
74
 
72
75
  // readCatches() → all genuine-catch rows in the shadow log, oldest→newest as written. Fail-open: any
@@ -147,7 +150,7 @@ function stamp(ts) {
147
150
  // ---------- (3a) plain-text card (no ANSI — the shareable artifact) ----------
148
151
  export function renderPlainCard(row) {
149
152
  const claim = clean(row.claim_text, 200) || "it's done";
150
- const proof = clean(row.proof_command, 200) || "its own proof";
153
+ const proof = clean(row.proof_command || row.probe_command, 200) || "its own proof";
151
154
  const evidence = clean(row.evidence, 200);
152
155
  const L = [];
153
156
  L.push("🔬 skalpel — verified catch");
@@ -172,7 +175,7 @@ export function renderPlainCard(row) {
172
175
  // ---------- (3b) markdown card (Slack / PR / X) ----------
173
176
  export function renderMarkdownCard(row) {
174
177
  const claim = clean(row.claim_text, 200) || "it's done";
175
- const proof = clean(row.proof_command, 200) || "its own proof";
178
+ const proof = clean(row.proof_command || row.probe_command, 200) || "its own proof";
176
179
  const evidence = clean(row.evidence, 200);
177
180
  const FENCE = "```";
178
181
  const L = [];
@@ -198,7 +201,7 @@ export function renderMarkdownCard(row) {
198
201
  // ---------- (3c) styled terminal card ----------
199
202
  function renderTerminalCard(row) {
200
203
  const claim = clean(row.claim_text, 200) || "it's done";
201
- const proof = clean(row.proof_command, 200) || "its own proof";
204
+ const proof = clean(row.proof_command || row.probe_command, 200) || "its own proof";
202
205
  const evidence = clean(row.evidence, 180);
203
206
  const L = [];
204
207
  L.push("");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skalpel",
3
- "version": "4.0.32",
3
+ "version": "4.0.33",
4
4
  "description": "Behavioral graph for AI-assisted coding — learns how you work and steers Claude Code + Codex in real time.",
5
5
  "type": "module",
6
6
  "bin": {