@dzhechkov/harness-cli 0.6.1 → 0.7.2

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
@@ -4,20 +4,12 @@
4
4
  "pack": "harness-cli",
5
5
  "files": [
6
6
  {
7
- "path": "CHANGELOG.md",
8
- "sha256": "b99db6be2d9e6d46f0a9d3ff0877c445efac7b9e90d5fe1db9f5bfa2cb6dc107"
7
+ "path": "LICENSE",
8
+ "sha256": "3b93f7070f6843f37e0cae255f7caff22b466a4017fd2020d7d3216237e5a701"
9
9
  },
10
10
  {
11
11
  "path": "README.md",
12
- "sha256": "696aae63a95e8f8726eecc1aa0e68f20d7980e99bb4008b22f2e1058ca67c6c0"
13
- },
14
- {
15
- "path": "coverage/coverage-final.json",
16
- "sha256": "d2eef62228d4f2b31f5c7fca703f0f6844cf517d41be9dee516f3489f5babfec"
17
- },
18
- {
19
- "path": "coverage/coverage-summary.json",
20
- "sha256": "981eef381eb1e9a040a31eaa561ea078c6f6711d9908990e796d5213d6ffe89f"
12
+ "sha256": "ca0d42d114330fe7a2d0833abbf2fe90f3a60221e6cffeb3dc3b7edc7f818ec6"
21
13
  },
22
14
  {
23
15
  "path": "dist/bin.d.ts",
@@ -37,51 +29,51 @@
37
29
  },
38
30
  {
39
31
  "path": "dist/cli.d.ts",
40
- "sha256": "3893831e365016b5bd118f7f0ce2e8b106cfd0400689b9e190a5f80aa61b79f5"
32
+ "sha256": "5aeeec8ab84e3922ce0c7b7ea711fd1cdff67b68e1ded0b66e920a907e6ac267"
41
33
  },
42
34
  {
43
35
  "path": "dist/cli.d.ts.map",
44
- "sha256": "8d15372b27f7d79f54df09671b01d5944e8f3f3d87075ba4ece7f0131fc1103e"
36
+ "sha256": "f1cc2dc4a5de433a2d3cbd1e0567bf9c7bb5f3d04e90f72d10c54a9ccc5b00ae"
45
37
  },
46
38
  {
47
39
  "path": "dist/cli.js",
48
- "sha256": "be3648deb68dca8a48cc323f34f54c77c05f0ddf0d86982ea9d6f2cc8e073349"
40
+ "sha256": "a1154eea12c861e092af90e33b5074d1219401f2194e2205f29ae9deb742834e"
49
41
  },
50
42
  {
51
43
  "path": "dist/cli.js.map",
52
- "sha256": "47bcecfe2c9f1daeb73056b3a2c1e10e6b77c465c1bb0d6169690f2276a9cc77"
44
+ "sha256": "a1fcb5f0f1524e7564bdec11bcf3b1c8d9d41ddb08ea5502dc72bbb3de439baa"
53
45
  },
54
46
  {
55
47
  "path": "dist/core-compat.d.ts",
56
- "sha256": "b735a6c18bfbe5adf17bbcfe6e2eeae71477b877e958c36e0a5e73e59f100d6a"
48
+ "sha256": "4ab523bc0a5f777fd66b8ed44c07a8b240a4cf2ce32da779a3916e6ddc53fa33"
57
49
  },
58
50
  {
59
51
  "path": "dist/core-compat.d.ts.map",
60
- "sha256": "bce1ded9ffac15080908af1a9571b67141c141374ec4ba90b987fd6fd8883aab"
52
+ "sha256": "e378022dd85db141f1d5b4d06d4791072b4caf6900b992dde5781d09b0559c35"
61
53
  },
62
54
  {
63
55
  "path": "dist/core-compat.js",
64
- "sha256": "6d052e0a7352e9824bc1d4a319d03b42320f6551210f7dfd360afbdca4e556f0"
56
+ "sha256": "0c33ad728e7b3b25211d0b16d2803b9ca35d0aae6d3a570b57aa9b8377fcde1f"
65
57
  },
66
58
  {
67
59
  "path": "dist/core-compat.js.map",
68
- "sha256": "e95005978fdd733f78208d6d916f62f970123530241739c9da7d3a74154b7a13"
60
+ "sha256": "342b0c716f6ac9f853e6fb9e10d2d3ae4c643f047becd200d6f8576a84674fb2"
69
61
  },
70
62
  {
71
63
  "path": "dist/index.d.ts",
72
- "sha256": "a25d0a97a30fa5abc35473ed4ca1bc32bc5a8bcb8a45c57d7feeb03cb6058e02"
64
+ "sha256": "936596fd99f3767ca0119a02f07dfabf22b5b1c30e7007c63c3ff21cfced3836"
73
65
  },
74
66
  {
75
67
  "path": "dist/index.d.ts.map",
76
- "sha256": "7c554d109fb0aabcf9a2923b0d9ac84723652abdec81202b2cc0a726d38c84bd"
68
+ "sha256": "9096b181a0164cd59061bddcf9f4bee59123c1ab776e7a12da8b9808bd5b7936"
77
69
  },
78
70
  {
79
71
  "path": "dist/index.js",
80
- "sha256": "5b7992e09b843a01c9bf7a05b5db4475ca9abbf893ead79f7bad73f0f92c4249"
72
+ "sha256": "8225f1de31f005c0d883fa9cf9b3a106f5e244ebbe5b4b3d2375c8127ba821f8"
81
73
  },
82
74
  {
83
75
  "path": "dist/index.js.map",
84
- "sha256": "54c8133a172c2ca81c3f5a32e701386812a621198758423fcc7f0bf3db8c1ff7"
76
+ "sha256": "02b6b6f1b17a53d652a75555d185a20ea5d3e3110aa915ab228bf5521b0ce5fb"
85
77
  },
86
78
  {
87
79
  "path": "keys/README.md",
@@ -93,7 +85,7 @@
93
85
  },
94
86
  {
95
87
  "path": "package.json",
96
- "sha256": "a43608842dab18914486c96c1989b294031f35118bb91c1e8bd0807041a10ddd"
88
+ "sha256": "ec93467aada7c720f48874e6f24a5fb57bb77e8f5e01a450a29bc363b81f7b9a"
97
89
  },
98
90
  {
99
91
  "path": "src/bin.ts",
@@ -101,253 +93,17 @@
101
93
  },
102
94
  {
103
95
  "path": "src/cli.ts",
104
- "sha256": "d39fa1f437401419889965674889df3e5091d4ed76242e36f8e70f18683d4e4a"
96
+ "sha256": "a31c2567ee0817e7a01eb034ac4ae8e9c44e18edea85ef722af2d32b4a2dabc4"
105
97
  },
106
98
  {
107
99
  "path": "src/core-compat.ts",
108
- "sha256": "5fef10b3d968d299eb7463157e8b164413872f7cc8bf5e9ca1c605e63569a9f7"
100
+ "sha256": "b6e2b8d73bb492afec8717f39ecfe3638c62b2f1d2479a9be43c493adebf89d6"
109
101
  },
110
102
  {
111
103
  "path": "src/index.ts",
112
- "sha256": "76c2dc1598e72d11df59319cc64fb2aa39b8c3af4eb3077f66598f4f2a3323c0"
113
- },
114
- {
115
- "path": "test/agents-sync.test.ts",
116
- "sha256": "32606890dc57d58257e6b4a38246acb343eea88b6e4b2f643f061325a34d066a"
117
- },
118
- {
119
- "path": "test/amendment-check-cli.test.ts",
120
- "sha256": "3dd543fd3032f1fca5c063af98a7501b4cccb9d7e42f6c307074b67f2d55d231"
121
- },
122
- {
123
- "path": "test/cli.test.ts",
124
- "sha256": "d9adcce84b509e00213bda59a0948eca90d83bdd2fdbbc86aee5ce11d9176940"
125
- },
126
- {
127
- "path": "test/command-count.test.ts",
128
- "sha256": "d9677688116c0a35591cb7e53ab1502566e44336959ac0ea449f5e8a1c5e31e3"
129
- },
130
- {
131
- "path": "test/core-compat-guard.test.ts",
132
- "sha256": "98086d0b6bd7ce32cc844e0cbbc710c4dbf009389c1d020aed48ced2de8acd57"
133
- },
134
- {
135
- "path": "test/core-compat.test.ts",
136
- "sha256": "c54d5aa80a2455a396b396ff9fc398c141c3be4ec9c830e0941f830658758866"
137
- },
138
- {
139
- "path": "test/core-import-floor.test.ts",
140
- "sha256": "948ce5017d7b512f7f32c817f8d1f5cbc5ede7d7c3f2788456ec5d24b8983f14"
141
- },
142
- {
143
- "path": "test/discrimination-check-cli.test.ts",
144
- "sha256": "d0ec5796bc526d45cdad9041ea7357afc065917b347cf5421ec7d2696106b08c"
145
- },
146
- {
147
- "path": "test/epoch-replay-cli.test.ts",
148
- "sha256": "a5a48585b565288ca1ea96030b02b2ccb37a621ef7b3cfe54cd7aaa7164d6904"
149
- },
150
- {
151
- "path": "test/feature-adr-record-cli.test.ts",
152
- "sha256": "e1a2687a1ae2bc2d32cbcc852487d30f9451ce1ea4a132e188186dd4251c49d1"
153
- },
154
- {
155
- "path": "test/fixtures/discrimination-check/fake-runner.sh",
156
- "sha256": "126bbd1ba9c08ef9de826cfa21df3981720e4bc36cd993dff28e0de435cbebae"
157
- },
158
- {
159
- "path": "test/fixtures/discrimination-check/fixture.py",
160
- "sha256": "bb413a8b6e9dc597eb298e7646fb84e23ccd3e117eb61201776ef3e9e27a0e0a"
161
- },
162
- {
163
- "path": "test/fixtures/install-layouts-helpers.ts",
164
- "sha256": "7c1d53c295ec4cb7ee8e3036b663f20d660a1acff35dbcb5c99257aed7268b68"
165
- },
166
- {
167
- "path": "test/fixtures/mutation-gate-undefended/lib/env-guard.js",
168
- "sha256": "922d75852ea37cfc0e0f81f0c49918e20950f4c31d9523798cbd5c7437fdffcc"
169
- },
170
- {
171
- "path": "test/fixtures/mutation-gate-undefended/lib/flaky-load.js",
172
- "sha256": "bb3cda584546c43f22ab46c1c6a27b563f7ede3ed4a66530b6b35ad9f7eefc9e"
173
- },
174
- {
175
- "path": "test/fixtures/mutation-gate-undefended/lib/guard.js",
176
- "sha256": "69182b5c1034eda2fcf072b87847dfd27c12ddf2621f62e8db94b78f55f797cd"
177
- },
178
- {
179
- "path": "test/fixtures/mutation-gate-undefended/lib/tla-mod.mjs",
180
- "sha256": "c0a147f7c2d599b360fa9d1bb72c01be3b6b0a7b167cb7d508340382b3d8d619"
181
- },
182
- {
183
- "path": "test/fixtures/mutation-gate-undefended/package.json",
184
- "sha256": "cdceb0264c7d99c89123365ddfdc2ceb07339c2691e5e604304ee04b433b1c0b"
185
- },
186
- {
187
- "path": "test/fixtures/mutation-gate-undefended/registry-defended.json",
188
- "sha256": "037bcac91dae0acbd8eb81dbb33b79fc7208f6106aed8149dbecdf226a8b0e41"
189
- },
190
- {
191
- "path": "test/fixtures/mutation-gate-undefended/registry-load-fatal-exit.json",
192
- "sha256": "ba5c79298f3f77b6a82c78b6a8da269a98b50aa811ab785ca4a588e1262ded82"
193
- },
194
- {
195
- "path": "test/fixtures/mutation-gate-undefended/registry-load-fatal-nullcount.json",
196
- "sha256": "2bc7bfa3dc56ae6cf0f7986ecccbbbcddbce128c018fbbf1ff40f5a061758da6"
197
- },
198
- {
199
- "path": "test/fixtures/mutation-gate-undefended/registry-load-fatal-throw.json",
200
- "sha256": "fb448430a632dbf4d751947363e862391fb869d5c65d1245c8ddc817c0844649"
201
- },
202
- {
203
- "path": "test/fixtures/mutation-gate-undefended/registry-overbroad.json",
204
- "sha256": "89c445656718c9ad6e573bf728b06d688a85b15a1e73a93cbd4e1579e33a54d9"
205
- },
206
- {
207
- "path": "test/fixtures/mutation-gate-undefended/registry-r6-env-inapplicable.json",
208
- "sha256": "626c3272dfc27ec87da5f60004611940b224d14c7acbc29466b65e6eab268ab3"
209
- },
210
- {
211
- "path": "test/fixtures/mutation-gate-undefended/registry-r6-flaky-load.json",
212
- "sha256": "cbec89506f2696c09cf5c4c3a987d6921fb8b4cacb131de04624fd47f2eef507"
213
- },
214
- {
215
- "path": "test/fixtures/mutation-gate-undefended/registry-r6-tla.json",
216
- "sha256": "353c1b84ad521c04764652464c3ef60c1bf54ffa161006108d1017d57b942dbe"
217
- },
218
- {
219
- "path": "test/fixtures/mutation-gate-undefended/registry-syntax-break.json",
220
- "sha256": "486d313922800edb75520cb2a79a83ce44ea5a7b12050286522ea979df150933"
221
- },
222
- {
223
- "path": "test/fixtures/mutation-gate-undefended/registry-undefended.json",
224
- "sha256": "9aef7b82a305d1ce17ce546c73ecb94ff0e8fb5f6006d450565fcd98cb5f895c"
225
- },
226
- {
227
- "path": "test/fixtures/mutation-gate-undefended/test/env-guard.test.js",
228
- "sha256": "406c387bc6fbe01fa1d4cd2a3754cbb22abcea6380c1471e9eff21ddc8d35424"
229
- },
230
- {
231
- "path": "test/fixtures/mutation-gate-undefended/test/flaky-load.test.js",
232
- "sha256": "7a9555312097c98cb5fccd749cb61ea216a2a3bf2845db5413153eed4b9c8251"
233
- },
234
- {
235
- "path": "test/fixtures/mutation-gate-undefended/test/guard.test.js",
236
- "sha256": "d8e0a34fc79f40c7f89b1987793a8e09570f2a92e9c0937dd9ac1bf4a3cfbcb7"
237
- },
238
- {
239
- "path": "test/fixtures/mutation-gate-undefended/test/tla-mod.test.mjs",
240
- "sha256": "860e54c8bf9c86e4c09853bb862379539d360b32ea6c4b93a69659ed4dc8fe9e"
241
- },
242
- {
243
- "path": "test/guard-change-fact.test.ts",
244
- "sha256": "694b79712dc8902fd9046426c35d21052dbeff417fffb70939f88b31449c6e9a"
245
- },
246
- {
247
- "path": "test/guard-promote-cli.test.ts",
248
- "sha256": "f8e35085106a98be239104394539c3aec350123eed4a115abf14acc2cb6b5bb9"
249
- },
250
- {
251
- "path": "test/install-layouts.test.ts",
252
- "sha256": "43cc6e3251500cd547997ac0916c250c8558f6c3d5c4a60254753e1e80ba24f5"
253
- },
254
- {
255
- "path": "test/install-sync-partial.test.ts",
256
- "sha256": "35824489662dbe9315d78cd20ecf968d416fbe80685d74b6588c8521a08497ea"
257
- },
258
- {
259
- "path": "test/list-partial.test.ts",
260
- "sha256": "fd98385a9b1021cf8341d154abcdf4506a84aaadddd465fcc7e057ba1927fe64"
261
- },
262
- {
263
- "path": "test/mutation-gate-cli.test.ts",
264
- "sha256": "3b33c786713e2dfaa192ea32df8cdcf534170c59d58ce285872a3fde008afbc4"
265
- },
266
- {
267
- "path": "test/mutation-registry.json",
268
- "sha256": "3e6f9bb105154121988da41568ff85573099235857ba25e76c4264c166b414ae"
269
- },
270
- {
271
- "path": "test/packaged-trust-root.test.ts",
272
- "sha256": "46c0af5494ad717eb4d936489f4bde2199b40cd756ab6c8adb0cd1714a971304"
273
- },
274
- {
275
- "path": "test/parallel-worktree-smoke.test.ts",
276
- "sha256": "0522b12ccdf3db79215c4c42162ef970f4cba0c0af96208426ca0323c367d0ee"
277
- },
278
- {
279
- "path": "test/plan-completeness-gate.test.ts",
280
- "sha256": "fafa2d1ff56bd41a6496b7ce569be671f2f617deac07425f47ad6e87b3ec00ce"
281
- },
282
- {
283
- "path": "test/qe-bridge-cli.test.ts",
284
- "sha256": "336ba7657c55f5b958a0ebed5617f3bc3b1956017b9389bbe7c38137889f8f1b"
285
- },
286
- {
287
- "path": "test/qe-bridge-manifest-drift.test.ts",
288
- "sha256": "b7b4d9e0c1dcee32e972aab97273b04bdde9634433e7c22345793a677dfff300"
289
- },
290
- {
291
- "path": "test/roam-nested-archive.test.ts",
292
- "sha256": "0c078b6e03cc749a64e0ac327885de1eea3c13e940c8e3f231174ab84076d44c"
293
- },
294
- {
295
- "path": "test/skills-verify-static-advisories.test.ts",
296
- "sha256": "b1140c20ec04d1c8ae67f97a42dbcece1e8e63c98a5de2c087f0359d27c25f17"
297
- },
298
- {
299
- "path": "test/statusline-panel.test.ts",
300
- "sha256": "b09b42c4ece1a83e5d3f3765629b0756a8f30a7122f3fc30363f93f092a44c0d"
301
- },
302
- {
303
- "path": "test/target-alias-cli.test.ts",
304
- "sha256": "96df42acb1cc5ada5ca97912d3b7da5b486067e851b9dd395855b1b540ce738c"
305
- },
306
- {
307
- "path": "test/trace-bundle-cli.test.ts",
308
- "sha256": "fdaad63359ca7ce351e505e613b547bbc653e0847403edfae88d22a8a524b7a0"
309
- },
310
- {
311
- "path": "test/version-flag.test.ts",
312
- "sha256": "7acd80deb073fb2987c6d14a028a64c6d44324ac61a05410b7d4b6c87ff5acc6"
313
- },
314
- {
315
- "path": "test/workflow-init-lint-clean.test.ts",
316
- "sha256": "b7a64462983901adca86ecc29e76b3f95885210e5aaba68352356191e6bfac7f"
317
- },
318
- {
319
- "path": "test/workflow-legacy-shim.test.ts",
320
- "sha256": "47d35ec36aa4793ee5d61debf1d345e7d236ad21db27f052aa3e7add03852205"
321
- },
322
- {
323
- "path": "test/workflow-run-cli.test.ts",
324
- "sha256": "ac0468d8e97795602e8b8298f278356a273309674483854cd136b99ddf6e39d4"
325
- },
326
- {
327
- "path": "test/workflow-run-r2.test.ts",
328
- "sha256": "d7f308ac9538b7e9d7dc8dcd0ce7cf8127f26b5aea1f44e9d44ac1500ad733fb"
329
- },
330
- {
331
- "path": "test/workflow-run-read-plane.test.ts",
332
- "sha256": "c56111e578500d690190f9fdb4ec44182a892c7a6c2c289896509c1229d7b06d"
333
- },
334
- {
335
- "path": "test/workflow-trace-attestation-cli.test.ts",
336
- "sha256": "dad2efd147d9186b29989ef36f6e62614c4ded983d7894a7c1f9b1628e621871"
337
- },
338
- {
339
- "path": "test/workflow-trace-cli-surface.test.ts",
340
- "sha256": "28df4b51fff1dc80bb38671d56f548d859949d7a9e2f00e7045e732efc7c2e3d"
341
- },
342
- {
343
- "path": "tsconfig.json",
344
- "sha256": "e80ef2911c3347a713dc3dca6a5f6034d91e938e58e71345ea920dd9833bcdbb"
345
- },
346
- {
347
- "path": "vitest.config.ts",
348
- "sha256": "a6ffc6172b50a3a59010f8f8c66e2204e7d298b62a7f2bc5de33cbf39c99899d"
104
+ "sha256": "d4258f3b183d03047aa07399ae96bdb2b3af83f0005127a24a39f8932982bf78"
349
105
  }
350
106
  ]
