@dzhechkov/p-replicator 1.5.17 → 1.6.0
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 +173 -65
- package/CHANGELOG.md +135 -0
- package/MULTIPLATFORM_ROADMAP.md +1 -1
- package/README/eng/01_quickstart.md +2 -2
- package/README/eng/02_user_guide.md +1 -1
- package/README/eng/03_admin_guide.md +2 -2
- package/README/eng/05_architecture.md +6 -2
- package/README/eng/README.md +1 -1
- package/README/ru/01_quickstart.md +2 -2
- package/README/ru/02_user_guide.md +1 -1
- package/README/ru/03_admin_guide.md +2 -2
- package/README/ru/05_architecture.md +1 -1
- package/README/ru/README.md +1 -1
- package/README/ru/html/index.html +7 -7
- package/README.md +41 -18
- package/bin/cli.js +0 -0
- package/package.json +11 -10
- package/sbom.json +347 -77
- package/src/utils.js +2 -0
- package/templates/.claude/agents/doc-validator.md +2 -1
- package/templates/.claude/agents/product-discoverer.md +1 -1
- package/templates/.claude/commands/next.md +16 -0
- package/templates/.claude/commands/replicate.md +126 -8
- package/templates/.claude/commands/start.md +19 -1
- package/templates/.claude/hooks/autocommit-insights.cjs +95 -10
- package/templates/.claude/hooks/autocommit-plans.cjs +95 -10
- package/templates/.claude/hooks/autocommit-roadmap.cjs +96 -13
- package/templates/.claude/hooks/check-ports.cjs +232 -0
- package/templates/.claude/hooks/session-insights.cjs +13 -1
- package/templates/.claude/hooks/state-update.cjs +13 -1
- package/templates/.claude/hooks/statusline.cjs +145 -18
- package/templates/.claude/rules/docker-ports.md +123 -0
- package/templates/.claude/rules/replicate-pipeline.md +5 -2
- package/templates/.claude/settings.json +5 -5
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/modules/01-detect-parse.md +57 -14
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/modules/02-analyze-map.md +9 -7
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/references/enhanced-recommendations.md +6 -4
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/references/extended-mapping.md +2 -2
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/references/templates/ddd-agents.md +2 -2
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/references/templates/ddd-skills.md +1 -1
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/references/templates/enhanced-claude-md.md +2 -2
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/references/templates/feature-suggestions.md +11 -2
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/references/templates/start-command.md +1 -1
- package/templates/.claude/skills/goap-research-ed25519/SKILL.md +340 -47
- package/templates/.claude/skills/goap-research-ed25519/scripts/check_report_evidence.py +359 -3
- package/templates/.claude/skills/goap-research-ed25519/scripts/ed25519_verifier.py +386 -13
- package/templates/.claude/skills/goap-research-ed25519/scripts/fixture_legacy_v2_fact.json +23 -0
- package/templates/.claude/skills/goap-research-ed25519/scripts/fixtures_field_cases.json +133 -0
- package/templates/.claude/skills/goap-research-ed25519/scripts/goap_planner.py +314 -44
- package/templates/.claude/skills/goap-research-ed25519/scripts/learning_bridge.py +890 -303
- package/templates/.claude/skills/goap-research-ed25519/scripts/population_match.py +591 -0
- package/templates/.claude/skills/goap-research-ed25519/scripts/risk_statement.py +289 -0
- package/templates/.claude/skills/goap-research-ed25519/scripts/test_ed25519_verifier.py +57 -2
- package/templates/.claude/skills/goap-research-ed25519/scripts/test_evidence_provenance.py +969 -344
- package/templates/.claude/skills/goap-research-ed25519/scripts/test_goap_planner.py +420 -0
- package/templates/.claude/skills/goap-research-ed25519/scripts/test_population_match.py +544 -0
- package/templates/.claude/skills/goap-research-ed25519/scripts/test_risk_absolute.py +239 -0
- package/templates/.claude/skills/goap-research-ed25519/scripts/test_signature_v3.py +554 -0
- package/templates/.claude/skills/goap-research-ed25519/scripts/test_suite_completeness.py +90 -0
- package/templates/.claude/skills/requirements-validator/SKILL.md +7 -0
- package/templates/.claude/skills/requirements-validator/references/scoring-system.md +28 -0
- package/templates/.claude/skills/sparc-prd-mini/SKILL.md +143 -1
- package/tests/e2e/lifecycle.test.js +21 -10
- package/tests/snapshot/baseline.json +51 -34
- package/tests/snapshot/update-baseline.js +2 -1
- package/tests/unit/adr-decision-coverage.test.js +137 -0
- package/tests/unit/adr-scanner-contract.test.js +108 -0
- package/tests/unit/autocommit-deletion.test.js +242 -0
- package/tests/unit/check-ports.test.js +184 -0
- package/tests/unit/db-port-rule.test.js +216 -0
- package/tests/unit/detect-parse-anchor.test.js +109 -0
- package/tests/unit/external-dependency-check.test.js +209 -0
- package/tests/unit/growth-module-b2b-gate.test.js +104 -0
- package/tests/unit/hooks-project-anchored.test.js +223 -0
- package/tests/unit/hooks-report-failures.test.js +207 -0
- package/tests/unit/pipeline-file-ownership.test.js +95 -0
- package/tests/unit/roadmap-one-schema.test.js +179 -0
- package/tests/unit/sparc-reconciliation.test.js +117 -0
- package/tests/unit/spec-pseudocode-traceability.test.js +146 -0
- package/tests/unit/statusline-honest-labels.test.js +178 -0
- package/tests/unit/statusline-two-roots.test.js +237 -0
- package/tests/unit/sync-templates-guard.test.js +209 -0
- package/tests/unit/utils.test.js +2 -2
- package/tests/unit/validation-gate-teeth.test.js +158 -0
- package/LICENSE +0 -21
package/.dz-manifest.json
CHANGED
|
@@ -3,37 +3,37 @@
|
|
|
3
3
|
"version": 1,
|
|
4
4
|
"pack": "p-replicator",
|
|
5
5
|
"files": [
|
|
6
|
-
{
|
|
7
|
-
"path": ".gitignore",
|
|
8
|
-
"sha256": "32dae3052f331ee34d628ef535709b301259a45df7c7522c4d35dcf49873f00b"
|
|
9
|
-
},
|
|
10
6
|
{
|
|
11
7
|
"path": "CHANGELOG.md",
|
|
12
|
-
"sha256": "
|
|
8
|
+
"sha256": "837815d5116c5e117c1249a414b7ae81927969d74a3b44685e8dc8a8dd3a6d8e"
|
|
13
9
|
},
|
|
14
10
|
{
|
|
15
11
|
"path": "KNOWN_LIMITATIONS.md",
|
|
16
12
|
"sha256": "983200d843d2f4ac01f20d443219fe59cbc75ab1d1309395a3207fa4435c78d7"
|
|
17
13
|
},
|
|
14
|
+
{
|
|
15
|
+
"path": "LICENSE",
|
|
16
|
+
"sha256": "3b93f7070f6843f37e0cae255f7caff22b466a4017fd2020d7d3216237e5a701"
|
|
17
|
+
},
|
|
18
18
|
{
|
|
19
19
|
"path": "MULTIPLATFORM_ROADMAP.md",
|
|
20
|
-
"sha256": "
|
|
20
|
+
"sha256": "a6fed19895b2c93a1be5f3416f021b2d5165449ff6dadd9bf6d96ba8c0491192"
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
23
|
"path": "README.md",
|
|
24
|
-
"sha256": "
|
|
24
|
+
"sha256": "6b863dbfd298c1788097d53a87425030a341684f67bbb5a81a90c192c0c90d22"
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
27
|
"path": "README/eng/01_quickstart.md",
|
|
28
|
-
"sha256": "
|
|
28
|
+
"sha256": "8fe8dc32ddb603bfae2c71c8bafed51dd4d291a3f32942c06a049cab25dbf490"
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
31
|
"path": "README/eng/02_user_guide.md",
|
|
32
|
-
"sha256": "
|
|
32
|
+
"sha256": "307cf6c2a9bd6ebee678e47c0a13c15fdaaebcfdc9a17a0a08fe7892ed1afee0"
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
"path": "README/eng/03_admin_guide.md",
|
|
36
|
-
"sha256": "
|
|
36
|
+
"sha256": "e4c5c190383570dd0f9853ec18221d0ccd24a85a4a42575e819c7b283fc42077"
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
"path": "README/eng/04_api_reference.md",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
43
|
"path": "README/eng/05_architecture.md",
|
|
44
|
-
"sha256": "
|
|
44
|
+
"sha256": "6cd5056f9e315bd910187925f0085910fa6905490559a58cb3c604d7bd63ebc4"
|
|
45
45
|
},
|
|
46
46
|
{
|
|
47
47
|
"path": "README/eng/06_troubleshooting.md",
|
|
@@ -53,19 +53,19 @@
|
|
|
53
53
|
},
|
|
54
54
|
{
|
|
55
55
|
"path": "README/eng/README.md",
|
|
56
|
-
"sha256": "
|
|
56
|
+
"sha256": "19cddc3b70de2f8ae440d7dfcd5268cf195df32e35a0b17f861f727df76cc3ca"
|
|
57
57
|
},
|
|
58
58
|
{
|
|
59
59
|
"path": "README/ru/01_quickstart.md",
|
|
60
|
-
"sha256": "
|
|
60
|
+
"sha256": "3d5b2a8dd9c9f7c0f35ae7b280ed22d865086a07a5f07866ce496549d4623e9b"
|
|
61
61
|
},
|
|
62
62
|
{
|
|
63
63
|
"path": "README/ru/02_user_guide.md",
|
|
64
|
-
"sha256": "
|
|
64
|
+
"sha256": "20b8f60be4755fcdacfb845b8bfc9f12cc26bd999fefb5f98ab6dd0a2948f1c7"
|
|
65
65
|
},
|
|
66
66
|
{
|
|
67
67
|
"path": "README/ru/03_admin_guide.md",
|
|
68
|
-
"sha256": "
|
|
68
|
+
"sha256": "c7923e865819d4d544f64066a4ef9ab729266dc2e11eeaed5e736f0357fcd2e8"
|
|
69
69
|
},
|
|
70
70
|
{
|
|
71
71
|
"path": "README/ru/04_api_reference.md",
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
},
|
|
74
74
|
{
|
|
75
75
|
"path": "README/ru/05_architecture.md",
|
|
76
|
-
"sha256": "
|
|
76
|
+
"sha256": "f11803686a9b0d1cfe526d36d5ad3fe7e527b73bdf5bbcd2bb9e8207abbd9a94"
|
|
77
77
|
},
|
|
78
78
|
{
|
|
79
79
|
"path": "README/ru/06_troubleshooting.md",
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
},
|
|
86
86
|
{
|
|
87
87
|
"path": "README/ru/README.md",
|
|
88
|
-
"sha256": "
|
|
88
|
+
"sha256": "b98cda9099c19497ddcdc1b58d17d62a75ef73cf6c6e64beac723b0e0363b661"
|
|
89
89
|
},
|
|
90
90
|
{
|
|
91
91
|
"path": "README/ru/html/build.js",
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
},
|
|
94
94
|
{
|
|
95
95
|
"path": "README/ru/html/index.html",
|
|
96
|
-
"sha256": "
|
|
96
|
+
"sha256": "31baddce9668e9802bc042c8a0df326061c1db7662f64df6861f7ed419890b88"
|
|
97
97
|
},
|
|
98
98
|
{
|
|
99
99
|
"path": "README/ru/html/script.js",
|
|
@@ -109,15 +109,7 @@
|
|
|
109
109
|
},
|
|
110
110
|
{
|
|
111
111
|
"path": "package.json",
|
|
112
|
-
"sha256": "
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
"path": "scripts/sync-templates.js",
|
|
116
|
-
"sha256": "4a94587201cc339668ab58f20fc2fc4a650a467d43805c2a4127ea97a06624ae"
|
|
117
|
-
},
|
|
118
|
-
{
|
|
119
|
-
"path": "sources.json",
|
|
120
|
-
"sha256": "787645f616702f008d70b85d47bd739ae6dc31298482cecc694dffb17fdd32e6"
|
|
112
|
+
"sha256": "8ae12d621050c3a4f992bc853b4ec961af5fbf32bf9c3fee639a182b546992de"
|
|
121
113
|
},
|
|
122
114
|
{
|
|
123
115
|
"path": "src/cli.js",
|
|
@@ -149,11 +141,11 @@
|
|
|
149
141
|
},
|
|
150
142
|
{
|
|
151
143
|
"path": "src/utils.js",
|
|
152
|
-
"sha256": "
|
|
144
|
+
"sha256": "ec9d1695f4b0ef2ce0b3ee6908e90900ebac0941a32ea48df673f6cd20fc1387"
|
|
153
145
|
},
|
|
154
146
|
{
|
|
155
147
|
"path": "templates/.claude/agents/doc-validator.md",
|
|
156
|
-
"sha256": "
|
|
148
|
+
"sha256": "e57950758cd4764b2cb54b3f1905567e9dbc1ed20ac6ecd30998614894689f4f"
|
|
157
149
|
},
|
|
158
150
|
{
|
|
159
151
|
"path": "templates/.claude/agents/harvest-coordinator.md",
|
|
@@ -161,7 +153,7 @@
|
|
|
161
153
|
},
|
|
162
154
|
{
|
|
163
155
|
"path": "templates/.claude/agents/product-discoverer.md",
|
|
164
|
-
"sha256": "
|
|
156
|
+
"sha256": "f74683fe91b4357d6fb4024ed47b4d5a129ea6375ca6b223dee97176d74acf1c"
|
|
165
157
|
},
|
|
166
158
|
{
|
|
167
159
|
"path": "templates/.claude/agents/replicate-coordinator.md",
|
|
@@ -193,7 +185,7 @@
|
|
|
193
185
|
},
|
|
194
186
|
{
|
|
195
187
|
"path": "templates/.claude/commands/next.md",
|
|
196
|
-
"sha256": "
|
|
188
|
+
"sha256": "1e4984306c3aa80dfc8734dc1c975dfe5fdf2cf6396ddd759e4c7635646107b8"
|
|
197
189
|
},
|
|
198
190
|
{
|
|
199
191
|
"path": "templates/.claude/commands/plan.md",
|
|
@@ -201,7 +193,7 @@
|
|
|
201
193
|
},
|
|
202
194
|
{
|
|
203
195
|
"path": "templates/.claude/commands/replicate.md",
|
|
204
|
-
"sha256": "
|
|
196
|
+
"sha256": "13f5e2ebe109f33b63cbcd75e3cf1b94224ab066aba1b0cb10cf34f668144a8a"
|
|
205
197
|
},
|
|
206
198
|
{
|
|
207
199
|
"path": "templates/.claude/commands/run.md",
|
|
@@ -209,31 +201,39 @@
|
|
|
209
201
|
},
|
|
210
202
|
{
|
|
211
203
|
"path": "templates/.claude/commands/start.md",
|
|
212
|
-
"sha256": "
|
|
204
|
+
"sha256": "4aaebc10ca8d607d4b2b43883d82392e9788c2f183878a49fc0d1ed54d07ee95"
|
|
213
205
|
},
|
|
214
206
|
{
|
|
215
207
|
"path": "templates/.claude/hooks/autocommit-insights.cjs",
|
|
216
|
-
"sha256": "
|
|
208
|
+
"sha256": "5e7cef87b24d457f25315d79fe15f0dfaf94d9269495d638817f0faee2593c6f"
|
|
217
209
|
},
|
|
218
210
|
{
|
|
219
211
|
"path": "templates/.claude/hooks/autocommit-plans.cjs",
|
|
220
|
-
"sha256": "
|
|
212
|
+
"sha256": "9bb404b7f4fda5de03e6c2f16bf8939a79ec1944538767b04bcccc6cf50cc03d"
|
|
221
213
|
},
|
|
222
214
|
{
|
|
223
215
|
"path": "templates/.claude/hooks/autocommit-roadmap.cjs",
|
|
224
|
-
"sha256": "
|
|
216
|
+
"sha256": "f4dcc9ffd9a3aed91dd56e011e699fcf8af903cc81594e4ab1ef61e5432a36ad"
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
"path": "templates/.claude/hooks/check-ports.cjs",
|
|
220
|
+
"sha256": "e5f2d2bd8899df27c2dfedf76128467becae1868210eb8525a1bad2869a8c78f"
|
|
225
221
|
},
|
|
226
222
|
{
|
|
227
223
|
"path": "templates/.claude/hooks/session-insights.cjs",
|
|
228
|
-
"sha256": "
|
|
224
|
+
"sha256": "46f8357e3886a6d54db1ab4af969b9b8643ae5937ba59038a5651ffbcfd0d30e"
|
|
229
225
|
},
|
|
230
226
|
{
|
|
231
227
|
"path": "templates/.claude/hooks/state-update.cjs",
|
|
232
|
-
"sha256": "
|
|
228
|
+
"sha256": "47146a76b768ac2273abe8f2f017856a0e28b45afaf90048148da417dd19604e"
|
|
233
229
|
},
|
|
234
230
|
{
|
|
235
231
|
"path": "templates/.claude/hooks/statusline.cjs",
|
|
236
|
-
"sha256": "
|
|
232
|
+
"sha256": "1eca683baf67a17874dc5db6dfe38eb11944f550c66f46330bce0f794732245f"
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"path": "templates/.claude/rules/docker-ports.md",
|
|
236
|
+
"sha256": "bef41c25c875479341f68783c2d64572800d4710f55401e55519245f03d22efb"
|
|
237
237
|
},
|
|
238
238
|
{
|
|
239
239
|
"path": "templates/.claude/rules/feature-lifecycle.md",
|
|
@@ -249,7 +249,7 @@
|
|
|
249
249
|
},
|
|
250
250
|
{
|
|
251
251
|
"path": "templates/.claude/rules/replicate-pipeline.md",
|
|
252
|
-
"sha256": "
|
|
252
|
+
"sha256": "b65e802d32a1e50bdfcd0cfc79c78e9234eac48a94f0cd1f5647cf4fea6c0162"
|
|
253
253
|
},
|
|
254
254
|
{
|
|
255
255
|
"path": "templates/.claude/rules/skill-interface-protocol.md",
|
|
@@ -257,7 +257,7 @@
|
|
|
257
257
|
},
|
|
258
258
|
{
|
|
259
259
|
"path": "templates/.claude/settings.json",
|
|
260
|
-
"sha256": "
|
|
260
|
+
"sha256": "b1df6cf834ccfa227f3318a70862115c17838ab31253e9d8d89381b7763e61fd"
|
|
261
261
|
},
|
|
262
262
|
{
|
|
263
263
|
"path": "templates/.claude/skills/brutal-honesty-review/README.md",
|
|
@@ -301,11 +301,11 @@
|
|
|
301
301
|
},
|
|
302
302
|
{
|
|
303
303
|
"path": "templates/.claude/skills/cc-toolkit-generator-enhanced/modules/01-detect-parse.md",
|
|
304
|
-
"sha256": "
|
|
304
|
+
"sha256": "85c72f6daa5af88b4a7ff520a387f47a7c92b81cb1f0757550c8b58100a97be6"
|
|
305
305
|
},
|
|
306
306
|
{
|
|
307
307
|
"path": "templates/.claude/skills/cc-toolkit-generator-enhanced/modules/02-analyze-map.md",
|
|
308
|
-
"sha256": "
|
|
308
|
+
"sha256": "5939f3fe6ae542fabb8e665dc373a20410d8de917362fcb3ecac504286f41836"
|
|
309
309
|
},
|
|
310
310
|
{
|
|
311
311
|
"path": "templates/.claude/skills/cc-toolkit-generator-enhanced/modules/03-generate-p0.md",
|
|
@@ -345,11 +345,11 @@
|
|
|
345
345
|
},
|
|
346
346
|
{
|
|
347
347
|
"path": "templates/.claude/skills/cc-toolkit-generator-enhanced/references/enhanced-recommendations.md",
|
|
348
|
-
"sha256": "
|
|
348
|
+
"sha256": "657e35db0cb77d3a9d1a4d01215a9b8d50441dd863593bee3a84f62aad8b00bc"
|
|
349
349
|
},
|
|
350
350
|
{
|
|
351
351
|
"path": "templates/.claude/skills/cc-toolkit-generator-enhanced/references/extended-mapping.md",
|
|
352
|
-
"sha256": "
|
|
352
|
+
"sha256": "5e87c91956eabc70b4a1084b47b2c9a20ede18bb245735812ead956eafabf3af"
|
|
353
353
|
},
|
|
354
354
|
{
|
|
355
355
|
"path": "templates/.claude/skills/cc-toolkit-generator-enhanced/references/maturity-integration.md",
|
|
@@ -365,7 +365,7 @@
|
|
|
365
365
|
},
|
|
366
366
|
{
|
|
367
367
|
"path": "templates/.claude/skills/cc-toolkit-generator-enhanced/references/templates/ddd-agents.md",
|
|
368
|
-
"sha256": "
|
|
368
|
+
"sha256": "c91f81da197a072b57378fd0018eea26c35d909a558bdca6f070eb60153c97b3"
|
|
369
369
|
},
|
|
370
370
|
{
|
|
371
371
|
"path": "templates/.claude/skills/cc-toolkit-generator-enhanced/references/templates/ddd-hooks-commands.md",
|
|
@@ -373,11 +373,11 @@
|
|
|
373
373
|
},
|
|
374
374
|
{
|
|
375
375
|
"path": "templates/.claude/skills/cc-toolkit-generator-enhanced/references/templates/ddd-skills.md",
|
|
376
|
-
"sha256": "
|
|
376
|
+
"sha256": "2f1019d5da7d695983aee79186a47fcefccbfa24db48219c04f9bb9feb757d3a"
|
|
377
377
|
},
|
|
378
378
|
{
|
|
379
379
|
"path": "templates/.claude/skills/cc-toolkit-generator-enhanced/references/templates/enhanced-claude-md.md",
|
|
380
|
-
"sha256": "
|
|
380
|
+
"sha256": "db6898b7202b84965cbff9195a6ce780cadd6aeb64adae3fbfd951443a6bc43d"
|
|
381
381
|
},
|
|
382
382
|
{
|
|
383
383
|
"path": "templates/.claude/skills/cc-toolkit-generator-enhanced/references/templates/feature-lifecycle-ent.md",
|
|
@@ -389,7 +389,7 @@
|
|
|
389
389
|
},
|
|
390
390
|
{
|
|
391
391
|
"path": "templates/.claude/skills/cc-toolkit-generator-enhanced/references/templates/feature-suggestions.md",
|
|
392
|
-
"sha256": "
|
|
392
|
+
"sha256": "3b1c20d2394e180720447416767fbfae99168cf9ca846bf64907f6fe5cd906da"
|
|
393
393
|
},
|
|
394
394
|
{
|
|
395
395
|
"path": "templates/.claude/skills/cc-toolkit-generator-enhanced/references/templates/insights-system.md",
|
|
@@ -401,7 +401,7 @@
|
|
|
401
401
|
},
|
|
402
402
|
{
|
|
403
403
|
"path": "templates/.claude/skills/cc-toolkit-generator-enhanced/references/templates/start-command.md",
|
|
404
|
-
"sha256": "
|
|
404
|
+
"sha256": "e037a7e73e65e5216f95f27a255009c4c2b95f0f2d6b7c575d70813efac34438"
|
|
405
405
|
},
|
|
406
406
|
{
|
|
407
407
|
"path": "templates/.claude/skills/explore/SKILL.md",
|
|
@@ -417,7 +417,7 @@
|
|
|
417
417
|
},
|
|
418
418
|
{
|
|
419
419
|
"path": "templates/.claude/skills/goap-research-ed25519/SKILL.md",
|
|
420
|
-
"sha256": "
|
|
420
|
+
"sha256": "404cb696d537d29585ec35f97a86173a582cd6fcf8d5f172a4f5bbd75ec971a8"
|
|
421
421
|
},
|
|
422
422
|
{
|
|
423
423
|
"path": "templates/.claude/skills/goap-research-ed25519/references/ed25519-verification.md",
|
|
@@ -433,11 +433,11 @@
|
|
|
433
433
|
},
|
|
434
434
|
{
|
|
435
435
|
"path": "templates/.claude/skills/goap-research-ed25519/scripts/check_report_evidence.py",
|
|
436
|
-
"sha256": "
|
|
436
|
+
"sha256": "5053e677f11d00b4dd8365a81eafa1d2c961eebd25c33f72b02455573a934a32"
|
|
437
437
|
},
|
|
438
438
|
{
|
|
439
439
|
"path": "templates/.claude/skills/goap-research-ed25519/scripts/ed25519_verifier.py",
|
|
440
|
-
"sha256": "
|
|
440
|
+
"sha256": "f4a2ac9e6473201583643fe8abf47560863cec600344dad5c9df06091b4298f5"
|
|
441
441
|
},
|
|
442
442
|
{
|
|
443
443
|
"path": "templates/.claude/skills/goap-research-ed25519/scripts/evidence_fetch.py",
|
|
@@ -447,13 +447,29 @@
|
|
|
447
447
|
"path": "templates/.claude/skills/goap-research-ed25519/scripts/fixture_legacy_v1_fact.json",
|
|
448
448
|
"sha256": "e613de4737145cbfb5f349fbf9f1122801ce3508b62c3a18e2e0cba26b9da5b0"
|
|
449
449
|
},
|
|
450
|
+
{
|
|
451
|
+
"path": "templates/.claude/skills/goap-research-ed25519/scripts/fixture_legacy_v2_fact.json",
|
|
452
|
+
"sha256": "3f552b47c3864e4ff7ae8c72516e98c188592c7f4f7703d09ce88b39f586ad9d"
|
|
453
|
+
},
|
|
454
|
+
{
|
|
455
|
+
"path": "templates/.claude/skills/goap-research-ed25519/scripts/fixtures_field_cases.json",
|
|
456
|
+
"sha256": "e2ee619732ab4a1b57285e57b4349f96b4158b231a5624e5264fadf69edb8983"
|
|
457
|
+
},
|
|
450
458
|
{
|
|
451
459
|
"path": "templates/.claude/skills/goap-research-ed25519/scripts/goap_planner.py",
|
|
452
|
-
"sha256": "
|
|
460
|
+
"sha256": "f5cbf4784106710b363e7f29bfa538b75f488cb25e1c273ae40de9f4c2a6710b"
|
|
453
461
|
},
|
|
454
462
|
{
|
|
455
463
|
"path": "templates/.claude/skills/goap-research-ed25519/scripts/learning_bridge.py",
|
|
456
|
-
"sha256": "
|
|
464
|
+
"sha256": "74f8842978ba945ff78c2bd54702415dd87122e61919571e12a19c3cf1e56131"
|
|
465
|
+
},
|
|
466
|
+
{
|
|
467
|
+
"path": "templates/.claude/skills/goap-research-ed25519/scripts/population_match.py",
|
|
468
|
+
"sha256": "bbd1d3346a6fb75d0e8526cb5d2fc8bc8613bb31ab63ffb0958d436d5e009054"
|
|
469
|
+
},
|
|
470
|
+
{
|
|
471
|
+
"path": "templates/.claude/skills/goap-research-ed25519/scripts/risk_statement.py",
|
|
472
|
+
"sha256": "320ffece816e875f65624583846f44dc99461f672a0de7cda42be5ddf29d6de5"
|
|
457
473
|
},
|
|
458
474
|
{
|
|
459
475
|
"path": "templates/.claude/skills/goap-research-ed25519/scripts/source_tiers.py",
|
|
@@ -461,11 +477,31 @@
|
|
|
461
477
|
},
|
|
462
478
|
{
|
|
463
479
|
"path": "templates/.claude/skills/goap-research-ed25519/scripts/test_ed25519_verifier.py",
|
|
464
|
-
"sha256": "
|
|
480
|
+
"sha256": "dcba1ce538ff946d6928f30a7c5cbcc37fddf712b6181f91f94c76e20c117ac5"
|
|
465
481
|
},
|
|
466
482
|
{
|
|
467
483
|
"path": "templates/.claude/skills/goap-research-ed25519/scripts/test_evidence_provenance.py",
|
|
468
|
-
"sha256": "
|
|
484
|
+
"sha256": "292bfcdcc086934905c77f1543d8400ee483166ff3ce26c79bb526c204320dbb"
|
|
485
|
+
},
|
|
486
|
+
{
|
|
487
|
+
"path": "templates/.claude/skills/goap-research-ed25519/scripts/test_goap_planner.py",
|
|
488
|
+
"sha256": "7942ada069048b7e97bf2b6e920898a58517ccec090069f347399dbf1fc37731"
|
|
489
|
+
},
|
|
490
|
+
{
|
|
491
|
+
"path": "templates/.claude/skills/goap-research-ed25519/scripts/test_population_match.py",
|
|
492
|
+
"sha256": "f33f72c0ba6305af1644e6b1a7f7635d3f33273344f19c14e7dbd2f819af0e7f"
|
|
493
|
+
},
|
|
494
|
+
{
|
|
495
|
+
"path": "templates/.claude/skills/goap-research-ed25519/scripts/test_risk_absolute.py",
|
|
496
|
+
"sha256": "ab353db189650551c374cb772ba4a3a6929e3a2618f2f5c112eca4c3f69e46b6"
|
|
497
|
+
},
|
|
498
|
+
{
|
|
499
|
+
"path": "templates/.claude/skills/goap-research-ed25519/scripts/test_signature_v3.py",
|
|
500
|
+
"sha256": "a04259296df104c9497c7b31d29556cb9a7ad4dd3339cbe3d8d32a4f53950d25"
|
|
501
|
+
},
|
|
502
|
+
{
|
|
503
|
+
"path": "templates/.claude/skills/goap-research-ed25519/scripts/test_suite_completeness.py",
|
|
504
|
+
"sha256": "727c5d5b0dad215957012276ebc146397178255077e762ed7b88a60d8178d2ab"
|
|
469
505
|
},
|
|
470
506
|
{
|
|
471
507
|
"path": "templates/.claude/skills/knowledge-extractor/SKILL.md",
|
|
@@ -561,7 +597,7 @@
|
|
|
561
597
|
},
|
|
562
598
|
{
|
|
563
599
|
"path": "templates/.claude/skills/requirements-validator/SKILL.md",
|
|
564
|
-
"sha256": "
|
|
600
|
+
"sha256": "e50c5269ad181966a81c14ef596946cea67cbf4b8f8f648c90fd66ecad948933"
|
|
565
601
|
},
|
|
566
602
|
{
|
|
567
603
|
"path": "templates/.claude/skills/requirements-validator/assets/templates/bdd-feature-template.feature",
|
|
@@ -577,7 +613,7 @@
|
|
|
577
613
|
},
|
|
578
614
|
{
|
|
579
615
|
"path": "templates/.claude/skills/requirements-validator/references/scoring-system.md",
|
|
580
|
-
"sha256": "
|
|
616
|
+
"sha256": "49afe072f31f5b4f9a33f6b59487244f494b0f5587b6cc10c797c4de59510114"
|
|
581
617
|
},
|
|
582
618
|
{
|
|
583
619
|
"path": "templates/.claude/skills/requirements-validator/references/smart-criteria.md",
|
|
@@ -637,7 +673,7 @@
|
|
|
637
673
|
},
|
|
638
674
|
{
|
|
639
675
|
"path": "templates/.claude/skills/sparc-prd-mini/SKILL.md",
|
|
640
|
-
"sha256": "
|
|
676
|
+
"sha256": "50e829635b828b444487e4b04219518a595dbd4b94f91b66fb03ddf4a7b21712"
|
|
641
677
|
},
|
|
642
678
|
{
|
|
643
679
|
"path": "templates/.claude/skills/sparc-prd-mini/references/sparc-methodology.md",
|
|
@@ -653,11 +689,11 @@
|
|
|
653
689
|
},
|
|
654
690
|
{
|
|
655
691
|
"path": "tests/e2e/lifecycle.test.js",
|
|
656
|
-
"sha256": "
|
|
692
|
+
"sha256": "fd4af066e9e20c7c0f711337f3afdfd2f8e13ec8c845f8784befeb0785270e14"
|
|
657
693
|
},
|
|
658
694
|
{
|
|
659
695
|
"path": "tests/snapshot/baseline.json",
|
|
660
|
-
"sha256": "
|
|
696
|
+
"sha256": "cb6c08b5c5fb7ea837fb6c054d1094f8c4878a88ac866ec67a3862f8c7fb2a07"
|
|
661
697
|
},
|
|
662
698
|
{
|
|
663
699
|
"path": "tests/snapshot/templates.test.js",
|
|
@@ -665,13 +701,85 @@
|
|
|
665
701
|
},
|
|
666
702
|
{
|
|
667
703
|
"path": "tests/snapshot/update-baseline.js",
|
|
668
|
-
"sha256": "
|
|
704
|
+
"sha256": "1f50d0c2ec86f1c865ee6ed8c59725e57c397d487b7a24baf051dc5d4b294459"
|
|
705
|
+
},
|
|
706
|
+
{
|
|
707
|
+
"path": "tests/unit/adr-decision-coverage.test.js",
|
|
708
|
+
"sha256": "34f9bf0700b4c45fb905f606567f2a6d3ba152f8f1db29f479963667b298ede4"
|
|
709
|
+
},
|
|
710
|
+
{
|
|
711
|
+
"path": "tests/unit/adr-scanner-contract.test.js",
|
|
712
|
+
"sha256": "08c8b7d862ae0ddcd72116462458b71d3fe29b09cbaf08fa6a824e22ad6985c8"
|
|
713
|
+
},
|
|
714
|
+
{
|
|
715
|
+
"path": "tests/unit/autocommit-deletion.test.js",
|
|
716
|
+
"sha256": "87ebe50e164cfa3aeda3d4f04e6b6aa98ab8af44711cbeb94252d770c07ad8ad"
|
|
717
|
+
},
|
|
718
|
+
{
|
|
719
|
+
"path": "tests/unit/check-ports.test.js",
|
|
720
|
+
"sha256": "72d9eeaa8c47d83fba867722f4b8efc8d079e2d9649e1a20abff46571c2f6f15"
|
|
721
|
+
},
|
|
722
|
+
{
|
|
723
|
+
"path": "tests/unit/db-port-rule.test.js",
|
|
724
|
+
"sha256": "a97c913ccba8da16f7b8ef3094cac4ba8b499df2d644b3094c58945306d98c09"
|
|
725
|
+
},
|
|
726
|
+
{
|
|
727
|
+
"path": "tests/unit/detect-parse-anchor.test.js",
|
|
728
|
+
"sha256": "ecfa57bfcb34e12081009d0bdf4be83a6eab7a8b7a6a0dc27c1cb02ae5561be0"
|
|
729
|
+
},
|
|
730
|
+
{
|
|
731
|
+
"path": "tests/unit/external-dependency-check.test.js",
|
|
732
|
+
"sha256": "d85109f8e86648d61fc17d0128e9d4881950a70641c246e667d7e54ffc1f0273"
|
|
733
|
+
},
|
|
734
|
+
{
|
|
735
|
+
"path": "tests/unit/growth-module-b2b-gate.test.js",
|
|
736
|
+
"sha256": "7bb5b39a637becbea9813744a5d649b19c6bd8a9b18045c971bcfd842852ea84"
|
|
737
|
+
},
|
|
738
|
+
{
|
|
739
|
+
"path": "tests/unit/hooks-project-anchored.test.js",
|
|
740
|
+
"sha256": "2fa5b44982d72701d7a8486ac24ee3a91c6fa6123ef7303a0e065bf1e60987d7"
|
|
741
|
+
},
|
|
742
|
+
{
|
|
743
|
+
"path": "tests/unit/hooks-report-failures.test.js",
|
|
744
|
+
"sha256": "35d3fca74c22e1bc88b6fbb25f172b66a21561a947e2b6e90a366d5a854376b8"
|
|
745
|
+
},
|
|
746
|
+
{
|
|
747
|
+
"path": "tests/unit/pipeline-file-ownership.test.js",
|
|
748
|
+
"sha256": "dd5b6e2ddb3078fb5ccafed6c55a6079bbd20d73fd5c2dacbb988263ceeda806"
|
|
749
|
+
},
|
|
750
|
+
{
|
|
751
|
+
"path": "tests/unit/roadmap-one-schema.test.js",
|
|
752
|
+
"sha256": "3e7ac9dbc9796a791fc95c43b4346c6da2455f3c0ace45bbc440502c5957d3dc"
|
|
753
|
+
},
|
|
754
|
+
{
|
|
755
|
+
"path": "tests/unit/sparc-reconciliation.test.js",
|
|
756
|
+
"sha256": "4020c623cb351d42b3b184d23194d48cf04e4a3ce8d95ff96c4261ade75632c9"
|
|
757
|
+
},
|
|
758
|
+
{
|
|
759
|
+
"path": "tests/unit/spec-pseudocode-traceability.test.js",
|
|
760
|
+
"sha256": "fc01a561458f35e789a6d22ce3def23f3553493ba9f06493666306c603fa3c8c"
|
|
761
|
+
},
|
|
762
|
+
{
|
|
763
|
+
"path": "tests/unit/statusline-honest-labels.test.js",
|
|
764
|
+
"sha256": "3188892491df4133566c20fc336b8d5ceedac7e14c7053088be2e3bee3e10594"
|
|
765
|
+
},
|
|
766
|
+
{
|
|
767
|
+
"path": "tests/unit/statusline-two-roots.test.js",
|
|
768
|
+
"sha256": "73eb6c542058b3969e97ac0fb7f363e5b2d396bd5328b4cb186fba102aa3fd01"
|
|
769
|
+
},
|
|
770
|
+
{
|
|
771
|
+
"path": "tests/unit/sync-templates-guard.test.js",
|
|
772
|
+
"sha256": "75e8e0d0d2dfc16f14c586d399b5c9c075cc3a0494c558fe39d8528516185cfe"
|
|
669
773
|
},
|
|
670
774
|
{
|
|
671
775
|
"path": "tests/unit/utils.test.js",
|
|
672
|
-
"sha256": "
|
|
776
|
+
"sha256": "2ccc68f9a91d188d56ebad77c4a64653cc5ff7aec093a739eb707774a37e1732"
|
|
777
|
+
},
|
|
778
|
+
{
|
|
779
|
+
"path": "tests/unit/validation-gate-teeth.test.js",
|
|
780
|
+
"sha256": "d4f42a26b67b2fa1dfa8db9984c301a7d7e91657e5e2cdabb1bab307c766138d"
|
|
673
781
|
}
|
|
674
782
|
]
|
|
675
783
|
},
|
|
676
|
-
"signature": "
|
|
784
|
+
"signature": "2lO/3LnJ6PCrXJW8Hm4PO2SRG0YNFAU8vsA+FjHBfXgNYU91TalTT7tFpIo2uG8wx9qpZWDYfWjGNsiQhvqiBQ=="
|
|
677
785
|
}
|
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,141 @@ All notable changes to `@dzhechkov/p-replicator` are documented here.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.6.0] - 2026-08-27
|
|
9
|
+
|
|
10
|
+
**Seventeen features** across two days, from the field-report sweep (PR-003, PR-005+010, PR-008,
|
|
11
|
+
PR-009+004, PR-010, PR-011, PR-012, PR-013, PR-007 G5) plus a latent publish hazard, a silent-failure
|
|
12
|
+
class, a growth-module gate and three regressions found in passing. Every one went through the full
|
|
13
|
+
design→plan→code→cross-family-QE pipeline; artifacts live in `features/<slug>/` in the source repo.
|
|
14
|
+
|
|
15
|
+
**MINOR, not patch — the pre-shipped contract changed twice.** Rules went 5 → 6 (`docker-ports`) and
|
|
16
|
+
hooks 6 → 7 (`check-ports`). After `update`, `doctor` and `verify` expect the new counts.
|
|
17
|
+
|
|
18
|
+
### Added — a check that can fail, for the rule that could not
|
|
19
|
+
|
|
20
|
+
`.claude/hooks/check-ports.cjs` enforces «Правило №0» against a real `docker compose config`, in Node
|
|
21
|
+
so it runs where the package promises to run. **Three exit codes: 0 clean, 1 violation, 2 THE CHECK
|
|
22
|
+
DID NOT RUN** — no compose, no docker, an unparseable config. A check that answers "clean" when it
|
|
23
|
+
could not look turns an unknown into a reassurance.
|
|
24
|
+
|
|
25
|
+
It is a rewrite, not a transcription: the bash original never looked at `network_mode: host`, which
|
|
26
|
+
the rule forbids. It is not registered as an event hook — invoke it deliberately:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
node .claude/hooks/check-ports.cjs .
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Added — a recorded decision cannot be quietly left unbuilt
|
|
33
|
+
|
|
34
|
+
Phase 2 closes with a decision-coverage step: every `ADR-<nnn>` in `docs/ADR.md` must be named
|
|
35
|
+
downstream, and every downstream reference must match a real decision. Both directions, both able to
|
|
36
|
+
say `none`. It establishes that a decision is NAMED, not that it was implemented, and says so.
|
|
37
|
+
|
|
38
|
+
### Changed — deleting an artifact is now recorded
|
|
39
|
+
|
|
40
|
+
The three autocommit hooks treated a deleted roadmap as "nothing to do". A deletion is now committed
|
|
41
|
+
with its own `auto-remove` subject, classified from what git actually staged — so deleting one file
|
|
42
|
+
inside a surviving directory counts too. A project that never had the artifact stays silent.
|
|
43
|
+
|
|
44
|
+
### Fixed — the status line stops saying untrue things
|
|
45
|
+
|
|
46
|
+
The progress bar was built from done/total and captioned `mvp`; it now carries the caption it draws.
|
|
47
|
+
And the domain guess had no word boundaries, so "healthchecks" made a project medical and "slack"
|
|
48
|
+
made it enterprise. Boundaries are Unicode lookarounds, not `\b` — `\b` does not work around
|
|
49
|
+
Cyrillic at all.
|
|
50
|
+
|
|
51
|
+
### Fixed — the project scanner could not recognise its own output
|
|
52
|
+
|
|
53
|
+
Seven probes resolved from one parameter and disagreed about what it was; the two that decide whether
|
|
54
|
+
a project is SPARC-shaped looked exactly where the pipeline does not write.
|
|
55
|
+
|
|
56
|
+
### Fixed — the growth module was gated off for the type it handles itself
|
|
57
|
+
|
|
58
|
+
Two callers disabled it for B2B while the module branches on type internally. The condition is now
|
|
59
|
+
about applicability, not product type.
|
|
60
|
+
|
|
61
|
+
**The version number and the decision to publish were the owner's**; both were given on 2026-08-27.
|
|
62
|
+
npm's latest before this release was 1.5.18; 1.5.19 was staged and never published.
|
|
63
|
+
|
|
64
|
+
### Fixed — the shipped hooks did not work from a subdirectory, and never committed anything
|
|
65
|
+
|
|
66
|
+
- `settings.json` pinned all five commands to `${CLAUDE_PROJECT_DIR}` (braced, quoted — the form
|
|
67
|
+
Claude Code rewrites for PowerShell). Relative paths resolve against the process cwd, which drifts
|
|
68
|
+
the moment any tool call runs `cd`, so every `Stop` hook died with `MODULE_NOT_FOUND` — silently,
|
|
69
|
+
because hooks are non-blocking.
|
|
70
|
+
- All six hooks now anchor their DATA at an absolute `CLAUDE_PROJECT_DIR`, falling back to their own
|
|
71
|
+
`__dirname`. Fixing only `settings.json` would have made them run and silently do nothing.
|
|
72
|
+
- The three autocommit hooks passed `-m` AFTER `--`, so git parsed the commit message as a pathspec
|
|
73
|
+
and the commit failed from every directory, always. They had never committed anything.
|
|
74
|
+
|
|
75
|
+
### Fixed — the status line told half the truth from every directory
|
|
76
|
+
|
|
77
|
+
Toolkit counts now resolve from the project root regardless of cwd, and the roadmap is a survey of
|
|
78
|
+
`projects/*` rather than a guess — sub-project figures are labelled as theirs and never merged into
|
|
79
|
+
the root's own counters. The survey is bounded (24 entries, 512 KB per file) because it renders on
|
|
80
|
+
every prompt.
|
|
81
|
+
|
|
82
|
+
### Added — the pipeline can now refuse to build on unvalidated input
|
|
83
|
+
|
|
84
|
+
- A blocking FLOOR on the requirements gate: `Testable = 0` or `Completeness = 0` blocks whatever the
|
|
85
|
+
total says. A story with no acceptance criteria totalled 72/100 and read as "fix minor issues".
|
|
86
|
+
- Phase 3 has a checkable precondition — the validation report must exist and its FIRST
|
|
87
|
+
`**Verdict:**` line must be green or yellow — replacing an unenforceable "never skip validation".
|
|
88
|
+
- An External Dependencies inventory in `Architecture.md` plus a sixth Phase-2 lens: every external
|
|
89
|
+
capability a requirement rests on carries evidence (a citation WITH a verbatim quote) and one of
|
|
90
|
+
three verdicts. An unconfirmed capability stops the requirements that rest on it, not the run.
|
|
91
|
+
- Scenario↔algorithm traceability: scenario IDs in Phase 3, `REALISES:` in Phase 4 algorithms, and a
|
|
92
|
+
coverage reconciliation that runs BOTH ways. It establishes that a claim exists — not that the
|
|
93
|
+
algorithm performs the check, and it says so in the template.
|
|
94
|
+
|
|
95
|
+
### Added — `.claude/rules/docker-ports.md` (6th pre-shipped rule)
|
|
96
|
+
|
|
97
|
+
"Правило №0": storage has no host publication except a loopback bind. Every forbidden form is named
|
|
98
|
+
— `0.0.0.0`, `[::]`, a single explicit public address, and `network_mode: host`, which needs no
|
|
99
|
+
`ports:` entry at all. The rule states that the package does NOT check your compose file, so nobody
|
|
100
|
+
infers a guarantee from its presence.
|
|
101
|
+
|
|
102
|
+
**This changes the pre-shipped contract from 5 rules to 6.** `doctor`, `verify`, the status line and
|
|
103
|
+
the READMEs move together, and a test now holds every count site to `COMPONENTS.rules.items`.
|
|
104
|
+
|
|
105
|
+
### Fixed — one schema for `feature-roadmap.json`
|
|
106
|
+
|
|
107
|
+
It was documented twice, incompatibly, both copies claiming to be canonical. `commands/next.md` is
|
|
108
|
+
now the schema; the other document points at it. The status line marks a roadmap whose `priority`
|
|
109
|
+
values are off-schema instead of rendering a confident `mvp 0/0`.
|
|
110
|
+
|
|
111
|
+
### Fixed — `/start` no longer discards what `/replicate` wrote
|
|
112
|
+
|
|
113
|
+
Both wrote `docker-compose.yml`, `.gitignore` and `README.md`, and `/replicate` recommends running
|
|
114
|
+
`/start` afterwards — so the collision was the normal path. Both sides now guard: if the file exists,
|
|
115
|
+
make the minimal targeted edit, inspect the diff, and name every changed hunk.
|
|
116
|
+
|
|
117
|
+
### Security — `scripts/sync-templates.js` fails closed
|
|
118
|
+
|
|
119
|
+
It copied a discovered repo root's `.claude/` over `templates/` — the npm tarball — and inside a
|
|
120
|
+
monorepo the walk-up finds the MONOREPO. It was safe only because nothing called it, while a test
|
|
121
|
+
helper and an architecture doc both invited the call. It now refuses unless the root carries a
|
|
122
|
+
regular `.p-replicator-sync-source` file with an exact declaration.
|
|
123
|
+
|
|
124
|
+
### Changed — a hook that cannot commit no longer says nothing
|
|
125
|
+
|
|
126
|
+
A real git failure now prints ONE line to **stdout** naming the hook, the artifact and git's own
|
|
127
|
+
reason, and still exits 0. The ordinary "nothing to commit" path stays silent.
|
|
128
|
+
|
|
129
|
+
The stream matters and was wrong at first: MEASURED in the Claude Code binary, a hook exiting 0 has
|
|
130
|
+
its **stderr discarded** (*"Exit code 0 - stdout/stderr not shown"*) while stdout can be surfaced
|
|
131
|
+
(*"Exit code 0 - stdout shown in transcript mode (ctrl+o)"*). "Visible" here means transcript mode
|
|
132
|
+
and the debug log — not an interruption: a `Stop` hook cannot put a line in front of you without
|
|
133
|
+
blocking your session, and blocking is worse.
|
|
134
|
+
|
|
135
|
+
Still open, and it is the owner's call: whether a DELETED target should be auto-committed.
|
|
136
|
+
|
|
137
|
+
### Tests
|
|
138
|
+
|
|
139
|
+
**116 → 235** (MEASURED — reproducer `npm test` in this package; 116 before the first of these
|
|
140
|
+
features, 235 after the last). Every feature's guard is proven by mutation: apply it, watch a
|
|
141
|
+
specific assertion go red, restore, watch it pass.
|
|
142
|
+
|
|
8
143
|
## [1.5.14] - 2026-07-28
|
|
9
144
|
|
|
10
145
|
### Fixed — Documentation & packaging (package-verification findings)
|
package/MULTIPLATFORM_ROADMAP.md
CHANGED
|
@@ -112,7 +112,7 @@ Beyond Level 2 — adapt logic for platform-specific capabilities:
|
|
|
112
112
|
| `/myinsights`, `/docs`, `/harvest`, `/start`, `/deploy` | ✅ universal | path-translate | **Yes** |
|
|
113
113
|
| 10 skills (sparc-prd-mini, etc.) | ⚠️ Claude-specific composition | inline-compile into commands | **Compromise** — sacrifice runtime-loading |
|
|
114
114
|
| 4 pre-shipped agents | ⚠️ Claude Task-tool specific | translate to platform sub-agents | **Yes if platform supports** |
|
|
115
|
-
|
|
|
115
|
+
| 6 rules | ✅ universal markdown | path-translate | **Yes** |
|
|
116
116
|
| Hooks (SessionStart insights, Stop autocommit) | ❌ Claude-only | bake into commands as instructions | **Compromise** — degraded UX |
|
|
117
117
|
| Statusline dashboard | ❌ Claude-only | optional `progress.md` file? | **Skip** — Claude-exclusive feature |
|
|
118
118
|
| `verify` CLI command | ✅ universal | works as-is | **Yes** (already works) |
|