@dzhechkov/keysarium 1.5.28 β†’ 1.5.30

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/README.md CHANGED
@@ -29,6 +29,7 @@ After installation, open Claude Code in your project directory and start using s
29
29
  | Component | Count | Description |
30
30
  |-----------|-------|-------------|
31
31
  | **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` |
32
+ | | | *bundled `feature-adr` at pipeline v1.3.60: amendment-Confirmation discipline (AM-N β†’ named falsifying test), derived `🚦 Gates` checkpoint line, opt-in Step-10 Delivery Gate (4-plane post-implementation review)* |
32
33
  | **Commands** | 20 | `/casarium`, `/new-research`, `/parallel-research`, `/discovery`, `/explore-case`, `/research`, `/cjm-prototype`, `/solve`, `/architecture-phase`, `/presentation`, `/harvest`, `/brain-export`, `/brain-import`, `/bto-benchmark`, `/feature-adr`, `/init-platform`, `/learning-stats`, `/dream`, `/workers`, `/analyst-manual` |
33
34
  | **Rules** | 14 | `research-quality`, `checkpoint-protocol`, `agent-swarm`, `domain-specific`, `anti-patterns`, `file-conventions`, `modular-reuse`, `feedback-loops`, `model-routing`, `trust-tiers`, `background-workers`, `dream-cycles`, `reward-learning`, `feature-adr-conventions` |
34
35
  | **Shards** | 9 | Context shards for each phase: `phase-0-discovery`, `phase-1-explore`, `phase-2-research`, `phase-25-cjm`, `phase-3-solve`, `phase-4-architecture`, `phase-5-presentation`, `phase-ai-factory`, `feature-adr` |
package/bin/cli.js CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dzhechkov/keysarium",
3
- "version": "1.5.28",
3
+ "version": "1.5.30",
4
4
  "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)",
5
5
  "main": "src/cli.js",
6
6
  "bin": {
@@ -50,4 +50,4 @@
50
50
  "publishConfig": {
51
51
  "access": "public"
52
52
  }
53
- }
53
+ }
@@ -53,7 +53,8 @@ Trigger on:
53
53
  β”‚ β”œβ”€β”€ 06-implementation-plan.md ← Step 6: SPARC-GOAP planning (enhanced)
54
54
  β”‚ β”œβ”€β”€ 07-code.md ← Step 7: Code generation
55
55
  β”‚ β”œβ”€β”€ 08-qe.md ← Step 8: QE + brutal-honesty review (enhanced)
56
- β”‚ └── 09-fleet-qe.md ← Step 9: Fleet QE assessment (NEW)
56
+ β”‚ β”œβ”€β”€ 09-fleet-qe.md ← Step 9: Fleet QE assessment (NEW)
57
+ β”‚ └── 10-delivery-gate.md ← Step 10: Delivery Gate (opt-in, post-implementation)
57
58
  β”œβ”€β”€ references/
58
59
  β”‚ β”œβ”€β”€ complexity-matrix.md ← S/M/L/XL criteria & step activation
59
60
  β”‚ β”œβ”€β”€ adr-template.md ← ADR document template
@@ -140,6 +141,7 @@ Step | S | M | L | XL | Model | Agentic QE Skill
140
141
  7 Code | βœ“ | βœ“ | βœ“ | βœ“ | opus | β€” |
141
142
  8 QE + Brutal Honesty | βœ“ | βœ“ | βœ“ | βœ“ | sonnet | brutal-honesty-review |
142
143
  9 Fleet QE Assessment | - | - | βœ“ | βœ“ | sonnet | qe-req-val + risk-based + integration + regression + coverage |
144
+ 10 Delivery Gate (OPT-IN) | o | o | o | o | cross-family of coder | 4 planes: regressions β€– security β€– code-quality β€– product-honesty (o = runs only when explicitly requested; absent β‡’ byte-identical) |
143
145
  ```
144
146
 
145
147
  ## DAG Dependencies
@@ -271,6 +273,7 @@ features/<feature-slug>/
271
273
  | Step 7 | `<promise>FEATURE_ADR_IMPLEMENTED</promise>` |
272
274
  | Step 8 | `<promise>FEATURE_ADR_VERIFIED</promise>` |