351
107
  },
352
- "signature": "yL9vp8bfrRx+/nOqnZuEZbW2ccdXFsSI5KEjED+FYQZxqCfx3aQ5KD6htiBIADjoOrKOUDVq7sg6ZcxxBsMCBg=="
108
+ "signature": "VkraAQ/N624hP58XICkV/5LZKWo+DyLBBOFC5Yf7ySORtJ/y/+8RL6XKoyhQhngq6xm/KJgxMtnNwnQ9kvzCDw=="
353
109
  }
package/README.md CHANGED
@@ -1223,7 +1223,12 @@ release STOPPED, exit 1, best-effort `gh issue create` (no `gh`/network ⇒ loud
1223
1223
  note: the issue body embeds first lines of failing output — pass `--no-issue` on public repos when
1224
1224
  test/audit output may carry paths or environment details) → on
1225
1225
  green: re-sign reminder (`dz sign …` — the publish signature gate is refuse-unsigned), then the ready
1226
- `dz publish` command printed **without** `--yes`: live publish stays your explicit act. **When to use:**
1226
+ `dz publish` command printed **without** `--yes`: live publish stays your explicit act. The signature
1227
+ gate verifies the **artifact** — it packs each package and checks the tarball, not the working tree,
1228
+ because the two differ by construction (npm synthesises a `LICENSE`, the packer rewrites
1229
+ `package.json`). If the artifact cannot be packed at all, the gate **blocks and says so** rather than
1230
+ falling back to the tree: with no artifact, nothing was compared, and a pass would be a claim about
1231
+ an object that was never built. **When to use:**
1227
1232
  before a multi-package npm release, or whenever a broken dist/bin must be impossible to ship; keep plain
