@dzhechkov/harness-core 0.8.35 → 0.8.36

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 (43) hide show
  1. package/.dz-manifest.json +42 -42
  2. package/README.md +101 -3
  3. package/dist/apply-leg.d.ts +38 -0
  4. package/dist/apply-leg.d.ts.map +1 -1
  5. package/dist/apply-leg.js +263 -16
  6. package/dist/apply-leg.js.map +1 -1
  7. package/dist/codex-hooks-assets.d.ts.map +1 -1
  8. package/dist/codex-hooks-assets.js +67 -5
  9. package/dist/codex-hooks-assets.js.map +1 -1
  10. package/dist/codex-hooks.d.ts +13 -1
  11. package/dist/codex-hooks.d.ts.map +1 -1
  12. package/dist/codex-hooks.js +13 -1
  13. package/dist/codex-hooks.js.map +1 -1
  14. package/dist/index.d.ts +4 -3
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +2 -2
  17. package/dist/index.js.map +1 -1
  18. package/dist/operations.d.ts +1 -0
  19. package/dist/operations.d.ts.map +1 -1
  20. package/dist/operations.js +18 -2
  21. package/dist/operations.js.map +1 -1
  22. package/dist/publish.d.ts +59 -7
  23. package/dist/publish.d.ts.map +1 -1
  24. package/dist/publish.js +205 -32
  25. package/dist/publish.js.map +1 -1
  26. package/dist/release-line.d.ts +16 -0
  27. package/dist/release-line.d.ts.map +1 -1
  28. package/dist/release-line.js +31 -0
  29. package/dist/release-line.js.map +1 -1
  30. package/dist/vector-tier.d.ts +34 -3
  31. package/dist/vector-tier.d.ts.map +1 -1
  32. package/dist/vector-tier.js +105 -14
  33. package/dist/vector-tier.js.map +1 -1
  34. package/package.json +2 -2
  35. package/sbom.json +41 -41
  36. package/src/apply-leg.ts +282 -14
  37. package/src/codex-hooks-assets.ts +67 -5
  38. package/src/codex-hooks.ts +13 -1
  39. package/src/index.ts +6 -1
  40. package/src/operations.ts +18 -3
  41. package/src/publish.ts +247 -30
  42. package/src/release-line.ts +32 -0
  43. package/src/vector-tier.ts +127 -14
package/.dz-manifest.json CHANGED
@@ -9,7 +9,7 @@
9
9
  },
10
10
  {
11
11
  "path": "README.md",
12
- "sha256": "37a3aab588b4b12b15d2d67a014abec49ae38615a1d28816310d5f2e6ad29f79"
12
+ "sha256": "290fbe2449b8b9d3a03cf3356db0ecd070a59078415cf4917be142aa7b33b068"
13
13
  },
14
14
  {
15
15
  "path": "dist/__tests__/golden-baseline.test.d.ts",
@@ -125,19 +125,19 @@
125
125
  },
126
126
  {
127
127
  "path": "dist/apply-leg.d.ts",
128
- "sha256": "9cc4cf39b4ef8479eba5745c767c60a8a331f777e19251ec9faf42530f16b7c7"
128
+ "sha256": "0e6bbd55092eac615ce87ffe760087d9081227346587bda681fa5c92000d0bec"
129
129
  },
130
130
  {
131
131
  "path": "dist/apply-leg.d.ts.map",
132
- "sha256": "5204913b80c8748926f20a1632658720b75336fcd7bdf15114ceb1707fde804c"
132
+ "sha256": "4ac8a748703efc1b0713f1a7e9174ec2b38d4d6f5fd93f884461eea21fcdd8d3"
133
133
  },
134
134
  {
135
135
  "path": "dist/apply-leg.js",
136
- "sha256": "f3e74e03e325569237340aace076e4e0507d12b48d47dcced7a836242ae13ac9"
136
+ "sha256": "7983e9c4eb5186a42733edb2f9bc1d5c8a36af680e807dd893bdb47e66f51321"
137
137
  },
138
138
  {
139
139
  "path": "dist/apply-leg.js.map",
140
- "sha256": "300050992853dba6e5cdd4dc54e66d77a506ac3750d81ed2d3da560086830e99"
140
+ "sha256": "5ef8ff0bc84b28fe777ba613ff586c2845be6df0cee05a8e273a80b16797dbad"
141
141
  },
142
142
  {
143
143
  "path": "dist/apply.d.ts",
@@ -481,15 +481,15 @@
481
481
  },
482
482
  {
483
483
  "path": "dist/codex-hooks-assets.d.ts.map",
484
- "sha256": "5dfb0f0625c650dbaf5fe464cdf155ce8c7a7cef39f6c3654568ca9ffc038300"
484
+ "sha256": "633d8863c5373b236e9090dcb0d1f11da5564f846474888cf94750e51257e493"
485
485
  },
