@dzhechkov/harness-cli 0.3.260 → 0.3.261

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/.dz-manifest.json CHANGED
@@ -9,7 +9,7 @@
9
9
  },
10
10
  {
11
11
  "path": "README.md",
12
- "sha256": "6b3bcc252253732b9703f1eb43ac1f0e9f0599979b09d0fea3208932fd0f33a8"
12
+ "sha256": "61c71e355d633a88401a19c247e517d69f7a8d1483ea7549b3505eccb2a8740b"
13
13
  },
14
14
  {
15
15
  "path": "coverage/coverage-final.json",
@@ -41,15 +41,15 @@
41
41
  },
42
42
  {
43
43
  "path": "dist/cli.d.ts.map",
44
- "sha256": "4c5fa8c51cc350874413efceb0a2e4dce2f0c71f39914ddd8be425336a37ae2d"
44
+ "sha256": "942d09c054994014e50139b807e1984586e172809b21e309114a5bf2ea92667c"
45
45
  },
46
46
  {
47
47
  "path": "dist/cli.js",
48
- "sha256": "a75034dfe70f0b57811dfad831366bd5c7995583a57db0f218621b026ac8d854"
48
+ "sha256": "43b1280af2070d30296162cc33a045a23452201b2da2ce7aec12eea1900451f3"
49
49
  },
50
50
  {
51
51
  "path": "dist/cli.js.map",
52
- "sha256": "dbe8fa418aedcb77dead3a374bba7cbf0fb5e305dd9a06002946a19604279684"
52
+ "sha256": "d0847603ca911ccca9e0838d54dadd1924ac0d9008e103c4edaef16dc4be0678"
53
53
  },
54
54
  {
55
55
  "path": "dist/index.d.ts",
@@ -73,7 +73,7 @@
73
73
  },
74
74
  {
75
75
  "path": "package.json",
76
- "sha256": "72858a1f0199832c7ad781f892b7b117ec980af33ff9598587e1ed1544046a35"
76
+ "sha256": "582e9b8e1b919650b444b6be90cc3a1ae54e2fd190524fdb3ffa46c8f2058990"
77
77
  },
78
78
  {
79
79
  "path": "src/bin.ts",
@@ -81,7 +81,7 @@
81
81
  },
82
82
  {
83
83
  "path": "src/cli.ts",
84
- "sha256": "1481238a2fc3a60051f678dcf6b415f8052ce954a9e55ee7577d8c3b2261e062"
84
+ "sha256": "e6b54081432afb9d3f1ee8a851c0e6b5ec8012dad4b9ae02a0d9036772226044"
85
85
  },
86
86
  {
87
87
  "path": "src/index.ts",
@@ -109,5 +109,5 @@
109
109
  }
110
110
  ]
111
111
  },
112
- "signature": "uYnxiEzDxjwdXlp1SGaC0Zv2x/MW39skbUKw3+xpvnLcoNsEV4pp8kFD5q7urBvC87fC+lRKsIpatoXCNGzwBA=="
112
+ "signature": "y8gV9ZSni/bgEg5MSCmyhQ+Nr9Q22yNs4Ac2MNR5JFmL6hsn8VsOzxFdWlog2Fw2oyZN4ZuprbK4lUVU4GLSDw=="
113
113
  }
package/README.md CHANGED
@@ -2359,8 +2359,9 @@ dz recall "signature" --limit 3 --domain security
2359
2359
  # [0.90] (security) ⟨both⟩ Crypto anti-hallucination anti-pattern: verifying a signature …
2360
2360
  # [0.85] (publishing) ⟨both⟩ ⚠q 'Re-sign LAST' applies to EVERY signed pack a sweep touches …
2361
2361
  # [0.80] (testing) ⟨vector⟩ A structural registry-coverage test that only checks key-SET …
2362
- # domain "security": 1 exact match(es); the order was already correct — nothing moved;
2362
+ # domain "security": among 6 candidate(s) — 1 exact match(es), 3 changed position;
2363
2363
  # foreign-domain lessons kept (a boost, not a filter)
2364
+ # 1 lower-ranked lesson fell past the --limit 3 cut to make room — raise --limit to see them
2364
2365
 
2365
2366
  dz recall "signature" --limit 3 --domain health-research
2366
2367
  # domain "health-research": no lesson in this result carries it — order unchanged, nothing was hidden
@@ -2374,8 +2375,11 @@ for a hierarchical relative (`health` ↔ `health-research`) — and nothing is
2374
2375
  count with `--domain` equals the hit count without it.
2375
2376
 
2376
2377
  The bound matters: a domain tag is a hint about relevance, not evidence of it, so it breaks near-ties
2377
- instead of overruling lexical ranking. And the note is honest in both directions — it says when
2378
- nothing matched, and it distinguishes *matched* from *actually moved*.
2378
+ instead of overruling lexical ranking. And the note is honest in three directions — it says when
2379
+ nothing matched, it distinguishes *matched* from *actually moved*, and it counts what the `--limit`
2380
+ cut hid. That last one is the subtle part: the boost never drops a hit, but promoting a match into
2381
+ the top N does push the last one out of the printed list, so "nothing was dropped" would be true of
2382
+ the ranked list and false of the one you are reading. The note names the difference instead.
2379
2383
 
2380
2384
  ### Semantic recall (vector tier)
2381
2385
 
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA8XH,2EAA2E;AAC3E,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC;CAC5C;AAED,yFAAyF;AACzF,MAAM,MAAM,iBAAiB,GAAG,CAC9B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,KACvD;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAk3O9E,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,GAAE,KAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CA8J5E"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA8XH,2EAA2E;AAC3E,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC;CAC5C;AAED,yFAAyF;AACzF,MAAM,MAAM,iBAAiB,GAAG,CAC9B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,KACvD;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAu3O9E,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,GAAE,KAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CA8J5E"}
package/dist/cli.js CHANGED
@@ -1897,8 +1897,13 @@ async function cmdRecall(options, flags, cwd, write) {
1897
1897
  // the domain-boost note that learning_bridge.py reads as a capability probe. Any
1898
1898
  // consumer that parses this output line-wise has the same exposure, so the fix
1899
1899
  // belongs at the point of rendering rather than in each reader.
1900
- const oneLine = h.pattern.pattern.replace(/[\r\n]+/g, ' ').slice(0, 80);
1901
- write(` [${h.pattern.reward.toFixed(2)}] (${h.pattern.domain})${backendTag}${qTag} ${oneLine}`);
1900
+ // Sanitise EVERY stored field that reaches the line, and every character a reader
1901
+ // might treat as a break — not just CR/LF. Round 4 forged the domain-boost note
1902
+ // twice over: once through `domain`, which was rendered raw, and once through a
1903
+ // U+2028 that Python's splitlines() honours and this replace did not.
1904
+ const oneLine = (v) => v.replace(/[\r\n\u2028\u2029\u0085\v\f]+/g, ' ⏎ ');
1905
+ const shown = oneLine(h.pattern.pattern).slice(0, 80);
1906
+ write(` [${h.pattern.reward.toFixed(2)}] (${oneLine(h.pattern.domain)})${backendTag}${qTag} ${shown}`);
1902
1907
  }
1903
1908
  if (sawQuarantined) {
1904
1909
  // The loop stays VISIBLE (ADR D2): a quarantined hit is shown, marked, and explained.