@dzhechkov/p-replicator 1.5.12 → 1.5.14

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/CHANGELOG.md ADDED
@@ -0,0 +1,874 @@
1
+ # Changelog
2
+
3
+ All notable changes to `@dzhechkov/p-replicator` are documented here.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [1.5.14] - 2026-07-28
9
+
10
+ ### Fixed — Documentation & packaging (package-verification findings)
11
+
12
+ Fixes for the 2026-07-28 published-artifact verification of 1.5.13
13
+ (no runtime code changes; `src/`, `bin/`, `templates/` untouched —
14
+ MEASURED: `git diff v-prev -- src bin templates` is empty for this release):
15
+
16
+ - **Changelog gap closed.** Versions 1.5.5–1.5.13 shipped with no changelog
17
+ trail; this file now documents every one of them (entries below,
18
+ reconstructed from the monorepo git history — reproducer:
19
+ `git log --follow -- packages/@dzhechkov/p-replicator/package.json`).
20
+ README "Changelog Highlights" and `README/{eng,ru}/07_changelog.md`
21
+ extended to match.
22
+ - **`CHANGELOG.md` now ships in the tarball.** 10 doc references pointed to
23
+ `./CHANGELOG.md` / `../../CHANGELOG.md` while `files[]` excluded it — dead
24
+ link on npmjs and in `node_modules`. `files[]` now includes `CHANGELOG.md`,
25
+ `KNOWN_LIMITATIONS.md`, `MULTIPLATFORM_ROADMAP.md` (all doc-referenced from
26
+ README.md). MEASURED: `npm pack --dry-run` lists all three.
27
+ - **`npm test` works inside the installed package.** `scripts.test` referenced
28
+ `tests/` which `files[]` excluded. `tests/` (5 files, 108K) now ships.
29
+ MEASURED: `npm test` in the unpacked tarball → 105/105 pass.
30
+ - **One consistent repo URL.** Packed docs linked the pre-monorepo repo
31
+ `github.com/dzhechko/pu-unicorn-replicate` (HTTP 404) while `package.json`
32
+ pointed at the monorepo `github.com/djd1m/dz-harness-hub`. All doc links now
33
+ point to `github.com/djd1m/dz-harness-hub` path
34
+ `packages/@dzhechkov/p-replicator` (README.md, README/{eng,ru}/, ru HTML
35
+ guide + its build.js). MEASURED: `grep -rn "pu-unicorn-replicate"` over
36
+ shipped docs → only historical path mentions inside old changelog entries
37
+ remain.
38
+ - **npm `description` char-count refreshed.** "194K+ chars" was ~4.5× stale;
39
+ now "880K+ chars". MEASURED:
40
+ `find templates/.claude/skills -type f -exec cat {} + | wc -c` → 880,679.
41
+ - **Stale pre-publish note removed** from README Contributing (the
42
+ `prepublishOnly` sync hook was deleted in 1.5.5).
43
+
44
+ ## [1.5.13] - 2026-07-10
45
+
46
+ ### Fixed — brutal-honesty-review output schema
47
+
48
+ `templates/.claude/skills/brutal-honesty-review/schemas/output.json`:
49
+ `trustTier` was locked to `const: 3`; now `minimum: 1, maximum: 3` so
50
+ lower-tier runs validate. (Reproducer: `git diff bec5d86c 80542939 --
51
+ packages/@dzhechkov/p-replicator`.)
52
+
53
+ ## [1.5.12] - 2026-07-06
54
+
55
+ Version-sync release after the 1.5.11 publish — no content changes to the
56
+ shipped package. (Reproducer: `git diff 1826ac63 bec5d86c --
57
+ packages/@dzhechkov/p-replicator` → package.json version line only.)
58
+
59
+ ## [1.5.11] - 2026-07-06
60
+
61
+ ### Changed — baseline-heal: brutal-honesty-review skill hardened
62
+
63
+ Part of the monorepo-wide "baseline-heal" pass (8 allowlisted skills healed
64
+ via per-skill feature-adr). For this package:
65
+
66
+ - `brutal-honesty-review` gained `evals/brutal-honesty-review.yaml`,
67
+ `schemas/output.json` (291 lines), `scripts/validate-config.json`;
68
+ `SKILL.md` updated.
69
+ - Snapshot baseline regenerated.
70
+
71
+ (Reproducer: `git diff 51a29bc7 1826ac63 -- packages/@dzhechkov/p-replicator`.)
72
+
73
+ ## [1.5.10] - 2026-07-06
74
+
75
+ Version-sync release after the 1.5.9 publish — no content changes to the
76
+ shipped package. (Reproducer: `git diff 41ec8d36 51a29bc7 --
77
+ packages/@dzhechkov/p-replicator` → package.json version line only.)
78
+
79
+ ## [1.5.9] - 2026-07-06
80
+
81
+ ### Fixed — goap-ed25519 honesty/security rewrite + `remove` safety (audit waves 1/3/4)
82
+
83
+ - **`goap-research-ed25519` de-hyped and made cryptographically honest.**
84
+ SKILL.md, all three `references/*.md` and the Python scripts
85
+ (`ed25519_verifier.py`, `goap_planner.py`, `test_ed25519_verifier.py`)
86
+ rewritten: Ed25519 provides provenance + tamper-evidence under pinned
87
+ trusted-issuer keys — it does NOT prove truthfulness or prevent
88
+ hallucination, and the skill no longer claims it does. Domain strings alone
89
+ are never trusted; self-attested signatures are capped below issuer-trusted
90
+ confidence. Net −1,696 lines across the package (MEASURED: `git diff --stat
91
+ 9f18ec43 41ec8d36 -- packages/@dzhechkov/p-replicator` → 892 insertions,
92
+ 2,588 deletions).
93
+ - **`remove --dry-run` no longer deletes the manifest** on the
94
+ already-cleaned path (the dry-run guard ran after the manifest unlink).
95
+ - **`remove` keeps the manifest when any tracked file fails to delete**
96
+ (permissions/locked), so survivors stay tracked instead of being stranded.
97
+ - Assorted P3 doc/script fixes (`update.js`, `assess-tests.sh`,
98
+ `README/ru/html/build.js`, doc-count reconciliations).
99
+
100
+ ## [1.5.8] - 2026-06-29
101
+
102
+ ### Changed — Phase-3 toolkit drift fixes + provenance record
103
+
104
+ - `trust_tier` frontmatter added to vendored skills `goap-research-ed25519`,
105
+ `problem-solver-enhanced`, `reverse-engineering-unicorn` (bodies unchanged
106
+ apart from the frontmatter — MEASURED: `git diff c9225e8f 9f18ec43 --
107
+ packages/@dzhechkov/p-replicator/templates/.claude/skills` shows only
108
+ `trust_tier*` line additions; `sources.json` records "resynced 2026-06-29 —
109
+ added trust_tier (body identical)").
110
+ - New `sources.json` — ADR-0001 provenance record mapping each of the 10
111
+ skills to its origin (vendored / vendored-adapted / intentional-fork /
112
+ toolkit-original). Documentation-only, not shipped in the tarball.
113
+ - `replicate-pipeline.md` rule: new optional post-pipeline **UI replication**
114
+ section referencing the external `clone-website` skill
115
+ (`@dzhechkov/skills-website-cloner`) — reference, not vendored.
116
+
117
+ (Reproducer: `git diff c9225e8f 9f18ec43 -- packages/@dzhechkov/p-replicator`.)
118
+
119
+ ## [1.5.7] - 2026-06-16
120
+
121
+ ### Fixed — C4 audit cluster (CLI strictness + manifest safety)
122
+
123
+ - **CLI argument validation:** unknown options (`--nope`) and unexpected
124
+ positional arguments now error with exit 1 instead of being silently
125
+ ignored (`src/cli.js`).
126
+ - **`init` manifest tracks the TEMPLATE source, never a destination scan**
127
+ (`src/commands/init.js`) — walking the destination would adopt user-created
128
+ files into the manifest and a later `remove` would delete them (user data
129
+ loss). Matches `update.js`'s invariant.
130
+ - Doc fixes in `replicate-coordinator.md`, `replicate.md`,
131
+ `cc-toolkit-generator-enhanced` modules; snapshot baseline regenerated.
132
+
133
+ (Reproducer: `git diff 60238ced c9225e8f -- packages/@dzhechkov/p-replicator`.)
134
+
135
+ ## [1.5.6] - 2026-06-11
136
+
137
+ ### Changed — P6 wave: explore skill trust tier
138
+
139
+ - `explore` skill gained `trust_tier` frontmatter (Tier 1 "Structured").
140
+ - Its handoff reference changed `goap-research-ed25519` → `goap-research`
141
+ (alias documented in `skill-interface-protocol.md`).
142
+
143
+ (Reproducer: `git diff e0be1d53 60238ced -- packages/@dzhechkov/p-replicator`.)
144
+
145
+ ## [1.5.5] - 2026-06-11
146
+
147
+ ### Changed — First monorepo release (dz-harness-hub)
148
+
149
+ First version published from the `dz-harness-hub` monorepo
150
+ (`packages/@dzhechkov/p-replicator`) instead of the original
151
+ `pu-unicorn-replicate` repo. Metadata-only changes:
152
+
153
+ - `repository` / `homepage` / `bugs` → `github.com/djd1m/dz-harness-hub`
154
+ (with `directory` field).
155
+ - **Destructive `prepublishOnly` sync hook removed** (`scripts/sync-templates.js`
156
+ no longer runs on publish — it could delete pre-shipped files when run from
157
+ the wrong root).
158
+ - `publishConfig.access: public` added; `@dzhechkov/keysarium-core` peer range
159
+ `^1.0.0` → `^1.1.0`.
160
+
161
+ (Reproducer: `git diff e1651fcf e0be1d53 -- packages/@dzhechkov/p-replicator`
162
+ → package.json only.)
163
+
164
+ ## [1.5.4] - 2026-05-13
165
+
166
+ ### Fixed — settings.json `$schema` URL
167
+
168
+ The default `settings.json` shipped via `init` had an incorrect `$schema`
169
+ URL (`https://www.schemastore.org/claude-code-settings.json`). Claude Code's
170
+ JSON-schema validator rejected it with:
171
+
172
+ ```
173
+ Settings Error
174
+ $schema: Invalid value.
175
+ Expected one of: "https://json.schemastore.org/claude-code-settings.json"
176
+ ```
177
+
178
+ The validator then **skipped the entire settings file**, which silently
179
+ disabled the statusline + hooks shipped by p-replicator until the URL was
180
+ manually corrected.
181
+
182
+ **Root cause:** schemastore.org has two host aliases (`www.` and `json.`),
183
+ but Claude Code's strict-schema check accepts only the `json.` variant.
184
+
185
+ **Fix:** corrected the URL to `https://json.schemastore.org/claude-code-settings.json`
186
+ in the source `.claude/settings.json` and propagated through:
187
+
188
+ 1. `pu-unicorn-replicate-main/.claude/settings.json` (source-of-truth)
189
+ 2. `packages/p-replicator/templates/.claude/settings.json` (auto-synced template
190
+ shipped by `init`)
191
+ 3. `README.md` (root, code sample)
192
+ 4. `README/eng/03_admin_guide.md`
193
+ 5. `README/eng/04_api_reference.md`
194
+ 6. `README/ru/03_admin_guide.md`
195
+ 7. `README/ru/04_api_reference.md`
196
+ 8. `README/ru/html/index.html`
197
+
198
+ Snapshot baseline regenerated (`tests/snapshot/baseline.json`).
199
+
200
+ **Tests:** 105/105 passing.
201
+
202
+ **Migration for existing installations:**
203
+
204
+ Option A (recommended) — run `update`:
205
+ ```bash
206
+ npx @dzhechkov/p-replicator update
207
+ ```
208
+ The v1.4.2+ `mergeSettingsJson` logic preserves user customizations while
209
+ correcting the `$schema` field via the `shippedDefaults` baseline diff.
210
+
211
+ Option B — manual one-line edit of `.claude/settings.json`:
212
+ ```diff
213
+ - "$schema": "https://www.schemastore.org/claude-code-settings.json",
214
+ + "$schema": "https://json.schemastore.org/claude-code-settings.json",
215
+ ```
216
+
217
+ Option C — ignore. Claude Code only warns; statusline/hooks STILL load
218
+ because `init`'s code path doesn't depend on the `$schema` value being valid.
219
+ (But the warning is annoying and will appear on every session start.)
220
+
221
+ ## [1.5.3] - 2026-05-07
222
+
223
+ ### Changed — Comprehensive README.md expansion for npm registry
224
+
225
+ The package-root `README.md` (auto-included in npm tarball, displayed on
226
+ npmjs.com/package/@dzhechkov/p-replicator) was significantly under-detailed
227
+ compared to the bilingual `README/eng/*.md` deep-dives (8 files, ~3000 lines).
228
+ Many users landing on the npm registry page didn't see key features
229
+ (statusline, --feature-branches, Mode 2, validation thresholds, hooks system,
230
+ architecture highlights) without navigating to the eng/ folder.
231
+
232
+ **v1.5.3 expands README.md from ~14.6 kB to ~50+ kB** through strategic
233
+ consolidation of content from `README/eng/01_quickstart.md` through
234
+ `07_changelog.md`, with explicit pointers to the eng/ files for power-user
235
+ deep dives. The README now stands alone for ~95% of users.
236
+
237
+ **New sections added (or significantly expanded):**
238
+
239
+ 1. **Table of Contents** — 26 anchor-linked sections (npm registry doesn't
240
+ auto-generate TOC, so explicit links are mandatory for navigability)
241
+ 2. **What is p-replicator?** — full intro with use cases, target architecture,
242
+ 2-row use-case decision table
243
+ 3. **Quick Start** — preserved + clarified
244
+ 4. **Already have technical documentation?** — v1.5.1 alt-entry recipe (kept)
245
+ 5. **Adding features to an existing project (Mode 2)** — v1.5.2 recipe (kept,
246
+ slightly expanded with caveats)
247
+ 6. **Installation** — NEW: prerequisites, common install scenarios table
248
+ 7. **What Gets Installed** — expanded to cover both pre-shipped and
249
+ project-generated artifacts
250
+ 8. **Verify the install** — NEW: doctor vs verify, exit codes
251
+ 9. **Pipeline overview — `/replicate` phases** — NEW: full 5-phase walkthrough
252
+ with validator agents table, verdict thresholds
253
+ 10. **Skills Reference** — preserved + module breakdown table for
254
+ cc-toolkit-generator-enhanced + view() syntax explanation
255
+ 11. **Commands Reference** — NEW: full 11-command table with when-to-use,
256
+ detailed sections for /run, /go, /myinsights, /harvest
257
+ 12. **CLI Commands** — NEW: subcommands table, global flags, slash command flags
258
+ 13. **Validation Cycle Details** — NEW: 5-agent swarm, INVEST/SMART criteria,
259
+ verdict matrix, brutal-honesty severity classification
260
+ 14. **Feature Lifecycle** — NEW: Mode 1 vs Mode 2, all 4 phases, AUTO mode
261
+ 15. **Statusline Dashboard** — NEW: 6-line layout, sources matrix, defensive
262
+ design, disable instructions
263
+ 16. **Hooks System** — NEW: 6 hook scripts table, cross-platform discipline,
264
+ state-file flow
265
+ 17. **Roadmap & Insights** — NEW: feature-roadmap.json schema, lifecycle states,
266
+ insights system entry format and conventions
267
+ 18. **Architecture Highlights** — NEW: two-tier model, SSOT, settings merge
268
+ logic, manifest schema
269
+ 19. **Configuration** — NEW: settings.json default, MCP servers, Keysarium
270
+ 20. **Update workflow** — NEW: 3 update strategies, merge logic algorithm
271
+ 21. **Troubleshooting** — NEW: top 12 issues with diagnostics + commands
272
+ 22. **Migration** — NEW: per-version migration table 1.3.x → 1.5.x
273
+ 23. **Test Infrastructure** — NEW: 105 tests breakdown, meta-tests, snapshot
274
+ baseline
275
+ 24. **Known Limitations** — NEW: highlights of 8 open items + link to full file
276
+ 25. **Changelog Highlights** — NEW: 9 versions summary 1.3.0 → 1.5.3 with
277
+ feature emojis
278
+ 26. **Contributing** — NEW: dev setup, pre-publish checklist, AQE pattern
279
+ persistence model
280
+ 27. **License + Links** — preserved + companion documentation index
281
+
282
+ **What's NOT in the new README (intentional):**
283
+
284
+ - Full `view()` cross-skill loading internals (in `README/eng/05_architecture.md`)
285
+ - Settings merge algorithm pseudocode (in `README/eng/05_architecture.md`)
286
+ - Statusline parser-by-parser breakdown (in `documentation/07-dashboard-howto.md`)
287
+ - All 15+ troubleshooting cases (in `README/eng/06_troubleshooting.md`)
288
+ - Full formal API schemas (in `README/eng/04_api_reference.md`)
289
+
290
+ These remain as deep-dives in eng/ — README.md links to them at appropriate spots.
291
+
292
+ **Bilingual link preservation:** RU + EN docs links remain at the top of the README.
293
+
294
+ ### Tests
295
+
296
+ - Snapshot baseline NOT regenerated — README.md is at package root, NOT in
297
+ `templates/` (snapshot only tracks templates/.claude/* contents)
298
+ - All 105 tests still green — README.md expansion has zero test surface
299
+ - npm pack dry-run: tarball grew from ~350 kB to ~390 kB (+40 kB for the
300
+ expanded README; well below npm registry rendering thresholds)
301
+
302
+ ### Visual polish (v1.5.3 final pass)
303
+
304
+ Within npm-renderer constraints (no inline `<style>`, stripped CSS classes),
305
+ applied 5 visual contrast improvements to reduce dark-blue link density and
306
+ improve readability on npmjs.com:
307
+
308
+ 1. **Hero banner** — `<div align="center">` with centered title, tagline, and
309
+ 8 colored badges (npm/MIT/Node + tests/skills/commands/hooks/SPARC) using
310
+ shields.io custom hex colors (red/green/purple/orange/blue/pink/black).
311
+ Reduces blue-link load on first screen.
312
+
313
+ 2. **Emoji-icons in TOC** — every entry got a visual anchor (📖 🚀 📑 🔧 📦
314
+ 📋 ✅ 🎯 🧠 ⚡ 💻 🎚️ 🔄 📊 🪝 🗺️ 🏛️ ⚙️ 🔄 🆘 📈 🧪 ⚠️ 📜 🤝 📃). Eye
315
+ catches colorful icons, not 26 dark-blue text links.
316
+
317
+ 3. **`<details>`/`<summary>` collapsibles** for 4 verbose sections:
318
+ - Troubleshooting (12 cases)
319
+ - Migration table
320
+ - Test Infrastructure
321
+ - Changelog Highlights (9 versions)
322
+
323
+ Reduces visible link density in main view; expand on demand.
324
+
325
+ 4. **Callout blocks** — `> ⚠️` for warnings, `> 💡` for tips, `> 📌` for
326
+ important notes, `> ✅` for confirmations. Renders with left-border
327
+ styling that visually pops vs plain text.
328
+
329
+ 5. **Two-column TOC layout** via `<table>` with `valign="top"` — splits 26
330
+ items into "Getting Started + Reference" (left) and "Operations + Help"
331
+ (right). Better visual scanning than single-column list.
332
+
333
+ **What was NOT changed:**
334
+ - Link color itself (npm strips `style="color:..."` and CSS — fixed by registry)
335
+ - Information density (zero content removed; only repackaged)
336
+ - TOC anchors (all 26 links still resolve to valid section IDs)
337
+
338
+ ### Migration notes
339
+
340
+ - **No breaking changes.** Pure documentation expansion + visual polish.
341
+ - Existing functionality unchanged.
342
+ - Users see significantly more content + better visual contrast on npmjs.com.
343
+ - HTML guide (`README/ru/html/index.html`) NOT regenerated for v1.5.3 since
344
+ it's built from `README/ru/*.md` (not the package-root README.md). The RU
345
+ HTML guide remains the authoritative single-page HTML for Russian-speaking users.
346
+
347
+ ---
348
+
349
+ ## [1.5.2] - 2026-05-07
350
+
351
+ ### Added — Documentation & spec for "Feature workflow in existing project" (Mode 2)
352
+
353
+ `/feature` already supported the existing-project scenario via natural-language
354
+ invocation — v1.5.2 formalizes this entry mode across all documentation surfaces.
355
+ Users who already have a working project (stack defined, PRD/Specification/
356
+ Architecture/CLAUDE.md exist) can now use `/feature` to add new features with
357
+ the same SPARC-mini validation cycle that `/replicate` provides — without
358
+ regenerating their existing scaffold.
359
+
360
+ Two officially supported entry modes for `/feature`:
361
+ - **Mode 1: Post-/replicate** — project bootstrapped via /replicate (default)
362
+ - **Mode 2: Existing project** — `init` ran on top of existing project (NEW formalization)
363
+
364
+ The 4-phase pipeline (PLAN → VALIDATE → IMPLEMENT → REVIEW) is **identical** in
365
+ both modes. Same validation thresholds, same retry logic, same brutal-honesty
366
+ review.
367
+
368
+ **Spec docs (ship in npm tarball — visible to all installed users):**
369
+ - `templates/.claude/commands/feature.md` — new top-level "Use case: existing
370
+ project (Mode 2)" section. Documents prerequisites (init + verify, standard
371
+ SPARC paths), what does NOT happen in Mode 2 (no /start, no scaffold regen,
372
+ no auto feature-roadmap), three sub-paths (A/B/C), verification commands.
373
+ - `templates/.claude/rules/feature-lifecycle.md` — new "Entry modes" section
374
+ documenting Mode 1 vs Mode 2, prerequisites, detection (no automatic — same
375
+ code path), Mode 2 caveats, test contract preservation.
376
+ - `templates/.claude/commands/replicate.md` — new "See also: existing-project
377
+ feature workflow (Mode 2)" cross-reference in Alternative entry section,
378
+ pointing users who only want feature additions to `/feature` instead of
379
+ `/replicate`.
380
+
381
+ **User-facing docs (visible on GitHub + npm registry):**
382
+ - `README.md` (package root, auto-included in npm tarball) — new "Adding
383
+ features to an existing project?" subsection right after v1.5.1's "Already
384
+ have technical documentation?" pointer, with the recipe + 3 sub-paths +
385
+ pointer to user guides.
386
+ - `README/ru/01_quickstart.md` — new "Добавление фич в существующий проект (Mode 2)"
387
+ section with install steps, SPARC-path normalization, 3 sub-paths table,
388
+ validation thresholds, init-preservation guarantees, and caveats.
389
+ - `README/eng/01_quickstart.md` — parallel English version.
390
+ - `README/ru/02_user_guide.md` — new "Feature workflow в существующем проекте (Mode 2)"
391
+ subsection in `/feature` description (full recipe, 3-mode comparison table,
392
+ step-by-step bash, all 3 sub-paths with code examples, init-preservation
393
+ table, validation-thresholds, 4 enumerated caveats, verification, future
394
+ enhancement reference to M3).
395
+ - `README/eng/02_user_guide.md` — parallel English version.
396
+
397
+ **Tracking:**
398
+ - `KNOWN_LIMITATIONS.md` — new entry M3 "`/feature` requires standard SPARC
399
+ doc paths". Documents proposed fix (`docPaths` config in `.p-replicator.json`,
400
+ `init --doc-paths-from <config>` flag, verify + meta-test). Effort: Tier S.
401
+
402
+ ### Three supported sub-paths for Mode 2
403
+
404
+ | Path | When | Skills invoked |
405
+ |---|---|---|
406
+ | **A. /feature directly** | Single feature ≥4 files, new capability | sparc-prd-mini → requirements-validator → parallel implement → brutal-honesty-review |
407
+ | **B. /go auto-router** | Mixed complexity | Routes between /plan (≤3 files) and /feature (≥4 files) by heuristics |
408
+ | **C. Direct skill invocation** | Only validation cycle | requirements-validator + brutal-honesty-review skills directly |
409
+
410
+ ### Tests
411
+
412
+ - Snapshot baseline regenerated — `templates/.claude/commands/feature.md`,
413
+ `templates/.claude/rules/feature-lifecycle.md`, and
414
+ `templates/.claude/commands/replicate.md` SHA-256 checksums updated.
415
+ - All 105 tests still green. No new tests added (Mode 2 has no CLI-level
416
+ surface to assert; spec consistency covered by existing meta-tests).
417
+ - Meta-tests verified: replicate-pipeline.md still mentions all 11 pre-shipped
418
+ commands; replicate.md Phase 3 still does NOT contain
419
+ `Generate /commands/<pre-shipped>.md` patterns; both v1.5.1 and v1.5.2 spec
420
+ additions coexist without conflict.
421
+
422
+ ### HTML guide regeneration
423
+
424
+ `README/ru/html/index.html` regenerated via `node README/ru/html/build.js` to
425
+ pick up the new "Добавление фич в существующий проект (Mode 2)" sections in
426
+ both 01_quickstart.md and 02_user_guide.md. v1.5.1's link-rewriter
427
+ (`rewriteInternalLink`) handles cross-section anchor resolution automatically.
428
+
429
+ ### Migration notes
430
+
431
+ - **No breaking changes.** Mode 2 was always supported via natural-language
432
+ invocation — v1.5.2 simply formalizes and documents it across all surfaces.
433
+ - Users on v1.5.1 who already use this workflow continue to do so without
434
+ changes; v1.5.2 just adds explicit spec backing and discoverability.
435
+ - `verify` and `doctor` exit codes unchanged.
436
+ - `manifest.shippedDefaults` schema unchanged.
437
+ - Pre-shipped contract unchanged (10 skills + 11 commands + 4 agents + 5 rules + settings.json).
438
+
439
+ ---
440
+
441
+ ## [1.5.1] - 2026-05-07
442
+
443
+ ### Added — Documentation & spec for "starting from existing tech docs" workflow
444
+
445
+ A long-supported variant of `/replicate` is now formally documented across all
446
+ documentation surfaces. Users with existing technical documentation (tech spec,
447
+ architecture, API specs, design docs) can skip Phase 0 (Product Discovery) and
448
+ feed their docs directly into Phase 1 as pre-filled context.
449
+
450
+ **Spec docs (ship in npm tarball — visible to all installed users):**
451
+ - `templates/.claude/commands/replicate.md` — new top-level "Alternative entry"
452
+ section after the Pipeline overview. Documents trigger detection (4 patterns:
453
+ path reference, explicit skip request, statement of available docs, semantic
454
+ flag), the modified Phase 1 behavior (AUTO mode, internal Explore/Research/Solve
455
+ skipped, `[GAP: ...]` placeholders for missing slots), three sub-paths (A/B/C),
456
+ caveats, verification steps, architecture-constraints reminder.
457
+ - `templates/.claude/commands/replicate.md` — Phase 0 Gate extended with a 4th
458
+ rule: "Existing technical documentation provided → skip".
459
+ - `templates/.claude/rules/replicate-pipeline.md` — new "Alternative entry" section
460
+ documenting the variant as officially supported, with trigger detection,
461
+ modified flow, sub-path matrix, and explicit test-contract preservation note.
462
+
463
+ **User-facing docs (visible on GitHub + npm registry):**
464
+ - `README.md` (package root, auto-included in npm tarball) — new "Already have
465
+ technical documentation?" subsection right after Quick Start, pointing to RU/EN
466
+ user guides for the full recipe.
467
+ - `README/ru/01_quickstart.md` — new "Альтернативный вход — у меня уже есть
468
+ техдокументация" section (3 sub-paths table, what changes per phase, caveats).
469
+ - `README/eng/01_quickstart.md` — parallel English version.
470
+ - `README/ru/02_user_guide.md` — new "Альтернативный вход" subsection in the
471
+ `/replicate` description (full 3-path recipe with code examples, per-phase
472
+ comparison table, caveats, verification, future enhancement reference).
473
+ - `README/eng/02_user_guide.md` — parallel English version.
474
+
475
+ **Tracking:**
476
+ - `KNOWN_LIMITATIONS.md` — new entry M2 "No formal `--from-docs` CLI flag for
477
+ /replicate". The workflow is invoked via natural-language overrides; a formal
478
+ flag with deterministic parsing is on the roadmap (Tier S effort).
479
+
480
+ ### Three supported sub-paths
481
+
482
+ | Path | When | Skills invoked |
483
+ |---|---|---|
484
+ | **A. Full /replicate with override** | Have tech docs, want full pipeline + toolkit + scaffold | sparc-prd-mini (AUTO) → requirements-validator → cc-toolkit-generator-enhanced |
485
+ | **B. Direct sparc-prd-mini invocation** | Want only the 11 SPARC docs, no toolkit | sparc-prd-mini (AUTO) only |
486
+ | **C. Validation-only** | Existing docs already SPARC-shaped | requirements-validator only |
487
+
488
+ ### Tests
489
+
490
+ - Snapshot baseline regenerated — `templates/.claude/commands/replicate.md` and
491
+ `templates/.claude/rules/replicate-pipeline.md` SHA-256 checksums updated.
492
+ - All 105 tests still green. No new tests added (workflow has no CLI-level
493
+ surface to assert; spec consistency covered by existing meta-tests).
494
+ - Meta-tests verified: replicate-pipeline.md still mentions all 11 pre-shipped
495
+ commands; replicate.md Phase 3 still does NOT contain
496
+ `Generate /commands/<pre-shipped>.md` patterns.
497
+
498
+ ### Migration notes
499
+
500
+ - **No breaking changes.** The new entry mode is OPT-IN and additive.
501
+ - Users on v1.5.0 can already invoke this workflow via natural-language; v1.5.1
502
+ formalizes and documents it across all surfaces.
503
+ - `verify` and `doctor` exit codes unchanged.
504
+ - `manifest.shippedDefaults` schema unchanged.
505
+ - HTML guide (`README/ru/html/index.html`) regenerated via
506
+ `node README/ru/html/build.js` to pick up the MD updates.
507
+
508
+ ---
509
+
510
+ ## [1.5.0] - 2026-05-07
511
+
512
+ ### Added — Two new user-facing features
513
+
514
+ #### 1. Multi-line statusLine dashboard (RuFlo-style)
515
+
516
+ Pre-shipped `statusline.cjs` script displays a dashboard above Claude Code's
517
+ prompt with real-time pipeline + roadmap + toolkit + status metrics. Six
518
+ content lines, ANSI-colored, defensive (every section wrapped in safe-guard
519
+ so a single parse error never breaks the whole bar).
520
+
521
+ **Layout:**
522
+ ```
523
+ P-Replicator V1.5.0 ● user │ Sonnet 4.7
524
+ 🚀 Pipeline /<cmd> ▓▓▓░░░░ 50% │ Phase: VALIDATE (2/4) │ Last: /replicate
525
+ 🎯 Roadmap [●●●○○○○○] mvp 3/8 │ Done 5/12 │ ▶ auth-jwt │ Domain: banking
526
+ 📊 SPARC ●11/11 │ 🟢 78/100 │ Plans ●3 │ ADRs ●2 │ Harvest 2026-05-05
527
+ 🛠️ Toolkit Skills ●10/10 │ Cmds ●11/11 │ Agents ●4+3 │ Rules ●5+2 │ Hooks ●6/6
528
+ 💡 Insights ●12 (2026-05-06) │ Tests 85/85 ✓ │ MCP ●1/1 │ Settings ✓ │ 🧬 Keysarium ✓
529
+ ```
530
+
531
+ **Sources (heuristic from filesystem + optional state-file):**
532
+ - Pipeline + phase: `.claude/.p-replicator-state.json` (commands write via `state-update.cjs`)
533
+ - Roadmap progress: `.claude/feature-roadmap.json`
534
+ - SPARC docs: `docs/PRD.md` ... `docs/ADR.md` (11 expected)
535
+ - Validation score: `docs/validation-report.md` (regex extracts `Score: NN`)
536
+ - Plans: `docs/plans/*.md` count
537
+ - ADRs: `docs/ADR.md` H2/H3 headings, or `docs/adr/*.md`, or `docs/ddd/adr/*.md`
538
+ - Insights: `.claude/insights/index.md` (`## YYYY-MM-DD` headings count + last date)
539
+ - Toolkit health: filesystem walks of `.claude/{skills,commands,agents,rules,hooks}/`
540
+ - Settings status: deep-equals `.claude/settings.json` vs `manifest.shippedDefaults` → `defaults` / `merged`
541
+ - MCP servers: `.mcp.json` server count
542
+ - Keysarium: `.keysarium.json` presence
543
+ - Domain: keyword grep in `CLAUDE.md` (banking / retail / enterprise / healthcare)
544
+ - Last harvest: `TOOLKIT_HARVEST.md` mtime
545
+ - Last test: optional `.claude/.last-test.json` cache
546
+
547
+ **Configuration:**
548
+ `templates/.claude/settings.json` registers the statusLine via Claude Code's standard config:
549
+ ```json
550
+ {
551
+ "statusLine": {
552
+ "type": "command",
553
+ "command": "node .claude/hooks/statusline.cjs"
554
+ }
555
+ }
556
+ ```
557
+
558
+ **`state-update.cjs` companion script** — argv-driven helper for pipeline
559
+ commands. Pipeline commands can publish current state for the statusline:
560
+ ```
561
+ node .claude/hooks/state-update.cjs --command /feature --phase VALIDATE --index 2 --total 4 --progress 0.5
562
+ ```
563
+ Stale state (>30 min old) is automatically ignored by the statusline.
564
+
565
+ #### 2. `--feature-branches` flag for `/run` and `/go`
566
+
567
+ Per-feature git branch workflow for **teaching, code-review, and demo** use
568
+ cases. Each feature is implemented on a separate branch named
569
+ `feature/{NNN}-{id}` (e.g., `feature/001-auth-jwt`), pushed individually,
570
+ and the instructor can checkout any specific feature for demonstration.
571
+
572
+ **Usage:**
573
+ ```bash
574
+ /run mvp --feature-branches # autonomous loop, branch per feature
575
+ /run all --feature-branches --auto-merge # also merge each branch into main
576
+ /go auth-jwt --feature-branches # single feature on its own branch
577
+ ```
578
+
579
+ **Per-feature workflow (when `--feature-branches` is set):**
580
+ 1. Verify on `main` (else fail with hint to switch)
581
+ 2. If working tree dirty: `git stash push -u -m "auto-stash before /run feature-branches"`
582
+ 3. Read roadmap entry; assign `number` if absent (`max(numbers) + 1`)
583
+ 4. `git checkout -b feature/{NNN}-{id}` from main
584
+ 5. Run delegated pipeline (`/plan` or `/feature`)
585
+ 6. `git push origin feature/{NNN}-{id} --set-upstream`
586
+ 7. Update roadmap: `status: done`, `branch: "feature/{NNN}-{id}"`
587
+ 8. `git checkout main`
588
+ 9. If `--auto-merge` flag: `git merge --no-ff feature/{NNN}-{id}`
589
+
590
+ **`--auto-merge` companion flag** — off by default. When passed alongside
591
+ `--feature-branches`, each feature branch is merged into `main` after the
592
+ feature completes. Without it, branches stay unmerged for instructor /
593
+ reviewer to handle (PR or manual merge).
594
+
595
+ **Roadmap schema extension:**
596
+ ```json
597
+ {
598
+ "id": "auth-jwt",
599
+ "number": 1, // ← v1.5.0: auto-assigned
600
+ "branch": "feature/001-auth-jwt", // ← v1.5.0: populated when feature done
601
+ ...
602
+ }
603
+ ```
604
+
605
+ ### Added (technical)
606
+
607
+ - `templates/.claude/hooks/statusline.cjs` (~330 LOC, standalone, zero deps)
608
+ - `templates/.claude/hooks/state-update.cjs` (~70 LOC, argv-driven)
609
+ - `statusLine` field in `templates/.claude/settings.json`
610
+ - `statusline` and `state-update` keys in `COMPONENTS.hooks.items` (now 6 hooks)
611
+ - `--feature-branches` flag documentation in `/run.md`, `/go.md`
612
+ - Roadmap schema extension (`number`, `branch` fields) documented in `/next.md`
613
+
614
+ ### Tests
615
+
616
+ Suite grew from 93 to 105 (+12):
617
+ - 2 unit tests for hooks group items count (post-v1.5.0)
618
+ - 7 e2e tests for statusline (install, settings registration, exit code, output sections, ADRs/Plans counts, roadmap progress, defensive)
619
+ - 3 meta-tests for `--feature-branches` documentation in `/run.md`, `/go.md`, `/next.md`
620
+
621
+ Snapshot baseline: 113 → 115 files (+2: statusline.cjs + state-update.cjs).
622
+
623
+ ### Migration notes
624
+
625
+ - **No breaking changes.** Run `npx @dzhechkov/p-replicator@1.5.0 update` or `init --force` (settings.json auto-merges, preserving customizations).
626
+ - **Statusline is opt-out via Claude Code's own config:** if you don't want it, remove the `statusLine` field from `.claude/settings.json` (the merge will preserve removal on next upgrade since the field is detected as a deletion).
627
+ - **Branch workflow is opt-in:** `--feature-branches` flag must be explicitly passed; legacy `/run mvp` works exactly as before.
628
+
629
+ ## [1.4.3] - 2026-05-07
630
+
631
+ ### Fixed (the v1.4.2 last known limitation)
632
+
633
+ - **Orphan hook detection on upgrade.** `mergeSettingsJson` (v1.4.2) preserved both user customizations AND old default hooks indefinitely. If a future package version removed a default hook (e.g., deprecated `autocommit-something.cjs` between v1.5 and v1.6), the user's `settings.json` would keep the obsolete hook forever — calling a script that no longer exists.
634
+
635
+ **Solution:** v1.4.3 introduces a **shipped-defaults baseline** in the manifest. Each install/update snapshots the template's `settings.json` content into `manifest.shippedDefaults["settings.json"]`. On the next upgrade:
636
+ - `oldTpl` = `manifest.shippedDefaults["settings.json"]` (what we shipped before)
637
+ - `newTpl` = current `templates/.claude/settings.json`
638
+ - Orphans = command strings in `oldTpl` but not in `newTpl`
639
+ - User's `settings.json` is cleaned of orphans BEFORE merge
640
+
641
+ **Identity model:** hooks are matched by their `command` string (set-comparison). User-modified defaults (different command-string) are correctly classified as user-added and preserved.
642
+
643
+ **Backward compatibility:** Pre-1.4.3 manifests have no `shippedDefaults` field → orphan detection skipped on first upgrade (graceful degradation), then populated for next upgrade onward.
644
+
645
+ - **`update` now respects user customizations to settings.json.** Pre-v1.4.3, `npx p-replicator update` blindly overwrote `settings.json` if it appeared in the diff's `modified` array. Now it applies the same merge + orphan-cleanup logic as `init --force`. `--reset-settings` flag still available for explicit overwrite.
646
+
647
+ ### Added
648
+
649
+ - `utils.removeOrphanHooks(existing, oldTemplate, newTemplate)` — orphan detection helper. Returns existing with all command-strings present in `oldTemplate` but absent in `newTemplate` removed. Pass-through if `oldTemplate` is null.
650
+ - `utils.extractCommands(hooksRoot)` — internal helper extracting Set of command strings from a hooks config.
651
+ - `manifest.shippedDefaults["settings.json"]` — snapshot of last-shipped settings template content.
652
+
653
+ ### Changed
654
+
655
+ - `createManifest()` accepts optional 4th parameter `shippedDefaults`. Manifest schema is forward-compatible: old manifests without the field still load; tools without v1.4.3 logic ignore it.
656
+ - `init.js` reads `previousManifest` BEFORE overwriting; passes its `shippedDefaults` to `installComponent` for orphan detection.
657
+ - `update.js` now branches on settings.json files: regular files use `copyDirRecursive`, settings.json runs full merge + orphan-cleanup pipeline.
658
+ - `--reset-settings` flag now works for `update` too (was only init in v1.4.2).
659
+
660
+ ### Tests
661
+
662
+ Suite grew from 85 to 93 (+8):
663
+ - 5 unit tests for `removeOrphanHooks` (null oldTemplate, orphan removal, kept-in-newTemplate, user-modified preserved, no-crash on missing hooks)
664
+ - 1 e2e test verifying `manifest.shippedDefaults` is populated after init
665
+ - 2 e2e tests for orphan detection on `init --force` (orphan removed, user-added preserved alongside orphan removal)
666
+
667
+ ### Migration notes
668
+
669
+ - **Strictly safer behavior.** Existing customizations preserved as before; orphans now also cleaned up properly across version bumps.
670
+ - **First upgrade from pre-1.4.3** has no `shippedDefaults` baseline available, so orphan detection skips for that one upgrade. Manifest gets populated for next time onward. No user action required.
671
+ - **`update` now also merges settings.json.** If you relied on `update` overwriting custom settings, add `--reset-settings` flag.
672
+
673
+ ## [1.4.2] - 2026-05-06
674
+
675
+ ### Fixed (the 3 v1.4.1 known limitations)
676
+
677
+ - **`init --force` now MERGES `settings.json` with user customizations** instead of overwriting. New algorithm in `utils.mergeSettingsJson`:
678
+ - Top-level fields: template fills only what user lacks (no overwrite of user-only fields)
679
+ - `hooks` per event-type: template hooks added if event missing; existing matchers get template hooks appended (de-duped by command string); user-only matchers (e.g., custom `Bash` matcher) preserved
680
+ - User-added event types (e.g., `PreToolUse`) preserved verbatim
681
+ - Identical commands (same string) NOT duplicated
682
+ - **`--reset-settings` flag added** for explicit nuclear-overwrite of settings.json. Use when you want to discard all customizations and start from package defaults: `npx p-replicator init --force --reset-settings`.
683
+ - **Stronger meta-test for `replicate.md` Phase 3 drift.** Old test caught only `Generate \.claude/commands/<cmd>\.md` literal phrasing; new test:
684
+ - Multi-verb pattern: `(generate|create|produce|write|make|output)\\s+...<cmd>\\.md`
685
+ - Section-scoped to "Generate these project-specific files" sub-section (so legitimate "do NOT overwrite" mentions don't trigger false positives)
686
+ - List-style detection: `[-*]\\s*\`<cmd>\\.md\`` catches bullet-listed filenames
687
+ - Allowlist for `feature-ent` (legitimate Phase 3 conditional generation)
688
+ - **`doctor` now checks `git` on PATH.** New "Prerequisites" section reports: pass if `git --version` succeeds, fail with clear message if not — explains why autocommit hooks (roadmap, insights, plans) would silently no-op without git.
689
+
690
+ ### Added
691
+
692
+ - `utils.mergeSettingsJson(existing, template)` — public helper for JSON-aware merge
693
+ - `utils.mergeHookEvents(existing, template)` — internal helper for per-event merge
694
+ - `utils.mergeHookMatchers(existing, template)` — internal helper for per-matcher merge with command-string de-dup
695
+ - CLI flag `--reset-settings`
696
+
697
+ ### Changed
698
+
699
+ - `installComponent()` in `init.js` accepts an `options` parameter; for single-file JSON components with `fileExists(dest)`, MERGES instead of overwriting (unless `options.resetSettings` is true)
700
+ - `--help` mentions the new `--reset-settings` flag
701
+
702
+ ### Tests
703
+
704
+ Suite grew from 74 to 85 (+11):
705
+ - 6 unit tests for `mergeSettingsJson` (null cases, hook merge, de-dup, custom event preservation, top-level user fields)
706
+ - 3 e2e tests for settings merge behavior (preserve, reset, custom event)
707
+ - 1 e2e test for doctor Prerequisites section
708
+ - 1 strengthened meta-test (replaces old single-verb pattern)
709
+
710
+ ### Migration notes
711
+
712
+ - **No breaking changes for typical workflow.** `init --force` now PRESERVES user customizations by default — strictly safer than v1.4.1.
713
+ - **Users who relied on `init --force` to fully reset settings.json**: add `--reset-settings` flag explicitly.
714
+
715
+ ## [1.4.1] - 2026-05-06
716
+
717
+ ### Fixed (the 3 v1.4.0 known limitations)
718
+
719
+ - **Cross-platform hooks (no more bash dependency).** Replaced inline `git ... 2>/dev/null || true` shell chains in `settings.json` with calls to dedicated Node scripts (`node .claude/hooks/<name>.cjs`). 4 new hook scripts shipped — all use `execFileSync('git', [...])` (no shell pipes, no platform-specific redirect syntax). Works identically on Windows-cmd, macOS/Linux bash, and Git Bash on Windows.
720
+ - **`verify.js` now derives both contracts from SSOT — no more hardcoded `POST_REPLICATE_HINTS`.** `utils.COMPONENTS` extended with `kind: 'pre-shipped' | 'project-generated'` field, plus 3 new project-generated groups (`projectAgents`, `projectRules`, `projectFiles`). `verify` iterates by kind, removing the duplicated post-/replicate artifact list. Adding/removing project-specific artifacts now requires editing only `utils.js`.
721
+ - **Meta-tests for replicate.md ↔ replicate-pipeline.md consistency.** Two new tests detect future drift: (a) `replicate-pipeline.md` mentions every pre-shipped command name (drift = silent contract violation), (b) `replicate.md` Phase 3 does NOT contain `Generate .claude/commands/<pre-shipped>.md` patterns. Catches the most common drift signatures.
722
+
723
+ ### Fixed (architectural sync regression discovered during v1.4.1 development)
724
+
725
+ - **`scripts/sync-templates.js` now operates in MERGE mode** (not destructive clean-and-replace). Previous behavior: `cleanDir(dest)` before `copyRecursive(src, dest)` — which silently DELETED any file in `templates/.claude/<dir>/` not present in source `.claude/<dir>/`. This caused all v1.4.0 pre-shipped commands and rules to be wiped on every `npm publish --dry-run`. New behavior: `ensureDir(dest)` + `copyRecursive(src, dest)` — source files overwrite (canonical SoT preserved), but pre-shipped target-only files survive.
726
+ - **Source repo `.claude/` updated to mirror v1.4 pre-shipped templates.** The 11 commands + 5 rules + hooks + settings.json now live in `pu-unicorn-replicate-main/.claude/` (canonical SoT), so future syncs are idempotent.
727
+
728
+ ### Added
729
+
730
+ - **6th pre-shipped COMPONENTS group: `hooks`** — describes the 4 cross-platform Node hook scripts as a manifest-tracked component group. Doctor now reports a "Hook scripts (expected 4)" section.
731
+ - **`utils.getItemRelativePath(comp, itemKey)` helper** — centralizes path derivation for both pre-shipped (skills: `<src>/<name>/SKILL.md`, commands: `<src>/<name>.md`, hooks: `<src>/<name>.cjs`) and project-generated (items keys ARE full paths) groups. Used by `verify.js`.
732
+
733
+ ### Changed
734
+
735
+ - **`init.js` and `update.js` filter `Object.keys(COMPONENTS)` by `kind === 'pre-shipped'`** before installing/manifest-tracking. Project-generated groups have no `src` field and are not installable.
736
+ - **`doctor.js` now uses dynamic counts** (`Skills (expected ${EXPECTED_SKILLS.length})`) and includes a hooks section.
737
+ - **Manifest grew from 5 components to 6** (added `hooks` group). `manifest.components.sort()` now equals `['agents', 'commands', 'hooks', 'rules', 'settings', 'skills']`.
738
+
739
+ ### Tests
740
+
741
+ Suite grew from 60 to 74 (+14). New tests:
742
+ - 4 unit tests for `COMPONENTS.kind` discrimination + group counts
743
+ - 5 unit tests for `getItemRelativePath` (settings.json, skills, commands, hooks, project-generated)
744
+ - 3 e2e tests for hook scripts (existence, settings.json references Node not bash, syntax validity)
745
+ - 2 meta-tests for `replicate-pipeline.md` ↔ `replicate.md` consistency
746
+
747
+ Snapshot baseline regenerated: 109 → 113 files in `templates/`.
748
+
749
+ ### Migration notes
750
+
751
+ - **No breaking changes.** Run `npx @dzhechkov/p-replicator@1.4.1 init --force` to update an existing project.
752
+ - **Settings.json change is NON-DESTRUCTIVE.** If a user has customized their `settings.json` with project-specific hooks, `init --force` will overwrite. Recommendation: review settings.json after upgrade and re-add custom hooks. Future enhancement: settings.json merge instead of overwrite.
753
+
754
+ ## [1.4.0] - 2026-05-06
755
+
756
+ ### Added — Pre-shipped post-/replicate workflow toolkit
757
+
758
+ Closes the long-standing pain where users had to manually verify (via a
759
+ dedicated prompt) that `/replicate` Phase 3 generated all expected artifacts.
760
+ Sherlock-style audit found **5 internal sources of truth had drifted** (see
761
+ `docs/ADR-001` notes below). Resolution: pre-ship project-agnostic artifacts
762
+ in the npm tarball so `/replicate` Phase 3 can ENHANCE rather than CREATE
763
+ them.
764
+
765
+ **9 new commands shipped by `init`** (added to `templates/.claude/commands/`):
766
+ - `/start` — bootstrap project from SPARC docs (4-phase: Foundation → Packages parallel → Integration → Finalize)
767
+ - `/plan` — lightweight planning to `docs/plans/<feature>.md` (auto-commit via Stop hook)
768
+ - `/feature` — full SPARC-mini feature lifecycle (PLAN → VALIDATE → IMPLEMENT → REVIEW)
769
+ - `/go` — intelligent pipeline router (delegates to `/plan` or `/feature` based on complexity scoring)
770
+ - `/run` — autonomous build loop (`/next` → `/go` → repeat over MVP or all features)
771
+ - `/next` — pick next feature from `.claude/feature-roadmap.json` (with `update` and `<feature-id>` subcommands)
772
+ - `/myinsights` — capture and recall development insights
773
+ - `/docs` — bilingual documentation generator (RU + EN)
774
+ - `/deploy` — deployment workflow (dev / staging / prod tiers)
775
+
776
+ **3 new rules shipped by `init`** (added to `templates/.claude/rules/`):
777
+ - `git-workflow` — commit/push discipline + Conventional Commits
778
+ - `insights-capture` — when/how to record development "грабли" (rakes)
779
+ - `feature-lifecycle` — `/feature` 4-phase governance + scoring thresholds
780
+
781
+ **`.claude/settings.json` shipped** with hooks:
782
+ - `SessionStart`: inject the 3 most recent insights into Claude's initial context
783
+ - `Stop`: auto-commit `.claude/feature-roadmap.json`, `.claude/insights/`, and `docs/plans/` if changed
784
+
785
+ **New CLI command — `npx @dzhechkov/p-replicator verify`:**
786
+ - Checks pre-shipped contract (10 skills + 11 commands + 4 agents + 5 rules + settings.json)
787
+ - Detects whether `/replicate` was run (via CLAUDE.md / feature-roadmap.json presence)
788
+ - Reports project-specific artifact status (planner/code-reviewer/architect agents, security/coding-style rules, project-context skill, etc.) as advisory hints
789
+ - Replaces the user's manual verification prompt with a single, repeatable command
790
+ - Exit code 0 if pre-shipped contract OK, non-zero if any pre-shipped artifact missing
791
+
792
+ ### Changed
793
+
794
+ - **`utils.COMPONENTS` extended with `settings` group.** Single-file component
795
+ (`src: '.claude/settings.json'`, `isFile: true`). `installComponent()` in
796
+ `init.js` now handles single-file vs directory components correctly.
797
+ - **`utils.COMPONENTS.<group>.items` extended.** Commands map grew from 2 to 11
798
+ entries; rules map grew from 2 to 5. Doctor counts (`Skills (expected N)`)
799
+ derive `N` dynamically from `EXPECTED_*.length`, so further additions to
800
+ `items` automatically update doctor output.
801
+ - **`templates/.claude/commands/replicate.md` Phase 3 rewritten.** Removed
802
+ generation steps for files now pre-shipped (`start.md`, `plan.md`, `deploy.md`,
803
+ `feature.md`, `myinsights.md`, generic rules, settings.json). Phase 3 now
804
+ generates ONLY project-specific artifacts (project agents, security rules
805
+ derived from NFRs, project-context skill, CLAUDE.md, scaffolds).
806
+ - **`templates/.claude/rules/replicate-pipeline.md` rewritten.** "What Gets
807
+ Generated vs Pre-existing" section now reflects reality: 11 commands, 5
808
+ rules, settings.json, all 4 pipeline agents, all 10 skills are pre-shipped.
809
+
810
+ ### Fixed (root cause of "manual-verification pain")
811
+
812
+ Five internal sources of truth had drifted in v1.3.x:
813
+ 1. `replicate.md` Phase 3 spec (line 222-225) claimed `/feature` and `/myinsights` "already exist"
814
+ 2. `replicate-pipeline.md` rule listed those same commands as "Generated by /replicate"
815
+ 3. `cc-toolkit-generator-enhanced/modules/04-05` had reference templates for `/run`, `/next`, `/go`, `/docs` that the LLM was expected to read and copy verbatim — but did so unreliably (skill itself documents `In a real project, skipping modules/04-generate-p1.md caused 10+ artifacts to be silently omitted`)
816
+ 4. README.md promised post-pipeline commands as outputs
817
+ 5. `cli.js showHelp` advertised "1 rule" while `EXPECTED_RULES` had 2 entries (regression fixed in 1.3.1)
818
+
819
+ After v1.4.0 there is **one source of truth** — `utils.COMPONENTS.items` —
820
+ consumed by all 5 surfaces (init, doctor, list, verify, cli help).
821
+
822
+ ### Migration notes
823
+
824
+ - **No code changes for v1.3.x users.** Run `npx @dzhechkov/p-replicator@1.4.0 init --force` in any project to land the new pre-shipped workflow commands. Existing project-generated files (`CLAUDE.md`, `planner.md`, etc.) are not touched.
825
+ - **Existing manifest entries are preserved.** The v1.4 manifest is a superset; remove or re-init does not lose project state.
826
+ - **No breaking changes to existing commands.** `/replicate`, `/harvest`, `init`, `update`, `remove`, `list`, `doctor` behave as before — but now coexist with the new pre-shipped commands.
827
+
828
+ ### Tests
829
+
830
+ Suite grew from 52 to 60 tests (45 baseline + 5 SSOT + 2 manifest preservation + 8 v1.4: 4 unit covering `COMPONENTS.items` post-v1.4 contract, 4 e2e covering pre-shipped commands/rules/settings.json + verify command). All green on baseline. Snapshot baseline regenerated: 96 → 109 files in `templates/`.
831
+
832
+ ## [1.3.1] - 2026-05-06
833
+
834
+ ### Fixed
835
+
836
+ - **`--help` displays correct component counts.** Previously hardcoded `"1 rule"` while `doctor.js` `EXPECTED_RULES` had two entries (`replicate-pipeline`, `skill-interface-protocol`). All counts (`10 skills`, `2 commands`, `4 agents`, `2 rules`) are now derived from `utils.COMPONENTS.items` and stay in sync automatically.
837
+ - **`update` + `remove` no longer destroys project-generated files.** `update.js` previously rebuilt `manifest.files` by walking the user's full `.claude/` directory, which captured files generated by `/replicate` (e.g. `start.md`, `feature.md`, `plan.md`) into the manifest. A subsequent `remove` would then delete those user-owned files, contradicting `remove.js`'s own footer guarantee:
838
+ > "Project-specific files were NOT removed: Generated commands (/start, /feature, /plan, etc.)"
839
+
840
+ `update.js` now tracks only files shipped by the package's `templates/`, so user-generated files are never recorded in `manifest.files` and are never deleted by `remove`.
841
+ - **Orphan template files are now cleaned up on update.** When a file previously shipped by the package is removed in a new version, `update` deletes it from the user's `.claude/`. Project-generated files are unaffected because they were never in the old manifest's `files` list.
842
+
843
+ ### Changed
844
+
845
+ - **`utils.COMPONENTS.items` is the single source of truth for component names + descriptions.** Each component group (`skills`, `commands`, `agents`, `rules`) now declares an `items: { name: description }` map. Replaces hardcoded duplicates that previously lived independently in:
846
+ - `doctor.js` (`EXPECTED_SKILLS`, `EXPECTED_COMMANDS`, `EXPECTED_AGENTS`, `EXPECTED_RULES`)
847
+ - `list.js` (`SKILL_DETAILS`, `COMMAND_DETAILS`, `AGENT_DETAILS`)
848
+ - `cli.js` `showHelp()` (count strings)
849
+ - **`update.js` manifest source switched from project to package.** New `manifest.files` is built from `getRelativePaths(templateClaude)` instead of `getRelativePaths(projectClaude)`. Closes the data-loss path described above and makes the manifest a true list of "files this package owns."
850
+
851
+ ### Added
852
+
853
+ - **Regression test suite (52 tests, ~9 sec, zero runtime deps).** Three layers using the built-in `node:test` runner:
854
+
855
+ | Layer | File | Tests | Covers |
856
+ |-------|------|-------|--------|
857
+ | L2 unit | `tests/unit/utils.test.js` | 30 | `createManifest`, `readJSON`/`writeJSON`, `fileExists`, `ensureDir`, `getRelativePaths`, `copyDirRecursive`, `copyDirFiltered`, `diffFiles`, `COMPONENTS` shape + `items` SSOT |
858
+ | L1 e2e | `tests/e2e/lifecycle.test.js` | 19 | full CLI lifecycle (`--version`, `--help`, `init`, `list`, `doctor`, `update`, `remove`, unknown command) + the two regressions fixed in this release |
859
+ | L3 snapshot | `tests/snapshot/templates.test.js` + `update-baseline.js` + `baseline.json` | 3 | SHA-256 baseline of all 96 files in `templates/` — fails on any unintended drift |
860
+
861
+ - **New npm scripts:**
862
+ - `npm test` — full suite
863
+ - `npm run test:unit`, `test:e2e`, `test:snapshot` — by layer
864
+ - `npm run test:doctor` — legacy smoke (`node bin/cli.js doctor`)
865
+ - `npm run snapshot:baseline` — regenerate `tests/snapshot/baseline.json` after intentional template changes
866
+
867
+ ### Migration notes
868
+
869
+ - **No action required for existing installs.** Run `npx @dzhechkov/p-replicator@1.3.1 update` in any project. The new `update` will preserve user-generated files automatically.
870
+ - **Users on 1.3.0 who experienced data loss** from an `update → remove` sequence after running `/replicate` can simply re-run `/replicate` to regenerate the lost files. The bug is fixed going forward.
871
+
872
+ ## [1.3.0]
873
+
874
+ Initial published baseline. 10 skills (foundation + composite + master orchestrator `cc-toolkit-generator-enhanced` with 9 modules), 2 commands (`/replicate`, `/harvest`), 4 agents (`replicate-coordinator`, `product-discoverer`, `doc-validator`, `harvest-coordinator`), 2 rules (`replicate-pipeline`, `skill-interface-protocol`). 5-phase pipeline: Discovery → Planning (SPARC docs) → Validation (5-agent swarm, score ≥ 70 = READY) → Toolkit Generation → Finalization.