486
486
  {
487
487
  "path": "dist/codex-hooks-assets.js",
488
- "sha256": "642ad70ee49e345a1fcae56262db4e223d243b0c95ad48f753e888d97437afae"
488
+ "sha256": "17a6dfd4bc631197601e601ecaeea8c49ee3e23a878c807cdac80446762c0549"
489
489
  },
490
490
  {
491
491
  "path": "dist/codex-hooks-assets.js.map",
492
- "sha256": "0f99defe443a26ad690bc82b5deaccbfba39b21274106b35bea57cee35827919"
492
+ "sha256": "d4faab38bfa30923c5844241a1e305f984c0ea217375e2ae1c194abda0690e45"
493
493
  },
494
494
  {
495
495
  "path": "dist/codex-hooks-verify.d.ts",
@@ -509,19 +509,19 @@
509
509
  },
510
510
  {
511
511
  "path": "dist/codex-hooks.d.ts",
512
- "sha256": "035c1a5dada5fcc44973086bdea9ada0d05716f1ebf03dc8231086a56139bb44"
512
+ "sha256": "530a08cb50bfdbee96db39fe595ca16d01f221e16016a2a75b9049d3b156503e"
513
513
  },
514
514
  {
515
515
  "path": "dist/codex-hooks.d.ts.map",
516
- "sha256": "73e55c49155cddf3cb9da698ac776af6c0744f136f68e9e1cc238eae7517a27d"
516
+ "sha256": "1279c7d4f340f107ac1a3675245673be9e414cfdcfc2edf5efc175c6c567095a"
517
517
  },
518
518
  {
519
519
  "path": "dist/codex-hooks.js",
520
- "sha256": "e26fbfc25960da6f538d27f690c12bbf4d811577c89ca47476369a9e3457c202"
520
+ "sha256": "516b6255b226fdfd33dbcf17f0df42f3f3b3c7987206ca6d2b706f43924d7a63"
521
521
  },
522
522
  {
523
523
  "path": "dist/codex-hooks.js.map",
524
- "sha256": "fd3b104ecdcdca163c5f5c5c47bce3ebb9342ce6131f5ac3e1011e7044e4d393"
524
+ "sha256": "6ccf6a1d2b8d6df485b8e20b582d0f4655eb18d99bd88575357b842381afc633"
525
525
  },
526
526
  {
527
527
  "path": "dist/codex-invoke.d.ts",
@@ -1037,19 +1037,19 @@
1037
1037
  },
1038
1038
  {
1039
1039
  "path": "dist/index.d.ts",
1040
- "sha256": "5476546b291c2df0a0a4e3afd7b64900ada0b7ab26d400ae6fb6985853466c72"
1040
+ "sha256": "c117024a23cb05d976b361b564200ae7422cb104ed2944763ca8458eb1c60f68"
1041
1041
  },
1042
1042
  {
1043
1043
  "path": "dist/index.d.ts.map",
1044
- "sha256": "593859b38d79431517940bccf25f5e8ae079e142ac6cb66396b38421555a1d17"
1044
+ "sha256": "b1dae52fbf72991b5b2ad3119e34555dc4d5a24d5379d907da3e289273445f32"
1045
1045
  },
1046
1046
  {
1047
1047
  "path": "dist/index.js",
1048
- "sha256": "a7264b451ffa98a04e54d23e83312abe3afe1f380b088e386841ea4325938596"
1048
+ "sha256": "425634956f1720d006b3aed2f55e7155d13683b132978b2c6fd8375f487343cb"
1049
1049
  },
1050
1050
  {
1051
1051
  "path": "dist/index.js.map",
1052
- "sha256": "67861fde05a1927927ab1951738fbed427a2d016b22433603136041df21b3f0d"
1052
+ "sha256": "c8dbced70fa364f092bfcfa7df24bdbd6ad016d456126dae7ab0165a4e623ae6"
1053
1053
  },
1054
1054
  {
1055
1055
  "path": "dist/integration-apply.d.ts",
@@ -1485,19 +1485,19 @@
1485
1485
  },
1486
1486
  {
1487
1487
  "path": "dist/operations.d.ts",
1488
- "sha256": "60bd3d2d8ddc18535260e2b790ee25e6ddb77eab597248f05948987d7d5a39eb"
1488
+ "sha256": "8f0fe19c13dc8bb0a6887e78c2b2613126b587173986d9d66644f07053975e92"
1489
1489
  },
1490
1490
  {
1491
1491
  "path": "dist/operations.d.ts.map",
1492
- "sha256": "f8021977e02820666664922176bca714047fc544c8b466f3956aae854e53dd53"
1492
+ "sha256": "6b874fc2839e335428926642ee8ad6f094dabdf9ffd654dd1ef1d96b164772f1"
1493
1493
  },