1228
1233
  `dz publish` for routine pushes. `dz publish` itself is byte-identical whether or not release exists.
1229
1234
 
@@ -3299,7 +3304,7 @@ invariants: HARD rules **block** the operation, SOFT rules warn. Zero config nee
3299
3304
  cover the known rakes; `.dz/guard.json` (via `dz guard --init`) exists only if you want to tune a severity
3300
3305
  or disable a rule.
3301
3306
  ```bash
3302
- dz guard check --op publish # no-workspace-star · no-skill-drift · no-secrets · readme-consistency · readme-first · skills-registrable · lockfile-in-sync · no-stubs · licence-hold
3307
+ dz guard check --op publish # no-workspace-star · no-skill-drift · no-secrets · readme-consistency · readme-first · skills-registrable · lockfile-in-sync · no-stubs · review-round · licence-hold
3303
3308
  dz guard check --op teach --text "the fix: export sk-abc..." # → BLOCK (exit 1): looks like a credential
3304
3309
  dz guard log # append-only audit: every verdict + every forced override
3305
3310
  ```
@@ -3334,6 +3339,27 @@ zero specifiers, and then report every real dependency as "not recorded". The ru
3334
3339
  `.dz/guard.json` cannot promote it to HARD, since a parser designed to admit "I may not understand this