273
275
  | Step 9 | `<promise>FEATURE_ADR_FLEET_VERIFIED</promise>` |
276
+ | Step 10 (opt-in) | `<promise>FEATURE_ADR_DELIVERY_GATED</promise>` |
274
277
 
275
278
  ## External Skills (loaded as needed)
276
279
 
@@ -493,6 +496,12 @@ only the statusline:
493
496
  πŸŽ“ Learning: {recalled} patterns recalled for this feature, {stored} new stored this run
494
497
  ```
495
498
 
499
+ **Record the panel at the START of every step, not only at Steps 0/8/9.** The panel shows the last step
500
+ that reported; a pipeline that reports three times per run shows a stale step for most of its life. Emit
501
+ `dz statusline --fa-record --slug <slug> --step "<Step N Name>" --recalled <n> --stored <n>` as the first
502
+ action of each step. The recall/teach counts only change at Steps 0/8/9; the *step label* changes at every
503
+ one of them.
504
+
496
505
  *Honesty note:* the panel is live only insofar as the pipeline records state β€” it reflects what the
497
506
  pipeline actually did with the loop (recalls that ran, stores that landed), not an aspirational count.
498
507
 
@@ -583,6 +592,7 @@ npx @dzhechkov/skills-feature-adr init --with-learning --knowledge-extractor
583
592
  <promise>[PROMISE_TAG]</promise>
584
593
  Tier: {COMPLEXITY_TIER} | Active Steps: {ACTIVE_STEPS}
585
594
  πŸŽ“ Learning: {recalled} patterns recalled for this feature, {stored} new stored this run
595
+ 🚦 Gates: challenge-panel βœ“ Β· claim-check βœ“ Β· discrimination not-run Β· amendments βœ“ Β· fleet β€” Β· delivery n/a
586
596
 
587
597
  [2-3 line summary]
588
598
  Artifacts: [list] βœ…
@@ -592,3 +602,16 @@ Artifacts: [list] βœ…
592
602
  β€’ "[feedback]" β€” adjust
593
603
  ═══════════════════════════════════════════════════════
594
604
  ```
605
+
606
+ ### The 🚦 Gates line (mandatory, DERIVED β€” never asserted from memory)
607
+
608
+ Every checkpoint banner carries a `🚦 Gates:` line listing each gate relevant to the run so far. Symbols:
609
+ `βœ“` ran and passed Β· `βœ—` ran and failed Β· `not-run` pending Β· `β€”` N/A for this tier/slice (say why once).
610
+ Each value is **derived from machine-checkable state** β€” an artifact's existence, a command's JSON verdict, a
611
+ test result β€” never from what the orchestrator remembers doing. The line does not make a gate run; it makes
612
+ NOT running one loud: a skipped gate shows as `not-run` by construction instead of being silently forgotten
613
+ (cost-of-detection ladder: the banner is the one surface emitted at EVERY step boundary, so strapping the
614
+ checklist to it is the cheapest way to harden orchestrator judgment). Gate sources: challenge-panel β†’ its
615
+ verdict exists; claim-check β†’ its JSON counts (`high-findings` vs `clean`); discrimination β†’ the
616
+ `dz discrimination-check` aggregate; amendments β†’ every `AM-N` row carries its `β†’ test` and it was checked;
617
+ fleet β†’ the 09 artifact (L/XL only, else `β€”`).
@@ -119,7 +119,8 @@ After all agents complete, apply decision logic:
119
119
  | Critical Risks | > 2 | 1-2 | 0 |
120
120
 
121
121
  - **NO-GO**: BLOCK. Requirements/ADR need rework. Return to Step 1 or Step 3.
122
- - **CONDITIONAL**: Proceed with warnings. Pass findings to Steps 6-8 as advisory context.
122
+ - **CONDITIONAL**: Proceed with warnings. Each condition becomes an **amendment row** in a `## Amendments`
123
+ section (see below) β€” not loose advisory prose.
123
124
  - **GO**: Full confidence. Proceed to Step 6.
124
125
 
125
126
  ### 5. Synthesis Report
@@ -132,6 +133,26 @@ Generate consolidated `03.5_ideation_report.md` with:
132
133
  5. Test ideas (categorized: unit / integration / E2E)
