@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.
- package/.dz-manifest.json +42 -42
- package/README.md +101 -3
- package/dist/apply-leg.d.ts +38 -0
- package/dist/apply-leg.d.ts.map +1 -1
- package/dist/apply-leg.js +263 -16
- package/dist/apply-leg.js.map +1 -1
- package/dist/codex-hooks-assets.d.ts.map +1 -1
- package/dist/codex-hooks-assets.js +67 -5
- package/dist/codex-hooks-assets.js.map +1 -1
- package/dist/codex-hooks.d.ts +13 -1
- package/dist/codex-hooks.d.ts.map +1 -1
- package/dist/codex-hooks.js +13 -1
- package/dist/codex-hooks.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/operations.d.ts +1 -0
- package/dist/operations.d.ts.map +1 -1
- package/dist/operations.js +18 -2
- package/dist/operations.js.map +1 -1
- package/dist/publish.d.ts +59 -7
- package/dist/publish.d.ts.map +1 -1
- package/dist/publish.js +205 -32
- package/dist/publish.js.map +1 -1
- package/dist/release-line.d.ts +16 -0
- package/dist/release-line.d.ts.map +1 -1
- package/dist/release-line.js +31 -0
- package/dist/release-line.js.map +1 -1
- package/dist/vector-tier.d.ts +34 -3
- package/dist/vector-tier.d.ts.map +1 -1
- package/dist/vector-tier.js +105 -14
- package/dist/vector-tier.js.map +1 -1
- package/package.json +2 -2
- package/sbom.json +41 -41
- package/src/apply-leg.ts +282 -14
- package/src/codex-hooks-assets.ts +67 -5
- package/src/codex-hooks.ts +13 -1
- package/src/index.ts +6 -1
- package/src/operations.ts +18 -3
- package/src/publish.ts +247 -30
- package/src/release-line.ts +32 -0
- 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": "
|
|
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": "
|
|
128
|
+
"sha256": "0e6bbd55092eac615ce87ffe760087d9081227346587bda681fa5c92000d0bec"
|
|
129
129
|
},
|
|
130
130
|
{
|
|
131
131
|
"path": "dist/apply-leg.d.ts.map",
|
|
132
|
-
"sha256": "
|
|
132
|
+
"sha256": "4ac8a748703efc1b0713f1a7e9174ec2b38d4d6f5fd93f884461eea21fcdd8d3"
|
|
133
133
|
},
|
|
134
134
|
{
|
|
135
135
|
"path": "dist/apply-leg.js",
|
|
136
|
-
"sha256": "
|
|
136
|
+
"sha256": "7983e9c4eb5186a42733edb2f9bc1d5c8a36af680e807dd893bdb47e66f51321"
|
|
137
137
|
},
|
|
138
138
|
{
|
|
139
139
|
"path": "dist/apply-leg.js.map",
|
|
140
|
-
"sha256": "
|
|
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": "
|
|
484
|
+
"sha256": "633d8863c5373b236e9090dcb0d1f11da5564f846474888cf94750e51257e493"
|
|
485
485
|
},
|
|
486
486
|
{
|
|
487
487
|
"path": "dist/codex-hooks-assets.js",
|
|
488
|
-
"sha256": "
|
|
488
|
+
"sha256": "17a6dfd4bc631197601e601ecaeea8c49ee3e23a878c807cdac80446762c0549"
|
|
489
489
|
},
|
|
490
490
|
{
|
|
491
491
|
"path": "dist/codex-hooks-assets.js.map",
|
|
492
|
-
"sha256": "
|
|
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": "
|
|
512
|
+
"sha256": "530a08cb50bfdbee96db39fe595ca16d01f221e16016a2a75b9049d3b156503e"
|
|
513
513
|
},
|
|
514
514
|
{
|
|
515
515
|
"path": "dist/codex-hooks.d.ts.map",
|
|
516
|
-
"sha256": "
|
|
516
|
+
"sha256": "1279c7d4f340f107ac1a3675245673be9e414cfdcfc2edf5efc175c6c567095a"
|
|
517
517
|
},
|
|
518
518
|
{
|
|
519
519
|
"path": "dist/codex-hooks.js",
|
|
520
|
-
"sha256": "
|
|
520
|
+
"sha256": "516b6255b226fdfd33dbcf17f0df42f3f3b3c7987206ca6d2b706f43924d7a63"
|
|
521
521
|
},
|
|
522
522
|
{
|
|
523
523
|
"path": "dist/codex-hooks.js.map",
|
|
524
|
-
"sha256": "
|
|
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": "
|
|
1040
|
+
"sha256": "c117024a23cb05d976b361b564200ae7422cb104ed2944763ca8458eb1c60f68"
|
|
1041
1041
|
},
|
|
1042
1042
|
{
|
|
1043
1043
|
"path": "dist/index.d.ts.map",
|
|
1044
|
-
"sha256": "
|
|
1044
|
+
"sha256": "b1dae52fbf72991b5b2ad3119e34555dc4d5a24d5379d907da3e289273445f32"
|
|
1045
1045
|
},
|
|
1046
1046
|
{
|
|
1047
1047
|
"path": "dist/index.js",
|
|
1048
|
-
"sha256": "
|
|
1048
|
+
"sha256": "425634956f1720d006b3aed2f55e7155d13683b132978b2c6fd8375f487343cb"
|
|
1049
1049
|
},
|
|
1050
1050
|
{
|
|
1051
1051
|
"path": "dist/index.js.map",
|
|
1052
|
-
"sha256": "
|
|
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": "
|
|
1488
|
+
"sha256": "8f0fe19c13dc8bb0a6887e78c2b2613126b587173986d9d66644f07053975e92"
|
|
1489
1489
|
},
|
|
1490
1490
|
{
|
|
1491
1491
|
"path": "dist/operations.d.ts.map",
|
|
1492
|
-
"sha256": "
|
|
1492
|
+
"sha256": "6b874fc2839e335428926642ee8ad6f094dabdf9ffd654dd1ef1d96b164772f1"
|
|
1493
1493
|
},
|
|
1494
1494
|
{
|
|
1495
1495
|
"path": "dist/operations.js",
|
|
1496
|
-
"sha256": "
|
|
1496
|
+
"sha256": "1cd168844d94eecfe28b321d931f23d6c6bc6d8b5c1a29d6afbe7d5dfc375135"
|
|
1497
1497
|
},
|
|
1498
1498
|
{
|
|
1499
1499
|
"path": "dist/operations.js.map",
|
|
1500
|
-
"sha256": "
|
|
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": "
|
|
1712
|
+
"sha256": "ea2a9ab3829303a80180ada68cb66b38cdfedbc6523409c2b561975a161ff58c"
|
|
1713
1713
|
},
|
|
1714
1714
|
{
|
|
1715
1715
|
"path": "dist/publish.d.ts.map",
|
|
1716
|
-
"sha256": "
|
|
1716
|
+
"sha256": "bc0d47090d260a135db510ee7a5c2cdb30733026fc152de1a391c896b800183f"
|
|
1717
1717
|
},
|
|
1718
1718
|
{
|
|
1719
1719
|
"path": "dist/publish.js",
|
|
1720
|
-
"sha256": "
|
|
1720
|
+
"sha256": "665db8ce1a60587a18762240504aabba0dcd54bc8d222d279722579c319d57f6"
|
|
1721
1721
|
},
|
|
1722
1722
|
{
|
|
1723
1723
|
"path": "dist/publish.js.map",
|
|
1724
|
-
"sha256": "
|
|
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": "
|
|
1888
|
+
"sha256": "bde357169aebd5fe8fa57c8443827cca62dbac5ecc112a661aa69fd67a78546b"
|
|
1889
1889
|
},
|
|
1890
1890
|
{
|
|
1891
1891
|
"path": "dist/release-line.d.ts.map",
|
|
1892
|
-
"sha256": "
|
|
1892
|
+
"sha256": "8bbfbf84bf6fa8a2af347cb36891875bfb3d515fd02b2a606a79dc171df1cfbb"
|
|
1893
1893
|
},
|
|
1894
1894
|
{
|
|
1895
1895
|
"path": "dist/release-line.js",
|
|
1896
|
-
"sha256": "
|
|
1896
|
+
"sha256": "5cd79637c54813cdd56b5619587b8f929e20760d18b6f62bfcf928d0af8a23a9"
|
|
1897
1897
|
},
|
|
1898
1898
|
{
|
|
1899
1899
|
"path": "dist/release-line.js.map",
|
|
1900
|
-
"sha256": "
|
|
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": "
|
|
2656
|
+
"sha256": "29f17c93d7d1a702195007a540717916c759956888d69a9c79673c06e2e37e37"
|
|
2657
2657
|
},
|
|
2658
2658
|
{
|
|
2659
2659
|
"path": "dist/vector-tier.d.ts.map",
|
|
2660
|
-
"sha256": "
|
|
2660
|
+
"sha256": "6e89cc42c34eb4779792b89cc4a24e96179e28c1e6e343bc43682fe25b4be703"
|
|
2661
2661
|
},
|
|
2662
2662
|
{
|
|
2663
2663
|
"path": "dist/vector-tier.js",
|
|
2664
|
-
"sha256": "
|
|
2664
|
+
"sha256": "2e8d87067df268d285a1c140b2ab4f81d91b1fa28f4e605fac343f1293c5c932"
|
|
2665
2665
|
},
|
|
2666
2666
|
{
|
|
2667
2667
|
"path": "dist/vector-tier.js.map",
|
|
2668
|
-
"sha256": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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()`
|
|
681
|
-
|
|
682
|
-
|
|
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.
|
package/dist/apply-leg.d.ts
CHANGED
|
@@ -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,
|
package/dist/apply-leg.d.ts.map
CHANGED
|
@@ -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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"}
|