@dzhechkov/harness-core 0.3.144 → 0.3.146

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": "1b9db50b623f5737dd95a3b949d9ea85293387a010a09f4204e6a476f5127d57"
12
+ "sha256": "3ce64136feb92682d69ed9b8275ff1f894a4007826d8a2b115b260021bc0f42d"
13
13
  },
14
14
  {
15
15
  "path": "coverage/coverage-final.json",
@@ -245,19 +245,19 @@
245
245
  },
246
246
  {
247
247
  "path": "dist/compounding.d.ts",
248
- "sha256": "34eb7f1754a631ebe5f390dee53f1ea276a85e6cabd25806c384aeef23f64d3c"
248
+ "sha256": "26f6cf197298e8ccf61d72bb26d6f5e88a3d58af3ff0b3351f44755c5acff1da"
249
249
  },
250
250
  {
251
251
  "path": "dist/compounding.d.ts.map",
252
- "sha256": "22cddbd67b5a6204cccc2bf100735c33e138f7400769ad073dc694df4fb0f2b2"
252
+ "sha256": "571ea5e0ebb71a5325da6171b09affeb6ba3d4b759d0eb4cc8d3af57dd369104"
253
253
  },
254
254
  {
255
255
  "path": "dist/compounding.js",
256
- "sha256": "dc8d3d48e8387391828175bff981016dfa449b19aa1a55e6420adbd688a112fb"
256
+ "sha256": "83db18eb05a6400809b7c1624e3df24f40f1050b39f022d87448d8017399e4e0"
257
257
  },
258
258
  {
259
259
  "path": "dist/compounding.js.map",
260
- "sha256": "afc564287b7a548b15051e64151c05687b8a45b66df7c964e7168591bb93414c"
260
+ "sha256": "f353339d08c311fb69d44960e97bcc9ddfc01d7bdb8c3ae26e9884a494c0338f"
261
261
  },
262
262
  {
263
263
  "path": "dist/cost-scoring.d.ts",
@@ -371,6 +371,22 @@
371
371
  "path": "dist/epoch-replay.js.map",
372
372
  "sha256": "f0c5eb87cdc3727e7eb857e5d07f8fd376902c66c48a23af61998677ea48acda"
373
373
  },
374
+ {
375
+ "path": "dist/event-chain.d.ts",
376
+ "sha256": "ded196d2527e16e60981cef9d2502d1d5eeedbaa7c40be95ac178522682d1693"
377
+ },
378
+ {
379
+ "path": "dist/event-chain.d.ts.map",
380
+ "sha256": "06e9f082b4e361b796042815bd75d807231d98965e9acbbb63d500efa932a87d"
381
+ },
382
+ {
383
+ "path": "dist/event-chain.js",
384
+ "sha256": "8ad73164e893627c867468a21bc5dd1386dd82adb3ea06b2b785cfa7415d558b"
385
+ },
386
+ {
387
+ "path": "dist/event-chain.js.map",
388
+ "sha256": "a874ba52b35ed445f2310a04bb0fbdb0ba34db18601d0086e7e666b7bafc8a16"
389
+ },
374
390
  {
375
391
  "path": "dist/feature-adr-claim-gate.d.ts",
376
392
  "sha256": "abce2849ac6aa7b31292fb4d5e80b500b3a33a77533d3a3a8b3da6fe3ebaa7af"
@@ -419,21 +435,37 @@
419
435
  "path": "dist/feature-adr-setup.js.map",
420
436
  "sha256": "dc50ce0dd4b4680afdda3e2c650d0d8665c7defce22e4afaeb24d2113c0dec9d"
421
437
  },
