@dzhechkov/keysarium 1.7.10 → 1.7.11

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": "10e8e4f470823f26d20a8cb4b5680dde97fd9654f9545b81de099405bd2dba32"
12
+ "sha256": "a81456ef7ae79788d7859aab9a2238c541bb61a41b9d289a27ae6992119538db"
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": "fec2ebcb8a572ee95f1ac5b41264933d853a01d96b85a826e208a7bf4b49da1b"
24
+ "sha256": "844c32f67fc8ed8099a388aa53f597a100371c6a693d4b99730a5808593a4843"
25
25
  },
26
26
  {
27
27
  "path": "src/cli.js",
@@ -389,7 +389,7 @@
389
389
  },
390
390
  {
391
391
  "path": "templates/.claude/skills/feature-adr/modules/07-code.md",
392
- "sha256": "db79f8d026cc47edd1e5d2f30d0e1455c55c570dd022d549d440985a3e5940a5"
392
+ "sha256": "d5c03890b2b3a34277c73a14d3d7c97741dec1d6c382e87ee4cc6a5a52d938d7"
393
393
  },
394
394
  {
395
395
  "path": "templates/.claude/skills/feature-adr/modules/08-qe.md",
@@ -487,6 +487,10 @@
487
487
  "path": "templates/.claude/skills/feature-adr/scripts/build-coder-context.mjs",
488
488
  "sha256": "19c3991bfb5e88205c9ff6d4d44037c136a190581bab199d3928196e4616fe15"
489
489
  },
490
+ {
491
+ "path": "templates/.claude/skills/feature-adr/scripts/check-code-targets.mjs",
492
+ "sha256": "bfbad12b54508d5d4c71de640c5e19b3d19317f660e2986d02338ef502f8007e"
493
+ },
490
494
  {
491
495
  "path": "templates/.claude/skills/feature-adr/scripts/check-plan-completeness.mjs",
492
496
  "sha256": "8b93949ce4f671d932c5389050db3a3e2750efcbed69681d69f392ccf4d2a168"
@@ -1001,5 +1005,5 @@
1001
1005
  }
1002
1006
  ]
1003
1007
  },
1004
- "signature": "wfYnIS4MAw7T3m282RmpXCeIUVVAi+TDfNI4DmRaHJEy3h/gpJdtlv1TMTRz6dVfMA0fOcxZrJKWBXO+JFEcCg=="
1008
+ "signature": "p0J0fnCC54JAc14pg5UuIgUGtG8u7YLxPlBS6YEXl4qUf5yCqWGZ4g6Bs2Tz8XSfIg1uHkBkAAczkeGaKeBeBw=="
1005
1009
  }
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @dzhechkov/keysarium
2
2
 
3
- Current package version: `1.7.10`. <!-- dz:version -->
3
+ Current package version: `1.7.11`. <!-- dz:version -->
4
4
 
5
5
  Site: https://aicoding.space · Source: https://github.com/djd1m/dz-harness/tree/main/packages/@dzhechkov/keysarium
6
6
 
@@ -70,6 +70,11 @@ After installation, open Claude Code in your project directory and start using s
70
70
 
71
71
  ## What You Get
72
72
 
73
+ MEASURED package inventory from `npm pack --dry-run --json` in this package directory.
74
+ Skills are `templates/.claude/skills/*/SKILL.md`; commands are Markdown files in
75
+ `templates/.claude/commands/`. Rules, shards and agent templates are beneath `templates/.claude/`; the library is
76
+ `templates/lib/` and optional documentation is `templates/docs/`. Counts describe bundled files,
77
+ not execution results.
73
78
  | Component | Count | Description |
74
79
  |-----------|-------|-------------|
75
80
  | **Skills** | 12 | `explore`, `frontend-design`, `goap-research-ed25519`, `presentation-storyteller`, `problem-solver-enhanced`, `reverse-engineering-unicorn`, `knowledge-extractor`, `ai-factory-mapper`, `analyst-manual-full`, `edu-site-generator`, `transcript-site-generator`, `feature-adr` |
@@ -84,9 +89,10 @@ After installation, open Claude Code in your project directory and start using s
84
89
  Everything is installed into your project's `.claude/` directory and works natively with Claude Code.
85
90
 
86
91
  > Counts above are MEASURED from the shipped `templates/` tree — reproducer:
87
- > `npx @dzhechkov/keysarium init --dry-run` (the install plan prints the same numbers, computed at
88
- > runtime) or, on a real install, `npx @dzhechkov/keysarium list`. If a count here disagrees with the
89
- > CLI, trust the CLI — it counts files, this table is hand-written.
92
+ > `npx @dzhechkov/keysarium init --dry-run --with-docs` prints these component counts, including
93
+ > optional documentation. On an installed project, `npx @dzhechkov/keysarium list` reports recursive
94
+ > file totals; its skills row counts skill assets, not skill directories, so its units differ from
95
+ > this table. Compare matching units when checking an installed project.
90
96
 