3335
3340
  file" must never be able to block a publish.
3336
3341
 
3342
+ **`review-round` (HARD, publish)** — a package that bumps its version AND changes source must bring a
3343
+ GRADED `features/*/08_qe_report.md` in the same change. The gate had eleven rules and not one asked
3344
+ whether anyone but the author had read the code; the cost is on the record (health-advisor slice H:
3345
+ five rounds graded F, thirteen packages published on the author's own verification, and round six
3346
+ found six defects in already-published code).
3347
+
3348
+ Scoped to SOURCE on purpose: a HARD rule that also blocked a docs-only republish is a rule someone
3349
+ switches off. The floor defaults to PRESENCE of a grade — `.dz/guard.json` → `reviewRound.minGrade`
3350
+ sets a letter when you want one.
3351
+
3352
+ It proves a graded report EXISTS in this change. It does **not** prove the review was independent,
3353
+ was competent, covered THIS package, or was taken against this revision — the violation text says all
3354
+ four. And like every change-scoped rule here it reads the WORKING TREE, so it is silent once the
3355
+ change is committed.
3356
+
3357
+ ```
3358
+ [BLOCK] review-round: @dzhechkov/memory: source changed and the version is bumped, but this change
3359
+ brings no GRADED features/*/08_qe_report.md — a publish gate that cannot tell "reviewed" from
3360
+ "not reviewed" treats them alike.
3361
+ ```
3362
+
3337
3363
  **`licence-hold` (HARD, publish)** — the machine side of a licence precondition (ADR-001 of feature
3338
3364
  `hermes-claude-adaptation`, first holder: `@dzhechkov/cloudru-hub`). A pack that declares