438
+ {
439
+ "path": "dist/guard-promotion.d.ts",
440
+ "sha256": "eba21256fa7ed8082acf9571c0606aa2926c0a13635fd994aa74f44d7f3db1d4"
441
+ },
442
+ {
443
+ "path": "dist/guard-promotion.d.ts.map",
444
+ "sha256": "6da389f6fbdae2b886d526db90b09ca7fabac88f26ff96e73cdfd98d1a6a90d4"
445
+ },
446
+ {
447
+ "path": "dist/guard-promotion.js",
448
+ "sha256": "a03bf0166ac3056d93c67a2571c6300cc92941424cc5a8aecce529a6879e4a47"
449
+ },
450
+ {
451
+ "path": "dist/guard-promotion.js.map",
452
+ "sha256": "858b3ad88b0c2fdf3a66a89075df493e3592cbf8c12f3df880be93a0e446ad8e"
453
+ },
422
454
  {
423
455
  "path": "dist/guard.d.ts",
424
- "sha256": "7a1df1aa511a5d96669e660b99d29ba633393e1a20dc346e1dedfa9aec221260"
456
+ "sha256": "5ac5bd9b2d927117d124861c5532a0618c5f3f4859b8a91a6b62203475db047e"
425
457
  },
426
458
  {
427
459
  "path": "dist/guard.d.ts.map",
428
- "sha256": "be03334a1746d3261afe69252f119c82f3718e0608957eebf5de311acf9d8a04"
460
+ "sha256": "f56619488145d4ccdac45298cb76647ea670d5b37d210f30972b602d3fad5f24"
429
461
  },
430
462
  {
431
463
  "path": "dist/guard.js",
432
- "sha256": "dc20d0ea9ff7e1299b52ed3ce03dbd2f8bb13b1b86ee2799a49837f33ec33883"
464
+ "sha256": "7dc53438c377aa007264384fc30f34764fcb969fd6d0bfae15a0b976bafd0e17"
433
465
  },
434
466
  {
435
467
  "path": "dist/guard.js.map",
436
- "sha256": "1696212693b8cd400ff6d2af843e2901ad0e79679ddd09ea9831306aa75e342a"
468
+ "sha256": "389544fa42d0010f48ae1bccdd81170053fbd56d5131c1479db87535c9a34662"
437
469
  },
438
470
  {
439
471
  "path": "dist/import-ecc.d.ts",
@@ -453,19 +485,19 @@
453
485
  },
454
486
  {
455
487
  "path": "dist/index.d.ts",
456
- "sha256": "88213a2320b2b99781919788883ab99da93c4043e7c235f14d7f97db034703e0"
488
+ "sha256": "c012cd5c1e1139755edd4a27daeef19e765d70f3764c0f074a0397b5f8252dac"
457
489
  },
458
490
  {
459
491
  "path": "dist/index.d.ts.map",
460
- "sha256": "e568286b5e7123dbd73a623268134af1b55555e61e90ea0271a9d4938184b6a0"
492
+ "sha256": "a0505d3d55931149733d95c1e294160395e221c567e92682acd4194c0c3d17fc"
461
493
  },
462
494
  {
463
495
  "path": "dist/index.js",
464
- "sha256": "a779d72721eb025257beee64dd6e29a8e54e1dde1f152a0887d94aa2f9c3f1be"
496
+ "sha256": "07cf71990a2f7e7e126b02082ba82df93b99239e4ca4179c995cdfc00dcfb88c"
465
497
  },
466
498
  {
467
499
  "path": "dist/index.js.map",
468
- "sha256": "7f3cd564e49f49d2fb6a736e98ce837f987994776730ff07f04cb71c7113c22e"
500
+ "sha256": "bc82e97c1ccded5006c1459bbcd3a84eb18651761d9b74d68d3aabe3be1101dc"
469
501
  },
470
502
  {
471
503
  "path": "dist/learning-backend.d.ts",
@@ -505,15 +537,15 @@
505
537
  },
506
538
  {
507
539
  "path": "dist/operations.d.ts.map",
508
- "sha256": "a1316ae9b953735335d02280177b4ae845e0e5c8452ea14113fa86327a786bc1"
540
+ "sha256": "ce02526852f7c5d8579a5384f4aa9aafb7b099fdfc61c1482aa969bff7407a24"
509
541
  },