133
134
  6. Conditional agent findings (if any)
134
135
  7. Recommendations prioritized by risk Γ— impact
136
+ 8. `## Amendments` β€” on a CONDITIONAL verdict, every condition as a fixed-shape row (see below)
137
+
138
+ ### Amendment Confirmation discipline (every amendment is a mini-ADR)
139
+
140
+ Amendments are where the sharpest design corrections land β€” and, historically, the least-tested part of a
141
+ run: they arrive as prose AFTER the ADR's Confirmation discipline already ran, so a coder can implement one
142
+ with no test proving it works. Therefore every amendment carries a one-line **Confirmation**, in a fixed,
143
+ machine-checkable shape:
144
+
145
+ ```
146
+ AM-N (source): <change>. Confirmation: <property> β†’ test `test_name` (fails if reverted).
147
+ ```
148
+
149
+ - `source` names where it came from (qcsd | challenge-panel | user-steer).
150
+ - The named test must FAIL if the amendment were reverted/broken (non-vacuous β€” Step 8 verifies via
151
+ `dz discrimination-check`).
152
+ - For a **safeguard** amendment (a warning/guard/fallback): the test must prove the safeguard actually
153
+ **TRIGGERS on a real input** β€” not merely that its code path exists. A structurally-dead safeguard passes
154
+ an existence test and never fires in production.
155
+ - A cheap lint holds the shape: every `AM-N` line must contain a `β†’ test ` token naming a test that exists.
135
156
 
136
157
  ## Output
137
158
 
@@ -149,6 +149,11 @@ Create `features/<slug>/06_implementation_plan.md` with:
149
149
  - Parallel groups
150
150
  - Checkpoint schedule
151
151
  - Risk assessment (L/XL)
152
+ - `## Amendments` β€” every correction folded into this plan (a Step-3.5 CONDITIONAL condition, a
153
+ challenge-panel confirmed finding, a user checkpoint steer) as a fixed-shape row:
154
+ `AM-N (source): <change>. Confirmation: <property> β†’ test `test_name` (fails if reverted).`
155
+ A safeguard amendment's named test must prove it TRIGGERS on a real input, not merely that its code
156
+ path exists. Step 8 verifies every named test exists and is non-vacuous (`dz discrimination-check`).
152
157
 
153
158
  Set `{IMPL_PLAN}` variable.
154
159
 
@@ -169,6 +174,21 @@ Estimated {K} files to create/modify
169
174
  ═══════════════════════════════════════════════════════
170
175
  ```
171
176
 
177
+ ## Challenge panel (adversarial plan-gate β€” before coding)
178
+
179
+ Before leaving the plan checkpoint for code (especially L/XL), offer the **`challenge-panel`** skill β€” a
180
+ FRESH adversary (never the plan author) tries to BREAK the plan across the fixed C1-C8 owner questions,
181
+ every P0/P1 is cross-validated, and the verdict is ADVISORY (never an auto-block):
182
+
183
+ ```bash
184
+ dz challenge --plan features/<slug>/06_implementation_plan.md --author <planner-model>
185
+ ```
186
+
187
+ Dispatch the panel on the CROSS-FAMILY model (`--author` prints which): plan by Claude β†’ Codex adversary
188
+ (honest `codex exec`, never a stub); plan by Codex β†’ fresh Claude. Drop any P0/P1 the cross-validator does
189
+ not confirm. A finding the owner accepts can be recorded in `architecture/degradations.md` so C1 stops
190
+ re-flagging it. In the ultracode workflow this Π²Ρ€Π΅Π·ΠΊΠ° runs automatically and returns `challengeVerdict`.
191
+
172
192
  ## Quality Gates
173
193
 
174
194
  - [ ] Every task has clear done criteria
@@ -31,6 +31,24 @@ Before writing any code:
31
31
  - [ ] Identify import patterns and module structure
32
32
  - [ ] Identify error handling patterns
33
33
  - [ ] Identify test patterns
34
+ - [ ] Plan carries `## Amendments`? β†’ implement every AM-N row AND its named Confirmation test (a
35
+ safeguard amendment needs a test proving it FIRES on a real input)
36
+ - [ ] Does the diff add I/O (DB/network/file) to a previously-pure path β€” especially
37
+ startup/lifespan/health? β†’ name the NEGATIVE resource-down test, or justify N/A
38
+
39
+ ### The I/O-on-pure-path rule (and the fixture-swap smell)
40
+
41
+ If a change introduces I/O into a path that was previously I/O-free β€” above all a startup, lifespan, or
42
+ health path β€” the happy-path test is NOT enough. Also write a **negative resource-down test**: a
43
+ broken/unbound resource handle (dead DB, missing table, exhausted pool) β†’ the path degrades per its
44
+ declared contract β€” **fail-open** for an advisory feature, **explicit fail-fast** for a load-bearing one.
45
+ Without it, an outage of the resource takes down the whole path (including health checks) for the sake of
46
+ an advisory feature β€” and healthy test fixtures will hide it.
47
+
48
+ **Fixture-swap smell:** if making the new code pass required replacing a "broken" test fixture with a
49
+ healthy one β€” stop. The old fixture was probably a negative control proving the path was I/O-free. Keep
50
+ BOTH tests: the healthy one (new behavior) and the broken one (degradation contract). Never silently
51
+ delete the case that proved the old property.
34
52
 