3339
3365
  `package.json.licenseHold` is parked behind two belts: while it stays `private:true` the npm layer
@@ -3744,12 +3770,19 @@ dz setup --target claude-code --memory agentdb # enables the vector tier (agen
3744
3770
  dz teach "Used DataLoader to batch DB round-trips" --reward 0.9 --domain performance
3745
3771
  # ↳ mirrored to vector tier (agentdb) # best-effort, AFTER the lexical write
3746
3772
  dz recall "fix N+1 queries" # hybrid: FTS5 + vector (RRF-merged), ⟨both⟩/⟨vector⟩ labels
3747
- dz recall "fix N+1 queries" --semantic # weight the vector leg 2×; exit 1 if no engine (explicit ask)
3773
+ dz recall "fix N+1 queries" --semantic # weight the vector leg 2×; exit 1 if no engine OR nothing ranked (explicit ask)
3748
3774
  dz recall "fix N+1 queries" --no-semantic # force today's pure-lexical ranking
3749
- dz vector status # engine, mirrored vs lexical counts, pending queue
3775
+ dz vector status # engine, writer state, mirrored / pending / not-in-the-mirror
3776
+ dz recall "fix N+1 queries" --json # every hit carries `relevance` — the RRF score it ranked by
3750
3777
  dz consolidate # also BACKFILLS the mirror (heals failed/queued mirrors)