510
542
  {
511
543
  "path": "dist/operations.js",
512
- "sha256": "32c16d8d0793279e60f892fdc8daaa70aeda74d9948c54a3fe6fa4cdf21cc2ea"
544
+ "sha256": "b7b9bda39dc55594375688740b9d717d07ea2f12166fbee14a29f62868268a9c"
513
545
  },
514
546
  {
515
547
  "path": "dist/operations.js.map",
516
- "sha256": "674495cbb7a24844e82bbc70c7ac825c84f3572144acf310ab49f2ae791ddf7e"
548
+ "sha256": "bf83c2c1af9481f4e03db72553b2d8c3b5b8ad2f87f0aab7e4d579f32e4a32d6"
517
549
  },
518
550
  {
519
551
  "path": "dist/parity.d.ts",
@@ -661,19 +693,19 @@
661
693
  },
662
694
  {
663
695
  "path": "dist/recall-usage.d.ts",
664
- "sha256": "d938a195e56fac7103c659ba939c9838421eede40b5f81ae1928b6cc372429e4"
696
+ "sha256": "412aa688ee1fb6bd6c132ad2f97421d6330846de1743b9461436051f29dead15"
665
697
  },
666
698
  {
667
699
  "path": "dist/recall-usage.d.ts.map",
668
- "sha256": "18c5ed38e9ac27854ba0cd9d273b0ef0002bc8ed1794766e4cb919cf55d78377"
700
+ "sha256": "758657ff3c0aef6919351af23fc229617576263d24d36b2400f5ffe43f8d1384"
669
701
  },
670
702
  {
671
703
  "path": "dist/recall-usage.js",
672
- "sha256": "96654e2566b276d50f1ec1ebb4427cc4426fb9bdaefcdb14766abd9a07ab64c9"
704
+ "sha256": "b3603074fa6c80ee1dad75fe6f93b44f90dcfcbad81325ecca379f70c9f2fd60"
673
705
  },
674
706
  {
675
707
  "path": "dist/recall-usage.js.map",
676
- "sha256": "e8f1fccef45f1ab0414fe37fffdda7ab27b97e524f885771d3fcb8a2f174a533"
708
+ "sha256": "e4103c95577ac2876df7f604b1fa1c9e590e9a0df7185abc0f9d9f5bdc18ff1f"
677
709
  },
678
710
  {
679
711
  "path": "dist/recommend.d.ts",
@@ -1045,7 +1077,7 @@
1045
1077
  },
1046
1078
  {
1047
1079
  "path": "package.json",
1048
- "sha256": "2b12d89fc52919b1963d3bd655cf21312df2306e3b7b3ff09c6812675197c58c"
1080
+ "sha256": "de8265cfe636d0042855988d585b3e3165e4a61da0259c0a498fccdac79e1ec4"
1049
1081
  },
1050
1082
  {
1051
1083
  "path": "src/__tests__/golden-baseline.test.ts",
@@ -1105,7 +1137,7 @@
1105
1137
  },
1106
1138
  {
1107
1139
  "path": "src/compounding.ts",
1108
- "sha256": "7ccb87beb02047e78c192e544e5aa893eb4c95ab21542fc38fdd1e123e8fc2cd"
1140
+ "sha256": "1b20b2b6ababea386d195ab3481a0af6582fda2757720732b5098e162964da32"
1109
1141
  },
1110
1142
  {
1111
1143
  "path": "src/cost-scoring.ts",
@@ -1135,6 +1167,10 @@
1135
1167
  "path": "src/epoch-replay.ts",
1136
1168
  "sha256": "031c838e16e30617e5149ff16af75d8b4058922525d1851682323ba0bc0bb85f"
1137
1169
  },
1170
+ {
1171
+ "path": "src/event-chain.ts",
1172
+ "sha256": "f8306131a5021167169b525733da711ff378382f0a7368376f35834c350a9e23"
1173
+ },
1138
1174
  {
1139
1175
  "path": "src/feature-adr-claim-gate.ts",
1140
1176
  "sha256": "0fd1c44e7f6aea1abfac1e6d3fac3e4bbe4dfd501d068803f310c1ec36716eb6"
@@ -1147,9 +1183,13 @@
1147
1183
  "path": "src/feature-adr-setup.ts",
1148
1184
  "sha256": "311f4344eed1a43a0a3bd2723cafce141e035078cdcc404509cdf26ee7df4904"
1149
1185
  },