91
97
  ---
92
98
 
@@ -245,7 +251,9 @@ The toolkit automatically detects the domain from the case description and appli
245
251
  - Visual palette: Blue / Navy / Silver
246
252
 
247
253
  ### Retail / E-commerce
248
- - Latency budget: < 200ms for real-time recommendations
254
+ - ESTIMATED example design target: response latency below 200 ms for real-time recommendations.
255
+ This is a planning constraint for a retail case, not measured Keysarium performance; validate it
256
+ against the proposed system and its workload.
249
257
  - A/B testing as primary validation method
250
258
  - Personalization vs. privacy balance (GDPR / FZ-152)
251
259
  - Seasonality and cold-start handling
@@ -530,3 +538,15 @@ Before fallback, host prepare retains independently written pending receipt find
530
538
  After a reviewed artifact is renamed or removed, convergence keeps its previously host-bound condition scope in the measured manifest; an absent old path has a null digest. Current discovered paths remain measured. Both prepare and evaluate validate the retained snapshot and reject unbound or unsafe scope paths. The original condition and originating reviewer verification remain required; a rename alone does not close a finding.
531
539
 
532
540
  QE also measures the exact `.dz/guard.json` policy configuration when it is in the current Git index or selected review base. This includes newly staged and intent-to-add files; base-tracked deletions retain a null digest. Both declared targets and discovered changes use this rule. Untracked files absent from that base do not qualify through older history. Other `.dz/` runtime files remain excluded, and existing path, symlink, freshness and reviewer-ownership checks still apply.
541
+
542
+ ### Pre-code target admission
543
+
544
+ Step 7 now runs the installed read-only `scripts/check-code-targets.mjs` before literal context,
545
+ code-cache lookup or any coder route, on every entry including auto/force resume. It reuses the
546
+ colocated review manifest authority: strict targets, circular exclusions, discovered source changes,
547
+ path/Git safety and the exact `.dz/guard.json` index-or-selected-base exception are unchanged.
548
+ Missing planned files remain admissible. Workflow requires admitted JSON plus the actual producer's
549
+ terminal `RC_EXIT:0` witness; failure refuses coding/cache access. Admission preserves review state
550
+ and existing `.fa-state/base-ref` (HEAD only when absent); actual coder initialization never resets
551
+ an existing base. Plain uses the same executable helper and mandatory instructions, without an
552
+ automatic dispatcher. Admission observes current bytes; final QE remains the freshness check.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dzhechkov/keysarium",
3
- "version": "1.7.10",
3
+ "version": "1.7.11",
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": "10e8e4f470823f26d20a8cb4b5680dde97fd9654f9545b81de099405bd2dba32"
28
+ "content": "a81456ef7ae79788d7859aab9a2238c541bb61a41b9d289a27ae6992119538db"
29
29
  }
30
30
  ]
31
31
  },
@@ -59,7 +59,7 @@
59
59
  },
60
60
  {
61
61
  "name": "dz:canonical-json-sha256-v2",
62
- "value": "fec2ebcb8a572ee95f1ac5b41264933d853a01d96b85a826e208a7bf4b49da1b"
62
+ "value": "844c32f67fc8ed8099a388aa53f597a100371c6a693d4b99730a5808593a4843"
63
63
  }
64
64
  ]
65
65
  },
@@ -979,7 +979,7 @@
979
979
  "hashes": [
980
980
  {
981
981
  "alg": "SHA-256",
982
- "content": "db79f8d026cc47edd1e5d2f30d0e1455c55c570dd022d549d440985a3e5940a5"
982
+ "content": "d5c03890b2b3a34277c73a14d3d7c97741dec1d6c382e87ee4cc6a5a52d938d7"
983
983
  }
984
984
  ]
985
985
  },
@@ -1223,6 +1223,16 @@
1223
1223
  }
1224
1224
  ]
1225
1225
  },
