@dzhechkov/keysarium 1.7.12 → 1.7.13

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": "0da5eb80b9be5aaadbc333ac83ba3aa9bd466cf548e52ae377576e17315a391c"
12
+ "sha256": "399f8032d0723d371c63c4d94d351614f4a2e11865a6475ab3f1db5c02e45058"
13
13
  },
14
14
  {
15
15
  "path": "README.ru.md",
@@ -21,7 +21,7 @@
21
21
  },
22
22
  {
23
23
  "path": "package.json",
24
- "sha256": "5e602e8a73b42ba0fc9b449958e25a4f6730b3ec03cb301de4797b394a0eb9ab"
24
+ "sha256": "3ab5dc27c4025613b6d9d9c5932eff6ef31927190723f63a8fd32b68e462050b"
25
25
  },
26
26
  {
27
27
  "path": "src/cli.js",
@@ -393,7 +393,7 @@
393
393
  },
394
394
  {
395
395
  "path": "templates/.claude/skills/feature-adr/modules/08-qe.md",
396
- "sha256": "759e67695b5761ff5a80e0aa89dccf18d38807063c7d911f3a80fe03bd56b82a"
396
+ "sha256": "e2fb5fb869005b05d13fcc52da7ded281bb6758250a1cdf695dace286029d791"
397
397
  },
398
398
  {
399
399
  "path": "templates/.claude/skills/feature-adr/modules/09-fleet-qe.md",
@@ -497,7 +497,7 @@
497
497
  },
498
498
  {
499
499
  "path": "templates/.claude/skills/feature-adr/scripts/check-review-convergence.mjs",
500
- "sha256": "e903d0eb52a126db98a70d3851d3ed630598d10e843164683d6e48b29c93ff64"
500
+ "sha256": "6fdacc0ee6c1d2b00029da8d300a574c051895ee98a9c88c9509a39b9bdccc71"
501
501
  },
502
502
  {
503
503
  "path": "templates/.claude/skills/feature-adr/scripts/markdown-masker.mjs",
@@ -1005,5 +1005,5 @@
1005
1005
  }
1006
1006
  ]
1007
1007
  },
1008
- "signature": "e6DEbQ+EkBR8BvLrXC2dvo75iRBq/pS+F8XlSC6fmgKU3X7zs39Kdtr51+H8edGEeI/eAF6Um0MZvdTiotM9AQ=="
1008
+ "signature": "IuyuSO5ojzp0YmewWW4Kmtn854zfx7p7vZmpVXBpzSnV7G24mTKKMJk2QAv0GjtLp9kfiiWwy0WkecuW7nPdCQ=="
1009
1009
  }
package/README.md CHANGED
@@ -2,8 +2,10 @@
2
2
 
3
3
  The bundled Feature ADR projection supports installed-CLI native QE history opt-in with a fixed three-cycle ceiling and explicit repair. Its canonical helper/guidance remain synchronized; compatible core/CLI capabilities are required, and historical bridge behavior remains available.
4
4
 
5
+ If bytes change before first evaluation, native `evaluate` retains valid old-snapshot receipt origins and conditions while reporting `not-established/native-repair-required`. Follow with explicit `begin-repair` and fresh independent verification of the new snapshot. Recovery preserves authority and the three-cycle ceiling; old evidence never closes changed bytes.
5
6
 
6
- Current package version: `1.7.12`. <!-- dz:version -->
7
+
8
+ Current package version: `1.7.13`. <!-- dz:version -->
7
9
 
8
10
  Site: https://aicoding.space · Source: https://github.com/djd1m/dz-harness/tree/main/packages/@dzhechkov/keysarium
9
11
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dzhechkov/keysarium",
3
- "version": "1.7.12",
3
+ "version": "1.7.13",
4
4
  "scripts": {},
5
5
  "description": "AI Case Research Toolkit for Claude Code — full 7-phase pipeline with feature-adr, dream cycles, background workers, multi-platform support, reward learning, and Cloud.ru AI Factory mapping (--ai-factory flag)",
6
6
  "main": "src/cli.js",
package/sbom.json CHANGED
@@ -25,7 +25,7 @@
25
25
  "hashes": [
26
26
  {
27
27
  "alg": "SHA-256",
28
- "content": "0da5eb80b9be5aaadbc333ac83ba3aa9bd466cf548e52ae377576e17315a391c"
28
+ "content": "399f8032d0723d371c63c4d94d351614f4a2e11865a6475ab3f1db5c02e45058"
29
29
  }
30
30
  ]
31
31
  },
@@ -59,7 +59,7 @@
59
59
  },
60
60
  {
61
61
  "name": "dz:canonical-json-sha256-v2",
62
- "value": "5e602e8a73b42ba0fc9b449958e25a4f6730b3ec03cb301de4797b394a0eb9ab"
62
+ "value": "3ab5dc27c4025613b6d9d9c5932eff6ef31927190723f63a8fd32b68e462050b"
63
63
  }
64
64
  ]
65
65
  },
@@ -989,7 +989,7 @@
989
989
  "hashes": [
990
990
  {
991
991
  "alg": "SHA-256",
992
- "content": "759e67695b5761ff5a80e0aa89dccf18d38807063c7d911f3a80fe03bd56b82a"
992
+ "content": "e2fb5fb869005b05d13fcc52da7ded281bb6758250a1cdf695dace286029d791"
993
993
  }
994
994
  ]
995
995
  },