1494
1494
  {
1495
1495
  "path": "dist/operations.js",
1496
- "sha256": "76105d806137ef947694e1cb10b2e8360411bd873e74386e87d933c99f53bbb3"
1496
+ "sha256": "1cd168844d94eecfe28b321d931f23d6c6bc6d8b5c1a29d6afbe7d5dfc375135"
1497
1497
  },
1498
1498
  {
1499
1499
  "path": "dist/operations.js.map",
1500
- "sha256": "acbb9920848e738a286eff1f45ebdd3a9f5e3b09fec879567072573df15d171b"
1500
+ "sha256": "40e24aa5f3c4b3724adc02134b3f4fe46d16ae3c64b848a70231528b4e3416db"
1501
1501
  },
1502
1502
  {
1503
1503
  "path": "dist/package-skill-layouts.d.ts",
@@ -1709,19 +1709,19 @@
1709
1709
  },
1710
1710
  {
1711
1711
  "path": "dist/publish.d.ts",
1712
- "sha256": "c2494e9728e80aecd427671f17f252d250ea8866e5b1770efa74f64e37ced8d7"
1712
+ "sha256": "ea2a9ab3829303a80180ada68cb66b38cdfedbc6523409c2b561975a161ff58c"
1713
1713
  },
1714
1714
  {
1715
1715
  "path": "dist/publish.d.ts.map",
1716
- "sha256": "a4cedae6fed2af78018ae9db1d57f71008373df4c42a9d23f6b73e0a1fde00a1"
1716
+ "sha256": "bc0d47090d260a135db510ee7a5c2cdb30733026fc152de1a391c896b800183f"
1717
1717
  },
1718
1718
  {
1719
1719
  "path": "dist/publish.js",
1720
- "sha256": "5521d2668e6ddb77086a911166eee4b7df1776ff94b23b5bab9ba927d479b6d4"
1720
+ "sha256": "665db8ce1a60587a18762240504aabba0dcd54bc8d222d279722579c319d57f6"
1721
1721
  },
1722
1722
  {
1723
1723
  "path": "dist/publish.js.map",
1724
- "sha256": "2dae5163293e7aa626a27d8da7642a82437b8bdac98b2735706f535572ec71c1"
1724
+ "sha256": "a2ca3c599991fe420fa3278729ec552f5b283f4dab240f18f5f5747bc7a50bf4"
1725
1725
  },
1726
1726
  {
1727
1727
  "path": "dist/qe-bridge.d.ts",
@@ -1885,19 +1885,19 @@
1885
1885
  },
1886
1886
  {
1887
1887
  "path": "dist/release-line.d.ts",
1888
- "sha256": "0c0a981edaf3480952c45035c51f76a0218d3dc88b54a2658acf917fe0cca605"
1888
+ "sha256": "bde357169aebd5fe8fa57c8443827cca62dbac5ecc112a661aa69fd67a78546b"
1889
1889
  },
1890
1890
  {
1891
1891
  "path": "dist/release-line.d.ts.map",
1892
- "sha256": "612b67646d8f82e9ce320578e05f8e721ea5532b6b6eaffa6738adb64434f38b"
1892
+ "sha256": "8bbfbf84bf6fa8a2af347cb36891875bfb3d515fd02b2a606a79dc171df1cfbb"
1893
1893
  },
1894
1894
  {
1895
1895
  "path": "dist/release-line.js",
1896
- "sha256": "122160d1bd467c98e2a7a38836ad44152a3f85d60fb3cb3f2ab3e0304524e841"
1896
+ "sha256": "5cd79637c54813cdd56b5619587b8f929e20760d18b6f62bfcf928d0af8a23a9"
1897
1897
  },
1898
1898
  {
1899
1899
  "path": "dist/release-line.js.map",
1900
- "sha256": "d6da1dc84b6885bf5976f0787b16888f2561502782d600d1b611c777ef0fdfe4"
1900
+ "sha256": "a3b93aa12f3065659eaa7a59c7dc55adace93901c2087dfc5e67bc30f7d9e666"
1901
1901
  },
1902
1902
  {
1903
1903
  "path": "dist/release.d.ts",
@@ -2653,19 +2653,19 @@
2653
2653
  },
2654
2654
  {
2655
2655
  "path": "dist/vector-tier.d.ts",
2656
- "sha256": "cdf68fa28b6a7e78d0381a5b2d23647ae812fee004e31b4c8c3893a897fd6f6f"
2656
+ "sha256": "29f17c93d7d1a702195007a540717916c759956888d69a9c79673c06e2e37e37"
2657
2657
  },
