@patwoodman/dsh-sdlc-flow 0.4.0-beta.17 → 0.4.0-beta.20
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/cordis.patch.yml +98 -36
- package/lib/rows/cli/locale/en.json +6 -0
- package/lib/rows/cli/locale/zh.json +6 -0
- package/lib/rows/cli/package.json +1 -1
- package/lib/rows/core/cordis.patch.yml +51 -0
- package/lib/rows/core/icon.svg +28 -0
- package/lib/rows/core/locale/en.json +6 -0
- package/lib/rows/core/locale/zh.json +6 -0
- package/lib/rows/core/package.json +1 -1
- package/lib/rows/guard/cordis.patch.yml +23 -0
- package/lib/rows/guard/icon.svg +28 -0
- package/lib/rows/guard/locale/en.json +6 -0
- package/lib/rows/guard/locale/zh.json +6 -0
- package/lib/rows/guard/package.json +1 -1
- package/lib/rows/guard/schema/path-policy.schema.json +48 -0
- package/lib/rows/presets/cordis.patch.yml +634 -0
- package/lib/rows/presets/icon.svg +28 -0
- package/lib/rows/presets/lib/roles.js +45 -15
- package/lib/rows/presets/locale/en.json +6 -0
- package/lib/rows/presets/locale/zh.json +6 -0
- package/lib/rows/presets/package.json +1 -1
- package/lib/rows/tools/cordis.patch.yml +11 -0
- package/lib/rows/tools/icon.svg +28 -0
- package/lib/rows/tools/lib/dispatch.js +11 -0
- package/lib/rows/tools/lib/index.js +12 -1
- package/lib/rows/tools/lib/plan.js +11 -0
- package/lib/rows/tools/lib/plugin.js +26 -1
- package/lib/rows/tools/lib/report.js +15 -0
- package/lib/rows/tools/locale/en.json +6 -0
- package/lib/rows/tools/locale/zh.json +6 -0
- package/lib/rows/tools/package.json +1 -1
- package/lib/rows/ui/cordis.patch.yml +11 -0
- package/lib/rows/ui/icon.svg +28 -0
- package/lib/rows/ui/locale/en.json +6 -0
- package/lib/rows/ui/locale/zh.json +6 -0
- package/lib/rows/ui/package.json +1 -1
- package/package.json +4 -1
package/cordis.patch.yml
CHANGED
|
@@ -22,10 +22,11 @@
|
|
|
22
22
|
#
|
|
23
23
|
# Order matters only where a row waits on a service: services first, then the
|
|
24
24
|
# tools and preset rows that use them, then the UI. The
|
|
25
|
-
# `agent-preset-registry` row stays FIRST inside the presets block
|
|
26
|
-
# has no insert-if-missing)
|
|
27
|
-
#
|
|
28
|
-
#
|
|
25
|
+
# `agent-preset-registry` row stays FIRST inside the presets member block
|
|
26
|
+
# (headless/sdk, the dialect has no insert-if-missing). This generated lead
|
|
27
|
+
# patch replaces that insert with an id-targeted override of the web template's
|
|
28
|
+
# shipped row: a duplicate id+name is loader-accepted but blocks plugin-manager
|
|
29
|
+
# uninstall. M0-02 pins one registry row whose default is sdlc-lead.
|
|
29
30
|
|
|
30
31
|
# ── the meta-bundle's own row ────────────────────────────────────────────────
|
|
31
32
|
# A row that executes this package's apply() at boot, so the meta-bundle is a
|
|
@@ -82,11 +83,16 @@
|
|
|
82
83
|
worktreePath: !!js process.cwd()
|
|
83
84
|
|
|
84
85
|
# ── from @patwoodman/dsh-sdlc-flow-presets — the 26 role presets (C.3)
|
|
86
|
+
# The web template ships agent-preset-registry. Override its default instead
|
|
87
|
+
# of inserting a duplicate row: a duplicate id+name is loader-accepted but
|
|
88
|
+
# blocks plugin-manager uninstall as "bundle-in-use". The presets member keeps
|
|
89
|
+
# the insert for headless/sdk templates, which have no registry row.
|
|
90
|
+
- id: agent-preset-registry
|
|
91
|
+
name: '@deepseek-ai/dsh-agent-preset-registry'
|
|
92
|
+
config:
|
|
93
|
+
default: sdlc-lead
|
|
94
|
+
|
|
85
95
|
- insert:
|
|
86
|
-
- id: agent-preset-registry
|
|
87
|
-
name: "@deepseek-ai/dsh-agent-preset-registry"
|
|
88
|
-
config:
|
|
89
|
-
default: sdlc-lead
|
|
90
96
|
- id: preset-sdlc-lead
|
|
91
97
|
name: "@deepseek-ai/dsh-agent-preset"
|
|
92
98
|
config:
|
|
@@ -106,14 +112,20 @@
|
|
|
106
112
|
name: "@deepseek-ai/dsh-tool-fs"
|
|
107
113
|
- id: tool-todo
|
|
108
114
|
name: "@deepseek-ai/dsh-tool-todo"
|
|
115
|
+
config:
|
|
116
|
+
allowParallelInProgress: true
|
|
109
117
|
- id: sdlc-report
|
|
110
|
-
name: "@patwoodman/dsh-sdlc-flow/tools"
|
|
118
|
+
name: "@patwoodman/dsh-sdlc-flow/tools-report"
|
|
111
119
|
- id: tool-subagent
|
|
112
120
|
name: "@deepseek-ai/dsh-tool-subagent"
|
|
121
|
+
config:
|
|
122
|
+
provider: spawn
|
|
123
|
+
toolName: subagent
|
|
124
|
+
backgroundMode: continuable
|
|
113
125
|
- id: sdlc-dispatch
|
|
114
|
-
name: "@patwoodman/dsh-sdlc-flow/tools"
|
|
126
|
+
name: "@patwoodman/dsh-sdlc-flow/tools-dispatch"
|
|
115
127
|
- id: sdlc-plan
|
|
116
|
-
name: "@patwoodman/dsh-sdlc-flow/tools"
|
|
128
|
+
name: "@patwoodman/dsh-sdlc-flow/tools-plan"
|
|
117
129
|
- id: preset-sdlc-business-analyst
|
|
118
130
|
name: "@deepseek-ai/dsh-agent-preset"
|
|
119
131
|
config:
|
|
@@ -133,8 +145,10 @@
|
|
|
133
145
|
name: "@deepseek-ai/dsh-tool-fs"
|
|
134
146
|
- id: tool-todo
|
|
135
147
|
name: "@deepseek-ai/dsh-tool-todo"
|
|
148
|
+
config:
|
|
149
|
+
allowParallelInProgress: false
|
|
136
150
|
- id: sdlc-report
|
|
137
|
-
name: "@patwoodman/dsh-sdlc-flow/tools"
|
|
151
|
+
name: "@patwoodman/dsh-sdlc-flow/tools-report"
|
|
138
152
|
- id: preset-sdlc-requirements-engineer
|
|
139
153
|
name: "@deepseek-ai/dsh-agent-preset"
|
|
140
154
|
config:
|
|
@@ -154,8 +168,10 @@
|
|
|
154
168
|
name: "@deepseek-ai/dsh-tool-fs"
|
|
155
169
|
- id: tool-todo
|
|
156
170
|
name: "@deepseek-ai/dsh-tool-todo"
|
|
171
|
+
config:
|
|
172
|
+
allowParallelInProgress: false
|
|
157
173
|
- id: sdlc-report
|
|
158
|
-
name: "@patwoodman/dsh-sdlc-flow/tools"
|
|
174
|
+
name: "@patwoodman/dsh-sdlc-flow/tools-report"
|
|
159
175
|
- id: preset-sdlc-product-owner
|
|
160
176
|
name: "@deepseek-ai/dsh-agent-preset"
|
|
161
177
|
config:
|
|
@@ -175,8 +191,10 @@
|
|
|
175
191
|
name: "@deepseek-ai/dsh-tool-fs"
|
|
176
192
|
- id: tool-todo
|
|
177
193
|
name: "@deepseek-ai/dsh-tool-todo"
|
|
194
|
+
config:
|
|
195
|
+
allowParallelInProgress: false
|
|
178
196
|
- id: sdlc-report
|
|
179
|
-
name: "@patwoodman/dsh-sdlc-flow/tools"
|
|
197
|
+
name: "@patwoodman/dsh-sdlc-flow/tools-report"
|
|
180
198
|
- id: preset-sdlc-solution-architect
|
|
181
199
|
name: "@deepseek-ai/dsh-agent-preset"
|
|
182
200
|
config:
|
|
@@ -196,8 +214,10 @@
|
|
|
196
214
|
name: "@deepseek-ai/dsh-tool-fs"
|
|
197
215
|
- id: tool-todo
|
|
198
216
|
name: "@deepseek-ai/dsh-tool-todo"
|
|
217
|
+
config:
|
|
218
|
+
allowParallelInProgress: false
|
|
199
219
|
- id: sdlc-report
|
|
200
|
-
name: "@patwoodman/dsh-sdlc-flow/tools"
|
|
220
|
+
name: "@patwoodman/dsh-sdlc-flow/tools-report"
|
|
201
221
|
- id: preset-sdlc-security-engineer
|
|
202
222
|
name: "@deepseek-ai/dsh-agent-preset"
|
|
203
223
|
config:
|
|
@@ -217,8 +237,10 @@
|
|
|
217
237
|
name: "@deepseek-ai/dsh-tool-fs"
|
|
218
238
|
- id: tool-todo
|
|
219
239
|
name: "@deepseek-ai/dsh-tool-todo"
|
|
240
|
+
config:
|
|
241
|
+
allowParallelInProgress: false
|
|
220
242
|
- id: sdlc-report
|
|
221
|
-
name: "@patwoodman/dsh-sdlc-flow/tools"
|
|
243
|
+
name: "@patwoodman/dsh-sdlc-flow/tools-report"
|
|
222
244
|
- id: preset-sdlc-data-engineer
|
|
223
245
|
name: "@deepseek-ai/dsh-agent-preset"
|
|
224
246
|
config:
|
|
@@ -238,8 +260,10 @@
|
|
|
238
260
|
name: "@deepseek-ai/dsh-tool-fs"
|
|
239
261
|
- id: tool-todo
|
|
240
262
|
name: "@deepseek-ai/dsh-tool-todo"
|
|
263
|
+
config:
|
|
264
|
+
allowParallelInProgress: false
|
|
241
265
|
- id: sdlc-report
|
|
242
|
-
name: "@patwoodman/dsh-sdlc-flow/tools"
|
|
266
|
+
name: "@patwoodman/dsh-sdlc-flow/tools-report"
|
|
243
267
|
- id: preset-sdlc-database-engineer
|
|
244
268
|
name: "@deepseek-ai/dsh-agent-preset"
|
|
245
269
|
config:
|
|
@@ -259,8 +283,10 @@
|
|
|
259
283
|
name: "@deepseek-ai/dsh-tool-fs"
|
|
260
284
|
- id: tool-todo
|
|
261
285
|
name: "@deepseek-ai/dsh-tool-todo"
|
|
286
|
+
config:
|
|
287
|
+
allowParallelInProgress: false
|
|
262
288
|
- id: sdlc-report
|
|
263
|
-
name: "@patwoodman/dsh-sdlc-flow/tools"
|
|
289
|
+
name: "@patwoodman/dsh-sdlc-flow/tools-report"
|
|
264
290
|
- id: preset-sdlc-ux-designer
|
|
265
291
|
name: "@deepseek-ai/dsh-agent-preset"
|
|
266
292
|
config:
|
|
@@ -280,8 +306,10 @@
|
|
|
280
306
|
name: "@deepseek-ai/dsh-tool-fs"
|
|
281
307
|
- id: tool-todo
|
|
282
308
|
name: "@deepseek-ai/dsh-tool-todo"
|
|
309
|
+
config:
|
|
310
|
+
allowParallelInProgress: false
|
|
283
311
|
- id: sdlc-report
|
|
284
|
-
name: "@patwoodman/dsh-sdlc-flow/tools"
|
|
312
|
+
name: "@patwoodman/dsh-sdlc-flow/tools-report"
|
|
285
313
|
- id: preset-sdlc-ui-designer
|
|
286
314
|
name: "@deepseek-ai/dsh-agent-preset"
|
|
287
315
|
config:
|
|
@@ -301,8 +329,10 @@
|
|
|
301
329
|
name: "@deepseek-ai/dsh-tool-fs"
|
|
302
330
|
- id: tool-todo
|
|
303
331
|
name: "@deepseek-ai/dsh-tool-todo"
|
|
332
|
+
config:
|
|
333
|
+
allowParallelInProgress: false
|
|
304
334
|
- id: sdlc-report
|
|
305
|
-
name: "@patwoodman/dsh-sdlc-flow/tools"
|
|
335
|
+
name: "@patwoodman/dsh-sdlc-flow/tools-report"
|
|
306
336
|
- id: preset-sdlc-accessibility-engineer
|
|
307
337
|
name: "@deepseek-ai/dsh-agent-preset"
|
|
308
338
|
config:
|
|
@@ -322,8 +352,10 @@
|
|
|
322
352
|
name: "@deepseek-ai/dsh-tool-fs"
|
|
323
353
|
- id: tool-todo
|
|
324
354
|
name: "@deepseek-ai/dsh-tool-todo"
|
|
355
|
+
config:
|
|
356
|
+
allowParallelInProgress: false
|
|
325
357
|
- id: sdlc-report
|
|
326
|
-
name: "@patwoodman/dsh-sdlc-flow/tools"
|
|
358
|
+
name: "@patwoodman/dsh-sdlc-flow/tools-report"
|
|
327
359
|
- id: preset-sdlc-frontend-engineer
|
|
328
360
|
name: "@deepseek-ai/dsh-agent-preset"
|
|
329
361
|
config:
|
|
@@ -343,8 +375,10 @@
|
|
|
343
375
|
name: "@deepseek-ai/dsh-tool-fs"
|
|
344
376
|
- id: tool-todo
|
|
345
377
|
name: "@deepseek-ai/dsh-tool-todo"
|
|
378
|
+
config:
|
|
379
|
+
allowParallelInProgress: false
|
|
346
380
|
- id: sdlc-report
|
|
347
|
-
name: "@patwoodman/dsh-sdlc-flow/tools"
|
|
381
|
+
name: "@patwoodman/dsh-sdlc-flow/tools-report"
|
|
348
382
|
- id: preset-sdlc-backend-engineer
|
|
349
383
|
name: "@deepseek-ai/dsh-agent-preset"
|
|
350
384
|
config:
|
|
@@ -364,8 +398,10 @@
|
|
|
364
398
|
name: "@deepseek-ai/dsh-tool-fs"
|
|
365
399
|
- id: tool-todo
|
|
366
400
|
name: "@deepseek-ai/dsh-tool-todo"
|
|
401
|
+
config:
|
|
402
|
+
allowParallelInProgress: false
|
|
367
403
|
- id: sdlc-report
|
|
368
|
-
name: "@patwoodman/dsh-sdlc-flow/tools"
|
|
404
|
+
name: "@patwoodman/dsh-sdlc-flow/tools-report"
|
|
369
405
|
- id: preset-sdlc-api-engineer
|
|
370
406
|
name: "@deepseek-ai/dsh-agent-preset"
|
|
371
407
|
config:
|
|
@@ -385,8 +421,10 @@
|
|
|
385
421
|
name: "@deepseek-ai/dsh-tool-fs"
|
|
386
422
|
- id: tool-todo
|
|
387
423
|
name: "@deepseek-ai/dsh-tool-todo"
|
|
424
|
+
config:
|
|
425
|
+
allowParallelInProgress: false
|
|
388
426
|
- id: sdlc-report
|
|
389
|
-
name: "@patwoodman/dsh-sdlc-flow/tools"
|
|
427
|
+
name: "@patwoodman/dsh-sdlc-flow/tools-report"
|
|
390
428
|
- id: preset-sdlc-integration-engineer
|
|
391
429
|
name: "@deepseek-ai/dsh-agent-preset"
|
|
392
430
|
config:
|
|
@@ -406,8 +444,10 @@
|
|
|
406
444
|
name: "@deepseek-ai/dsh-tool-fs"
|
|
407
445
|
- id: tool-todo
|
|
408
446
|
name: "@deepseek-ai/dsh-tool-todo"
|
|
447
|
+
config:
|
|
448
|
+
allowParallelInProgress: false
|
|
409
449
|
- id: sdlc-report
|
|
410
|
-
name: "@patwoodman/dsh-sdlc-flow/tools"
|
|
450
|
+
name: "@patwoodman/dsh-sdlc-flow/tools-report"
|
|
411
451
|
- id: preset-sdlc-devops-engineer
|
|
412
452
|
name: "@deepseek-ai/dsh-agent-preset"
|
|
413
453
|
config:
|
|
@@ -427,8 +467,10 @@
|
|
|
427
467
|
name: "@deepseek-ai/dsh-tool-fs"
|
|
428
468
|
- id: tool-todo
|
|
429
469
|
name: "@deepseek-ai/dsh-tool-todo"
|
|
470
|
+
config:
|
|
471
|
+
allowParallelInProgress: false
|
|
430
472
|
- id: sdlc-report
|
|
431
|
-
name: "@patwoodman/dsh-sdlc-flow/tools"
|
|
473
|
+
name: "@patwoodman/dsh-sdlc-flow/tools-report"
|
|
432
474
|
- id: preset-sdlc-platform-engineer
|
|
433
475
|
name: "@deepseek-ai/dsh-agent-preset"
|
|
434
476
|
config:
|
|
@@ -448,8 +490,10 @@
|
|
|
448
490
|
name: "@deepseek-ai/dsh-tool-fs"
|
|
449
491
|
- id: tool-todo
|
|
450
492
|
name: "@deepseek-ai/dsh-tool-todo"
|
|
493
|
+
config:
|
|
494
|
+
allowParallelInProgress: false
|
|
451
495
|
- id: sdlc-report
|
|
452
|
-
name: "@patwoodman/dsh-sdlc-flow/tools"
|
|
496
|
+
name: "@patwoodman/dsh-sdlc-flow/tools-report"
|
|
453
497
|
- id: preset-sdlc-qa-engineer
|
|
454
498
|
name: "@deepseek-ai/dsh-agent-preset"
|
|
455
499
|
config:
|
|
@@ -469,8 +513,10 @@
|
|
|
469
513
|
name: "@deepseek-ai/dsh-tool-fs"
|
|
470
514
|
- id: tool-todo
|
|
471
515
|
name: "@deepseek-ai/dsh-tool-todo"
|
|
516
|
+
config:
|
|
517
|
+
allowParallelInProgress: false
|
|
472
518
|
- id: sdlc-report
|
|
473
|
-
name: "@patwoodman/dsh-sdlc-flow/tools"
|
|
519
|
+
name: "@patwoodman/dsh-sdlc-flow/tools-report"
|
|
474
520
|
- id: preset-sdlc-test-automation-engineer
|
|
475
521
|
name: "@deepseek-ai/dsh-agent-preset"
|
|
476
522
|
config:
|
|
@@ -490,8 +536,10 @@
|
|
|
490
536
|
name: "@deepseek-ai/dsh-tool-fs"
|
|
491
537
|
- id: tool-todo
|
|
492
538
|
name: "@deepseek-ai/dsh-tool-todo"
|
|
539
|
+
config:
|
|
540
|
+
allowParallelInProgress: false
|
|
493
541
|
- id: sdlc-report
|
|
494
|
-
name: "@patwoodman/dsh-sdlc-flow/tools"
|
|
542
|
+
name: "@patwoodman/dsh-sdlc-flow/tools-report"
|
|
495
543
|
- id: preset-sdlc-e2e-engineer
|
|
496
544
|
name: "@deepseek-ai/dsh-agent-preset"
|
|
497
545
|
config:
|
|
@@ -511,8 +559,10 @@
|
|
|
511
559
|
name: "@deepseek-ai/dsh-tool-fs"
|
|
512
560
|
- id: tool-todo
|
|
513
561
|
name: "@deepseek-ai/dsh-tool-todo"
|
|
562
|
+
config:
|
|
563
|
+
allowParallelInProgress: false
|
|
514
564
|
- id: sdlc-report
|
|
515
|
-
name: "@patwoodman/dsh-sdlc-flow/tools"
|
|
565
|
+
name: "@patwoodman/dsh-sdlc-flow/tools-report"
|
|
516
566
|
- id: preset-sdlc-visual-qa-engineer
|
|
517
567
|
name: "@deepseek-ai/dsh-agent-preset"
|
|
518
568
|
config:
|
|
@@ -532,8 +582,10 @@
|
|
|
532
582
|
name: "@deepseek-ai/dsh-tool-fs"
|
|
533
583
|
- id: tool-todo
|
|
534
584
|
name: "@deepseek-ai/dsh-tool-todo"
|
|
585
|
+
config:
|
|
586
|
+
allowParallelInProgress: false
|
|
535
587
|
- id: sdlc-report
|
|
536
|
-
name: "@patwoodman/dsh-sdlc-flow/tools"
|
|
588
|
+
name: "@patwoodman/dsh-sdlc-flow/tools-report"
|
|
537
589
|
- id: preset-sdlc-performance-engineer
|
|
538
590
|
name: "@deepseek-ai/dsh-agent-preset"
|
|
539
591
|
config:
|
|
@@ -553,8 +605,10 @@
|
|
|
553
605
|
name: "@deepseek-ai/dsh-tool-fs"
|
|
554
606
|
- id: tool-todo
|
|
555
607
|
name: "@deepseek-ai/dsh-tool-todo"
|
|
608
|
+
config:
|
|
609
|
+
allowParallelInProgress: false
|
|
556
610
|
- id: sdlc-report
|
|
557
|
-
name: "@patwoodman/dsh-sdlc-flow/tools"
|
|
611
|
+
name: "@patwoodman/dsh-sdlc-flow/tools-report"
|
|
558
612
|
- id: preset-sdlc-technical-writer
|
|
559
613
|
name: "@deepseek-ai/dsh-agent-preset"
|
|
560
614
|
config:
|
|
@@ -574,8 +628,10 @@
|
|
|
574
628
|
name: "@deepseek-ai/dsh-tool-fs"
|
|
575
629
|
- id: tool-todo
|
|
576
630
|
name: "@deepseek-ai/dsh-tool-todo"
|
|
631
|
+
config:
|
|
632
|
+
allowParallelInProgress: false
|
|
577
633
|
- id: sdlc-report
|
|
578
|
-
name: "@patwoodman/dsh-sdlc-flow/tools"
|
|
634
|
+
name: "@patwoodman/dsh-sdlc-flow/tools-report"
|
|
579
635
|
- id: preset-sdlc-release-manager
|
|
580
636
|
name: "@deepseek-ai/dsh-agent-preset"
|
|
581
637
|
config:
|
|
@@ -595,8 +651,10 @@
|
|
|
595
651
|
name: "@deepseek-ai/dsh-tool-fs"
|
|
596
652
|
- id: tool-todo
|
|
597
653
|
name: "@deepseek-ai/dsh-tool-todo"
|
|
654
|
+
config:
|
|
655
|
+
allowParallelInProgress: false
|
|
598
656
|
- id: sdlc-report
|
|
599
|
-
name: "@patwoodman/dsh-sdlc-flow/tools"
|
|
657
|
+
name: "@patwoodman/dsh-sdlc-flow/tools-report"
|
|
600
658
|
- id: preset-sdlc-code-reviewer
|
|
601
659
|
name: "@deepseek-ai/dsh-agent-preset"
|
|
602
660
|
config:
|
|
@@ -616,8 +674,10 @@
|
|
|
616
674
|
name: "@deepseek-ai/dsh-tool-fs"
|
|
617
675
|
- id: tool-todo
|
|
618
676
|
name: "@deepseek-ai/dsh-tool-todo"
|
|
677
|
+
config:
|
|
678
|
+
allowParallelInProgress: false
|
|
619
679
|
- id: sdlc-report
|
|
620
|
-
name: "@patwoodman/dsh-sdlc-flow/tools"
|
|
680
|
+
name: "@patwoodman/dsh-sdlc-flow/tools-report"
|
|
621
681
|
- id: preset-sdlc-sre-engineer
|
|
622
682
|
name: "@deepseek-ai/dsh-agent-preset"
|
|
623
683
|
config:
|
|
@@ -637,8 +697,10 @@
|
|
|
637
697
|
name: "@deepseek-ai/dsh-tool-fs"
|
|
638
698
|
- id: tool-todo
|
|
639
699
|
name: "@deepseek-ai/dsh-tool-todo"
|
|
700
|
+
config:
|
|
701
|
+
allowParallelInProgress: false
|
|
640
702
|
- id: sdlc-report
|
|
641
|
-
name: "@patwoodman/dsh-sdlc-flow/tools"
|
|
703
|
+
name: "@patwoodman/dsh-sdlc-flow/tools-report"
|
|
642
704
|
- id: sdlc-presets
|
|
643
705
|
name: "@patwoodman/dsh-sdlc-flow/presets-plugin"
|
|
644
706
|
config: {}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# sdlc-core — host services (spec v3 C.1/C.2).
|
|
2
|
+
#
|
|
3
|
+
# HOST BUNDLE. This package declares the runtime authority: task engine, state
|
|
4
|
+
# transitions, scheduler, router, verifier, integration manager, evidence,
|
|
5
|
+
# escalation and worker dispatch. It must NEVER be installed into a worker
|
|
6
|
+
# profile — mounting it there would start a second scheduler and a second
|
|
7
|
+
# writer against sdlc.db (errata E6). install-local.mjs and doctor.mjs assert
|
|
8
|
+
# the partition.
|
|
9
|
+
#
|
|
10
|
+
# NOTE (discrepancy D2): spec C.1's inline comment shows sdlc-core declaring
|
|
11
|
+
# both cordis.patch.yml and presets.patch.yml. The 26 preset rows live in
|
|
12
|
+
# @patwoodman/dsh-sdlc-flow-presets (C.1 body text); declaring them here as well would
|
|
13
|
+
# produce duplicate loader row ids and fail M0-02-no-dup-ids. Core therefore
|
|
14
|
+
# declares host rows only.
|
|
15
|
+
- insert:
|
|
16
|
+
- id: sdlc-tasks
|
|
17
|
+
name: '@patwoodman/dsh-sdlc-flow-core/services'
|
|
18
|
+
config:
|
|
19
|
+
service: tasks
|
|
20
|
+
- id: sdlc-scheduler
|
|
21
|
+
name: '@patwoodman/dsh-sdlc-flow-core/services'
|
|
22
|
+
config:
|
|
23
|
+
service: scheduler
|
|
24
|
+
- id: sdlc-router
|
|
25
|
+
name: '@patwoodman/dsh-sdlc-flow-core/services'
|
|
26
|
+
config:
|
|
27
|
+
service: router
|
|
28
|
+
- id: sdlc-verifier
|
|
29
|
+
name: '@patwoodman/dsh-sdlc-flow-core/services'
|
|
30
|
+
config:
|
|
31
|
+
service: verifier
|
|
32
|
+
- id: sdlc-integration
|
|
33
|
+
name: '@patwoodman/dsh-sdlc-flow-core/services'
|
|
34
|
+
config:
|
|
35
|
+
service: integration
|
|
36
|
+
- id: sdlc-evidence
|
|
37
|
+
name: '@patwoodman/dsh-sdlc-flow-core/services'
|
|
38
|
+
config:
|
|
39
|
+
service: evidence
|
|
40
|
+
- id: sdlc-escalation
|
|
41
|
+
name: '@patwoodman/dsh-sdlc-flow-core/services'
|
|
42
|
+
config:
|
|
43
|
+
service: escalation
|
|
44
|
+
- id: sdlc-worker-mgr
|
|
45
|
+
name: '@patwoodman/dsh-sdlc-flow-core/services'
|
|
46
|
+
config:
|
|
47
|
+
service: worker-mgr
|
|
48
|
+
- id: sdlc-recovery
|
|
49
|
+
name: '@patwoodman/dsh-sdlc-flow-core/services'
|
|
50
|
+
config:
|
|
51
|
+
service: recovery
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64" role="img" aria-label="Universal SDLC Orchestrator">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="sdlc-bg" x1="0" y1="0" x2="1" y2="1">
|
|
4
|
+
<stop offset="0" stop-color="#1e3a8a"/>
|
|
5
|
+
<stop offset="1" stop-color="#0e7490"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect width="64" height="64" rx="14" fill="url(#sdlc-bg)"/>
|
|
9
|
+
<g fill="none" stroke="#e0f2fe" stroke-width="2.4" stroke-linecap="round">
|
|
10
|
+
<path d="M32 17v9"/>
|
|
11
|
+
<path d="M32 34v4"/>
|
|
12
|
+
<path d="M24 44l-8 6"/>
|
|
13
|
+
<path d="M40 44l8 6"/>
|
|
14
|
+
</g>
|
|
15
|
+
<g fill="#e0f2fe">
|
|
16
|
+
<circle cx="32" cy="13" r="4.6"/>
|
|
17
|
+
<circle cx="32" cy="29" r="4.6"/>
|
|
18
|
+
<circle cx="19" cy="47" r="4.6"/>
|
|
19
|
+
<circle cx="45" cy="47" r="4.6"/>
|
|
20
|
+
</g>
|
|
21
|
+
<g fill="#0e7490">
|
|
22
|
+
<circle cx="32" cy="13" r="1.7"/>
|
|
23
|
+
<circle cx="32" cy="29" r="1.7"/>
|
|
24
|
+
<circle cx="19" cy="47" r="1.7"/>
|
|
25
|
+
<circle cx="45" cy="47" r="1.7"/>
|
|
26
|
+
</g>
|
|
27
|
+
<path d="M27.5 39.5l4.5 4.5 4.5-4.5" fill="none" stroke="#67e8f9" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/>
|
|
28
|
+
</svg>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# sdlc-guard — worker-side enforcement (spec v3 C.1/C.7).
|
|
2
|
+
#
|
|
3
|
+
# Installed into the sdlc-worker profile beside sdlc-tools, and into the lead
|
|
4
|
+
# profile for symmetry. It registers the `tools/pre-execute` waterfall and the
|
|
5
|
+
# fs write decider. There is no host service here and no DB access: the guard is
|
|
6
|
+
# policy, the sandbox root and the post-hoc git diff are the real controls.
|
|
7
|
+
- insert:
|
|
8
|
+
- id: sdlc-guard
|
|
9
|
+
name: '@patwoodman/dsh-sdlc-flow-guard/plugin'
|
|
10
|
+
config:
|
|
11
|
+
guardMode: deny
|
|
12
|
+
orchestratorPaths: ['.sdlc/**', '.dsh/**']
|
|
13
|
+
protectedOrchestratorPaths:
|
|
14
|
+
- '.sdlc/sdlc.db'
|
|
15
|
+
- '.sdlc/sdlc.db-*'
|
|
16
|
+
- '.sdlc/sdlc.lock'
|
|
17
|
+
- '.sdlc/instance.lock'
|
|
18
|
+
- '.sdlc/task-contract.json'
|
|
19
|
+
guardForbiddenPatterns:
|
|
20
|
+
- 'git push --force*'
|
|
21
|
+
- 'rm -rf /'
|
|
22
|
+
- 'git clean -fdx*'
|
|
23
|
+
- 'git reset --hard*'
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64" role="img" aria-label="Universal SDLC Orchestrator">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="sdlc-bg" x1="0" y1="0" x2="1" y2="1">
|
|
4
|
+
<stop offset="0" stop-color="#1e3a8a"/>
|
|
5
|
+
<stop offset="1" stop-color="#0e7490"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect width="64" height="64" rx="14" fill="url(#sdlc-bg)"/>
|
|
9
|
+
<g fill="none" stroke="#e0f2fe" stroke-width="2.4" stroke-linecap="round">
|
|
10
|
+
<path d="M32 17v9"/>
|
|
11
|
+
<path d="M32 34v4"/>
|
|
12
|
+
<path d="M24 44l-8 6"/>
|
|
13
|
+
<path d="M40 44l8 6"/>
|
|
14
|
+
</g>
|
|
15
|
+
<g fill="#e0f2fe">
|
|
16
|
+
<circle cx="32" cy="13" r="4.6"/>
|
|
17
|
+
<circle cx="32" cy="29" r="4.6"/>
|
|
18
|
+
<circle cx="19" cy="47" r="4.6"/>
|
|
19
|
+
<circle cx="45" cy="47" r="4.6"/>
|
|
20
|
+
</g>
|
|
21
|
+
<g fill="#0e7490">
|
|
22
|
+
<circle cx="32" cy="13" r="1.7"/>
|
|
23
|
+
<circle cx="32" cy="29" r="1.7"/>
|
|
24
|
+
<circle cx="19" cy="47" r="1.7"/>
|
|
25
|
+
<circle cx="45" cy="47" r="1.7"/>
|
|
26
|
+
</g>
|
|
27
|
+
<path d="M27.5 39.5l4.5 4.5 4.5-4.5" fill="none" stroke="#67e8f9" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/>
|
|
28
|
+
</svg>
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://sdlc.dev/schemas/path-policy.schema.json",
|
|
4
|
+
"title": "SDLC guard path/command policy",
|
|
5
|
+
"description": "Version 1.0.0 of the fixed glob dialect published by spec v3 C.7.3: `*` matches within a path segment, `**` matches across segments, a leading `./` is stripped, matching is on the repo-relative POSIX path, and forbidden_paths is evaluated after allowed_paths (deny wins).",
|
|
6
|
+
"x-dialect-version": "1.0.0",
|
|
7
|
+
"type": "object",
|
|
8
|
+
"additionalProperties": false,
|
|
9
|
+
"properties": {
|
|
10
|
+
"allowed_paths": {
|
|
11
|
+
"type": "array",
|
|
12
|
+
"items": { "$ref": "#/$defs/glob" },
|
|
13
|
+
"description": "Paths the worker may write inside the worktree."
|
|
14
|
+
},
|
|
15
|
+
"forbidden_paths": {
|
|
16
|
+
"type": "array",
|
|
17
|
+
"items": { "$ref": "#/$defs/glob" },
|
|
18
|
+
"description": "Evaluated after allowed_paths; deny wins."
|
|
19
|
+
},
|
|
20
|
+
"forbidden_patterns": {
|
|
21
|
+
"type": "array",
|
|
22
|
+
"items": { "type": "string", "minLength": 1 },
|
|
23
|
+
"description": "Command patterns; `*` is a wildcard. Defence-in-depth only."
|
|
24
|
+
},
|
|
25
|
+
"forbidden_commands": {
|
|
26
|
+
"type": "array",
|
|
27
|
+
"items": { "type": "string", "minLength": 1 }
|
|
28
|
+
},
|
|
29
|
+
"orchestratorPaths": {
|
|
30
|
+
"type": "array",
|
|
31
|
+
"items": { "$ref": "#/$defs/glob" }
|
|
32
|
+
},
|
|
33
|
+
"protectedOrchestratorPaths": {
|
|
34
|
+
"type": "array",
|
|
35
|
+
"items": { "$ref": "#/$defs/glob" }
|
|
36
|
+
},
|
|
37
|
+
"guardMode": { "enum": ["deny", "warn"] },
|
|
38
|
+
"worktreeRoot": { "type": "string" }
|
|
39
|
+
},
|
|
40
|
+
"$defs": {
|
|
41
|
+
"glob": {
|
|
42
|
+
"type": "string",
|
|
43
|
+
"minLength": 1,
|
|
44
|
+
"pattern": "^[^\\u0000]*$",
|
|
45
|
+
"description": "Repo-relative POSIX glob. `..`, absolute paths and NUL are rejected at match time."
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|