@dzhechkov/skills-feature-adr 1.3.58 β†’ 1.3.59

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.
Files changed (3) hide show
  1. package/README.md +32 -0
  2. package/bin/cli.js +0 -0
  3. package/package.json +6 -5
package/README.md CHANGED
@@ -471,6 +471,38 @@ Step 3 and Step 8 share an ADR best-practices contract distilled from the
471
471
  The pipeline **dog-foods** this: a harness test runs the gate against feature-adr's own generated ADR, so a
472
472
  Step-3↔Step-8 drift fails CI rather than shipping.
473
473
 
474
+ ### Amendments are mini-ADRs + the 🚦 Gates line (v1.3.58)
475
+
476
+ Three additions derived from a real post-release incident analysis (a pipeline shipped slices whose defects
477
+ only a *full* post-push review caught), organized by one principle β€” the **cost-of-detection ladder**: every
478
+ check lives on the cheapest layer that reliably holds it (deterministic test > always-loaded file > pipeline
479
+ gate > reviewer judgment > memory). A miss usually means a check lived one layer too weak.
480
+
481
+ - **Amendment Confirmation discipline.** Corrections folded into a run (a Step-3.5 CONDITIONAL condition, a
482
+ challenge-panel confirmed finding, a user checkpoint steer) were historically the least-tested part of the
483
+ pipeline β€” prose deltas with no proving test. Now every amendment is a **mini-ADR** in a `## Amendments`
484
+ section with a fixed, lintable shape:
485
+ ```
486
+ AM-N (qcsd|challenge-panel|user-steer): <change>. Confirmation: <property> β†’ test `test_name` (fails if reverted).
487
+ ```
488
+ Step 8 verifies each named test **exists** and is **non-vacuous** β€” amendment tests join the ADR property
489
+ test in the same `dz discrimination-check` run (a test that stays green at pre-feature base proves
490
+ nothing). A *safeguard* amendment needs a test proving it actually **fires** on a real input, not just
491
+ that its code path exists. No `## Amendments` section β‡’ the gate skips silently (zero cost).
492
+ - **The `🚦 Gates:` line.** Every checkpoint banner (and the workflow's return objects) carries a gate map
493
+ **derived from machine state** β€” artifact existence, JSON verdicts, test results β€” never from what the
494
+ orchestrator remembers. `βœ“` passed Β· `βœ—` failed Β· `not-run` pending Β· `β€”` N/A. The line doesn't make a
495
+ gate run; it makes NOT running one loud.
496
+ - **I/O-on-pure-path rule.** A change that adds I/O (DB/network/file) to a previously-pure path β€” above all
497
+ startup/lifespan/health β€” must carry a **negative resource-down test** (broken resource β†’ the declared
498
+ degradation contract: fail-open for advisory, fail-fast for load-bearing), and Step 8 hunts the
499
+ **fixture-swap smell**: replacing a broken fixture with a healthy one silently deletes the negative
500
+ control that proved the path was I/O-free. The bundled role-default skills gained the matching entries
501
+ (`code-impl` P25, `code-critic` AP14).
502
+
503
+ Both forms carry all of it: the interactive skill (step modules + banner template) and the deterministic
504
+ workflow (stage prompts + derived `gates` in its returns) β€” same shapes, same vocabulary.
505
+
474
506
  ### The `Model` / `Fable?` columns β€” read this before swapping models
475
507
 
476
508
  The `Model` column is the **default recommendation, fully overridable** β€” the routing rule is
package/bin/cli.js CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dzhechkov/skills-feature-adr",
3
- "version": "1.3.58",
3
+ "version": "1.3.59",
4
4
  "description": "Adaptive Feature Development skill pack for Claude Code β€” 11-step pipeline with Complexity Router (S/M/L/XL), ADR-driven architecture, 15 agentic-qe skills, multi-agent fleet QE. Supports --full-qe, --full-qe-extended, --with-learning, and --knowledge-extractor modes.",
5
5
  "bin": {
6
6
  "skills-feature-adr": "./bin/cli.js"
@@ -13,6 +13,10 @@
13
13
  "CHANGELOG.md",
14
14
  "docs/"
15
15
  ],
16
+ "scripts": {
17
+ "test": "node --test \"test/**/*.test.js\"",
18
+ "prepack": "node -e \"const fs=require('fs');const bad=['.claude','.skills-feature-adr.json'].filter(p=>fs.existsSync(p));if(bad.length){console.error('prepack guard: stray init artifacts in package dir: '+bad.join(', ')+' β€” remove before packing');process.exit(1)}\""
19
+ },
16
20
  "keywords": [
17
21
  "claude",
18
22
  "claude-code",
@@ -57,8 +61,5 @@
57
61
  },
58
62
  "publishConfig": {
59
63
  "access": "public"
60
- },
61
- "scripts": {
62
- "test": "node --test \"test/**/*.test.js\""
63
64
  }
64
- }
65
+ }