2658
2658
  {
2659
2659
  "path": "dist/vector-tier.d.ts.map",
2660
- "sha256": "8c504e223d4d78a29a24993078f4a90e771f56d6a62b310ab90b7ba44f1a6bd5"
2660
+ "sha256": "6e89cc42c34eb4779792b89cc4a24e96179e28c1e6e343bc43682fe25b4be703"
2661
2661
  },
2662
2662
  {
2663
2663
  "path": "dist/vector-tier.js",
2664
- "sha256": "6554f0bd2566ac10e6c841732210daa2412028e520ce49acf197451024161382"
2664
+ "sha256": "2e8d87067df268d285a1c140b2ab4f81d91b1fa28f4e605fac343f1293c5c932"
2665
2665
  },
2666
2666
  {
2667
2667
  "path": "dist/vector-tier.js.map",
2668
- "sha256": "23de503688790bbe679dae6c72b3c77faa43a14d4d0fbc54946c2e35cfd2d543"
2668
+ "sha256": "d7135aa3aa0866426d656a943ad482ebd99e4201c032bbee6b9bed74d1a52464"
2669
2669
  },
2670
2670
  {
2671
2671
  "path": "dist/workflow-run-dispatch.d.ts",
@@ -2733,7 +2733,7 @@
2733
2733
  },
2734
2734
  {
2735
2735
  "path": "package.json",
2736
- "sha256": "273067dfe330063f7f449dea7480208e147a20eb7b554f921d1eb9ee33cb8ca4"
2736
+ "sha256": "0019331c94f897c4cf80e5cadba55c001db3d8bd8ff080fda5b78fb0e0ca7d8b"
2737
2737
  },
2738
2738
  {
2739
2739
  "path": "src/__tests__/golden-baseline.test.ts",
@@ -2765,7 +2765,7 @@
2765
2765
  },
2766
2766
  {
2767
2767
  "path": "src/apply-leg.ts",
2768
- "sha256": "9391b6e0d9f6ef3f39662d4f3c89dbc173881584c6956ad5add2ebd54cdc85cf"
2768
+ "sha256": "610ad9f310a8bbcc563f28c78368483d3fe2d208e6c909a283695a8fe8b037e8"
2769
2769
  },
2770
2770
  {
2771
2771
  "path": "src/apply.ts",
@@ -2853,7 +2853,7 @@
2853
2853
  },
2854
2854
  {
2855
2855
  "path": "src/codex-hooks-assets.ts",
2856
- "sha256": "88230ebdfa2d7cc09c6d18e70cb77269d5f00668644c24fbec934f54c04e863f"
2856
+ "sha256": "abbafec2171dd098b0f33ae000380e31f4123fcbb71b93f611f3656f807a201f"
2857
2857
  },
2858
2858
  {
2859
2859
  "path": "src/codex-hooks-verify.ts",
@@ -2861,7 +2861,7 @@
2861
2861
  },
2862
2862
  {
2863
2863
  "path": "src/codex-hooks.ts",
2864
- "sha256": "39bea3c06d2d8c21eac33673c12c29f91148799a8d6573b51dadb733d200cf19"
2864
+ "sha256": "814b8694bc1ca5372ffc63c4913fe2ab43c3cdfaefe51af27b5545369ddf37d2"
2865
2865
  },
2866
2866
  {
2867
2867
  "path": "src/codex-invoke.ts",
@@ -2997,7 +2997,7 @@
2997
2997
  },
2998
2998
  {
2999
2999
  "path": "src/index.ts",
3000
- "sha256": "f248dbc9f0fc735dcfe11ae399c8f7c52b4053bb10e29234dc27c6c9581b7945"
3000
+ "sha256": "396802058cecfc4076f82c6e48869da3d1f5df16effbc9c3885112449725c8b9"
3001
3001
  },
3002
3002
  {
3003
3003
  "path": "src/integration-apply.ts",
@@ -3113,7 +3113,7 @@
3113
3113
  },
3114
3114
  {
3115
3115
  "path": "src/operations.ts",
3116
- "sha256": "8143fae14dbfcf0e87bf148add74e16e0ee8c2f8064fd2bfb0f90fbf1a21889b"
3116
+ "sha256": "476dc9c7f0c1ca8720ac0876f9b6400110ef3858d84fd10107e7c3c3fe174cf2"
3117
3117
  },
3118
3118
  {
3119
3119
  "path": "src/package-skill-layouts.ts",
@@ -3169,7 +3169,7 @@
3169
3169
  },
3170
3170
  {
3171
3171
  "path": "src/publish.ts",
3172
- "sha256": "00024c5a639339c5184bdad4d0ccf2e2e7d609cd74f25e64b624a43c22ac8625"
3172
+ "sha256": "b5ff9e0c107290d0217a82cf1baed940f81dcc937e5c240a0c3565884b42b615"
3173
3173
  },
3174
3174
  {
3175
3175
  "path": "src/qe-bridge.ts",
@@ -3213,7 +3213,7 @@
3213
3213
  },