1186
+ {
1187
+ "path": "src/guard-promotion.ts",
1188
+ "sha256": "45e05ef83ac730442760a55f9859f36b2b2a56db53465ca0267f517024646026"
1189
+ },
1150
1190
  {
1151
1191
  "path": "src/guard.ts",
1152
- "sha256": "f56d5f5e59e9ddecae339b054b9f888b81b3410c56d3a09eedd7be3c11d3438c"
1192
+ "sha256": "e7559a9f42448374ae133a323f8d9e4fa21625b15853d544e1c077ae9331a2ce"
1153
1193
  },
1154
1194
  {
1155
1195
  "path": "src/import-ecc.ts",
@@ -1157,7 +1197,7 @@
1157
1197
  },
1158
1198
  {
1159
1199
  "path": "src/index.ts",
1160
- "sha256": "98f3820a8d7eafeb6405e2c80b05513ddce58dfccec57612f1136cfa6abdf40e"
1200
+ "sha256": "570656aaa56d8da53c83f2e93af93e6b9af4398b3e75a7077bf5a7206eee42b5"
1161
1201
  },
1162
1202
  {
1163
1203
  "path": "src/learning-backend.ts",
@@ -1169,7 +1209,7 @@
1169
1209
  },
1170
1210
  {
1171
1211
  "path": "src/operations.ts",
1172
- "sha256": "80b292202fad0be0e9939f67641f16987e93f962b547b56e9771d9ae9a7c94b1"
1212
+ "sha256": "939e75c6a80e5812a3ab5f3ebc5fe39dd646211a27077fb47f499ecab53e790c"
1173
1213
  },
1174
1214
  {
1175
1215
  "path": "src/parity.ts",
@@ -1205,7 +1245,7 @@
1205
1245
  },
1206
1246
  {
1207
1247
  "path": "src/recall-usage.ts",
1208
- "sha256": "7535211e4f70d8880a94e6c75664a2c53c64fd6dc3292004b7a4d9e58690b047"
1248
+ "sha256": "71a1e596f5f877b4ecb04cebf0670922824d0466488302e1ba9553407dfbe9af"
1209
1249
  },
1210
1250
  {
1211
1251
  "path": "src/recommend.ts",
@@ -1365,7 +1405,7 @@
1365
1405
  },
1366
1406
  {
1367
1407
  "path": "test/compounding.test.ts",
1368
- "sha256": "125ae7b36ad75488d4dd35edc585fc1523691c3f156d3ac0a3b891fd804645d1"
1408
+ "sha256": "89265131de29a2841e73068e4be256e1cbe7bd8dbd0c8eacc79039626b41e6f0"
1369
1409
  },
1370
1410
  {
1371
1411
  "path": "test/cost-scoring.test.ts",
@@ -1407,6 +1447,10 @@
1407
1447
  "path": "test/epoch-replay.test.ts",
1408
1448
  "sha256": "5f1f87608f41587f54f0b071b49ec19e1242ef94edc5c2a9be191534661f8ec9"
1409
1449
  },
1450
+ {
1451
+ "path": "test/event-chain.test.ts",
1452
+ "sha256": "b5addb1026c8b408e49fee9e561c12ea22d8b4e94ae7092ebe60419c7a384ab6"
1453
+ },
1410
1454
  {
1411
1455
  "path": "test/feature-adr-abs-paths.test.ts",
1412
1456
  "sha256": "399f38bbb328ccb77f2bc4432eb6d3c91b886e59901dd9cd04ab3d17ccb22c87"
@@ -1447,6 +1491,10 @@
1447
1491
  "path": "test/fixtures/recall-floor-probes.json",
1448
1492
  "sha256": "9fdfa7db72ebe6d15c604fa0d3eeeec868adb7e41f9ea0f128005fe234e1395f"
1449
1493
  },