@@ -1249,7 +1249,7 @@
1249
1249
  "hashes": [
1250
1250
  {
1251
1251
  "alg": "SHA-256",
1252
- "content": "e903d0eb52a126db98a70d3851d3ed630598d10e843164683d6e48b29c93ff64"
1252
+ "content": "6fdacc0ee6c1d2b00029da8d300a574c051895ee98a9c88c9509a39b9bdccc71"
1253
1253
  }
1254
1254
  ]
1255
1255
  },
@@ -12,6 +12,8 @@ Bind the actual selected families and use the returned full roster, nonce and re
12
12
 
13
13
  Native history fixes the ceiling at three witnessed cycles, including partial and unresolved originating reviews. Multiple roles, fallback, repeated prepare/evaluate and restart share one cycle. Prepare may refresh artifacts before a review originates. After witnessing, a measured code/design change requires explicit `--action begin-repair` with the actual roster before another review; unchanged third-cycle completion may finish, while a fourth opening is refused. The ceiling applies to formal feature review as well as focused roles. Do not evade it by changing family, host, source or nonce. No-verdict attempts are reported separately. Native `--ceiling` is refused.
14
14
 
15
+ If bytes change after an independent receipt arrives but before its first evaluation, call `--action evaluate` to retain the receipt's valid origins and conditions against its admitted old snapshot. The result remains `not-established` with `native-repair-required`; it never closes current bytes or the historical checkpoint. Then call `--action begin-repair` with the actual roster and obtain fresh independent verification of the new snapshot, including the author delta and original conditions. A missing or invalid origin cannot witness a cycle or authorize repair. Keep the surviving receipt and native authority intact through recovery.
16
+
15
17
  Omit `--action` for read-only native reporting; omitted `--source` retains the historical bridge reader. Locally bound native/bridge collisions refuse either selection with both locations rather than unioning or resetting. A reviewed legacy QE host cannot retrospectively initialize a zero history. Initial admission allows only the documented surviving-evidence matrix; parseable ideation state alone is permitted.
16
18
 
17
19
  The helper runs at most four Git calls before locking (2s and 4 MiB per call), then rechecks bounded authoritative bytes, index, directory candidates and known artifacts in one short directory-lock transaction. Limits are 256 artifact paths, 2 MiB per artifact, 16 MiB aggregate artifacts, 256 KiB host/receipt/head, 2 MiB checkpoints, a separate 4 MiB index metadata fence, 8 MiB journal, 1024 events and 256 directory candidates. The 2s monotonic budget is checked before authoritative writes; lock stale/timeout are explicitly 30s/5s. Returned late I/O refuses, but synchronous I/O cannot be interrupted. This fenced observation does not serialize arbitrary external editors or prove reviewer authenticity or deletion of all writable evidence. Commit failures preserve paths and report possible partial writes; never delete authority or reconstruct zero to resume.
@@ -455,16 +455,21 @@ export function runNativeReviewGate({ action, repo, feature, reviewers, api }) {
455
455
  if (action === 'prepare' && host && host.snapshot.revision !== revision && (active?.witnessed || priorOrigins)) throw Error('native-repair-required')
456
456
  if (action === 'evaluate') {
457
457
  if (!active || !host) throw Error('native-prepare-required')
458
- if (!same(manifest, host.snapshot.manifest)) throw Error('native-repair-required')
459
- const origins = nativeReceipt(host, receipt, manifest)
460
- let verdict = receipt === null ? result('qe', 'not-established', revision, [receiptProblem || 'reviewer-receipt-missing']) : evaluateReviewConvergence(host, receipt, manifest)
458
+ const drift = !same(manifest, host.snapshot.manifest)
459
+ // A surviving receipt may witness admitted A after bytes become B. It cannot
460
+ // accept B: retain A and its origins, then require a separate begin-repair.
461
+ // Current bytes still participate in the observation digest and every fence.
462
+ const origins = priorOrigins
463
+ let verdict = drift ? result('qe', 'not-established', host.snapshot.revision, ['native-repair-required'])
464
+ : receipt === null ? result('qe', 'not-established', revision, [receiptProblem || 'reviewer-receipt-missing']) : evaluateReviewConvergence(host, receipt, manifest)
461
465
  // Closure is deliberately stronger than originating partial/unresolved evidence.
462
466
  if (verdict.verdict === 'closed' && checkpoint && !checkpointClosure) verdict = result('qe', 'not-established', revision, ['historical-checkpoint-own-verification-missing'])
463
467
  const preserved = new Map(host.conditions.map(c => [c.id, c]))
464
468
  if (origins) {
465
469
  for (const r of receipt.reviews) for (const c of r.conditions.concat(r.newRisks.conditions)) preserved.set(c.id, c)
466
- if (receipt.author) for (const c of receipt.author.newRisks.conditions) if (c.scope.every(path => manifest.some(p => p.path === path))) preserved.set(c.id, c)
470
+ if (receipt.author) for (const c of receipt.author.newRisks.conditions) if (c.scope.every(path => host.snapshot.manifest.some(p => p.path === path))) preserved.set(c.id, c)
467
471
  }
472
+ if (drift) verdict.unresolved = [...preserved.keys()]
468
473
  if (verdict.verdict === 'closed' && checkpointClosure) verdict = { ...verdict, checkpointClosure }
469
474
  const next = { ...host, conditions: [...preserved.values()], reviewSeen: host.reviewSeen || Boolean(origins), changedPaths: verdict.verdict === 'closed' ? [] : host.changedPaths }
470
475
  return { host: next, snapshot: host.snapshot, origins: origins || [], receiptDigest: observed[1] === null ? null : digest(observed[1]), reason: origins ? null : verdict.reasons[0] || 'native-no-valid-origin', observationDigest, result: verdict, admission: false }