3214
3214
  {
3215
3215
  "path": "src/release-line.ts",
3216
- "sha256": "19b4f6df4bf9683eb06ff6fbfca13cd74409f201340abacf7c1ff2e1ee06a6e2"
3216
+ "sha256": "2faa022c6b4fd312c5f42f117453e493934770ca86bebdae3225dee5c61c6912"
3217
3217
  },
3218
3218
  {
3219
3219
  "path": "src/release.ts",
@@ -3405,7 +3405,7 @@
3405
3405
  },
3406
3406
  {
3407
3407
  "path": "src/vector-tier.ts",
3408
- "sha256": "6607b712f768be25a140f224dc6c3c80d25e0e5144898fb819d488da7f0cd600"
3408
+ "sha256": "eefb77f2aa10cb4273b84cb611a5c490a736aa4ffeff3d5396efec2f665a329b"
3409
3409
  },
3410
3410
  {
3411
3411
  "path": "src/workflow-run-dispatch.ts",
@@ -3425,5 +3425,5 @@
3425
3425
  }
3426
3426
  ]
3427
3427
  },
3428
- "signature": "dNZha0vxyf5ob2PcHUsX1zU0BQwDvQbcrZ5oKyPYXcgGmJAjvPkXAPf4scWIz152ujHWLaetlKNujBxedF+CDA=="
3428
+ "signature": "bXhTZgcdViqfv+nZCOc/jsuBoXZ4DHIa64mGVve3GA3MnbUsZx8Mw83VWPTs6fR3K5d8F7hbGeznzrPdYDQqBA=="
3429
3429
  }
package/README.md CHANGED
@@ -607,6 +607,13 @@ instead of only ever checking the plain project path. The daemon also now prints
607
607
  (path N bytes)` and exits non-zero, never a silent "ready" for a socket that was never created
608
608
  (`APPLY_LEG_VERSION` bumped 3→4 for this and the resolver change).
609
609
 
610
+ `probeApplyLeg` (and `probeHookLiveness` beneath it) now report **`groupKillAttempted`** — whether the
611
+ liveness probe actually issued its process-group `SIGKILL` (attempted after EVERY probe outcome — timeout, exit, spawn error; ESRCH still counts as attempted) — as an OBSERVED field,
612
+ set in the `finally` right after the kill attempt and present only on branches that reached a spawn.
613
+ A test can therefore assert "the kill was attempted" separately from "the child is dead" instead of
614
+ inferring the first from the source (feature `full-suite-flake-fixes-3`, Codex HIGH-1; the mutant
615
+ that never reports the attempt is registry entry `probe-group-kill-attempted`).
616
+
610
617
  ### One recall engine for hook and CLI (`hook-recall-hybrid-parity`, ADR-001, `APPLY_LEG_VERSION` 4→5)
611
618
 
612
619
  The daemon's `op: recall` handler used to run its own brute-force cosine loop over the in-memory
@@ -677,9 +684,30 @@ find module` from a foreign session, swallowed by `2>/dev/null || true`.
677
684
  - **Limits, named plainly.** One store per install: from a foreign project's session the hook injects
678
685
  the INSTALL ROOT's lessons, not the session project's — that is the requested behavior (a
679
686
  per-project store alongside a user-level one is a separate feature). The Codex host's own hook