1226
+ {
1227
+ "type": "file",
1228
+ "name": "templates/.claude/skills/feature-adr/scripts/check-code-targets.mjs",
1229
+ "hashes": [
1230
+ {
1231
+ "alg": "SHA-256",
1232
+ "content": "bfbad12b54508d5d4c71de640c5e19b3d19317f660e2986d02338ef502f8007e"
1233
+ }
1234
+ ]
1235
+ },
1226
1236
  {
1227
1237
  "type": "file",
1228
1238
  "name": "templates/.claude/skills/feature-adr/scripts/check-plan-completeness.mjs",
@@ -26,6 +26,40 @@ opus (complex code generation)
26
26
 
27
27
  ### 1. Pre-Implementation Checklist
28
28
 
29
+ ### Current target admission (before any coding)
30
+
31
+ After prerequisite gates complete, and on **every** Step-7 entry (including auto/force resume),
32
+ run the installed `scripts/check-code-targets.mjs` beside this module **before** context assembly,
33
+ code-cache lookup, delegation or in-session edits. Set `TARGET_HELPER` to that installation's
34
+ absolute helper path, `EXECUTION_PROJECT` to the absolute execution repository root, and
35
+ `FEATURE_DIR` to its absolute `features/<slug>` directory:
36
+
37
+ ```bash
38
+ node "$TARGET_HELPER" --repo "$EXECUTION_PROJECT" --feature "$FEATURE_DIR"
39
+ ```
40
+
41
+ Require the actual command exit 0 and exactly one `fa-code-targets-1` JSON document with
42
+ `status: "admitted"`, a SHA-256 `manifestDigest` and empty `reasons`. Any missing/broken helper,
43
+ command failure, refused/unavailable status or malformed/contradictory output stops coding and
44
+ cache access; repair the named cause first. Do not substitute a narrated success or saved admission.
45
+ For a host relay, the shell must capture the producer's exit immediately and append one terminal
46
+ `RC_EXIT:<integer>` line; Workflow requires both admitted JSON and observed `RC_EXIT:0` and refuses
47
+ missing/duplicate/conflicting witnesses. Keep stderr separate from the bounded relay.
48
+
49
+ The helper only calls the colocated review checker's `measureManifest(repo, feature, 'qe')`.
50
+ Its strict `- ` target grammar, circular-root exclusions, discovered changed/untracked paths,
51
+ filesystem/Git safety and exact `.dz/guard.json` index-or-selected-base authority remain unchanged.
52
+ K2 remains an additional legacy Markdown-friendly check; admission does not normalize its bullets
53
+ or backticks. Planned missing files/deletions can have null digests. The admission digest records
54
+ this observation, not QE approval or a replacement cache key. Admission never prepares/evaluates
55
+ review lineage or writes source, receipts or `.fa-state`.
56
+
57
+ The selected baseline is existing `.fa-state/base-ref`, otherwise HEAD. Before actual coding,
58
+ initialize HEAD only if that base file is absent; preserve an existing original selection through
59
+ retries/re-entry. Refuse a failed initialization before edits. Admission does not initialize it.
60
+ This is executable Plain guidance with mandatory orchestration, not an automatic Plain dispatcher.
61
+ An unrelated process can change source after admission; ordinary final QE still checks freshness.
62
+
29
63
  ### Current literal context (plain and delegated coding)
30
64
 
31
65
  Before coding or delegating, run the installed helper beside this module. Set `CONTEXT_HELPER` to
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env node
2
+ // Read-only current source admission. This is neither a QE receipt nor a cache key.
3
+ import { createHash } from 'node:crypto'
4
+ import { realpathSync } from 'node:fs'
5
+ import { resolve } from 'node:path'
6
+ import { measureManifest } from './check-review-convergence.mjs'
7
+
8
+ const schema = 'fa-code-targets-1'
9
+ let result
10
+ try {
11
+ const args = process.argv.slice(2)
12
+ if (args.length !== 4 || args[0] !== '--repo' || !args[1] || args[2] !== '--feature' || !args[3]) throw Error('invalid-arguments: expected --repo <project> --feature <feature>')
13
+ // Match the checker: real execution root, feature resolved from that root, then
14
+ // its own inside-repo/path/Git checks. Do not reinterpret feature from cwd.
15
+ const repo = realpathSync(args[1])
16
+ const feature = resolve(repo, args[3])
17
+ const manifest = measureManifest(repo, feature, 'qe')
18
+ result = { schema, status: 'admitted', manifestDigest: createHash('sha256').update(JSON.stringify(manifest)).digest('hex'), reasons: [] }
19
+ } catch (error) {
20
+ // execFileSync errors include raw subprocess output in message. Keep that out
21
+ // of the wire; ordinary checker diagnostics are bounded and carry no contents.
22
+ const reason = error && (error.stdout !== undefined || error.stderr !== undefined)
23
+ ? 'git-evidence-unavailable: exit=' + String(error.status ?? error.code ?? 'unknown')
24
+ : String(error?.message || 'measurement-unavailable').slice(0, 4096)
25
+ result = { schema, status: 'refused', manifestDigest: null, reasons: [reason] }
26
+ }
27
+ process.stdout.write(JSON.stringify(result) + '\n')
28
+ process.exitCode = result.status === 'admitted' ? 0 : 1