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