3751
3778
  ```
3752
3779
 
3780
+ - **The TOP lexical match is never displaced by `--semantic`.** It keeps a reserved seat, so a rare identifier, a file name or an error code still surfaces when you weight the vector leg (MEASURED on a live store: survival 2 of 5 → 5 of 5). The seat is taken only under `--semantic`, and never from a hit BOTH legs found. Ties break by evidence — a hit both legs found outranks one only a single leg found.
3781
+ - **Every claim the output makes follows what the run did.** The header says `+ vector (…)` only when a vector actually ranked something; with an empty tier it says `FTS5 only (semantic tier empty — run: dz vector reindex)` instead of promising a ranking that did not happen, and the `dz setup --memory agentdb` hint no longer fires at a tier that is already installed.
3782
+ - **`dz vector status` counts like with like.** `Mirrored vectors (learned patterns)` covers exactly the scope the lexical count covers; vectors of other dz-owned task types (backlog ideas) are reported on their own line, and a true orphan — a pattern vector whose record is gone — is named for the first time. The old single number counted three task types while sitting under a one-task-type lexical count: on this repository it read 547 against 274, which looks like half the index orphaned, and 273 of those were backlog ideas with ZERO real orphans.
3783
+ - **`dz vector status` distinguishes three states, not two:** `Mirror writer: ON/OFF` (whether teach is queueing at all) and `Not in the mirror: N` — mirrorable patterns in neither the mirror nor the pending queue, counted as a SET DIFFERENCE over ids. `Pending mirror queue: 0` no longer stands alone for "no debt": it used to read the same whether the queue was empty or had never been opened.
3784
+ - **`dz teach --from-json` says so when the mirror writer is off** — carrying a brain to a new machine used to land a fully unindexed store that reported zero debt.
3785
+
3753
3786
  - **Optional by design:** no engine installed ⇒ `teach`/`recall`/`consolidate` behave byte-identically to the pre-vector versions; every engine call is time-bounded and failures degrade to lexical with one honest ℹ line.
3754
3787
  - **The lexical store stays the source of truth** — vector hits are pointers; a pattern pruned from the store can never "resurrect" via the mirror.
3755
3788
  - **Two portable forms:** `dz recall --all --json` = the SHARING form (patterns themselves, re-import with `dz teach --from-json`); `dz vector export <path>` = the VECTOR form (a portable `.rvf` checkpoint, opt-in `@ruvector/rvf` engine via `.dz/config.json` → `memory.vector.engine: "rvf"`).
@@ -4023,6 +4056,24 @@ npx @dzhechkov/p-replicator init
4023
4056
 
4024
4057
  ## Status
4025
4058
 
4059
+ `v0.7.2` — **a signature-only republish.** `0.7.0` shipped through `pnpm publish` rather than
4060
+ `dz publish`, so the re-signing step was skipped and 17 of 497 files in the published core did not
4061
+ match their signed hashes — the content was correct, the manifest was ten hours stale. Nothing in
4062
+ the shipped behaviour changes between `0.7.0` and `0.7.2`; the integrity check stops reporting these
4063
+ packages as tampered. The one code change is a TEST: the compat case that asserted the workspace
4064
+ core sits exactly on `MIN_CORE` is split into an integration half and a boundary half, so a patch
4065
+ bump of core no longer reddens it and `MIN_CORE` need not claim a version the CLI does not require.
4066
+
4067
+ `v0.7.0` — `dz recall` and `dz vector status` now say what the RUN did rather than what the config
4068
+ allows. **One breaking change for scripts:** `dz recall --semantic` exits **1** when no vector could
4069
+ serve it — the code the README already documented for the sibling "no engine" case, now applied on
4070
+ every return path including `--json`, which used to report success. Also: the top lexical match keeps
4071
+ its place under `--semantic`; `--json` carries a `relevance` field and parses whole even while the
4072
+ embedder loads; the header names the empty-tier state instead of promising a ranking that did not
4073
+ happen; `dz vector status` counts like with like and distinguishes "not queued" from "queued and
4074
+ failed"; and a `--books` search that finds nothing says where it looked and, when the machine-wide
4075
+ brain holds sources, names the command that searches them.
4076
+
4026
4077
  `v0.6.1` — two commands that move checks off the model's judgement and onto the disk.
4027
4078
  `dz amendment-check` resolves every `AM-N` amendment row to a test found INSIDE the file the row names
4028
4079
  (the plan is authoritative; an amendment it drops or rewords under the same id is a failure; `--all` is
package/dist/cli.d.ts CHANGED
@@ -52,6 +52,15 @@ export type ReleaseExecRunner = (cmd: string, opts: {
52
52
  stderr: string;
53
53
  timedOut?: boolean;
54
54
  };
55
+ /**
56
+ * Run `fn` with anything written to STDOUT by code we do not own routed to STDERR instead.
57
+ *
58
+ * Used to keep `--json` output parseable: a dependency that greets stdout on first load (currently
59
+ * transformers.js) would otherwise sit in front of the JSON array. Nothing is swallowed — the text
60
+ * still reaches the terminal, on the stream diagnostics belong on. Restoration is in `finally`, so a
61
+ * throwing `fn` cannot leave stdout redirected.
62
+ */
63
+ export declare function withForeignStdoutOnStderr<T>(fn: () => Promise<T>): Promise<T>;
55
64
  export interface CodexHooksSyncInput {
56
65
  readonly codexHome?: string | undefined;
57
66
  readonly project?: string | undefined;
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAA0B,KAAK,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKtF,OAAO,EA4CL,iBAAiB,EAmBjB,KAAK,oBAAoB,EA8SzB,KAAK,YAAY,EAsClB,MAAM,yBAAyB,CAAC;AAyIjC,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;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAC3C;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACjE;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;AAk8E9E;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CA0BnF;AAg0GD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,mBAAmB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAQzG;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,oBAAoB,EAAE,KAAK,SAAkB,GAAG,iBAAiB,CAoB1G;AAwGD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,mBAAmB,EAC1B,IAAI,GAAE,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,oBAA+C,EAC3G,KAAK,SAAa,GACjB,iBAAiB,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAA;CAAE,CAK/D;AAsiED,wFAAwF;AACxF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAElG;AA4BD,gFAAgF;AAChF,wBAAgB,qBAAqB,IAAI;IAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,MAAM,CAAA;CAAE,CAM7I;AAoiCD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,MAAsB,EAC3B,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC,eAAe,CAAC,CAI1B;AA8CD,gFAAgF;AAChF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAEvG;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE;IACJ,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAChC,kGAAkG;IAClG,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B,GACA,OAAO,CAAC,eAAe,CAAC,CA8D1B;AAutED,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,GAAE,KAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CA0M5E"}