1494
+ {
1495
+ "path": "test/guard-promotion.test.ts",
1496
+ "sha256": "c7d38f9ba7d2a1a1d5e40b9422eeef0ffc7784b015adb41a9c8d89893f529c9e"
1497
+ },
1450
1498
  {
1451
1499
  "path": "test/guard.test.ts",
1452
1500
  "sha256": "49829d24440130cfe403a410b9068a76631c68e9baa2cfc978f5029df2d72f3a"
@@ -1497,7 +1545,7 @@
1497
1545
  },
1498
1546
  {
1499
1547
  "path": "test/operations.test.ts",
1500
- "sha256": "653e21e75e81bd7c4659ae0279a527663cf07108a0a613c98c7f36dac8bd4066"
1548
+ "sha256": "a26d2b3cc2434cc0846e73c1c6d5c6d7223e5be5a24217b75f62d494affa2089"
1501
1549
  },
1502
1550
  {
1503
1551
  "path": "test/parity.test.ts",
@@ -1633,5 +1681,5 @@
1633
1681
  }
1634
1682
  ]
1635
1683
  },
1636
- "signature": "9x1Af1YN2KgiryY+uLM532g4McRyNgwN7PcuPboXSZXDIyGDh/bc/FTCx30Z5ZsqHnUBRupAB57gyI+g1VP8CA=="
1684
+ "signature": "+Zq5ezfLk8TTPIVlSjlPsS0QO7+g7A33eYSduSLm8R6gZ2U6ap8INEvm2gL8Fbq2KB6IYOt/OL+YuG0TAH4ECg=="
1637
1685
  }
