@dzhechkov/keysarium 1.7.6 → 1.7.7

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
@@ -17,7 +17,7 @@
17
17
  },
18
18
  {
19
19
  "path": "package.json",
20
- "sha256": "67d60a0ad58316ec7c0cd264683d6d17e5fe7f33c746f151b95c0def597037d6"
20
+ "sha256": "85ee0ef212bb69ac511c116c59e09244ca872d47a017cfa2a8e1c6dce66a99dc"
21
21
  },
22
22
  {
23
23
  "path": "src/cli.js",
@@ -389,7 +389,7 @@
389
389
  },
390
390
  {
391
391
  "path": "templates/.claude/skills/feature-adr/modules/08-qe.md",
392
- "sha256": "7973676cc9a5a6d8429c0bcdbe163bb5dc16e2d2f28a72698e44ad72d234e199"
392
+ "sha256": "7ab9b7b1523289986a1f51b4cbbebf4410d96ad4a153f22fa8613e8a0f4f5fa7"
393
393
  },
394
394
  {
395
395
  "path": "templates/.claude/skills/feature-adr/modules/09-fleet-qe.md",
@@ -989,5 +989,5 @@
989
989
  }
990
990
  ]
991
991
  },
992
- "signature": "Ld7xkqWgfHmJp0Xv+wKYPylP5opGZmCfibsIDam0NS90aZ6R9oLfJVeRljITB25umc7/zHZMW1MWLbMornUgDQ=="
992
+ "signature": "ZZFB7zXTZDB63ZrEzOczGdfH+uLbNRErmZNCPYwG3gYx5r7uI7aS2JjQG4eUkwKpELo28Jj20t6k9lvh2ejMAw=="
993
993
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dzhechkov/keysarium",
3
- "version": "1.7.6",
3
+ "version": "1.7.7",
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
@@ -49,7 +49,7 @@
49
49
  },
50
50
  {
51
51
  "name": "dz:canonical-json-sha256-v2",
52
- "value": "67d60a0ad58316ec7c0cd264683d6d17e5fe7f33c746f151b95c0def597037d6"
52
+ "value": "85ee0ef212bb69ac511c116c59e09244ca872d47a017cfa2a8e1c6dce66a99dc"
53
53
  }
54
54
  ]
55
55
  },
@@ -979,7 +979,7 @@
979
979
  "hashes": [
980
980
  {
981
981
  "alg": "SHA-256",
982
- "content": "7973676cc9a5a6d8429c0bcdbe163bb5dc16e2d2f28a72698e44ad72d234e199"
982
+ "content": "7ab9b7b1523289986a1f51b4cbbebf4410d96ad4a153f22fa8613e8a0f4f5fa7"
983
983
  }
984
984
  ]
985
985
  },
@@ -356,6 +356,41 @@ An empty (header-only) table is read as `hollow: true` — worse than no table a
356
356
  claims a ledger exists and says nothing. If there are no findings, omit the section entirely rather
357
357
  than writing an empty table.
358
358
 
359
+ ### 7.2 Ledger row for this QE step (mandatory)
360
+
361
+ Plain mode (this SKILL, not the ultracode `Workflow`) has no in-process `appendRunCostRow` — without
362
+ this step the QE instrument's own pass leaves ZERO trace in the run-cost ledger (aqe-ledger-row,
363
+ owner audit 17.09, decision #3).
364
+
365
+ **Resume guard — check this FIRST, before writing anything.** If QE was RESTORED from a checkpoint
366
+ for THIS run (`features/<slug>/.fa-state/checkpoints.jsonl` already contains a line for stage `qe`
367
+ that matches this run) — the row for this review was already written by the run that actually did
368
+ it. Do **NOT** run the command below in that case; instead write exactly this line into
369
+ `08_qe_report.md`: `qe ledger row skipped — stage resumed`. Writing the row anyway would double-pay
370
+ the same review in the ledger (aqe-ledger-row fix-round-1/#3, Codex r1 HIGH #3 — plain mode had no
371
+ resume guard at all before this).
372
+
373
+ Otherwise — QE ran fresh in this pass — after `08_qe_report.md` is written and the grade is final, run:
374
+
375
+ ```bash
376
+ dz feature-adr-record --kind ledger --stage qe --slug <slug> --row '<json>' --auto --json
377
+ ```
378
+
379
+ `<json>` carries the same fields the ultracode pipeline writes for this row: `reviewer` (the model
380
+ that reviewed, or `null` if unknown — never guessed), `reviewerFamily` (`claude`|`codex`|`null` when
381
+ the reviewer identity is not one of the two known families — never guessed as `claude`), `qeRole`
382
+ (`qe-code-reviewer` for a Claude reviewer; `codex-review`/`codex-exec` for a codex reviewer by scope
383
+ mode; `null` otherwise), `grade`, `gradeSource` (if known), `findings` (gap count), `findingsBySeverity`
384
+ (normalized `sev` -> count, unknown severities counted as `other`, never dropped), `findingsSource`
385
+ (`gaps` or `no-gaps-array`), `claimCheck` (if run), `crossFamily` (bool: reviewer family != coder
386
+ family — `null` when either family is unknown, since a same/cross-family verdict cannot be asserted
387
+ without both), `qeScope` (if the reviewer ran scoped, e.g. codex `mode`/`ref`/`files`). Insert the
388
+ writer's verdict (`{verdict:"written"|...}`) verbatim into `08_qe_report.md` so the record is
389
+ auditable from the artifact itself. NAMED LIMIT (layer 4 of the cost-of-detection ladder, said
390
+ honestly): this step is a skill instruction, not a code gate — nothing forces the agent to run it or
391
+ to check the resume guard first; only its PRESENCE in this module is deterministically pinned (grep
392
+ for the command above and for the resume-guard sentence).
393
+
359
394
  ### 8. QE Pattern Store (Direct Mode only)
360
395
 
361
396
  When `{AGENTIC_QE_MODE}` = `direct` | `direct-extended`, after the gap loop is closed and the verdict is set: