@geraldmaron/construct 1.4.1 → 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/bin/construct +2 -1
  2. package/bin/construct-postinstall.mjs +27 -2
  3. package/config/tag-vocabulary.json +264 -0
  4. package/lib/config/schema.mjs +1 -1
  5. package/lib/doctor/diagnosis.mjs +20 -0
  6. package/lib/doctor/index.mjs +5 -0
  7. package/lib/embed/worker.mjs +5 -0
  8. package/lib/env-config.mjs +10 -2
  9. package/lib/export-validate.mjs +34 -2
  10. package/lib/host/readiness.mjs +109 -0
  11. package/lib/host-disposition.mjs +10 -1
  12. package/lib/install/stage-project.mjs +41 -4
  13. package/lib/intake/prepare.mjs +2 -0
  14. package/lib/mcp/destructive-approval.mjs +57 -0
  15. package/lib/mcp/server.mjs +208 -34
  16. package/lib/mcp/tool-rate-limit.mjs +47 -0
  17. package/lib/mcp/tool-safety.mjs +94 -0
  18. package/lib/mcp/tool-surface-parity.mjs +60 -0
  19. package/lib/mcp/tools/orchestration-run.mjs +45 -7
  20. package/lib/mcp/tools/project.mjs +25 -8
  21. package/lib/mcp/tools/storage.mjs +9 -1
  22. package/lib/mcp/tools/web-search-governance.mjs +96 -0
  23. package/lib/mcp/tools/web-search.mjs +5 -76
  24. package/lib/mcp-platform-config.mjs +27 -18
  25. package/lib/oracle/daemon-entry.mjs +6 -0
  26. package/lib/orchestration/runtime.mjs +81 -42
  27. package/lib/orchestration/web-capability.mjs +59 -0
  28. package/lib/orchestration/worker.mjs +263 -19
  29. package/lib/output-quality.mjs +61 -2
  30. package/lib/path-policy.mjs +56 -0
  31. package/lib/providers/secret-audit-wiring.mjs +35 -18
  32. package/lib/providers/secret-resolver.mjs +28 -13
  33. package/lib/registry/catalog.mjs +6 -0
  34. package/lib/registry/loader.mjs +7 -1
  35. package/lib/registry/validate.mjs +3 -3
  36. package/lib/sandbox.mjs +1 -1
  37. package/lib/service-manager.mjs +59 -9
  38. package/lib/storage/admin.mjs +7 -2
  39. package/package.json +6 -1
  40. package/registry/agent-manifest.json +117 -0
  41. package/registry/capabilities.json +1880 -0
  42. package/schemas/brand-voice.schema.json +24 -0
  43. package/schemas/capability-registry.schema.json +72 -0
  44. package/schemas/certification-run.schema.json +130 -0
  45. package/schemas/demo-recording.schema.json +46 -0
  46. package/schemas/eval-dataset.schema.json +79 -0
  47. package/schemas/execution-capability-profile.schema.json +46 -0
  48. package/schemas/execution-policy.schema.json +114 -0
  49. package/schemas/improvement-proposal.schema.json +65 -0
  50. package/schemas/mcp-tool-output.schema.json +61 -0
  51. package/schemas/platform-capabilities.schema.json +83 -0
  52. package/schemas/project-config.schema.json +227 -0
  53. package/schemas/project-demo.schema.json +60 -0
  54. package/schemas/provider-behavior-matrix.schema.json +91 -0
  55. package/schemas/scope.schema.json +197 -0
  56. package/schemas/specialist-trace.schema.json +107 -0
  57. package/schemas/team.schema.json +99 -0
  58. package/schemas/unified-registry.schema.json +548 -0
  59. package/scripts/sync-specialists.mjs +52 -25
  60. package/specialists/org/specialists/cx-researcher.json +1 -0
  61. package/specialists/prompts/cx-researcher.md +9 -8
  62. package/vendor/pandoc-ext/README.md +3 -0
  63. package/vendor/pandoc-ext/diagram.lua +687 -0
@@ -0,0 +1,1880 @@
1
+ {
2
+ "version": 1,
3
+ "catalog": {
4
+ "generatedAt": "2026-07-01T01:09:33.824Z",
5
+ "npmScripts": [
6
+ "adapters",
7
+ "audit:published",
8
+ "build:sea",
9
+ "catalog:regen",
10
+ "catalog:validate",
11
+ "certify:demos",
12
+ "clean:artifacts",
13
+ "coverage",
14
+ "docs:build",
15
+ "docs:dev",
16
+ "docs:init",
17
+ "docs:site",
18
+ "docs:sync",
19
+ "docs:update",
20
+ "docs:verify",
21
+ "doctor",
22
+ "eval:routing",
23
+ "evals",
24
+ "examples:deck",
25
+ "examples:distribution",
26
+ "gates:audit",
27
+ "learning:status",
28
+ "lint:agents",
29
+ "lint:comments",
30
+ "lint:contracts",
31
+ "lint:js",
32
+ "lint:scopes",
33
+ "lint:templates",
34
+ "mcp",
35
+ "npm:publish",
36
+ "postinstall",
37
+ "release:check",
38
+ "release:gate",
39
+ "release:preflight",
40
+ "release:preflight:no-auth",
41
+ "test",
42
+ "test:functional",
43
+ "test:unit",
44
+ "test:visual",
45
+ "version"
46
+ ],
47
+ "cliCommands": [
48
+ {
49
+ "name": "acp",
50
+ "category": "Models & Integrations",
51
+ "core": false,
52
+ "internal": false
53
+ },
54
+ {
55
+ "name": "activation:status",
56
+ "category": "Internal",
57
+ "core": false,
58
+ "internal": true
59
+ },
60
+ {
61
+ "name": "artifact",
62
+ "category": "Work",
63
+ "core": false,
64
+ "internal": false
65
+ },
66
+ {
67
+ "name": "ask",
68
+ "category": "Work",
69
+ "core": false,
70
+ "internal": false
71
+ },
72
+ {
73
+ "name": "audit",
74
+ "category": "Diagnostics",
75
+ "core": false,
76
+ "internal": false
77
+ },
78
+ {
79
+ "name": "auth:status",
80
+ "category": "Advanced",
81
+ "core": false,
82
+ "internal": false
83
+ },
84
+ {
85
+ "name": "backup",
86
+ "category": "Advanced",
87
+ "core": false,
88
+ "internal": false
89
+ },
90
+ {
91
+ "name": "beads",
92
+ "category": "Advanced",
93
+ "core": false,
94
+ "internal": false
95
+ },
96
+ {
97
+ "name": "beads:stats",
98
+ "category": "Advanced",
99
+ "core": false,
100
+ "internal": false
101
+ },
102
+ {
103
+ "name": "bootstrap",
104
+ "category": "Work",
105
+ "core": false,
106
+ "internal": false
107
+ },
108
+ {
109
+ "name": "capability",
110
+ "category": "Models & Integrations",
111
+ "core": false,
112
+ "internal": false
113
+ },
114
+ {
115
+ "name": "certify",
116
+ "category": "Diagnostics",
117
+ "core": false,
118
+ "internal": false
119
+ },
120
+ {
121
+ "name": "ci",
122
+ "category": "Advanced",
123
+ "core": false,
124
+ "internal": false
125
+ },
126
+ {
127
+ "name": "claude:allow",
128
+ "category": "Models & Integrations",
129
+ "core": false,
130
+ "internal": false
131
+ },
132
+ {
133
+ "name": "cleanup",
134
+ "category": "Diagnostics",
135
+ "core": false,
136
+ "internal": false
137
+ },
138
+ {
139
+ "name": "completions",
140
+ "category": "Advanced",
141
+ "core": false,
142
+ "internal": false
143
+ },
144
+ {
145
+ "name": "config",
146
+ "category": "Advanced",
147
+ "core": false,
148
+ "internal": false
149
+ },
150
+ {
151
+ "name": "creds",
152
+ "category": "Integrations",
153
+ "core": false,
154
+ "internal": false
155
+ },
156
+ {
157
+ "name": "customer",
158
+ "category": "Work",
159
+ "core": false,
160
+ "internal": false
161
+ },
162
+ {
163
+ "name": "decisions",
164
+ "category": "Advanced",
165
+ "core": false,
166
+ "internal": false
167
+ },
168
+ {
169
+ "name": "demo",
170
+ "category": "Work",
171
+ "core": false,
172
+ "internal": false
173
+ },
174
+ {
175
+ "name": "deployment",
176
+ "category": "Advanced",
177
+ "core": false,
178
+ "internal": false
179
+ },
180
+ {
181
+ "name": "dev",
182
+ "category": "Core",
183
+ "core": true,
184
+ "internal": false
185
+ },
186
+ {
187
+ "name": "diagram",
188
+ "category": "Work",
189
+ "core": false,
190
+ "internal": false
191
+ },
192
+ {
193
+ "name": "diff",
194
+ "category": "Advanced",
195
+ "core": false,
196
+ "internal": false
197
+ },
198
+ {
199
+ "name": "distill",
200
+ "category": "Work",
201
+ "core": false,
202
+ "internal": false
203
+ },
204
+ {
205
+ "name": "doc",
206
+ "category": "Diagnostics",
207
+ "core": false,
208
+ "internal": false
209
+ },
210
+ {
211
+ "name": "docs",
212
+ "category": "Core",
213
+ "core": true,
214
+ "internal": false
215
+ },
216
+ {
217
+ "name": "docs:check",
218
+ "category": "Diagnostics",
219
+ "core": false,
220
+ "internal": false
221
+ },
222
+ {
223
+ "name": "docs:reconcile",
224
+ "category": "Diagnostics",
225
+ "core": false,
226
+ "internal": false
227
+ },
228
+ {
229
+ "name": "docs:site",
230
+ "category": "Diagnostics",
231
+ "core": false,
232
+ "internal": false
233
+ },
234
+ {
235
+ "name": "docs:update",
236
+ "category": "Diagnostics",
237
+ "core": false,
238
+ "internal": false
239
+ },
240
+ {
241
+ "name": "docs:verify",
242
+ "category": "Diagnostics",
243
+ "core": false,
244
+ "internal": false
245
+ },
246
+ {
247
+ "name": "doctor",
248
+ "category": "Core",
249
+ "core": true,
250
+ "internal": false
251
+ },
252
+ {
253
+ "name": "drop",
254
+ "category": "Work",
255
+ "core": false,
256
+ "internal": false
257
+ },
258
+ {
259
+ "name": "efficiency",
260
+ "category": "Observability",
261
+ "core": false,
262
+ "internal": false
263
+ },
264
+ {
265
+ "name": "embed",
266
+ "category": "Advanced",
267
+ "core": false,
268
+ "internal": false
269
+ },
270
+ {
271
+ "name": "eval-datasets",
272
+ "category": "Observability",
273
+ "core": false,
274
+ "internal": false
275
+ },
276
+ {
277
+ "name": "evals",
278
+ "category": "Observability",
279
+ "core": false,
280
+ "internal": false
281
+ },
282
+ {
283
+ "name": "evaluator:rubrics",
284
+ "category": "Internal",
285
+ "core": false,
286
+ "internal": true
287
+ },
288
+ {
289
+ "name": "execution",
290
+ "category": "Models & Integrations",
291
+ "core": false,
292
+ "internal": false
293
+ },
294
+ {
295
+ "name": "export",
296
+ "category": "Work",
297
+ "core": false,
298
+ "internal": false
299
+ },
300
+ {
301
+ "name": "feedback:history",
302
+ "category": "Observability",
303
+ "core": false,
304
+ "internal": false
305
+ },
306
+ {
307
+ "name": "feedback:record",
308
+ "category": "Observability",
309
+ "core": false,
310
+ "internal": false
311
+ },
312
+ {
313
+ "name": "gates:audit",
314
+ "category": "Advanced",
315
+ "core": false,
316
+ "internal": false
317
+ },
318
+ {
319
+ "name": "graph",
320
+ "category": "Work",
321
+ "core": false,
322
+ "internal": false
323
+ },
324
+ {
325
+ "name": "handoffs",
326
+ "category": "Work",
327
+ "core": false,
328
+ "internal": false
329
+ },
330
+ {
331
+ "name": "headhunt",
332
+ "category": "Work",
333
+ "core": false,
334
+ "internal": false
335
+ },
336
+ {
337
+ "name": "hook",
338
+ "category": "Internal",
339
+ "core": false,
340
+ "internal": true
341
+ },
342
+ {
343
+ "name": "hooks:health",
344
+ "category": "Advanced",
345
+ "core": false,
346
+ "internal": false
347
+ },
348
+ {
349
+ "name": "hosts",
350
+ "category": "Models & Integrations",
351
+ "core": false,
352
+ "internal": false
353
+ },
354
+ {
355
+ "name": "impact",
356
+ "category": "Diagnostics",
357
+ "core": false,
358
+ "internal": false
359
+ },
360
+ {
361
+ "name": "improvement",
362
+ "category": "Observability",
363
+ "core": false,
364
+ "internal": false
365
+ },
366
+ {
367
+ "name": "infer",
368
+ "category": "Work",
369
+ "core": false,
370
+ "internal": false
371
+ },
372
+ {
373
+ "name": "ingest",
374
+ "category": "Work",
375
+ "core": false,
376
+ "internal": false
377
+ },
378
+ {
379
+ "name": "init",
380
+ "category": "Core",
381
+ "core": true,
382
+ "internal": false
383
+ },
384
+ {
385
+ "name": "init:update",
386
+ "category": "Internal",
387
+ "core": false,
388
+ "internal": true
389
+ },
390
+ {
391
+ "name": "install",
392
+ "category": "Core",
393
+ "core": true,
394
+ "internal": false
395
+ },
396
+ {
397
+ "name": "intake",
398
+ "category": "Core",
399
+ "core": true,
400
+ "internal": false
401
+ },
402
+ {
403
+ "name": "integrations",
404
+ "category": "Work",
405
+ "core": false,
406
+ "internal": false
407
+ },
408
+ {
409
+ "name": "knowledge",
410
+ "category": "Work",
411
+ "core": false,
412
+ "internal": false
413
+ },
414
+ {
415
+ "name": "lint:agents",
416
+ "category": "Internal",
417
+ "core": false,
418
+ "internal": true
419
+ },
420
+ {
421
+ "name": "lint:comments",
422
+ "category": "Internal",
423
+ "core": false,
424
+ "internal": true
425
+ },
426
+ {
427
+ "name": "lint:contracts",
428
+ "category": "Internal",
429
+ "core": false,
430
+ "internal": true
431
+ },
432
+ {
433
+ "name": "lint:prompts",
434
+ "category": "Internal",
435
+ "core": false,
436
+ "internal": true
437
+ },
438
+ {
439
+ "name": "lint:research",
440
+ "category": "Internal",
441
+ "core": false,
442
+ "internal": true
443
+ },
444
+ {
445
+ "name": "lint:templates",
446
+ "category": "Internal",
447
+ "core": false,
448
+ "internal": true
449
+ },
450
+ {
451
+ "name": "list",
452
+ "category": "Advanced",
453
+ "core": false,
454
+ "internal": false
455
+ },
456
+ {
457
+ "name": "llm-judge",
458
+ "category": "Observability",
459
+ "core": false,
460
+ "internal": false
461
+ },
462
+ {
463
+ "name": "matrix",
464
+ "category": "Internal",
465
+ "core": false,
466
+ "internal": true
467
+ },
468
+ {
469
+ "name": "mcp",
470
+ "category": "Models & Integrations",
471
+ "core": false,
472
+ "internal": false
473
+ },
474
+ {
475
+ "name": "memory",
476
+ "category": "Work",
477
+ "core": false,
478
+ "internal": false
479
+ },
480
+ {
481
+ "name": "migrate",
482
+ "category": "Internal",
483
+ "core": false,
484
+ "internal": true
485
+ },
486
+ {
487
+ "name": "models",
488
+ "category": "Models & Integrations",
489
+ "core": false,
490
+ "internal": false
491
+ },
492
+ {
493
+ "name": "ollama",
494
+ "category": "Integrations",
495
+ "core": false,
496
+ "internal": false
497
+ },
498
+ {
499
+ "name": "optimize",
500
+ "category": "Observability",
501
+ "core": false,
502
+ "internal": false
503
+ },
504
+ {
505
+ "name": "oracle",
506
+ "category": "Core",
507
+ "core": true,
508
+ "internal": false
509
+ },
510
+ {
511
+ "name": "orchestrate",
512
+ "category": "Models & Integrations",
513
+ "core": false,
514
+ "internal": false
515
+ },
516
+ {
517
+ "name": "overrides",
518
+ "category": "Internal",
519
+ "core": false,
520
+ "internal": true
521
+ },
522
+ {
523
+ "name": "plugin",
524
+ "category": "Models & Integrations",
525
+ "core": false,
526
+ "internal": false
527
+ },
528
+ {
529
+ "name": "policy",
530
+ "category": "Advanced",
531
+ "core": false,
532
+ "internal": false
533
+ },
534
+ {
535
+ "name": "provider",
536
+ "category": "Advanced",
537
+ "core": false,
538
+ "internal": false
539
+ },
540
+ {
541
+ "name": "providers",
542
+ "category": "Integrations",
543
+ "core": false,
544
+ "internal": false
545
+ },
546
+ {
547
+ "name": "prune",
548
+ "category": "Internal",
549
+ "core": false,
550
+ "internal": true
551
+ },
552
+ {
553
+ "name": "publish",
554
+ "category": "Work",
555
+ "core": false,
556
+ "internal": false
557
+ },
558
+ {
559
+ "name": "recommendations",
560
+ "category": "Core",
561
+ "core": true,
562
+ "internal": false
563
+ },
564
+ {
565
+ "name": "reflect",
566
+ "category": "Work",
567
+ "core": false,
568
+ "internal": false
569
+ },
570
+ {
571
+ "name": "registry:diff",
572
+ "category": "Internal",
573
+ "core": false,
574
+ "internal": true
575
+ },
576
+ {
577
+ "name": "registry:generate-docs",
578
+ "category": "Internal",
579
+ "core": false,
580
+ "internal": true
581
+ },
582
+ {
583
+ "name": "registry:prune",
584
+ "category": "Internal",
585
+ "core": false,
586
+ "internal": true
587
+ },
588
+ {
589
+ "name": "registry:status",
590
+ "category": "Internal",
591
+ "core": false,
592
+ "internal": true
593
+ },
594
+ {
595
+ "name": "registry:validate",
596
+ "category": "Internal",
597
+ "core": false,
598
+ "internal": true
599
+ },
600
+ {
601
+ "name": "resources",
602
+ "category": "Internal",
603
+ "core": false,
604
+ "internal": true
605
+ },
606
+ {
607
+ "name": "review",
608
+ "category": "Observability",
609
+ "core": false,
610
+ "internal": false
611
+ },
612
+ {
613
+ "name": "role",
614
+ "category": "Advanced",
615
+ "core": false,
616
+ "internal": false
617
+ },
618
+ {
619
+ "name": "roles:list",
620
+ "category": "Advanced",
621
+ "core": false,
622
+ "internal": false
623
+ },
624
+ {
625
+ "name": "roles:set",
626
+ "category": "Advanced",
627
+ "core": false,
628
+ "internal": false
629
+ },
630
+ {
631
+ "name": "rules",
632
+ "category": "Diagnostics",
633
+ "core": false,
634
+ "internal": false
635
+ },
636
+ {
637
+ "name": "sandbox",
638
+ "category": "Core",
639
+ "core": true,
640
+ "internal": false
641
+ },
642
+ {
643
+ "name": "scheduler",
644
+ "category": "Advanced",
645
+ "core": false,
646
+ "internal": false
647
+ },
648
+ {
649
+ "name": "scope",
650
+ "category": "Core",
651
+ "core": true,
652
+ "internal": false
653
+ },
654
+ {
655
+ "name": "search",
656
+ "category": "Work",
657
+ "core": false,
658
+ "internal": false
659
+ },
660
+ {
661
+ "name": "seed-traces",
662
+ "category": "Internal",
663
+ "core": false,
664
+ "internal": true
665
+ },
666
+ {
667
+ "name": "skills",
668
+ "category": "Advanced",
669
+ "core": false,
670
+ "internal": false
671
+ },
672
+ {
673
+ "name": "sources",
674
+ "category": "Advanced",
675
+ "core": false,
676
+ "internal": false
677
+ },
678
+ {
679
+ "name": "specialist",
680
+ "category": "Internal",
681
+ "core": false,
682
+ "internal": true
683
+ },
684
+ {
685
+ "name": "specialist:add",
686
+ "category": "Internal",
687
+ "core": false,
688
+ "internal": true
689
+ },
690
+ {
691
+ "name": "specialist:remove",
692
+ "category": "Internal",
693
+ "core": false,
694
+ "internal": true
695
+ },
696
+ {
697
+ "name": "status",
698
+ "category": "Core",
699
+ "core": true,
700
+ "internal": false
701
+ },
702
+ {
703
+ "name": "stop",
704
+ "category": "Core",
705
+ "core": true,
706
+ "internal": false
707
+ },
708
+ {
709
+ "name": "storage",
710
+ "category": "Work",
711
+ "core": false,
712
+ "internal": false
713
+ },
714
+ {
715
+ "name": "sync",
716
+ "category": "Core",
717
+ "core": true,
718
+ "internal": false
719
+ },
720
+ {
721
+ "name": "tags",
722
+ "category": "Work",
723
+ "core": false,
724
+ "internal": false
725
+ },
726
+ {
727
+ "name": "team",
728
+ "category": "Work",
729
+ "core": false,
730
+ "internal": false
731
+ },
732
+ {
733
+ "name": "team:add",
734
+ "category": "Internal",
735
+ "core": false,
736
+ "internal": true
737
+ },
738
+ {
739
+ "name": "team:remove",
740
+ "category": "Internal",
741
+ "core": false,
742
+ "internal": true
743
+ },
744
+ {
745
+ "name": "telemetry",
746
+ "category": "Observability",
747
+ "core": false,
748
+ "internal": false
749
+ },
750
+ {
751
+ "name": "telemetry-backfill",
752
+ "category": "Observability",
753
+ "core": false,
754
+ "internal": false
755
+ },
756
+ {
757
+ "name": "telemetry-setup",
758
+ "category": "Observability",
759
+ "core": false,
760
+ "internal": false
761
+ },
762
+ {
763
+ "name": "tools",
764
+ "category": "Work",
765
+ "core": false,
766
+ "internal": false
767
+ },
768
+ {
769
+ "name": "uninstall",
770
+ "category": "Advanced",
771
+ "core": false,
772
+ "internal": false
773
+ },
774
+ {
775
+ "name": "update",
776
+ "category": "Advanced",
777
+ "core": false,
778
+ "internal": false
779
+ },
780
+ {
781
+ "name": "upgrade",
782
+ "category": "Advanced",
783
+ "core": false,
784
+ "internal": false
785
+ },
786
+ {
787
+ "name": "validate",
788
+ "category": "Advanced",
789
+ "core": false,
790
+ "internal": false
791
+ },
792
+ {
793
+ "name": "version",
794
+ "category": "Advanced",
795
+ "core": false,
796
+ "internal": false
797
+ },
798
+ {
799
+ "name": "wireframe",
800
+ "category": "Work",
801
+ "core": false,
802
+ "internal": false
803
+ },
804
+ {
805
+ "name": "workflow",
806
+ "category": "Work",
807
+ "core": false,
808
+ "internal": false
809
+ },
810
+ {
811
+ "name": "workspace",
812
+ "category": "Work",
813
+ "core": false,
814
+ "internal": false
815
+ }
816
+ ],
817
+ "workflows": [
818
+ {
819
+ "type": "evidence-ingest",
820
+ "description": "Ingest and structure raw evidence (notes, documents, signals) into a normalized summary.",
821
+ "tier": "fast"
822
+ },
823
+ {
824
+ "type": "proposal-review",
825
+ "description": "Review a proposal for correctness, risk, and hidden assumptions before acceptance.",
826
+ "tier": "standard"
827
+ },
828
+ {
829
+ "type": "prd-draft",
830
+ "description": "Draft a product requirements document from a problem statement and supporting evidence.",
831
+ "tier": "standard"
832
+ },
833
+ {
834
+ "type": "architecture-review",
835
+ "description": "Review an architecture or design for trade-offs, failure modes, and security exposure.",
836
+ "tier": "reasoning"
837
+ },
838
+ {
839
+ "type": "risk-review",
840
+ "description": "Stress-test a plan for risk: failure modes, security, and compliance exposure.",
841
+ "tier": "reasoning"
842
+ },
843
+ {
844
+ "type": "research-synthesis",
845
+ "description": "Synthesize multiple sources into a cited, evidence-graded research summary.",
846
+ "tier": "reasoning"
847
+ },
848
+ {
849
+ "type": "transcript-process",
850
+ "description": "Process a meeting/call transcript into a summary, decisions, and action items.",
851
+ "tier": "fast"
852
+ },
853
+ {
854
+ "type": "data-structure",
855
+ "description": "Parse, validate, and profile a raw dataset into a structured, described shape.",
856
+ "tier": "standard"
857
+ },
858
+ {
859
+ "type": "memo-draft",
860
+ "description": "Draft a decision or status memo from a problem statement and context.",
861
+ "tier": "fast"
862
+ },
863
+ {
864
+ "type": "structure-notes",
865
+ "description": "Structure an unclassified brain-dump or rough notes into a normalized summary with extracted intents.",
866
+ "tier": "fast"
867
+ }
868
+ ],
869
+ "workflowTypes": [
870
+ "evidence-ingest",
871
+ "proposal-review",
872
+ "prd-draft",
873
+ "architecture-review",
874
+ "risk-review",
875
+ "research-synthesis",
876
+ "transcript-process",
877
+ "data-structure",
878
+ "memo-draft",
879
+ "structure-notes"
880
+ ]
881
+ },
882
+ "capabilities": [
883
+ {
884
+ "id": "orchestration.routing",
885
+ "kind": "capability",
886
+ "name": "Orchestration Intent Routing",
887
+ "description": "Classifies user intent and dispatches to the correct specialist chain.",
888
+ "criticality": "P0",
889
+ "ownerSpecialists": [
890
+ "orchestrator"
891
+ ],
892
+ "skill": "ai/orchestration-workflow",
893
+ "contracts": [
894
+ "user-to-construct",
895
+ "construct-to-orchestrator"
896
+ ],
897
+ "surfaces": {
898
+ "mcp": {
899
+ "supported": true,
900
+ "primary": true,
901
+ "tool": "orchestration_policy"
902
+ },
903
+ "cli": {
904
+ "supported": true,
905
+ "command": "construct orchestrate run",
906
+ "jsonTwin": true
907
+ },
908
+ "opencode": {
909
+ "supported": true
910
+ },
911
+ "claude": {
912
+ "supported": true
913
+ },
914
+ "cursor": {
915
+ "supported": true
916
+ }
917
+ },
918
+ "dependencies": {
919
+ "skills": [
920
+ "ai/orchestration-workflow",
921
+ "operating/orchestration-reference"
922
+ ],
923
+ "rules": [
924
+ "rules/common/no-fabrication.md"
925
+ ]
926
+ },
927
+ "verification": {
928
+ "functional": "tests/functional/orchestration-mcp.functional.test.mjs",
929
+ "hostEmulation": "tests/functional/host-mcp-emulation.functional.test.mjs"
930
+ },
931
+ "humanGate": "proposal-only",
932
+ "lastValidated": "2026-06-26T20:01:14.659Z",
933
+ "edges": {
934
+ "cliCommands": [
935
+ "orchestrate",
936
+ "orchestrate run"
937
+ ],
938
+ "npmScripts": [],
939
+ "workflows": []
940
+ },
941
+ "_semanticDigest": "{\"description\":\"Classifies user intent and dispatches to the correct specialist chain.\",\"criticality\":\"P0\",\"verification\":{\"functional\":\"tests/functional/orchestration-mcp.functional.test.mjs\",\"hostEmulation\":\"tests/functional/host-mcp-emulation.functional.test.mjs\"}}"
942
+ },
943
+ {
944
+ "id": "oracle.meta-review",
945
+ "kind": "capability",
946
+ "name": "Oracle Meta-Review",
947
+ "description": "Deterministic read-model synthesis and bounded-auto maintenance for fleet health gaps.",
948
+ "criticality": "P1",
949
+ "ownerSpecialists": [
950
+ "oracle"
951
+ ],
952
+ "skill": "ai/orchestration-workflow",
953
+ "surfaces": {
954
+ "cli": {
955
+ "supported": true,
956
+ "command": "construct oracle review",
957
+ "jsonTwin": true
958
+ },
959
+ "mcp": {
960
+ "supported": false
961
+ }
962
+ },
963
+ "dependencies": {
964
+ "skills": [
965
+ "ai/orchestration-workflow",
966
+ "exploration/dependency-graph-reading",
967
+ "roles/trace-reviewer"
968
+ ],
969
+ "rules": [
970
+ "rules/common/no-fabrication.md"
971
+ ]
972
+ },
973
+ "verification": {
974
+ "functional": "tests/functional/oracle-bounded-auto.functional.test.mjs"
975
+ },
976
+ "humanGate": "approve-only",
977
+ "lastValidated": "2026-06-26T20:01:22.031Z",
978
+ "edges": {
979
+ "cliCommands": [
980
+ "oracle",
981
+ "oracle review"
982
+ ],
983
+ "npmScripts": [],
984
+ "workflows": []
985
+ },
986
+ "_semanticDigest": "{\"description\":\"Deterministic read-model synthesis and bounded-auto maintenance for fleet health gaps.\",\"criticality\":\"P1\",\"verification\":{\"functional\":\"tests/functional/oracle-bounded-auto.functional.test.mjs\"}}"
987
+ },
988
+ {
989
+ "id": "mcp.broker.connection",
990
+ "kind": "capability",
991
+ "name": "MCP Broker Connectivity",
992
+ "description": "Reliable MCP tool discovery and dispatch across hosts.",
993
+ "criticality": "P0",
994
+ "ownerSpecialists": [
995
+ "orchestrator"
996
+ ],
997
+ "surfaces": {
998
+ "mcp": {
999
+ "supported": true,
1000
+ "primary": true
1001
+ },
1002
+ "opencode": {
1003
+ "supported": true
1004
+ },
1005
+ "cursor": {
1006
+ "supported": true
1007
+ },
1008
+ "vscode": {
1009
+ "supported": true
1010
+ },
1011
+ "claude": {
1012
+ "supported": true
1013
+ }
1014
+ },
1015
+ "verification": {
1016
+ "functional": "tests/functional/mcp-parity.functional.test.mjs",
1017
+ "hostEmulation": "tests/functional/host-mcp-emulation.functional.test.mjs"
1018
+ },
1019
+ "humanGate": "autonomous",
1020
+ "lastValidated": "2026-06-26T20:01:32.913Z",
1021
+ "edges": {
1022
+ "cliCommands": [],
1023
+ "npmScripts": [],
1024
+ "workflows": []
1025
+ },
1026
+ "_semanticDigest": "{\"description\":\"Reliable MCP tool discovery and dispatch across hosts.\",\"criticality\":\"P0\",\"verification\":{\"functional\":\"tests/functional/mcp-parity.functional.test.mjs\",\"hostEmulation\":\"tests/functional/host-mcp-emulation.functional.test.mjs\"}}"
1027
+ },
1028
+ {
1029
+ "id": "workflow.evidence-ingest",
1030
+ "kind": "workflow",
1031
+ "name": "Evidence Ingest Workflow",
1032
+ "description": "Ingest and structure raw evidence into a normalized summary.",
1033
+ "criticality": "P1",
1034
+ "ownerSpecialists": [
1035
+ "researcher",
1036
+ "data-analyst"
1037
+ ],
1038
+ "skill": "docs/evidence-ingest-workflow",
1039
+ "embeddedWorkflow": "evidence-ingest",
1040
+ "surfaces": {
1041
+ "mcp": {
1042
+ "supported": true,
1043
+ "primary": true,
1044
+ "tool": "workflow_invoke"
1045
+ },
1046
+ "cli": {
1047
+ "supported": true,
1048
+ "command": "construct workflow invoke",
1049
+ "jsonTwin": true
1050
+ }
1051
+ },
1052
+ "dependencies": {
1053
+ "skills": [
1054
+ "docs/evidence-ingest-workflow"
1055
+ ],
1056
+ "templates": [
1057
+ "evidence-brief",
1058
+ "signal-brief"
1059
+ ],
1060
+ "rules": [
1061
+ "rules/common/research.md",
1062
+ "rules/common/no-fabrication.md"
1063
+ ]
1064
+ },
1065
+ "verification": {
1066
+ "functional": "tests/functional/embedded-contract-workflow-invoke.functional.test.mjs",
1067
+ "verificationBar": "Source metadata preserved; no invented quotes; confidence labeled"
1068
+ },
1069
+ "humanGate": "proposal-only",
1070
+ "lastValidated": "2026-06-26T20:01:33.468Z",
1071
+ "edges": {
1072
+ "cliCommands": [
1073
+ "workflow",
1074
+ "workflow invoke"
1075
+ ],
1076
+ "npmScripts": [],
1077
+ "workflows": [
1078
+ "evidence-ingest"
1079
+ ]
1080
+ },
1081
+ "_semanticDigest": "{\"description\":\"Ingest and structure raw evidence into a normalized summary.\",\"criticality\":\"P1\",\"verification\":{\"functional\":\"tests/functional/embedded-contract-workflow-invoke.functional.test.mjs\",\"verificationBar\":\"Source metadata preserved; no invented quotes; confidence labeled\"}}"
1082
+ },
1083
+ {
1084
+ "id": "workflow.research-synthesis",
1085
+ "kind": "workflow",
1086
+ "name": "Research Synthesis Workflow",
1087
+ "description": "Synthesize multiple sources into a cited, evidence-graded research summary.",
1088
+ "criticality": "P1",
1089
+ "ownerSpecialists": [
1090
+ "researcher",
1091
+ "data-analyst",
1092
+ "evaluator"
1093
+ ],
1094
+ "skill": "docs/research-workflow",
1095
+ "embeddedWorkflow": "research-synthesis",
1096
+ "contracts": [
1097
+ "researcher-to-architect"
1098
+ ],
1099
+ "surfaces": {
1100
+ "mcp": {
1101
+ "supported": true,
1102
+ "primary": true,
1103
+ "tool": "workflow_invoke"
1104
+ },
1105
+ "cli": {
1106
+ "supported": true,
1107
+ "command": "construct ask",
1108
+ "jsonTwin": false
1109
+ },
1110
+ "claude": {
1111
+ "supported": true,
1112
+ "slashCommand": "understand:research"
1113
+ }
1114
+ },
1115
+ "dependencies": {
1116
+ "skills": [
1117
+ "docs/research-workflow"
1118
+ ],
1119
+ "templates": [
1120
+ "research-brief"
1121
+ ],
1122
+ "rules": [
1123
+ "rules/common/research.md"
1124
+ ]
1125
+ },
1126
+ "verification": {
1127
+ "functional": "tests/functional/embedded-contract-workflow-invoke.functional.test.mjs",
1128
+ "structureRequirements": "research-brief",
1129
+ "verificationBar": "≥2 primary sources; URLs fetched; confidence labeled"
1130
+ },
1131
+ "humanGate": "proposal-only",
1132
+ "lastValidated": "2026-06-26T20:01:34.007Z",
1133
+ "edges": {
1134
+ "cliCommands": [
1135
+ "ask"
1136
+ ],
1137
+ "npmScripts": [],
1138
+ "workflows": [
1139
+ "research-synthesis"
1140
+ ]
1141
+ },
1142
+ "_semanticDigest": "{\"description\":\"Synthesize multiple sources into a cited, evidence-graded research summary.\",\"criticality\":\"P1\",\"verification\":{\"functional\":\"tests/functional/embedded-contract-workflow-invoke.functional.test.mjs\",\"structureRequirements\":\"research-brief\",\"verificationBar\":\"≥2 primary sources; URLs fetched; confidence labeled\"}}"
1143
+ },
1144
+ {
1145
+ "id": "workflow.prd-draft",
1146
+ "kind": "workflow",
1147
+ "name": "PRD Draft Workflow",
1148
+ "description": "Draft a product requirements document from a problem statement and evidence.",
1149
+ "criticality": "P1",
1150
+ "ownerSpecialists": [
1151
+ "product-manager",
1152
+ "architect"
1153
+ ],
1154
+ "skill": "docs/prd-workflow",
1155
+ "embeddedWorkflow": "prd-draft",
1156
+ "contracts": [
1157
+ "product-manager-to-architect"
1158
+ ],
1159
+ "surfaces": {
1160
+ "mcp": {
1161
+ "supported": true,
1162
+ "primary": true,
1163
+ "tool": "workflow_invoke"
1164
+ },
1165
+ "cli": {
1166
+ "supported": true,
1167
+ "command": "construct workflow invoke",
1168
+ "jsonTwin": true
1169
+ }
1170
+ },
1171
+ "dependencies": {
1172
+ "skills": [
1173
+ "docs/prd-workflow"
1174
+ ],
1175
+ "templates": [
1176
+ "prd",
1177
+ "meta-prd",
1178
+ "rfc"
1179
+ ],
1180
+ "rules": [
1181
+ "rules/common/no-fabrication.md"
1182
+ ]
1183
+ },
1184
+ "verification": {
1185
+ "functional": "tests/functional/embedded-contract-workflow-invoke.functional.test.mjs",
1186
+ "structureRequirements": "prd",
1187
+ "verificationBar": "Template chosen before draft; rejected alternatives recorded for ADR/RFC paths"
1188
+ },
1189
+ "humanGate": "proposal-only",
1190
+ "lastValidated": "2026-06-26T20:01:34.544Z",
1191
+ "edges": {
1192
+ "cliCommands": [
1193
+ "workflow",
1194
+ "workflow invoke"
1195
+ ],
1196
+ "npmScripts": [],
1197
+ "workflows": [
1198
+ "prd-draft"
1199
+ ]
1200
+ },
1201
+ "_semanticDigest": "{\"description\":\"Draft a product requirements document from a problem statement and evidence.\",\"criticality\":\"P1\",\"verification\":{\"functional\":\"tests/functional/embedded-contract-workflow-invoke.functional.test.mjs\",\"structureRequirements\":\"prd\",\"verificationBar\":\"Template chosen before draft; rejected alternatives recorded for ADR/RFC paths\"}}"
1202
+ },
1203
+ {
1204
+ "id": "workflow.architecture-review",
1205
+ "kind": "workflow",
1206
+ "name": "Architecture Review Workflow",
1207
+ "description": "Review an architecture for trade-offs, failure modes, and security exposure.",
1208
+ "criticality": "P1",
1209
+ "ownerSpecialists": [
1210
+ "architect",
1211
+ "security",
1212
+ "devil-advocate"
1213
+ ],
1214
+ "embeddedWorkflow": "architecture-review",
1215
+ "surfaces": {
1216
+ "mcp": {
1217
+ "supported": true,
1218
+ "primary": true,
1219
+ "tool": "workflow_invoke"
1220
+ },
1221
+ "cli": {
1222
+ "supported": true,
1223
+ "command": "construct workflow invoke",
1224
+ "jsonTwin": true
1225
+ }
1226
+ },
1227
+ "verification": {
1228
+ "functional": "tests/functional/embedded-contract-workflow-invoke.functional.test.mjs"
1229
+ },
1230
+ "humanGate": "requires-human-approval",
1231
+ "lastValidated": "2026-06-26T20:01:35.084Z",
1232
+ "edges": {
1233
+ "cliCommands": [
1234
+ "workflow",
1235
+ "workflow invoke"
1236
+ ],
1237
+ "npmScripts": [],
1238
+ "workflows": [
1239
+ "architecture-review"
1240
+ ]
1241
+ },
1242
+ "_semanticDigest": "{\"description\":\"Review an architecture for trade-offs, failure modes, and security exposure.\",\"criticality\":\"P1\",\"verification\":{\"functional\":\"tests/functional/embedded-contract-workflow-invoke.functional.test.mjs\"}}"
1243
+ },
1244
+ {
1245
+ "id": "workflow.proposal-review",
1246
+ "kind": "workflow",
1247
+ "name": "Proposal Review Workflow",
1248
+ "description": "Review a proposal for correctness, risk, and hidden assumptions before acceptance.",
1249
+ "criticality": "P1",
1250
+ "ownerSpecialists": [
1251
+ "reviewer",
1252
+ "devil-advocate"
1253
+ ],
1254
+ "embeddedWorkflow": "proposal-review",
1255
+ "surfaces": {
1256
+ "mcp": {
1257
+ "supported": true,
1258
+ "primary": true,
1259
+ "tool": "workflow_invoke"
1260
+ },
1261
+ "cli": {
1262
+ "supported": true,
1263
+ "command": "construct workflow invoke",
1264
+ "jsonTwin": true
1265
+ }
1266
+ },
1267
+ "verification": {
1268
+ "functional": "tests/functional/embedded-contract-workflow-invoke.functional.test.mjs"
1269
+ },
1270
+ "humanGate": "requires-human-approval",
1271
+ "lastValidated": "2026-06-26T20:01:35.624Z",
1272
+ "edges": {
1273
+ "cliCommands": [
1274
+ "workflow",
1275
+ "workflow invoke"
1276
+ ],
1277
+ "npmScripts": [],
1278
+ "workflows": [
1279
+ "proposal-review"
1280
+ ]
1281
+ },
1282
+ "_semanticDigest": "{\"description\":\"Review a proposal for correctness, risk, and hidden assumptions before acceptance.\",\"criticality\":\"P1\",\"verification\":{\"functional\":\"tests/functional/embedded-contract-workflow-invoke.functional.test.mjs\"}}"
1283
+ },
1284
+ {
1285
+ "id": "workflow.risk-review",
1286
+ "kind": "workflow",
1287
+ "name": "Risk Review Workflow",
1288
+ "description": "Stress-test a plan for failure modes, security, and compliance exposure.",
1289
+ "criticality": "P1",
1290
+ "ownerSpecialists": [
1291
+ "devil-advocate",
1292
+ "security",
1293
+ "legal-compliance"
1294
+ ],
1295
+ "embeddedWorkflow": "risk-review",
1296
+ "surfaces": {
1297
+ "mcp": {
1298
+ "supported": true,
1299
+ "primary": true,
1300
+ "tool": "workflow_invoke"
1301
+ },
1302
+ "cli": {
1303
+ "supported": true,
1304
+ "command": "construct workflow invoke",
1305
+ "jsonTwin": true
1306
+ }
1307
+ },
1308
+ "verification": {
1309
+ "functional": "tests/functional/embedded-contract-workflow-invoke.functional.test.mjs"
1310
+ },
1311
+ "humanGate": "requires-human-approval",
1312
+ "lastValidated": "2026-06-26T20:01:36.161Z",
1313
+ "edges": {
1314
+ "cliCommands": [
1315
+ "workflow",
1316
+ "workflow invoke"
1317
+ ],
1318
+ "npmScripts": [],
1319
+ "workflows": [
1320
+ "risk-review"
1321
+ ]
1322
+ },
1323
+ "_semanticDigest": "{\"description\":\"Stress-test a plan for failure modes, security, and compliance exposure.\",\"criticality\":\"P1\",\"verification\":{\"functional\":\"tests/functional/embedded-contract-workflow-invoke.functional.test.mjs\"}}"
1324
+ },
1325
+ {
1326
+ "id": "workflow.structure-notes",
1327
+ "kind": "workflow",
1328
+ "name": "Structure Notes Workflow",
1329
+ "description": "Structure unclassified notes into a normalized summary with extracted intents.",
1330
+ "criticality": "P2",
1331
+ "ownerSpecialists": [
1332
+ "orchestrator",
1333
+ "researcher"
1334
+ ],
1335
+ "skill": "operating/unstructured-triage",
1336
+ "embeddedWorkflow": "structure-notes",
1337
+ "surfaces": {
1338
+ "mcp": {
1339
+ "supported": true,
1340
+ "primary": true,
1341
+ "tool": "workflow_invoke"
1342
+ },
1343
+ "cli": {
1344
+ "supported": true,
1345
+ "command": "construct intake classify",
1346
+ "jsonTwin": true
1347
+ }
1348
+ },
1349
+ "verification": {
1350
+ "functional": "tests/functional/embedded-contract-workflow-invoke.functional.test.mjs"
1351
+ },
1352
+ "humanGate": "proposal-only",
1353
+ "lastValidated": "2026-06-26T20:01:36.696Z",
1354
+ "edges": {
1355
+ "cliCommands": [
1356
+ "intake",
1357
+ "intake classify"
1358
+ ],
1359
+ "npmScripts": [],
1360
+ "workflows": [
1361
+ "structure-notes"
1362
+ ]
1363
+ },
1364
+ "_semanticDigest": "{\"description\":\"Structure unclassified notes into a normalized summary with extracted intents.\",\"criticality\":\"P2\",\"verification\":{\"functional\":\"tests/functional/embedded-contract-workflow-invoke.functional.test.mjs\"}}"
1365
+ },
1366
+ {
1367
+ "id": "workflow.transcript-process",
1368
+ "kind": "workflow",
1369
+ "name": "Transcript Process Workflow",
1370
+ "description": "Process a meeting or call transcript into summary, decisions, and action items.",
1371
+ "criticality": "P2",
1372
+ "ownerSpecialists": [
1373
+ "researcher",
1374
+ "data-analyst"
1375
+ ],
1376
+ "embeddedWorkflow": "transcript-process",
1377
+ "surfaces": {
1378
+ "mcp": {
1379
+ "supported": true,
1380
+ "primary": true,
1381
+ "tool": "workflow_invoke"
1382
+ },
1383
+ "cli": {
1384
+ "supported": true,
1385
+ "command": "construct workflow invoke",
1386
+ "jsonTwin": true
1387
+ }
1388
+ },
1389
+ "verification": {
1390
+ "functional": "tests/functional/embedded-contract-workflow-invoke.functional.test.mjs"
1391
+ },
1392
+ "humanGate": "proposal-only",
1393
+ "lastValidated": "2026-06-26T20:01:37.237Z",
1394
+ "edges": {
1395
+ "cliCommands": [
1396
+ "workflow",
1397
+ "workflow invoke"
1398
+ ],
1399
+ "npmScripts": [],
1400
+ "workflows": [
1401
+ "transcript-process"
1402
+ ]
1403
+ },
1404
+ "_semanticDigest": "{\"description\":\"Process a meeting or call transcript into summary, decisions, and action items.\",\"criticality\":\"P2\",\"verification\":{\"functional\":\"tests/functional/embedded-contract-workflow-invoke.functional.test.mjs\"}}"
1405
+ },
1406
+ {
1407
+ "id": "workflow.data-structure",
1408
+ "kind": "workflow",
1409
+ "name": "Data Structure Workflow",
1410
+ "description": "Parse, validate, and profile a raw dataset into a structured, described shape.",
1411
+ "criticality": "P2",
1412
+ "ownerSpecialists": [
1413
+ "data-analyst",
1414
+ "data-engineer"
1415
+ ],
1416
+ "embeddedWorkflow": "data-structure",
1417
+ "surfaces": {
1418
+ "mcp": {
1419
+ "supported": true,
1420
+ "primary": true,
1421
+ "tool": "workflow_invoke"
1422
+ },
1423
+ "cli": {
1424
+ "supported": true,
1425
+ "command": "construct workflow invoke",
1426
+ "jsonTwin": true
1427
+ }
1428
+ },
1429
+ "verification": {
1430
+ "functional": "tests/functional/embedded-contract-workflow-invoke.functional.test.mjs"
1431
+ },
1432
+ "humanGate": "proposal-only",
1433
+ "lastValidated": "2026-06-26T20:01:37.775Z",
1434
+ "edges": {
1435
+ "cliCommands": [
1436
+ "workflow",
1437
+ "workflow invoke"
1438
+ ],
1439
+ "npmScripts": [],
1440
+ "workflows": [
1441
+ "data-structure"
1442
+ ]
1443
+ },
1444
+ "_semanticDigest": "{\"description\":\"Parse, validate, and profile a raw dataset into a structured, described shape.\",\"criticality\":\"P2\",\"verification\":{\"functional\":\"tests/functional/embedded-contract-workflow-invoke.functional.test.mjs\"}}"
1445
+ },
1446
+ {
1447
+ "id": "workflow.memo-draft",
1448
+ "kind": "workflow",
1449
+ "name": "Memo Draft Workflow",
1450
+ "description": "Draft a decision or status memo from a problem statement and context.",
1451
+ "criticality": "P2",
1452
+ "ownerSpecialists": [
1453
+ "docs-keeper",
1454
+ "reviewer"
1455
+ ],
1456
+ "embeddedWorkflow": "memo-draft",
1457
+ "surfaces": {
1458
+ "mcp": {
1459
+ "supported": true,
1460
+ "primary": true,
1461
+ "tool": "workflow_invoke"
1462
+ },
1463
+ "cli": {
1464
+ "supported": true,
1465
+ "command": "construct workflow invoke",
1466
+ "jsonTwin": true
1467
+ }
1468
+ },
1469
+ "verification": {
1470
+ "functional": "tests/functional/embedded-contract-workflow-invoke.functional.test.mjs"
1471
+ },
1472
+ "humanGate": "proposal-only",
1473
+ "lastValidated": "2026-06-26T20:01:38.314Z",
1474
+ "edges": {
1475
+ "cliCommands": [
1476
+ "workflow",
1477
+ "workflow invoke"
1478
+ ],
1479
+ "npmScripts": [],
1480
+ "workflows": [
1481
+ "memo-draft"
1482
+ ]
1483
+ },
1484
+ "_semanticDigest": "{\"description\":\"Draft a decision or status memo from a problem statement and context.\",\"criticality\":\"P2\",\"verification\":{\"functional\":\"tests/functional/embedded-contract-workflow-invoke.functional.test.mjs\"}}"
1485
+ },
1486
+ {
1487
+ "id": "document-type.research-brief",
1488
+ "kind": "document-type",
1489
+ "name": "Research Brief",
1490
+ "description": "Cited research findings with confidence summary and recommendation.",
1491
+ "ownerSpecialists": [
1492
+ "researcher"
1493
+ ],
1494
+ "skill": "docs/research-workflow",
1495
+ "template": "research-brief",
1496
+ "surfaces": {
1497
+ "mcp": {
1498
+ "supported": true,
1499
+ "tool": "get_template"
1500
+ },
1501
+ "cli": {
1502
+ "supported": true,
1503
+ "command": "construct knowledge add"
1504
+ }
1505
+ },
1506
+ "verification": {
1507
+ "functional": "tests/certification/artifact-gates.test.mjs",
1508
+ "structureRequirements": "research-brief",
1509
+ "verificationBar": "Sources section with dates; confidence summary; recommendation"
1510
+ },
1511
+ "humanGate": "proposal-only",
1512
+ "lastValidated": "2026-06-26T20:01:38.464Z",
1513
+ "edges": {
1514
+ "cliCommands": [
1515
+ "knowledge",
1516
+ "knowledge add"
1517
+ ],
1518
+ "npmScripts": [],
1519
+ "workflows": []
1520
+ },
1521
+ "_semanticDigest": "{\"description\":\"Cited research findings with confidence summary and recommendation.\",\"criticality\":\"\",\"verification\":{\"functional\":\"tests/certification/artifact-gates.test.mjs\",\"structureRequirements\":\"research-brief\",\"verificationBar\":\"Sources section with dates; confidence summary; recommendation\"}}"
1522
+ },
1523
+ {
1524
+ "id": "document-type.evidence-brief",
1525
+ "kind": "document-type",
1526
+ "name": "Evidence Brief",
1527
+ "description": "Product evidence synthesis before decisions.",
1528
+ "ownerSpecialists": [
1529
+ "product-manager",
1530
+ "researcher"
1531
+ ],
1532
+ "skill": "docs/evidence-ingest-workflow",
1533
+ "template": "evidence-brief",
1534
+ "verification": {
1535
+ "functional": "tests/functional/embedded-contract-workflow-invoke.functional.test.mjs",
1536
+ "verificationBar": "Signal, evidence, counter-signal; no invented customer quotes"
1537
+ },
1538
+ "humanGate": "proposal-only",
1539
+ "lastValidated": "2026-06-26T20:01:39.007Z",
1540
+ "edges": {
1541
+ "cliCommands": [],
1542
+ "npmScripts": [],
1543
+ "workflows": []
1544
+ },
1545
+ "_semanticDigest": "{\"description\":\"Product evidence synthesis before decisions.\",\"criticality\":\"\",\"verification\":{\"functional\":\"tests/functional/embedded-contract-workflow-invoke.functional.test.mjs\",\"verificationBar\":\"Signal, evidence, counter-signal; no invented customer quotes\"}}"
1546
+ },
1547
+ {
1548
+ "id": "document-type.prd",
1549
+ "kind": "document-type",
1550
+ "name": "Product Requirements Document",
1551
+ "description": "Customer-facing product capabilities and requirements.",
1552
+ "ownerSpecialists": [
1553
+ "product-manager"
1554
+ ],
1555
+ "skill": "docs/prd-workflow",
1556
+ "template": "prd",
1557
+ "verification": {
1558
+ "functional": "tests/certification/artifact-gates.test.mjs",
1559
+ "structureRequirements": "prd",
1560
+ "verificationBar": "Problem, goals, success metrics, risks and mitigations"
1561
+ },
1562
+ "humanGate": "proposal-only",
1563
+ "lastValidated": "2026-06-26T20:01:39.154Z",
1564
+ "edges": {
1565
+ "cliCommands": [],
1566
+ "npmScripts": [],
1567
+ "workflows": []
1568
+ },
1569
+ "_semanticDigest": "{\"description\":\"Customer-facing product capabilities and requirements.\",\"criticality\":\"\",\"verification\":{\"functional\":\"tests/certification/artifact-gates.test.mjs\",\"structureRequirements\":\"prd\",\"verificationBar\":\"Problem, goals, success metrics, risks and mitigations\"}}"
1570
+ },
1571
+ {
1572
+ "id": "document-type.adr",
1573
+ "kind": "document-type",
1574
+ "name": "Architecture Decision Record",
1575
+ "description": "Record of an architecture decision with rejected alternatives.",
1576
+ "ownerSpecialists": [
1577
+ "architect",
1578
+ "rd-lead"
1579
+ ],
1580
+ "skill": "docs/adr-workflow",
1581
+ "template": "adr",
1582
+ "verification": {
1583
+ "functional": "tests/certification/artifact-gates.test.mjs",
1584
+ "structureRequirements": "adr",
1585
+ "verificationBar": "Problem, decision, rejected alternatives, consequences, reversibility"
1586
+ },
1587
+ "humanGate": "proposal-only",
1588
+ "lastValidated": "2026-06-26T20:01:39.305Z",
1589
+ "edges": {
1590
+ "cliCommands": [],
1591
+ "npmScripts": [],
1592
+ "workflows": []
1593
+ },
1594
+ "_semanticDigest": "{\"description\":\"Record of an architecture decision with rejected alternatives.\",\"criticality\":\"\",\"verification\":{\"functional\":\"tests/certification/artifact-gates.test.mjs\",\"structureRequirements\":\"adr\",\"verificationBar\":\"Problem, decision, rejected alternatives, consequences, reversibility\"}}"
1595
+ },
1596
+ {
1597
+ "id": "document-type.ingested-markdown",
1598
+ "kind": "document-type",
1599
+ "name": "Ingested Markdown",
1600
+ "description": "Normalized markdown from external documents with extraction metadata.",
1601
+ "ownerSpecialists": [
1602
+ "data-engineer",
1603
+ "researcher"
1604
+ ],
1605
+ "skill": "docs/document-ingest-workflow",
1606
+ "surfaces": {
1607
+ "mcp": {
1608
+ "supported": true,
1609
+ "primary": true,
1610
+ "tool": "ingest_document"
1611
+ },
1612
+ "cli": {
1613
+ "supported": true,
1614
+ "command": "construct ingest"
1615
+ }
1616
+ },
1617
+ "verification": {
1618
+ "functional": "tests/functional/node-native-extraction.functional.test.mjs",
1619
+ "verificationBar": "Source metadata preserved; droppedInfo surfaced; no invented structure"
1620
+ },
1621
+ "humanGate": "autonomous",
1622
+ "lastValidated": "2026-06-26T20:01:39.495Z",
1623
+ "edges": {
1624
+ "cliCommands": [
1625
+ "ingest"
1626
+ ],
1627
+ "npmScripts": [],
1628
+ "workflows": []
1629
+ },
1630
+ "_semanticDigest": "{\"description\":\"Normalized markdown from external documents with extraction metadata.\",\"criticality\":\"\",\"verification\":{\"functional\":\"tests/functional/node-native-extraction.functional.test.mjs\",\"verificationBar\":\"Source metadata preserved; droppedInfo surfaced; no invented structure\"}}"
1631
+ },
1632
+ {
1633
+ "id": "ingest.adapter",
1634
+ "kind": "ingest-strategy",
1635
+ "name": "Adapter Ingest (default)",
1636
+ "description": "Local extraction via unpdf/mammoth with docling/whisper for fidelity paths.",
1637
+ "criticality": "P0",
1638
+ "ownerSpecialists": [
1639
+ "data-engineer"
1640
+ ],
1641
+ "ingestStrategy": "adapter",
1642
+ "surfaces": {
1643
+ "cli": {
1644
+ "supported": true,
1645
+ "primary": true,
1646
+ "command": "construct ingest"
1647
+ },
1648
+ "mcp": {
1649
+ "supported": true,
1650
+ "tool": "ingest_document"
1651
+ }
1652
+ },
1653
+ "verification": {
1654
+ "functional": "tests/functional/node-native-extraction.functional.test.mjs"
1655
+ },
1656
+ "humanGate": "autonomous",
1657
+ "lastValidated": "2026-06-26T20:01:39.686Z",
1658
+ "edges": {
1659
+ "cliCommands": [
1660
+ "ingest"
1661
+ ],
1662
+ "npmScripts": [],
1663
+ "workflows": []
1664
+ },
1665
+ "_semanticDigest": "{\"description\":\"Local extraction via unpdf/mammoth with docling/whisper for fidelity paths.\",\"criticality\":\"P0\",\"verification\":{\"functional\":\"tests/functional/node-native-extraction.functional.test.mjs\"}}"
1666
+ },
1667
+ {
1668
+ "id": "ingest.docling",
1669
+ "kind": "ingest-strategy",
1670
+ "name": "Docling Sidecar Ingest",
1671
+ "description": "Offline docling Python sidecar for layout-aware PDF/Office and OCR.",
1672
+ "criticality": "P1",
1673
+ "ingestStrategy": "adapter",
1674
+ "surfaces": {
1675
+ "cli": {
1676
+ "supported": true,
1677
+ "command": "construct ingest --legacy-extractor=false"
1678
+ }
1679
+ },
1680
+ "verification": {
1681
+ "functional": "tests/functional/mcp-ingest-resilience.functional.test.mjs"
1682
+ },
1683
+ "humanGate": "autonomous",
1684
+ "lastValidated": "2026-06-26T20:01:40.642Z",
1685
+ "edges": {
1686
+ "cliCommands": [
1687
+ "ingest",
1688
+ "ingest --legacy-extractor=false"
1689
+ ],
1690
+ "npmScripts": [],
1691
+ "workflows": []
1692
+ },
1693
+ "_semanticDigest": "{\"description\":\"Offline docling Python sidecar for layout-aware PDF/Office and OCR.\",\"criticality\":\"P1\",\"verification\":{\"functional\":\"tests/functional/mcp-ingest-resilience.functional.test.mjs\"}}"
1694
+ },
1695
+ {
1696
+ "id": "ingest.docling-remote",
1697
+ "kind": "ingest-strategy",
1698
+ "name": "Docling Remote Ingest",
1699
+ "description": "Opt-in remote conversion via DOCLING_SERVE_URL (explicit user choice).",
1700
+ "criticality": "P2",
1701
+ "ingestStrategy": "docling-remote",
1702
+ "surfaces": {
1703
+ "cli": {
1704
+ "supported": true,
1705
+ "command": "construct ingest"
1706
+ }
1707
+ },
1708
+ "verification": {
1709
+ "functional": "tests/functional/docling-remote-ingest.functional.test.mjs"
1710
+ },
1711
+ "humanGate": "requires-human-approval",
1712
+ "lastValidated": "2026-06-26T20:01:40.816Z",
1713
+ "edges": {
1714
+ "cliCommands": [
1715
+ "ingest"
1716
+ ],
1717
+ "npmScripts": [],
1718
+ "workflows": []
1719
+ },
1720
+ "_semanticDigest": "{\"description\":\"Opt-in remote conversion via DOCLING_SERVE_URL (explicit user choice).\",\"criticality\":\"P2\",\"verification\":{\"functional\":\"tests/functional/docling-remote-ingest.functional.test.mjs\"}}"
1721
+ },
1722
+ {
1723
+ "id": "skill.roles-engineer",
1724
+ "kind": "skill",
1725
+ "name": "Role Skill: Engineer",
1726
+ "description": "Engineer role playbook — hot path per skill telemetry.",
1727
+ "ownerSpecialists": [
1728
+ "engineer"
1729
+ ],
1730
+ "skill": "roles/engineer",
1731
+ "surfaces": {
1732
+ "mcp": {
1733
+ "supported": true,
1734
+ "primary": true,
1735
+ "tool": "get_skill"
1736
+ }
1737
+ },
1738
+ "verification": {
1739
+ "hostEmulation": "tests/functional/host-mcp-emulation.functional.test.mjs"
1740
+ },
1741
+ "humanGate": "proposal-only",
1742
+ "lastValidated": "2026-06-26T20:01:41.286Z",
1743
+ "edges": {
1744
+ "cliCommands": [],
1745
+ "npmScripts": [],
1746
+ "workflows": []
1747
+ },
1748
+ "_semanticDigest": "{\"description\":\"Engineer role playbook — hot path per skill telemetry.\",\"criticality\":\"\",\"verification\":{\"hostEmulation\":\"tests/functional/host-mcp-emulation.functional.test.mjs\"}}"
1749
+ },
1750
+ {
1751
+ "id": "skill.roles-architect-ai-systems",
1752
+ "kind": "skill",
1753
+ "name": "Role Skill: Architect AI Systems",
1754
+ "description": "Architect AI systems flavor — hot path per skill telemetry.",
1755
+ "ownerSpecialists": [
1756
+ "architect"
1757
+ ],
1758
+ "skill": "roles/architect.ai-systems",
1759
+ "surfaces": {
1760
+ "mcp": {
1761
+ "supported": true,
1762
+ "primary": true,
1763
+ "tool": "get_skill"
1764
+ }
1765
+ },
1766
+ "verification": {
1767
+ "hostEmulation": "tests/functional/host-mcp-emulation.functional.test.mjs"
1768
+ },
1769
+ "humanGate": "proposal-only",
1770
+ "lastValidated": "2026-06-26T20:01:41.754Z",
1771
+ "edges": {
1772
+ "cliCommands": [],
1773
+ "npmScripts": [],
1774
+ "workflows": []
1775
+ },
1776
+ "_semanticDigest": "{\"description\":\"Architect AI systems flavor — hot path per skill telemetry.\",\"criticality\":\"\",\"verification\":{\"hostEmulation\":\"tests/functional/host-mcp-emulation.functional.test.mjs\"}}"
1777
+ },
1778
+ {
1779
+ "id": "local.model.tier",
1780
+ "kind": "capability",
1781
+ "name": "Local Model Tier Detection",
1782
+ "description": "resolveCapabilityTier and isLocalModel include local/ OpenAI-compatible models.",
1783
+ "criticality": "P1",
1784
+ "ownerSpecialists": [
1785
+ "orchestrator"
1786
+ ],
1787
+ "surfaces": {
1788
+ "cli": {
1789
+ "supported": true,
1790
+ "command": "construct models resolve"
1791
+ }
1792
+ },
1793
+ "verification": {
1794
+ "unit": "tests/capability-tier.test.mjs",
1795
+ "integration": "tests/model-router-local.test.mjs",
1796
+ "untestableRationale": "Tier detection is covered by unit (capability-tier.test.mjs) and integration (model-router-local.test.mjs) tests; no functional binary spawn is needed since the logic has no cross-component side effects."
1797
+ },
1798
+ "humanGate": "proposal-only",
1799
+ "lastValidated": "2026-06-26T20:01:41.876Z",
1800
+ "edges": {
1801
+ "cliCommands": [
1802
+ "models",
1803
+ "models resolve"
1804
+ ],
1805
+ "npmScripts": [],
1806
+ "workflows": []
1807
+ },
1808
+ "_semanticDigest": "{\"description\":\"resolveCapabilityTier and isLocalModel include local/ OpenAI-compatible models.\",\"criticality\":\"P1\",\"verification\":{\"unit\":\"tests/capability-tier.test.mjs\",\"integration\":\"tests/model-router-local.test.mjs\",\"untestableRationale\":\"Tier detection is covered by unit (capability-tier.test.mjs) and integration (model-router-local.test.mjs) tests; no functional binary spawn is needed since the logic has no cross-component side effects.\"}}"
1809
+ },
1810
+ {
1811
+ "id": "surfaces.opencode-primary",
1812
+ "kind": "capability",
1813
+ "name": "OpenCode Primary Surface",
1814
+ "description": "OpenCode is the first-class conversational surface; the construct CLI remains setup/admin/headless infrastructure.",
1815
+ "criticality": "P1",
1816
+ "ownerSpecialists": [
1817
+ "orchestrator"
1818
+ ],
1819
+ "surfaces": {
1820
+ "opencode": {
1821
+ "supported": true,
1822
+ "primary": true
1823
+ },
1824
+ "mcp": {
1825
+ "supported": true,
1826
+ "tool": "orchestration_policy"
1827
+ },
1828
+ "cli": {
1829
+ "supported": true,
1830
+ "command": "construct sync"
1831
+ }
1832
+ },
1833
+ "verification": {
1834
+ "functional": "tests/functional/opencode-primary-surface.functional.test.mjs",
1835
+ "hostEmulation": "tests/functional/host-config-parity.functional.test.mjs"
1836
+ },
1837
+ "humanGate": "proposal-only",
1838
+ "lastValidated": null,
1839
+ "edges": {
1840
+ "cliCommands": [
1841
+ "sync"
1842
+ ],
1843
+ "npmScripts": [
1844
+ "adapters",
1845
+ "docs:sync",
1846
+ "release:check",
1847
+ "version"
1848
+ ],
1849
+ "workflows": []
1850
+ },
1851
+ "_semanticDigest": "{\"description\":\"OpenCode is the first-class conversational surface; the construct CLI remains setup/admin/headless infrastructure.\",\"criticality\":\"P1\",\"verification\":{\"functional\":\"tests/functional/opencode-primary-surface.functional.test.mjs\",\"hostEmulation\":\"tests/functional/host-config-parity.functional.test.mjs\"}}"
1852
+ },
1853
+ {
1854
+ "id": "mcp.tool-budget.trim",
1855
+ "kind": "capability",
1856
+ "name": "MCP Tool Surface Trim",
1857
+ "description": "Heavy external MCP servers disabled when default model is local.",
1858
+ "criticality": "P2",
1859
+ "ownerSpecialists": [
1860
+ "orchestrator"
1861
+ ],
1862
+ "surfaces": {
1863
+ "opencode": {
1864
+ "supported": true
1865
+ }
1866
+ },
1867
+ "verification": {
1868
+ "functional": "tests/functional/host-config-parity.functional.test.mjs"
1869
+ },
1870
+ "humanGate": "proposal-only",
1871
+ "lastValidated": null,
1872
+ "edges": {
1873
+ "cliCommands": [],
1874
+ "npmScripts": [],
1875
+ "workflows": []
1876
+ },
1877
+ "_semanticDigest": "{\"description\":\"Heavy external MCP servers disabled when default model is local.\",\"criticality\":\"P2\",\"verification\":{\"functional\":\"tests/functional/host-config-parity.functional.test.mjs\"}}"
1878
+ }
1879
+ ]
1880
+ }