package/README.md CHANGED
@@ -15,7 +15,8 @@ and any other consumer.
15
15
  | `backlog` | `dedupIdea`, `classifyDedup`, `alignIdea`, `spinRoulette`, `readGoalMapDetailed`, `parseEffort`, `ensureBacklogGitignored`, `harmonizeBacklog` | The Smart Backlog engine behind `dz backlog`: content-addressed idea records in `.dz/backlog/ideas.jsonl`, semantic dedup over the REUSED agentdb vector namespace (`dz-backlog` — no second store), weighted-max GoalMap alignment, and a seeded weighted roulette. Every band/weight decision is a PURE function. `classifyDedup` also reports the top-1 match id alongside the cosine (the calibration surface for the 0.92 duplicate band — observational, it never moves the verdict); `readGoalMapDetailed` returns the entries the defensive reader DROPPED with a reason AND the fields it REPAIRED with their raw values (a weight clamped before validation made the validator's out-of-range branch dead code), so `goals --validate` can never report a vacuous "valid (0 goals)" nor hide a `weight: 7`; `parseEffort` returns a printable note for every clamp; `ensureBacklogGitignored` gitignores the store on first write (raw ideas are private prompt-class content) — atomically, preserving the file's dominant EOL, recognising every plain spelling of an existing rule (`/.dz/`, `.dz/**`, …) via `backlogIgnoreStatus`, and obeying a `!` negation as an explicit user opt-out instead of overriding it |
16
16
  | `feature-adr-setup` (P3) | `renderGuardsConfig`, `renderGuardsRunner` | Scaffolds deterministic guard tests into a TARGET project: `guards.config.json` + a zero-dependency `check.mjs` runner (loc-cap, secret-scan, frozen-file sha256 pins, waivers-with-reasons) — `dz feature-adr-setup --guards` |
17
17
  | `usage` | `computeUsage`, `TOKEN_WEIGHTS`, `readUsageLimits`, `deriveUsageCalibration` | Read-only Claude usage ESTIMATE behind `dz usage`. Tokens are COST-WEIGHTED input-equivalents (input 1x, cache-write 1.25x / 1h 2x, cache-read 0.1x, output 5x) — a flat sum is 89-99.7% cache-read (MEASURED) and tracks conversation length, not work. Scans subagent transcripts too (`<session>/subagents/*.jsonl`), follows no symlinks, reads only regular files (symlinked FILES and DIRECTORY components alike are skipped), and caps the walk BY RECENCY so a huge history cannot discard current usage. `pct` stays `null` while limits are unconfigured — an unconfigured estimate is never dressed up as a number |
18
- | `compounding` | `mulberry32`, `bootstrapDelta`, `decidePromotion`, `assembleCompoundingReport` | Pure learning-loop payoff engine behind `dz compounding`: seeded deterministic bootstrap (conservative nearest-rank lower-95), promotion that refuses non-finite/malformed input and anything under 5 samples per arm, and dz-native measurements (pool write-only ratio, guard trajectory by RATE, replay readiness over unique untruncated prompt events). A gate without data says INSUFFICIENT_DATA — never a verdict. Compaction keeps the newest query-bearing rows verbatim and aggregates ONLY the rest (read totals are invariant across compactions) |
18
+ | `compounding` | `mulberry32`, `bootstrapDelta`, `decidePromotion`, `assembleCompoundingReport` | Pure learning-loop payoff engine behind `dz compounding`: seeded deterministic bootstrap (conservative nearest-rank lower-95), promotion that refuses non-finite/malformed input and anything under 5 samples per arm, and dz-native measurements (pool write-only ratio, guard trajectory by RATE, replay readiness over unique untruncated prompt events). A gate without data says INSUFFICIENT_DATA — never a verdict. Compaction keeps the newest query-bearing rows verbatim and aggregates ONLY the rest (read totals are invariant across compactions). Also reports EVENT-CHAIN health of the evidence logs it computed from (`evidenceLogs` in, `instrumentation.chains` out) — verified / defect kinds / uncovered pre-chain prefix, with no logs handed in producing no line at all rather than a vacuous "clean" |
19
+ | `event-chain` | `fnv1a32`, `nextChainFields`, `appendChainedLines`, `chainRewrite`, `guardedRewrite`, `verifyEventChain`, `EVENT_CHAIN_SCOPE` | Pure hash-chain over the two learning-evidence logs (`.dz/recall-usage.jsonl`, `.dz/guard-audit.jsonl`): each appended record carries `seq` + `prevHash` (FNV-1a over the previous line AS WRITTEN, so key order cannot make writer and verifier disagree), derived from the LAST LINE ONLY so a per-prompt hook stays O(1). `verifyEventChain` names eight classes — `BrokenLink`, `DuplicateSeq`, `NonMonotonicSeq`, `TornTail`, `DoubleCounted`, `LedgerImbalance`, `MalformedLedger`, `ClaimInterrupted`. The last four exist because a rewriter must not be able to certify itself: the compaction ledger's arithmetic (`Σ weight + dropped === source`, `dropped ∈ [0, source]`) is enforced with NO clamps in the verifier (the clamp belongs to the writer), a damaged ledger line is a defect rather than a silently-disabled check, and a claim that never reached its `throughSeq` — because the segment restarted or the file ended — is reported instead of escaping through the discontinuity. `guardedRewrite` is the concurrency guard for any whole-file rewrite: exclusive lock, plus a re-read of the live file after computing the new text and BEFORE the rename, so a concurrent append aborts the attempt and is folded into a bounded retry rather than overwritten (it narrows the read→rename window; it cannot close it, and says so). Records written before chaining existed stay LEGAL and are counted as an uncovered `preChainPrefix`; an unreadable tail never blocks a write (fresh MARKED segment — an unreadable tail WINDOW is distinguished from an empty file — and the appender starts on a new line so one torn write cannot eat the next record); an unmarked restart is reported once and then re-anchored, so one incident is one defect instead of a cascade. HONEST SCOPE, carried in every result and printed by every surface: corruption detection for our own bugs — FNV-1a is not cryptography, its collisions are constructible, the threat model has no adversary, and a regression test fails if the module regrows tamper-proofing vocabulary |
19
20
  | `operations` | `runInit`, `runSync`, `runVerify`, `runDoctor` | The harness operations, returning structured reports |
20
21
  | `release` | `collectPackageFacts`, `selectAffectedPackages`, `planReleaseGates`, `classifyGateExecutions`, `buildFailureIssue`, `firstOutputLine` | Pure verified-release engine behind `dz release`: plans 4 HARD gates (tests / `pnpm audit --prod` / `node --check` / bin smoke-boot) as DATA and classifies injected results fail-closed — an unbuilt package (declared `build` script, no dist JS) is a `MISSING_DIST` failure, a template-only pack is a named `SKIP_NO_ARTIFACTS` skip, `selectAffectedPackages` fail-opens to the full set when the changed-file list is unavailable |
21
22
  | `parity` | `TARGET_CAPABILITIES`, `PARITY_FEATURES`, `computeParity`, `buildParityMatrix` | Declarative target-parity model behind `dz parity`: verified capability flags per target × feature FORMS with requirements; the feature×target matrix is always COMPUTED (never hand-written), and the model must classify exactly `TARGET_NAMES` — an unclassified new target refuses to compile |
@@ -75,11 +75,23 @@ export interface GuardEvent {
75
75
  readonly verdict: string;
76
76
  readonly rules: readonly string[];
77
77
  }
78
+ /**
79
+ * A raw evidence log, handed over verbatim so the chain verdict has exactly ONE definition
80
+ * (`verifyEventChainText`) instead of a CLI-side copy that can drift from it — the drift class this
81
+ * repo keeps catching. Absent ⇒ the report simply has no chain line.
82
+ */
83
+ export interface EvidenceLogFact {
84
+ /** Display label, e.g. `.dz/recall-usage.jsonl`. */
85
+ readonly log: string;
86
+ readonly text: string;
87
+ }
78
88
  export interface CompoundingFacts {
79
89
  readonly lessons: readonly LessonRow[];
80
90
  readonly usage: readonly UsageEvent[];
81
91
  readonly guard: readonly GuardEvent[];
82
92
  readonly nowTs: string;
93
+ /** The evidence logs themselves — verified as hash chains (feature event-chain, ADR-001). */
94
+ readonly evidenceLogs?: readonly EvidenceLogFact[];
83
95
  }
84
96
  export interface PoolPayoff {
85
97
  readonly total: number;
@@ -112,11 +124,26 @@ export interface ReplayReadiness {
112
124
  readonly verdict: ReadinessVerdict;
113
125
  readonly note: string;
114
126
  }
127
+ /** Per-log chain health — an INSTRUMENTATION fact about the evidence, not a learning verdict. */
128
+ export interface EvidenceChainHealth {
129
+ readonly log: string;
130
+ readonly ok: boolean;
131
+ readonly chained: number;
132
+ /** Records written before chaining existed: LEGAL, and honestly reported as uncovered. */
133
+ readonly preChainPrefix: number;
134
+ readonly defects: number;
135
+ readonly defectKinds: readonly string[];
136
+ }
115
137
  export interface InstrumentationHealth {
116
138
  readonly lastUsageTs: string | null;
117
139
  readonly gapDays: number | null;
118
140
  /** True when the newest usage record is recent enough to trust the leg is alive. */
119
141
  readonly applyLegLive: boolean;
142
+ /** One entry per evidence log handed in. Empty when no logs were provided. */
143
+ readonly chains: readonly EvidenceChainHealth[];
144
+ /** True when every provided log verifies. Vacuously true when none were provided — that is why
145
+ * {@link EvidenceChainHealth} carries the counts: "no logs" must not read like "all clean". */
146
+ readonly chainsOk: boolean;
120
147
  }
121
148
  export interface CompoundingReport {
122
149
  readonly pool: PoolPayoff;
@@ -1 +1 @@
1
- {"version":3,"file":"compounding.d.ts","sourceRoot":"","sources":["../src/compounding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compounding.d.ts","sourceRoot":"","sources":["../src/compounding.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@
14
14
  *
15
15
  * Everything here is PURE: callers gather facts (files, store rows); this module only computes.
16
16
  */
17
+ import { EVENT_CHAIN_SCOPE, verifyEventChainText } from './event-chain.js';
17
18
  // ── Seeded statistics (verbatim-shape port from darwin-mode bench/stats.ts) ──
18
19
  /** Deterministic PRNG — same seed, same stream, byte-identical reports. */
19
20
  export function mulberry32(seed) {
@@ -188,10 +189,25 @@ export function assembleCompoundingReport(facts) {
188
189
  const CLOCK_SKEW_MS = 60_000;
189
190
  const gapMs = lastUsage && Number.isFinite(nowMs) ? nowMs - lastUsage.ms : null;
190
191
  const gapValid = gapMs !== null && gapMs >= -CLOCK_SKEW_MS;
192
+ // 4b. Evidence-chain health. The numbers above are only worth as much as the log they came from,
193
+ // and a compaction bug already inflated that log once (2 → 4 → 6, fixed 2026-07-28).
194
+ const chains = (facts.evidenceLogs ?? []).map((f) => {
195
+ const v = verifyEventChainText(typeof f.text === 'string' ? f.text : '');
196
+ return {
197
+ log: f.log,
198
+ ok: v.ok,
199
+ chained: v.chained,
200
+ preChainPrefix: v.preChainPrefix,
201
+ defects: v.defects.length,
202
+ defectKinds: [...new Set(v.defects.map((d) => d.kind))],
203
+ };
204
+ });
191
205
  const instrumentation = {
192
206
  lastUsageTs: lastUsage?.ts ?? null,
193
207
  gapDays: gapValid ? Math.max(0, Math.floor(gapMs / 86_400_000)) : null,
194
208
  applyLegLive: gapValid && gapMs <= APPLY_LEG_STALE_DAYS * 86_400_000,
209
+ chains,
210
+ chainsOk: chains.every((c) => c.ok),
195
211
  };
196
212
  const improvedRules = trajectory.filter((t) => t.improved).length;
197
213
  const verdict = [
@@ -199,6 +215,13 @@ export function assembleCompoundingReport(facts) {
199
215
  trajectory.length > 0 ? `guard: ${improvedRules}/${trajectory.length} rules recur less in the later half` : 'guard: not enough history',
200
216
  `cold-vs-warm: ${replay.verdict === 'insufficient-data' ? 'INSUFFICIENT DATA (accruing)' : 'READY to measure'}`,
201
217
  instrumentation.applyLegLive ? 'apply leg: live' : 'apply leg: STALE — fix the instrumentation before trusting anything above',
218
+ ...(chains.length === 0
219
+ ? []
220
+ : [
221
+ instrumentation.chainsOk
222
+ ? 'evidence chain: verified'
223
+ : 'evidence chain: CORRUPT — the numbers above are computed from a damaged log',
224
+ ]),
202
225
  ].join(' · ');
203
226
  return { pool, guardTrajectory: trajectory, replay, instrumentation, verdict };
204
227
  }
@@ -223,6 +246,12 @@ export function renderCompoundingReport(r) {
223
246
  out.push(` INSTRUMENTATION: last apply-leg record ${r.instrumentation.lastUsageTs ?? 'never'}` +
224
247
  (r.instrumentation.gapDays !== null ? ` (${r.instrumentation.gapDays}d ago)` : '') +
225
248
  ` — ${r.instrumentation.applyLegLive ? 'live' : 'STALE'}`);
249
+ for (const c of r.instrumentation.chains) {
250
+ out.push(` EVIDENCE CHAIN ${c.log}: ${c.ok ? 'verified' : `FAILED — ${c.defects} defect(s) [${c.defectKinds.join(', ')}]`}` +
251
+ ` · ${c.chained} chained · ${c.preChainPrefix} pre-chain (uncovered)`);
252
+ }
253
+ if (r.instrumentation.chains.length > 0)
254
+ out.push(` scope: ${EVENT_CHAIN_SCOPE}`);
226
255
  out.push('');
227
256
  out.push(` VERDICT: ${r.verdict}`);
228
257
  return out.join('\n');
@@ -1 +1 @@
1
- {"version":3,"file":"compounding.js","sourceRoot":"","sources":["../src/compounding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compounding.js","sourceRoot":"","sources":["../src/compounding.ts"],"names":[],"mappings":"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"}