680
- (`codex-hooks-assets.ts:232`/`:373`) resolves its root from `payload.cwd || PWD || cwd()` — the
681
- SAME class of weakness — and is deliberately left unfixed here (named, not silently patched); see
682
- that file's own comments and the project backlog.
687
+ (`codex-hooks-assets.ts:232`/`:373`) resolves its root from `payload.cwd || PWD || cwd()` via a
688
+ single shared `resolveHookRoot(payload)` and now NAMES a not-found root on stderr instead of a
689
+ silent early return (`codex-hook-root-provenance`, below); a live probe (T1, codex-cli 0.154.0,
690
+ re-run correctly in fix-round 1 — see that feature's own change manifest) found `payload.cwd`
691
+ always present and equal to `PWD`/`cwd()` across 3 scenarios / 6 captures, so no explicit-override
692
+ knob was added — a SCOPED finding, not a claim that no producer could ever send a different value.
693
+
694
+ #### Codex hook root provenance (`codex-hook-root-provenance`)
695
+
696
+ Both Codex hooks (`dz-codex-veto`, `dz-codex-recall`) share ONE `resolveHookRoot(payload)` instead of
697
+ two copies of the `payload.cwd || PWD || cwd()` fallback, and a `root === null` early return now
698
+ prints one line to stderr — `[dz-codex-<hook>] skipped reason=no-project-root start=<startDir>
699
+ (<source>)` — so a hook that never found a project is distinguishable from one that is silently dead;
700
+ a found root stays silent unless `DZ_CODEX_HOOK_DEBUG` is set. Interpolated paths are escaped (C0
701
+ control range + DEL) before printing, so a hostile `cwd` cannot turn the "ONE line" promise into
702
+ several — the tradeoff is that the line still discloses the absolute directory the hook was asked
703
+ about (which can embed a username or a project name) to stderr, accepted because it is a diagnostic
704
+ for the person running the hook, not a return value. A live probe (three real `codex exec` sessions —
705
+ project root, a nested subdirectory, a directory with no `.dz` anywhere — each with BOTH hook events,
706
+ `PreToolUse` and `UserPromptSubmit`, captured separately; corrected in fix-round 1 after the original
707
+ reproducer's unexported `BASE` measured the wrong file) found `payload.cwd` always correct in every
708
+ one of the 6 captures, so there is no `DZ_PROJECT_ROOT`-style override — stated as "not observed on
709
+ codex-cli 0.154.0 across 3 scenarios / 6 captures", not as a claim that the "hook read the wrong
710
+ project" class cannot exist elsewhere.
683
711
 
684
712
  ### Store write-generation counter (`store-generation-counter`, `agentdb-index.ts`/`vector-tier.ts`)
685
713
 
@@ -804,6 +832,16 @@ deeper.
804
832
  flake, not a correctness defect; the daemon's own `HOOK_RECALL_BUDGET_MS` is independently
805
833
  widenable, and `probeApplyLeg`'s `env` option exists for exactly this in tests. A real single
806
834
  `dz doctor`/`dz parity` invocation never contends with 100+ concurrent test files.
835
+ - **Every probe beacon now carries an owner and a TTL (feature `apply-leg-daemon-hygiene`, FR-3).**
836
+ The pre-probe scavenger used to delete EVERY `apply-leg-probe`-domain record unconditionally,
837
+ which was safe against a probe killed mid-flight but WRONG the moment two probes from two
838
+ different sessions run against the same store concurrently — the second probe's scavenge could
839
+ delete the first probe's still-in-flight beacon, producing a false-red `dz doctor`/`dz parity`
840
+ parity check with no real defect behind it. Each beacon now embeds `probe-owner=<pid>:<startedMs>`
841
+ in its own text (no schema change), and `scavengeStaleProbeBeacons` (exported) removes ONLY a
842
+ beacon whose owner is dead (`process.kill(pid, 0)` ⇒ ESRCH) or older than 60 s — a live, in-budget
843
+ beacon from a different concurrent probe is left untouched. A scavenge failure is now a named fact
844
+ (`ApplyLegProbeResult.scavengeError`), never a swallowed exception.
807
845
 
808
846
  ## Run a plan without the Claude host
809
847
 
@@ -864,6 +902,15 @@ Four changes, each replacing a statement derived from configuration with one der
864
902
  it REPLACED the lexical one, and exact matches on rare identifiers vanished. The lexical top-1 now
865
903
  keeps a reserved seat (taken from the weakest non-`both` place, never from a hit both legs found),
866
904
  and ties break by evidence rather than by the id alphabet.
905
+ - **Recall's ordering contract is score DESC → evidence → `dzId` ASC everywhere, via one exported
906
+ `compareHybridHits`** (`feature recall-parity-tie-break`) — `mergeHybridHits`, `dampQuarantined`,
907
+ and `enhance()`'s reinforcement/bandit re-rank (via `orderHitsForReRank`, its pre-sort) all share
908
+ it, and the comparator is total even for `NaN`/±Infinity keys (a `NaN` sorts deterministically
909
+ last, never a coincidental tie). The daemon's own `recall-hit` exposure write stays
910
+ fire-and-forget — awaiting it cost +55–131 ms per recall against a 500 ms hook budget without
911
+ fully closing the race anyway; parity between the daemon and `dz recall` is instead proven with a
912
+ byte-level store snapshot taken before the comparison, so no write can reach the read it's
913
+ compared against.
867
914
  - **`HybridRecall` carries `semanticCandidates` and `semanticRanked`** — what the engine returned and
868
915
  what actually entered the merge, so a caller can tell "the tier is empty" from "the tier returned
869
916
  only stale ids", which need different fixes.
@@ -1232,6 +1279,17 @@ had NO mutual exclusion, and only the 10-minute grace period above stood between
1232
1279
 
1233
1280
  ## Status
1234
1281
 
1282
+ `0.8.36` — this release (night 15→16.09). Three changes live in this package: `recallHybrid` orders equal-scoring
1283
+ hits through ONE comparator (score desc → evidence rank → `dzId` asc, NaN last), so the embed daemon and
1284
+ `dz recall` agree; the apply-leg test helpers prove a daemon stop by OBSERVING `/proc` until nothing serves the
1285
+ root and gate every SIGKILL on a freshly-read identity plus containment under the test root (three-valued —
1286
+ "could not read" is never "does not match"), while the probe beacon carries its own owner, raw start ticks and
1287
+ expiry; and both generated Codex hooks resolve the project root through one `resolveHookRoot`, with
1288
+ `reportRootProvenance` naming the source and start directory on stderr, silent on the success path and with
1289
+ control characters escaped. The environment override originally planned for the hooks was dropped after a live
1290
+ measurement showed the payload's `cwd` present and correct in all six captures (3 scenarios × 2 hook events,
1291
+ codex-cli 0.154.0).
1292
+
1235
1293
  `dz guard check --op publish` now warns when either release line disagrees with the core/CLI package versions, and a registry-confirmed live core or CLI publish synchronizes the first such line in both release READMEs: each README is rewritten atomically; the pair is not one transaction (dry-run and bump-only never write them).
1236
1294
 
1237
1295
  `0.8.12` — **staged, not published.** The `/feature-adr` phase panel + per-phase ledger telemetry,
@@ -1517,6 +1575,46 @@ comment claimed historical notes were safe; they were, except for the one releas
1517
1575
  cites most — the one it supersedes. A backticked version opening a line before a dash is now treated
1518
1576
  as an entry and left alone; footers, badges, install examples and pins still move.
1519
1577
 
1578
+ **Feature publish-readme-stamp-scope (2026-09-15, fix-round 1 2026-09-15): the sync outside the
1579
+ changelog region is a real POSITIVE ALLOWLIST — not a denylist, and not a denylist that calls itself
1580
+ one.** MEASURED 2026-09-15: a live `dz publish --yes` rewrote five historical lines — a second `##
1581
+ Status` region's own changelog entry (`changelogRegion` protected only the FIRST run, so a `memory`
1582
+ README's later `0.2.21` entry sat bare) and four prose CITATIONS of the outgoing version as a past
1583
+ fact (`MEASURED on 0.8.25`, two `Previous release (vA / v0.8.25)` parentheticals, `on 0.8.10 and
1584
+ 0.8.25 alike`). The FIRST fix (same day) replaced that with a denylist of exactly those three phrase
1585
+ shapes (`isCitationContext`) — narrower than the incident, but still a denylist: any FOURTH prose
1586
+ shape citing the outgoing version ("since X", "measured against X", "X behaviour", a bare "X" in a
1587
+ sentence) would have rewritten by default until someone thought to deny it too, and the README
1588
+ documented it as an "allowlist" while the code rewrote by default — a cross-model review caught both.
1589
+ `planReadmeVersionSync(text, old, new)` now inverts the default: outside a changelog region, a token
1590
+ rewrites ONLY when `isAllowlistedRewriteContext` recognises one of six shapes — the lock-step feature
1591
+ this sync exists for, and nothing beyond it:
1592
+
1593
+ 1. a release-line token — `` `harness-core vX` · `harness-cli vY` `` and any generalised
1594
+ `` `<name> vX` `` on the same line, including a trailing `` · `memory vZ` `` segment
1595
+ (`release-line.ts` `isReleaseLineToken`/`GENERIC_RELEASE_TOKEN_RE`, unchanged since the earlier fix).
1596
+ 2. a current-release FOOTER prefix — `Status:`/`Version:`/`Current release:`/`Current status:`/
1597
+ `Released as` (case-insensitive, optional leading `**`/`-`), POSITION-aware: only the token
1598
+ immediately after the label is allowed, so a footer sentence that also cites an unrelated older
1599
+ release later in the same line (`Current release: X. (Previous release (vA / vB) …)`) allows the
1600
+ first token and still protects the second.
1601
+ 3. an install/dependency-pin context — the token immediately follows `@` (`npm i
1602
+ @dzhechkov/harness-core@X`), or sits in a JSON-pin shape `"<package-name>": "X"`.
1603
+ 4. the `dz publish: tarball <name>@X sha256:…` example line.
1604
+ 5. a `<!-- dz:version -->` marker on the line — forces the rewrite regardless of EVERY other
1605
+ protection, including the changelog region (the author's explicit override, AC-3).
1606
+ 6. a shields.io-style badge URL segment — `badge/npm-vX-…` / `badge/version-X-…`.
1607
+
1608
+ Every OTHER shape — whatever prose it is written in, today or in the future — is HISTORY by default,
1609
+ the same as a changelog entry. `syncReadmeVersion` stays a thin, atomic-write wrapper around the
1610
+ plan, returning exactly what it always returned (the pre-sync text, or `undefined` when nothing
1611
+ moved) — every existing caller is byte-compatible. The plan itself is never silent, and locates BOTH
1612
+ sides of its report: `dz publish` prints `readme sync <pkg>: would rewrite N line(s) (L…); M version
1613
+ token(s) kept as history (L…)` on a dry run and `rewrote N line(s) …` on a live publish — attached on
1614
+ every publish path (the main live publish, `--bump-only`, and the packed-transport batch), and
1615
+ `--json` carries the same `readmeSync` summary (`rewrittenLines`, `lines`, `skippedHistorical`,
1616
+ `historyLines`) per package.
1617
+
1520
1618
  Also: skill-enrichment ownership is anchored at the skill dir rather than searched across the whole
1521
1619
  absolute path, and enrichment is excluded from canonical SELECTION as well as from the destination
1522
1620
  set — otherwise a `--auto` canonical could propagate one target's metadata into every copy.
@@ -364,7 +364,45 @@ export interface ApplyLegProbeResult {
364
364
  * reason=…` stderr line when present, else a best-effort description of what went wrong. */
365
365
  readonly reason?: string;
366
366
  readonly elapsedMs: number;
367
+ /** Fix round 1 (HIGH-1): the KILL-ATTEMPT fact, straight from `probeHookLiveness`'s own
368
+ * `groupKillAttempted` — present only on the branches that actually reached a spawn (absent for the
369
+ * early "not installed" / "no hook configured" / "legacy command" / "beacon write failed"
370
+ * returns, none of which ever call `probeHookLiveness`). This is deliberately a DIFFERENT fact
371
+ * from "is the grandchild still alive" — a caller observes both separately, never conflates them. */
372
+ readonly groupKillAttempted?: boolean;
373
+ /** FR-3 (feature `apply-leg-daemon-hygiene`): present exactly when the pre-probe scavenge of
374
+ * STALE beacon-domain records failed — the reason comes straight from {@link
375
+ * scavengeStaleProbeBeacons}'s own `error`, never swallowed. Independent of `ok`/`reason`: a
376
+ * scavenge failure does not itself flip `ok` to `false` (the probe's own injection result may
377
+ * still be perfectly genuine), but it IS a fact `dz doctor`/`dz parity` callers can surface
378
+ * rather than lose. */
379
+ readonly scavengeError?: string;
367
380
  }
381
+ /** {@link scavengeStaleProbeBeacons}'s result — FR-3: a scavenge error is a FACT the caller can
382
+ * surface, never a swallowed exception (the pre-fix `catch { /* best-effort *\/ }` this replaces). */
383
+ export type ScavengeResult = {
384
+ readonly ok: true;
385
+ readonly removed: number;
386
+ } | {
387
+ readonly ok: false;
388
+ readonly error: string;
389
+ };
390
+ /**
391
+ * FR-3/FR-4: remove only the STALE beacon-domain records in `root`'s store — owner dead
392
+ * (`process.kill(pid, 0)` ⇒ ESRCH), older than `ttlMs`, OR (fix round 1, HIGH-6 residual) alive AND
393
+ * within `ttlMs` but the live pid's OWN `/proc/<pid>/stat` start time no longer matches the beacon's
394
+ * `proc-start=` tag — a confirmed PID-reuse case, where the recorded owner is provably gone even
395
+ * though `pid` itself answers. An UNREADABLE stat at scavenge time never counts as reuse evidence —
396
+ * it falls back to the plain alive+TTL verdict, per the lead's "cannot prove ⇒ do not remove"
397
+ * decision. A beacon whose owner is alive, within TTL, and (when provable) confirmed the SAME
398
+ * process is left untouched, even though it belongs to a different probe. An ownerless (pre-FR-3)
399
+ * beacon is always treated as stale. `ttlMs` defaults to {@link PROBE_BEACON_TTL_FLOOR_MS} for a
400
+ * caller that does not derive one (`apply-leg-beacon-owner.test.ts`'s own fixtures); `probeApplyLeg`
401
+ * always passes its own derived value. Exported so `apply-leg-beacon-owner.test.ts` can exercise the
402
+ * property directly, without needing a live hook/daemon (FR-4's red-first case needs only a store
403
+ * and an injectable remover, never a real probe round-trip).
404
+ */
405
+ export declare function scavengeStaleProbeBeacons(root: string, removeBeacon: (root: string, ids: ReadonlySet<string>) => RemovePatternsResult, ttlMs?: number): ScavengeResult;
368
406
  /**
369
407
  * Live, end-to-end proof that the apply leg actually injects — ADR-001 Decision 1. `applyLegStatus`
370
408
  * only proves FILES exist and are STRUCTURALLY wired (issue #2's whole defect: four green checks,
@@ -1 +1 @@
1
- {"version":3,"file":"apply-leg.d.ts","sourceRoot":"","sources":["../src/apply-leg.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apply-leg.d.ts","sourceRoot":"","sources":["../src/apply-leg.ts"],"names":[],"mappings":"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"}