35
53
  ### 2. Execute Tasks per Plan
36
54
 
@@ -158,6 +158,30 @@ Reject explainer-masquerading-as-ADR: if the document describes a problem space
158
158
 
159
159
  The Confirmation-to-test link is load-bearing. If absent, grade no better than C and record a blocker gap; for architecture dependency/layering/interface rules, recommend an ArchUnit or ArchUnitTS fitness function.
160
160
 
161
+ ### 3b. Amendment Gate (P2 β€” amendments inherit the Confirmation discipline)
162
+
163
+ Read the `## Amendments` sections of `03.5_ideation_report.md` and `06_implementation_plan.md` (skip
164
+ silently if absent). For EVERY `AM-N` row verify:
165
+ 1. the row contains a `β†’ test ` token naming a real test (the fixed shape);
166
+ 2. the named test **exists** in the suite;
167
+ 3. it is **non-vacuous** β€” include the amendment test files in the SAME
168
+ `dz discrimination-check --test <f1,f2,...> --base HEAD --json` run as the ADR property test. An
169
+ amendment test that stays green at pre-feature base proves nothing about its amendment;
170
+ 4. a **safeguard** amendment's test proves the safeguard FIRES on a real input (a structurally-dead
171
+ safeguard passes an existence test and never fires in production).
172
+
173
+ A missing, unnamed, or vacuous amendment test is a HIGH gap. This closes the distance between "we caught
174
+ the design flaw" (challenge-panel/QCSD) and "we proved the fix works".
175
+
176
+ ### 3c. I/O-on-pure-path + fixture-swap hunt (P5)
177
+
178
+ In the TEST diff, hunt for replacements of broken/unbound fixtures with healthy ones β€” the old fixture was
179
+ probably a **negative control** proving a path was I/O-free; each such swap requires a compensating
180
+ negative resource-down test. In the CODE diff, hunt for new I/O (DB/network/file) on previously-pure
181
+ paths β€” especially startup/lifespan/health: require a negative resource-down test (broken resource β†’ the
182
+ path degrades per its declared contract: fail-open for advisory, explicit fail-fast for load-bearing).
183
+ Missing β†’ HIGH gap.
184
+
161
185
  ### 4. Multi-Agent Review Panel (L/XL)
162
186
 
163
187
  For L/XL features, spawn 3 parallel review agents using brutal-honesty modes:
@@ -0,0 +1,63 @@
1
+ # Step 10: Delivery Gate (opt-in) β€” review the feature as a PUBLISHED ENTITY
2
+
3
+ > **Opt-in.** This step runs only when explicitly requested (the user asks for a delivery gate, or the
4
+ > workflow form receives `args.deliveryGate: true` / `args.models.delivery`). Absent β‡’ the pipeline is
5
+ > byte-identical to a run without Step 10 β€” no agents, no artifact.
6
+
7
+ ## Why a separate step (not more Step-8)
8
+
9
+ Step 8 reviews the code as the coder's counterpart β€” pre-hand-off, working-tree view. Step 10 reviews the
10
+ feature as a **published entity**: the landed diff, its docs and claims, its behavior as a consumer will
11
+ meet it. Its distinctive plane β€” **product honesty** β€” is absent from Step 8 entirely: fabricated
12
+ completeness (output presented as complete when a source was unavailable), a feature that does less than
13
+ its description, misleading user-facing text. Origin: a real incident where a 2-agent fresh-eyes pass said
14
+ SHIP and only the full multi-plane review found the fabricated-completeness and cap-violation defects.
15
+
16
+ ## Protocol
17
+
18
+ ### 1. Four orthogonal planes (parallel, cross-family of the coder)
19
+
20
+ Each plane reads `07_code_changes/change_manifest.md` + the actual changed files (+ `git diff` for anything
21
+ uncommitted), calibrating on `architecture/vision.md` / `architecture/degradations.md` **when present** (an
22
+ accepted degradation is NOT a finding) and staying generic when absent:
23
+
24
+ | Plane | Hunts |
25
+ |---|---|
26
+ | **Regressions** | broken consumers/contracts; NEW I/O on previously-pure startup/lifespan/health paths without a negative resource-down test; removed/weakened tests (fixture-swap); silent semantic changes to shared surfaces |
27
+ | **Security** | injection via interpolated paths/refs/commands; secrets in code/artifacts; path traversal/symlink escapes; fail-open where the contract says fail-closed |
28
+ | **Code quality** | god-object growth; parallel implementations vs the reuse map; structurally-dead safeguards; swallowed errors |
29
+ | **Product honesty + common sense** | claims not backed by behavior; fabricated completeness; docs/READMEs promising more than the code does; misleading degradation/limits text |
30
+
31
+ Findings shape: `{severity: BLOCKER|HIGH|MED|LOW, title, where (file:line), why}` β€” confirmed only.
32
+
33
+ ### 2. Cross-validation (BLOCKER/HIGH, by index)
34
+
35
+ Every BLOCKER/HIGH is independently cross-validated by a second agent, matched **positionally by index β€”
36
+ never by title** (duplicate titles cross-contaminate). Default-to-FP when uncertain. A validator outage
37
+ surfaces the findings **UNVALIDATED** β€” never silently dropped, never silently confirmed.
38
+
39
+ ### 3. Machine-checkable hand-off criterion
40
+
41
+ Write `features/<slug>/10_delivery_review.md`:
42
+ - **## Verdict** β€” `hand-off: ready | blocked` (ready ⇔ 0 BLOCKER and 0 unwaived HIGH, cross-validation complete)
43
+ - **## Findings** β€” table: severity | plane | title | where | why | crossValidated
44
+ - **## Hand-off criterion** β€” machine-checkable rows: `0 BLOCKER: PASS/FAIL(n)`, `0 unwaived HIGH: PASS/FAIL(n)`.
45
+ Projects with a merge-request flow add THEIR OWN rows here (`CI terminal: …`, `draftβ†’ready: …`) β€” these are
46
+ **document rows the owner fills**, never API calls made by the pipeline. No merge-request flow β‡’ the rows
47
+ stay `β€”`.
48
+ - **## Note** β€” ADVISORY: the owner decides; nothing auto-aborts.
49
+
50
+ ### Hard rules
51
+
52
+ 1. **Findings only.** Step 10 NEVER posts to a VCS host, tracker, or any external service. Publishing a
53
+ review anywhere is a separate, explicit user instruction.
54
+ 2. **Advisory.** `hand-off: blocked` is a report, not an abort (a false gate kills trust).
55
+ 3. **Cross-family.** The planes run on the other model family than the coder (the Step-8 rule) β€” a model
56
+ must not deliver-gate its own code.
57
+ 4. **Cost control.** One gate per hand-off, not per commit. A stack of related changes gets one Step-10 pass
58
+ on the combined diff.
59
+
60
+ ## Promise tag
61
+
62
+ `<promise>FEATURE_ADR_DELIVERY_GATED</promise>` β€” and the `🚦 Gates:` line gains `delivery ready|blocked`
63
+ (derived from the review doc's Verdict, `n/a` when the gate was not requested).