@geraldmaron/construct 1.2.2 → 1.3.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 (497) hide show
  1. package/README.md +7 -10
  2. package/bin/construct +286 -220
  3. package/bin/construct-postinstall.mjs +0 -21
  4. package/commands/work/optimize-prompts.md +1 -1
  5. package/examples/distribution/sources/adr.md +2 -2
  6. package/examples/seed-observations/decisions.md +1 -1
  7. package/lib/artifact-loop-core.mjs +412 -0
  8. package/lib/artifact-manifest.mjs +6 -0
  9. package/lib/artifact-release-gate.mjs +115 -49
  10. package/lib/audit-rules.mjs +2 -4
  11. package/lib/audit-skills.mjs +32 -20
  12. package/lib/audit-specialists.mjs +44 -26
  13. package/lib/auto-docs.mjs +6 -5
  14. package/lib/brand-prose.mjs +3 -3
  15. package/lib/brand-tokens.mjs +2 -2
  16. package/lib/certification/artifact-fixtures.mjs +4 -1
  17. package/lib/certification/demo-parity.mjs +6 -32
  18. package/lib/certification/real-llm-scenarios.mjs +58 -13
  19. package/lib/certification/role-cards.mjs +7 -6
  20. package/lib/certification/role-overlays.mjs +4 -4
  21. package/lib/certification/runner.mjs +9 -2
  22. package/lib/certification/skill-inventory.mjs +34 -22
  23. package/lib/certification/skill-scenarios.mjs +21 -8
  24. package/lib/certification/specialist-contracts.mjs +4 -3
  25. package/lib/certification/specialist-scenarios.mjs +7 -6
  26. package/lib/certification/status.mjs +5 -4
  27. package/lib/cli-commands.mjs +56 -57
  28. package/lib/comment-lint.mjs +1 -5
  29. package/lib/completions.mjs +20 -2
  30. package/lib/config/legacy-config-migration.mjs +125 -0
  31. package/lib/config/schema.mjs +5 -5
  32. package/lib/config/source-targets.mjs +80 -0
  33. package/lib/contracts/validate.mjs +119 -51
  34. package/lib/decisions/golden.mjs +3 -2
  35. package/lib/decisions/registry.mjs +11 -6
  36. package/lib/demo-project.mjs +188 -0
  37. package/lib/demo-recording.mjs +9 -34
  38. package/lib/demo-script.mjs +2 -2
  39. package/lib/demo-surface.mjs +13 -131
  40. package/lib/demo-tour-renderer.mjs +92 -0
  41. package/lib/demo.mjs +69 -54
  42. package/lib/diagram-export.mjs +63 -14
  43. package/lib/doctor/source-checkout.mjs +3 -4
  44. package/lib/doctor/watchers/consistency.mjs +90 -22
  45. package/lib/doctor/watchers/credential-parity.mjs +97 -0
  46. package/lib/doctor/watchers/mcp-protocol.mjs +1 -1
  47. package/lib/doctor/watchers/service-health.mjs +4 -32
  48. package/lib/document-export.mjs +73 -9
  49. package/lib/document-extract.mjs +10 -198
  50. package/lib/embed/artifact.mjs +2 -3
  51. package/lib/embed/cli.mjs +1 -1
  52. package/lib/embed/config.mjs +1 -2
  53. package/lib/embed/customer-profiles.mjs +1 -1
  54. package/lib/embed/daemon.mjs +5 -6
  55. package/lib/embed/demand-fetch.mjs +114 -2
  56. package/lib/embed/docs-lifecycle.mjs +9 -5
  57. package/lib/embed/intake-metrics.mjs +2 -2
  58. package/lib/embed/notifications.mjs +2 -3
  59. package/lib/embed/recommendation-store.mjs +25 -22
  60. package/lib/embed/role-framing.mjs +4 -9
  61. package/lib/embedded-contract/capability.mjs +4 -2
  62. package/lib/embedded-contract/contract-version.mjs +1 -1
  63. package/lib/env-config.mjs +2 -2
  64. package/lib/flavors/loader.mjs +21 -19
  65. package/lib/graph/build-from-registry.mjs +31 -7
  66. package/lib/graph/staleness.mjs +1 -1
  67. package/lib/headhunt.mjs +82 -35
  68. package/lib/hooks/agent-tracker.mjs +2 -2
  69. package/lib/hooks/config-protection.mjs +1 -1
  70. package/lib/hooks/registry-sync.mjs +3 -3
  71. package/lib/host-capabilities.mjs +5 -5
  72. package/lib/improvement/controller.mjs +2 -2
  73. package/lib/init-unified.mjs +19 -21
  74. package/lib/intake/classify.mjs +26 -0
  75. package/lib/intake/daemon.mjs +2 -3
  76. package/lib/intake/prepare.mjs +10 -3
  77. package/lib/intake/session-prelude.mjs +1 -1
  78. package/lib/intake/tables/creative.mjs +9 -9
  79. package/lib/intake/tables/operations.mjs +4 -4
  80. package/lib/intake/tables/research.mjs +2 -2
  81. package/lib/integrations/intake-integrations.mjs +9 -10
  82. package/lib/knowledge/research-store.mjs +2 -2
  83. package/lib/mcp/server.mjs +104 -61
  84. package/lib/mcp/tool-budget.mjs +1 -46
  85. package/lib/mcp/tool-recovery.mjs +44 -0
  86. package/lib/mcp/tools/artifact-author.mjs +36 -0
  87. package/lib/mcp/tools/find-tool.mjs +86 -0
  88. package/lib/mcp/tools/orchestration-run.mjs +107 -69
  89. package/lib/mcp/tools/project.mjs +4 -3
  90. package/lib/mcp/tools/{profile.mjs → scope.mjs} +54 -52
  91. package/lib/mcp/tools/skills.mjs +39 -22
  92. package/lib/mcp/tools/telemetry.mjs +2 -1
  93. package/lib/mcp/tools/workflow.mjs +1 -1
  94. package/lib/mcp-platform-config.mjs +7 -5
  95. package/lib/migrations/index.mjs +4 -2
  96. package/lib/migrations/v2-unified-registry.mjs +35 -0
  97. package/lib/model-router.mjs +203 -36
  98. package/lib/models/catalog.mjs +25 -9
  99. package/lib/models/execution-capability-profile.mjs +3 -3
  100. package/lib/models/execution-policy.mjs +7 -6
  101. package/lib/models/provider-poll.mjs +18 -4
  102. package/lib/opencode-config.mjs +56 -1
  103. package/lib/opencode-runtime-plugin.mjs +13 -10
  104. package/lib/oracle/artifact-gate.mjs +14 -4
  105. package/lib/oracle/cli.mjs +2 -0
  106. package/lib/oracle/dispatch.mjs +18 -1
  107. package/lib/oracle/execute.mjs +39 -7
  108. package/lib/oracle/index.mjs +1 -1
  109. package/lib/oracle/org-graph.mjs +10 -5
  110. package/lib/oracle/policy.mjs +6 -0
  111. package/lib/oracle/read-model.mjs +103 -6
  112. package/lib/oracle/reconcile.mjs +31 -4
  113. package/lib/oracle/remediation-dispatch.mjs +53 -0
  114. package/lib/oracle/routing.mjs +5 -0
  115. package/lib/oracle/synthesize.mjs +80 -3
  116. package/lib/orchestration/routing-tables.mjs +44 -10
  117. package/lib/orchestration/runtime.mjs +2 -0
  118. package/lib/orchestration/worker.mjs +1 -1
  119. package/lib/orchestration-policy.mjs +351 -62
  120. package/lib/overrides/resolver.mjs +1 -12
  121. package/lib/parity.mjs +37 -11
  122. package/lib/policy/engine.mjs +80 -15
  123. package/lib/prompt-composer.js +51 -15
  124. package/lib/prompt-metadata.mjs +3 -2
  125. package/lib/providers/connection-probe.mjs +58 -0
  126. package/lib/providers/copilot-auth.mjs +1 -1
  127. package/lib/providers/credential-bootstrap.mjs +1 -1
  128. package/lib/providers/op-run.mjs +3 -4
  129. package/lib/providers/secret-resolver.mjs +31 -0
  130. package/lib/publish-tooling.mjs +3 -11
  131. package/lib/publish.mjs +12 -29
  132. package/lib/reconcile/mcp-entry-reconcile.mjs +14 -9
  133. package/lib/reflect.mjs +2 -2
  134. package/lib/registry/agent-manifest.mjs +190 -0
  135. package/lib/registry/assemble.mjs +133 -0
  136. package/lib/registry/catalog.mjs +171 -0
  137. package/lib/registry/cli.mjs +590 -6
  138. package/lib/registry/consolidation.mjs +5 -4
  139. package/lib/registry/docs-sync.mjs +67 -0
  140. package/lib/registry/loader.mjs +147 -0
  141. package/lib/registry/org-io.mjs +76 -0
  142. package/lib/registry/retired-paths.mjs +71 -0
  143. package/lib/registry/surface-map.mjs +5 -7
  144. package/lib/registry/validator.mjs +438 -0
  145. package/lib/research-execution-policy.mjs +173 -0
  146. package/lib/roles/catalog.mjs +4 -9
  147. package/lib/roles/fence.mjs +107 -1
  148. package/lib/roles/flavor-bindings.mjs +68 -0
  149. package/lib/roles/gateway.mjs +140 -29
  150. package/lib/roles/manifest.mjs +22 -13
  151. package/lib/roles/router.mjs +1 -1
  152. package/lib/runtime-env.mjs +1 -1
  153. package/lib/scopes/enrich.mjs +67 -0
  154. package/lib/scopes/hooks.mjs +12 -0
  155. package/lib/{profiles → scopes}/lifecycle.mjs +70 -70
  156. package/lib/scopes/loader.mjs +104 -0
  157. package/lib/scopes/rebrand.mjs +32 -0
  158. package/lib/scopes/research-profile.mjs +16 -0
  159. package/lib/scopes/teams.mjs +98 -0
  160. package/lib/service-manager.mjs +1 -117
  161. package/lib/setup-prompts.mjs +1 -1
  162. package/lib/setup.mjs +17 -28
  163. package/lib/skills/composition-graph.mjs +98 -0
  164. package/lib/skills/router.mjs +80 -0
  165. package/lib/specialist-contracts.mjs +17 -18
  166. package/lib/specialists/postconditions.mjs +2 -2
  167. package/lib/specialists/prompt-schema.mjs +6 -5
  168. package/lib/specialists/roster.mjs +7 -12
  169. package/lib/specialists/schema.mjs +9 -6
  170. package/lib/status.mjs +25 -90
  171. package/lib/storage/file-lock.mjs +6 -3
  172. package/lib/telemetry/skill-calls.mjs +1 -1
  173. package/lib/templates/doc-presentation.mjs +63 -0
  174. package/lib/templates/visual-requirements.mjs +35 -2
  175. package/lib/term-format.mjs +107 -2
  176. package/lib/test-env-setup.mjs +21 -0
  177. package/lib/ui/components.mjs +42 -0
  178. package/lib/ui/glyphs.mjs +58 -0
  179. package/lib/ui/links.mjs +115 -0
  180. package/lib/ui/theme.mjs +108 -0
  181. package/lib/uninstall/uninstall.mjs +2 -1
  182. package/lib/validator.mjs +45 -8
  183. package/lib/validators/skill-effectiveness.mjs +174 -0
  184. package/lib/validators/skills.mjs +1 -1
  185. package/package.json +12 -7
  186. package/personas/construct.md +12 -3
  187. package/platforms/claude/CLAUDE.md +1 -1
  188. package/rules/common/beads-hygiene.md +52 -0
  189. package/rules/common/neurodivergent-output.md +4 -7
  190. package/rules/common/research.md +2 -0
  191. package/scripts/sync-specialists.mjs +260 -49
  192. package/skills/ai/prompt-optimizer.md +3 -3
  193. package/skills/brand/output-vibe.md +48 -0
  194. package/skills/docs/adr-workflow.md +3 -0
  195. package/skills/docs/backlog-proposal-workflow.md +3 -0
  196. package/skills/docs/codebase-research-workflow.md +5 -2
  197. package/skills/docs/customer-profile-workflow.md +3 -0
  198. package/skills/docs/document-ingest-workflow.md +3 -0
  199. package/skills/docs/evidence-ingest-workflow.md +4 -1
  200. package/skills/docs/init-project.md +1 -1
  201. package/skills/docs/prd-workflow.md +1 -1
  202. package/skills/docs/prfaq-workflow.md +3 -0
  203. package/skills/docs/product-intelligence-workflow.md +4 -1
  204. package/skills/docs/product-signal-workflow.md +3 -0
  205. package/skills/docs/research-workflow.md +13 -6
  206. package/skills/docs/runbook-workflow.md +3 -0
  207. package/skills/docs/strategy-workflow.md +3 -0
  208. package/skills/docs/user-research-workflow.md +6 -3
  209. package/skills/operating/orchestration-reference.md +1 -1
  210. package/skills/roles/{engineer.ai.md → ai-engineer.md} +2 -2
  211. package/skills/roles/architect.ai-systems.md +1 -1
  212. package/skills/roles/architect.data.md +1 -1
  213. package/skills/roles/architect.enterprise.md +1 -1
  214. package/skills/roles/architect.integration.md +1 -1
  215. package/skills/roles/architect.md +1 -1
  216. package/skills/roles/architect.platform.md +1 -1
  217. package/skills/roles/{product-manager.business-strategy.md → business-strategist.md} +3 -3
  218. package/skills/roles/data-analyst.experiment.md +1 -1
  219. package/skills/roles/data-analyst.md +1 -1
  220. package/skills/roles/data-analyst.product-intelligence.md +1 -1
  221. package/skills/roles/data-analyst.product.md +1 -1
  222. package/skills/roles/data-analyst.telemetry.md +1 -1
  223. package/skills/roles/{engineer.data.md → data-engineer.md} +2 -2
  224. package/skills/roles/data-engineer.pipeline.md +2 -2
  225. package/skills/roles/data-engineer.vector-retrieval.md +2 -2
  226. package/skills/roles/data-engineer.warehouse.md +2 -2
  227. package/skills/roles/debugger.md +1 -1
  228. package/skills/roles/designer.accessibility.md +1 -1
  229. package/skills/roles/designer.md +1 -1
  230. package/skills/roles/{reviewer.devil-advocate.md → devil-advocate.md} +2 -2
  231. package/skills/roles/{operator.docs.md → docs-keeper.md} +3 -3
  232. package/skills/roles/engineer.md +3 -7
  233. package/skills/roles/{reviewer.evaluator.md → evaluator.md} +2 -2
  234. package/skills/roles/{researcher.explorer.md → explorer.md} +2 -2
  235. package/skills/roles/{operator.md → operations.md} +2 -5
  236. package/skills/roles/orchestrator.md +1 -1
  237. package/skills/roles/{engineer.platform.md → platform-engineer.md} +2 -2
  238. package/skills/roles/product-manager.ai-product.md +1 -1
  239. package/skills/roles/product-manager.enterprise.md +1 -1
  240. package/skills/roles/product-manager.growth.md +1 -2
  241. package/skills/roles/product-manager.md +1 -2
  242. package/skills/roles/product-manager.platform.md +1 -1
  243. package/skills/roles/product-manager.product.md +1 -1
  244. package/skills/roles/qa.ai-eval.md +1 -1
  245. package/skills/roles/qa.api-contract.md +1 -1
  246. package/skills/roles/qa.data-pipeline.md +1 -1
  247. package/skills/roles/qa.md +1 -1
  248. package/skills/roles/qa.web-ui.md +1 -1
  249. package/skills/roles/{operator.release.md → release-manager.md} +3 -3
  250. package/skills/roles/researcher.md +1 -1
  251. package/skills/roles/reviewer.md +1 -1
  252. package/skills/roles/security.ai.md +1 -1
  253. package/skills/roles/security.appsec.md +1 -1
  254. package/skills/roles/security.cloud.md +1 -1
  255. package/skills/roles/security.legal-compliance.md +1 -1
  256. package/skills/roles/security.md +1 -1
  257. package/skills/roles/security.privacy.md +1 -1
  258. package/skills/roles/security.supply-chain.md +1 -1
  259. package/skills/roles/{operator.sre.md → sre.md} +3 -3
  260. package/skills/roles/{qa.test-automation.md → test-automation.md} +2 -2
  261. package/skills/roles/{reviewer.trace.md → trace-reviewer.md} +2 -2
  262. package/skills/roles/{researcher.ux.md → ux-researcher.md} +2 -2
  263. package/skills/routing.json +18 -0
  264. package/skills/routing.md +1 -1
  265. package/specialists/artifact-manifest.json +2 -1
  266. package/specialists/audit-enrichments.json +14 -14
  267. package/specialists/org/contracts/accessibility-to-qa.json +37 -0
  268. package/specialists/org/contracts/any-to-business-strategist.json +57 -0
  269. package/specialists/org/contracts/any-to-debugger.json +38 -0
  270. package/specialists/org/contracts/any-to-designer.json +33 -0
  271. package/specialists/org/contracts/any-to-docs-keeper.json +34 -0
  272. package/specialists/org/contracts/any-to-explorer.json +39 -0
  273. package/specialists/org/contracts/any-to-sre-incident.json +33 -0
  274. package/specialists/org/contracts/any-to-trace-reviewer.json +32 -0
  275. package/specialists/org/contracts/architect-to-ai-engineer.json +32 -0
  276. package/specialists/org/contracts/architect-to-data-engineer.json +52 -0
  277. package/specialists/org/contracts/architect-to-devil-advocate.json +38 -0
  278. package/specialists/org/contracts/architect-to-engineer.json +34 -0
  279. package/specialists/org/contracts/architect-to-evaluator.json +59 -0
  280. package/specialists/org/contracts/architect-to-legal-compliance.json +55 -0
  281. package/specialists/org/contracts/architect-to-operations.json +45 -0
  282. package/specialists/org/contracts/architect-to-platform-engineer.json +42 -0
  283. package/specialists/org/contracts/business-strategist-to-product-manager.json +39 -0
  284. package/specialists/org/contracts/construct-to-orchestrator.json +36 -0
  285. package/specialists/org/contracts/construct-to-rd-lead.json +53 -0
  286. package/specialists/org/contracts/data-analyst-to-product-manager.json +43 -0
  287. package/specialists/org/contracts/data-engineer-to-platform-engineer.json +36 -0
  288. package/specialists/org/contracts/designer-to-accessibility.json +36 -0
  289. package/specialists/org/contracts/engineer-to-qa.json +34 -0
  290. package/specialists/org/contracts/engineer-to-reviewer.json +52 -0
  291. package/specialists/org/contracts/explorer-to-engineer.json +38 -0
  292. package/specialists/org/contracts/legal-compliance-to-release-manager.json +43 -0
  293. package/specialists/org/contracts/platform-engineer-to-engineer.json +31 -0
  294. package/specialists/org/contracts/product-manager-to-architect.json +71 -0
  295. package/specialists/org/contracts/product-manager-to-data-analyst.json +49 -0
  296. package/specialists/org/contracts/product-manager-to-ux-researcher.json +51 -0
  297. package/specialists/org/contracts/qa-to-release-manager.json +42 -0
  298. package/specialists/org/contracts/qa-to-test-automation.json +42 -0
  299. package/specialists/org/contracts/rd-lead-to-architect.json +38 -0
  300. package/specialists/org/contracts/researcher-to-architect.json +40 -0
  301. package/specialists/org/contracts/researcher-to-product-manager.json +57 -0
  302. package/specialists/org/contracts/reviewer-to-security.json +41 -0
  303. package/specialists/org/contracts/sre-to-release-manager.json +36 -0
  304. package/specialists/org/contracts/test-automation-to-engineer.json +34 -0
  305. package/specialists/org/contracts/trace-reviewer-to-sre.json +41 -0
  306. package/specialists/org/contracts/user-to-construct.json +30 -0
  307. package/specialists/org/groups/engineering-group.json +43 -0
  308. package/specialists/org/groups/governance-group.json +38 -0
  309. package/specialists/org/groups/operations-group.json +41 -0
  310. package/specialists/org/groups/product-group.json +46 -0
  311. package/specialists/org/groups/quality-group.json +42 -0
  312. package/specialists/org/groups/strategy-group.json +41 -0
  313. package/specialists/org/policies/action-approval.json +13 -0
  314. package/specialists/org/policies/agents-routing.json +13 -0
  315. package/specialists/org/policies/architecture.json +20 -0
  316. package/specialists/org/policies/bash-safety.json +13 -0
  317. package/specialists/org/policies/beads-hygiene.json +13 -0
  318. package/specialists/org/policies/bootstrap-state.json +13 -0
  319. package/specialists/org/policies/code-review.json +13 -0
  320. package/specialists/org/policies/coding-style.json +13 -0
  321. package/specialists/org/policies/comments.json +13 -0
  322. package/specialists/org/policies/commit-approval.json +13 -0
  323. package/specialists/org/policies/contract-preconditions.json +13 -0
  324. package/specialists/org/policies/deployment.json +20 -0
  325. package/specialists/org/policies/description.json +14 -0
  326. package/specialists/org/policies/design-approval.json +19 -0
  327. package/specialists/org/policies/doc-ownership.json +13 -0
  328. package/specialists/org/policies/file-path-fence.json +13 -0
  329. package/specialists/org/policies/framing.json +13 -0
  330. package/specialists/org/policies/git-workflow.json +13 -0
  331. package/specialists/org/policies/incident-response.json +15 -0
  332. package/specialists/org/policies/intake-triage.json +15 -0
  333. package/specialists/org/policies/neurodivergent-output.json +13 -0
  334. package/specialists/org/policies/no-fabrication.json +13 -0
  335. package/specialists/org/policies/patterns.json +13 -0
  336. package/specialists/org/policies/quality-gate-approval.json +17 -0
  337. package/specialists/org/policies/release-gates.json +13 -0
  338. package/specialists/org/policies/research-evidence.json +13 -0
  339. package/specialists/org/policies/review-before-change.json +13 -0
  340. package/specialists/org/policies/rollback.json +15 -0
  341. package/specialists/org/policies/scope-change.json +20 -0
  342. package/specialists/org/policies/secret-scan.json +13 -0
  343. package/specialists/org/policies/security-approval.json +17 -0
  344. package/specialists/org/policies/security.json +13 -0
  345. package/specialists/org/policies/session-efficiency.json +13 -0
  346. package/specialists/org/policies/skill-routing.json +13 -0
  347. package/specialists/org/policies/strategic-prioritization.json +17 -0
  348. package/specialists/org/policies/testing.json +13 -0
  349. package/specialists/org/policies/tool-invisibility.json +14 -0
  350. package/specialists/org/scopes/creative.json +54 -0
  351. package/specialists/org/scopes/operations.json +51 -0
  352. package/specialists/org/scopes/research.json +60 -0
  353. package/specialists/org/scopes/rnd.json +81 -0
  354. package/specialists/org/specialists/cx-accessibility.json +69 -0
  355. package/specialists/org/specialists/cx-ai-engineer.json +75 -0
  356. package/specialists/org/specialists/cx-architect.json +89 -0
  357. package/specialists/org/specialists/cx-business-strategist.json +72 -0
  358. package/specialists/org/specialists/cx-data-analyst.json +68 -0
  359. package/specialists/org/specialists/cx-data-engineer.json +71 -0
  360. package/specialists/org/specialists/cx-debugger.json +75 -0
  361. package/specialists/org/specialists/cx-designer.json +85 -0
  362. package/specialists/org/specialists/cx-devil-advocate.json +71 -0
  363. package/specialists/org/specialists/cx-docs-keeper.json +82 -0
  364. package/specialists/org/specialists/cx-engineer.json +106 -0
  365. package/specialists/org/specialists/cx-evaluator.json +69 -0
  366. package/specialists/org/specialists/cx-explorer.json +69 -0
  367. package/specialists/org/specialists/cx-legal-compliance.json +74 -0
  368. package/specialists/org/specialists/cx-operations.json +72 -0
  369. package/specialists/org/specialists/cx-oracle.json +46 -0
  370. package/specialists/org/specialists/cx-orchestrator.json +81 -0
  371. package/specialists/org/specialists/cx-platform-engineer.json +80 -0
  372. package/specialists/org/specialists/cx-product-manager.json +102 -0
  373. package/specialists/org/specialists/cx-qa.json +79 -0
  374. package/specialists/org/specialists/cx-rd-lead.json +73 -0
  375. package/specialists/org/specialists/cx-release-manager.json +77 -0
  376. package/specialists/org/specialists/cx-researcher.json +82 -0
  377. package/specialists/org/specialists/cx-reviewer.json +71 -0
  378. package/specialists/org/specialists/cx-security.json +91 -0
  379. package/specialists/org/specialists/cx-sre.json +94 -0
  380. package/specialists/org/specialists/cx-test-automation.json +69 -0
  381. package/specialists/org/specialists/cx-trace-reviewer.json +69 -0
  382. package/specialists/org/specialists/cx-ux-researcher.json +68 -0
  383. package/specialists/org/teams/accessibility-team.json +39 -0
  384. package/specialists/org/teams/design-team.json +40 -0
  385. package/specialists/org/teams/engineering-team.json +50 -0
  386. package/specialists/org/teams/governance-team.json +41 -0
  387. package/specialists/org/teams/operations-team.json +46 -0
  388. package/specialists/org/teams/product-management-team.json +45 -0
  389. package/specialists/org/teams/quality-team.json +49 -0
  390. package/specialists/org/teams/research-team.json +39 -0
  391. package/specialists/org/teams/strategy-team.json +48 -0
  392. package/specialists/org/teams/ux-research-team.json +39 -0
  393. package/specialists/prompts/_shared/validation-contract.md +1 -1
  394. package/specialists/prompts/_team-template.md +10 -0
  395. package/specialists/prompts/cx-accessibility.md +1 -0
  396. package/specialists/prompts/cx-ai-engineer.md +1 -1
  397. package/specialists/prompts/cx-business-strategist.md +1 -1
  398. package/specialists/prompts/cx-data-engineer.md +1 -1
  399. package/specialists/prompts/cx-designer.md +1 -0
  400. package/specialists/prompts/cx-devil-advocate.md +1 -1
  401. package/specialists/prompts/cx-docs-keeper.md +1 -1
  402. package/specialists/prompts/cx-evaluator.md +1 -1
  403. package/specialists/prompts/cx-explorer.md +1 -1
  404. package/specialists/prompts/cx-operations.md +1 -1
  405. package/specialists/prompts/cx-oracle.md +7 -3
  406. package/specialists/prompts/cx-orchestrator.md +17 -1
  407. package/specialists/prompts/cx-platform-engineer.md +1 -1
  408. package/specialists/prompts/cx-product-manager.md +2 -0
  409. package/specialists/prompts/cx-release-manager.md +1 -1
  410. package/specialists/prompts/cx-researcher.md +7 -4
  411. package/specialists/prompts/cx-sre.md +1 -1
  412. package/specialists/prompts/cx-test-automation.md +2 -2
  413. package/specialists/prompts/cx-trace-reviewer.md +3 -3
  414. package/specialists/prompts/cx-ux-researcher.md +2 -1
  415. package/templates/demos/scripts/architecture-review-adr.json +30 -0
  416. package/templates/demos/scripts/capability-contract.json +25 -0
  417. package/templates/demos/scripts/intake-triage.json +25 -0
  418. package/templates/demos/scripts/profile-doctor-health.json +25 -0
  419. package/templates/demos/tapes/agentic-platforms-prd.tape +2 -2
  420. package/templates/demos/tapes/architecture-review-adr.tape +44 -0
  421. package/templates/demos/tapes/capability-contract.tape +39 -0
  422. package/templates/demos/tapes/intake-triage.tape +39 -0
  423. package/templates/demos/tapes/profile-doctor-health.tape +39 -0
  424. package/templates/distribution/construct-brand.typ +23 -18
  425. package/templates/distribution/construct-decision.typ +1 -1
  426. package/templates/distribution/construct-pdf.typ +1 -1
  427. package/templates/distribution/construct-prd.typ +1 -1
  428. package/templates/distribution/construct-research.typ +1 -1
  429. package/templates/distribution/mermaid-puppeteer.json +8 -0
  430. package/templates/docs/persona-artifact.md +1 -1
  431. package/templates/docs/prd.md +6 -0
  432. package/lib/boundary.mjs +0 -127
  433. package/lib/certification/dashboard-api.mjs +0 -71
  434. package/lib/chat/cli.mjs +0 -333
  435. package/lib/chat/command-suggest.mjs +0 -161
  436. package/lib/chat/commands.mjs +0 -215
  437. package/lib/chat/config.mjs +0 -142
  438. package/lib/chat/context-compactor.mjs +0 -250
  439. package/lib/chat/context-continuation.mjs +0 -253
  440. package/lib/chat/continuation-source.mjs +0 -58
  441. package/lib/chat/demo-guide.mjs +0 -61
  442. package/lib/chat/design-tokens.mjs +0 -91
  443. package/lib/chat/desktop-binary.mjs +0 -81
  444. package/lib/chat/desktop-build.mjs +0 -130
  445. package/lib/chat/desktop-launcher.mjs +0 -133
  446. package/lib/chat/evidence.mjs +0 -145
  447. package/lib/chat/export.mjs +0 -74
  448. package/lib/chat/harness/driver.mjs +0 -91
  449. package/lib/chat/list-picker.mjs +0 -112
  450. package/lib/chat/model-picker.mjs +0 -356
  451. package/lib/chat/openrouter-fallback.mjs +0 -151
  452. package/lib/chat/permission-prompt.mjs +0 -33
  453. package/lib/chat/picker-catalog.mjs +0 -45
  454. package/lib/chat/policy-telemetry.mjs +0 -34
  455. package/lib/chat/present.mjs +0 -246
  456. package/lib/chat/session-context.mjs +0 -39
  457. package/lib/chat/session-persist.mjs +0 -73
  458. package/lib/chat/session-restore.mjs +0 -71
  459. package/lib/chat/session-settings.mjs +0 -53
  460. package/lib/chat/system-prompt.mjs +0 -52
  461. package/lib/chat/transparency.mjs +0 -93
  462. package/lib/chat/tui/color-scheme.mjs +0 -42
  463. package/lib/chat/tui/markdown.mjs +0 -123
  464. package/lib/chat/tui/presentation.mjs +0 -100
  465. package/lib/chat/tui/render.mjs +0 -500
  466. package/lib/chat/tui/turn-block.mjs +0 -284
  467. package/lib/chat/tui/turn-present.mjs +0 -18
  468. package/lib/chat/tui/turn-state.mjs +0 -88
  469. package/lib/chat/tui/usage.mjs +0 -122
  470. package/lib/chat/web-commands.mjs +0 -146
  471. package/lib/chat/web-launcher.mjs +0 -63
  472. package/lib/chat/web-picker-keys.mjs +0 -46
  473. package/lib/chat/web-session.mjs +0 -159
  474. package/lib/config/alias.mjs +0 -57
  475. package/lib/dashboard-demo.mjs +0 -71
  476. package/lib/dashboard-static.mjs +0 -175
  477. package/lib/install/desktop-binary-download.mjs +0 -88
  478. package/lib/profiles/loader.mjs +0 -123
  479. package/lib/profiles/rebrand.mjs +0 -46
  480. package/lib/server/auth.mjs +0 -169
  481. package/lib/server/chat-loop.mjs +0 -622
  482. package/lib/server/chat.mjs +0 -336
  483. package/lib/server/cors.mjs +0 -77
  484. package/lib/server/csrf.mjs +0 -103
  485. package/lib/server/demo-preview.mjs +0 -63
  486. package/lib/server/index.mjs +0 -2641
  487. package/lib/server/insights.mjs +0 -780
  488. package/lib/server/langfuse-login.mjs +0 -58
  489. package/lib/server/rate-limit.mjs +0 -93
  490. package/lib/server/telemetry-login.mjs +0 -100
  491. package/lib/server/webhook.mjs +0 -512
  492. package/specialists/contracts.json +0 -1032
  493. package/specialists/contracts.schema.json +0 -83
  494. package/specialists/policy-inventory.json +0 -188
  495. package/specialists/registry.json +0 -1412
  496. package/specialists/role-manifests.json +0 -217
  497. package/specialists/teams.json +0 -94
@@ -0,0 +1,34 @@
1
+ {
2
+ "id": "any-to-docs-keeper",
3
+ "producer": "*",
4
+ "consumer": "cx-docs-keeper",
5
+ "trigger": {
6
+ "postConsumer": true,
7
+ "changedCoreDocs": true
8
+ },
9
+ "input": {
10
+ "shape": "doc-delta",
11
+ "mustContain": [
12
+ "filesChanged",
13
+ "decision"
14
+ ]
15
+ },
16
+ "output": {
17
+ "shape": "doc-sync",
18
+ "mustContain": [
19
+ "updatedDocs",
20
+ "crossReferencesAdded",
21
+ "crossDocCoherenceCheckRan",
22
+ "coherenceDiff"
23
+ ]
24
+ },
25
+ "preconditions": [
26
+ "Implementation or decision is marked DONE"
27
+ ],
28
+ "postconditions": [
29
+ "Cross-doc coherence preserved (PRD ↔ ADR ↔ code)",
30
+ "AUTO-managed regions regenerated via construct sync",
31
+ "crossDocCoherenceCheckRan=true with a named coherenceDiff — prevents stale-doc PRs that claim 'docs updated' without a real diff"
32
+ ],
33
+ "description": ""
34
+ }
@@ -0,0 +1,39 @@
1
+ {
2
+ "id": "any-to-explorer",
3
+ "producer": "*",
4
+ "consumer": "cx-explorer",
5
+ "trigger": {
6
+ "intent": "investigation",
7
+ "category": "exploration"
8
+ },
9
+ "input": {
10
+ "shape": "exploration-request",
11
+ "mustContain": [
12
+ "question",
13
+ "scope"
14
+ ]
15
+ },
16
+ "output": {
17
+ "shape": "exploration-findings",
18
+ "mustContain": [
19
+ "entryPoints",
20
+ "executionPath",
21
+ "keyFiles",
22
+ "dataFlow",
23
+ "gaps"
24
+ ]
25
+ },
26
+ "preconditions": [
27
+ "Scope tagged; investigation does not follow imports past two hops from named entry points"
28
+ ],
29
+ "postconditions": [
30
+ "Every claim about existing code cites file:line from a read actually performed",
31
+ "One match is not called a pattern; multi-callsite patterns cite each call site",
32
+ {
33
+ "id": "exploration-findings-claims-cited",
34
+ "description": "Every load-bearing claim cites file:line or a primary external reference",
35
+ "check": "artifact-claims-cited"
36
+ }
37
+ ],
38
+ "description": ""
39
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "id": "any-to-sre-incident",
3
+ "producer": "*",
4
+ "consumer": "cx-sre",
5
+ "trigger": {
6
+ "intent": "investigation",
7
+ "category": "incident"
8
+ },
9
+ "input": {
10
+ "shape": "incident-signal",
11
+ "mustContain": [
12
+ "symptoms",
13
+ "scope",
14
+ "firstObserved"
15
+ ]
16
+ },
17
+ "output": {
18
+ "shape": "incident-report",
19
+ "mustContain": [
20
+ "rootCause",
21
+ "timeline",
22
+ "remediation",
23
+ "preventions"
24
+ ]
25
+ },
26
+ "preconditions": [
27
+ "Blast radius assessed before remediation"
28
+ ],
29
+ "postconditions": [
30
+ "Blameless postmortem; no tickets in Problem statement"
31
+ ],
32
+ "description": ""
33
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "id": "any-to-trace-reviewer",
3
+ "producer": "*",
4
+ "consumer": "cx-trace-reviewer",
5
+ "trigger": {
6
+ "trace.anomaly": true
7
+ },
8
+ "input": {
9
+ "shape": "trace-analysis-request",
10
+ "mustContain": [
11
+ "scope",
12
+ "window"
13
+ ]
14
+ },
15
+ "output": {
16
+ "shape": "trace-analysis",
17
+ "mustContain": [
18
+ "flaggedAgents",
19
+ "evidence",
20
+ "recommendation"
21
+ ]
22
+ },
23
+ "preconditions": [
24
+ "Trace backend reachable via the configured `CONSTRUCT_TRACE_BACKEND` adapter"
25
+ ],
26
+ "postconditions": [
27
+ "Every performance claim cites the trace id and span",
28
+ "Promotion verdicts cite the staging-vs-production score delta, not a vibe",
29
+ "Variance and trend reported alongside median; stable medians that hide tail variance are surfaced"
30
+ ],
31
+ "description": ""
32
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "id": "architect-to-ai-engineer",
3
+ "producer": "cx-architect",
4
+ "consumer": "cx-ai-engineer",
5
+ "trigger": {
6
+ "riskFlags": [
7
+ "ai"
8
+ ],
9
+ "intent": [
10
+ "implementation"
11
+ ]
12
+ },
13
+ "input": {
14
+ "schema": "lib/contract-schemas/decision.json",
15
+ "mustContain": [
16
+ "goal",
17
+ "approach",
18
+ "evalCriteria"
19
+ ]
20
+ },
21
+ "output": {
22
+ "schema": "lib/contract-schemas/implementation.json",
23
+ "type": "implementation"
24
+ },
25
+ "preconditions": [
26
+ "Eval set defined with failure cases before prompt/model changes ship"
27
+ ],
28
+ "postconditions": [
29
+ "Eval verdict from cx-evaluator before DONE"
30
+ ],
31
+ "description": ""
32
+ }
@@ -0,0 +1,52 @@
1
+ {
2
+ "id": "architect-to-data-engineer",
3
+ "producer": "cx-architect",
4
+ "consumer": "cx-data-engineer",
5
+ "trigger": {
6
+ "riskFlags": [
7
+ "data",
8
+ "pipeline"
9
+ ],
10
+ "intent": [
11
+ "implementation"
12
+ ]
13
+ },
14
+ "input": {
15
+ "schema": "lib/contract-schemas/decision.json",
16
+ "mustContain": [
17
+ "goal",
18
+ "approach",
19
+ "dataContracts"
20
+ ]
21
+ },
22
+ "output": {
23
+ "shape": "pipeline-spec",
24
+ "mustContain": [
25
+ "dataContract",
26
+ "schema",
27
+ "qualityGates",
28
+ "retryPolicy"
29
+ ]
30
+ },
31
+ "preconditions": [
32
+ "Data volume, latency requirements, and existing stack clarified before architecture proposed",
33
+ "Existing schema inspected; column names and table relationships not invented"
34
+ ],
35
+ "postconditions": [
36
+ "Pipeline is idempotent and observable; not running on faith",
37
+ "Data contract is written down; quality gates defined as part of the design",
38
+ {
39
+ "id": "pipeline-spec-has-idempotency-plan",
40
+ "description": "Pipeline spec must contain an Idempotency Plan section",
41
+ "check": "artifact-has-section",
42
+ "section": "Idempotency Plan"
43
+ },
44
+ {
45
+ "id": "pipeline-spec-has-observability",
46
+ "description": "Pipeline spec must contain an Observability section",
47
+ "check": "artifact-has-section",
48
+ "section": "Observability"
49
+ }
50
+ ],
51
+ "description": ""
52
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "id": "architect-to-devil-advocate",
3
+ "producer": "cx-architect",
4
+ "consumer": "cx-devil-advocate",
5
+ "trigger": {
6
+ "framingChallenge.required": true
7
+ },
8
+ "input": {
9
+ "shape": "framing-proposal",
10
+ "mustContain": [
11
+ "problemStatement",
12
+ "proposedApproach",
13
+ "assumptions"
14
+ ]
15
+ },
16
+ "output": {
17
+ "shape": "challenge-report",
18
+ "mustContain": [
19
+ "verdict",
20
+ "counterevidence",
21
+ "reframingProposals"
22
+ ]
23
+ },
24
+ "preconditions": [
25
+ "Problem statement stated independent of tickets/transcripts"
26
+ ],
27
+ "postconditions": [
28
+ "If verdict is BLOCKED, architect revises framing before proceeding",
29
+ "Challenge checkpoint logged to audit trail"
30
+ ],
31
+ "description": "",
32
+ "teamBoundary": {
33
+ "crosses": true,
34
+ "producerTeam": "engineering-group",
35
+ "consumerTeam": "quality-group",
36
+ "requiresApprovalFrom": []
37
+ }
38
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "id": "architect-to-engineer",
3
+ "producer": "cx-architect",
4
+ "consumer": "cx-engineer",
5
+ "trigger": {
6
+ "intent": [
7
+ "implementation",
8
+ "fix"
9
+ ]
10
+ },
11
+ "input": {
12
+ "schema": "lib/contract-schemas/decision.json",
13
+ "mustContain": [
14
+ "goal",
15
+ "approach",
16
+ "tasks",
17
+ "acceptanceCriteria"
18
+ ]
19
+ },
20
+ "output": {
21
+ "schema": "lib/contract-schemas/implementation.json",
22
+ "type": "implementation"
23
+ },
24
+ "preconditions": [
25
+ "ADR approved (or fast-track noted); no pending CRITICAL review findings",
26
+ "Task packet contains readFirst and doNotChange lists"
27
+ ],
28
+ "postconditions": [
29
+ "Implementation cites the ADR tasks it completed",
30
+ "filesChanged matches tasks in the ADR",
31
+ "verificationChecklist evaluated before DONE"
32
+ ],
33
+ "description": ""
34
+ }
@@ -0,0 +1,59 @@
1
+ {
2
+ "id": "architect-to-evaluator",
3
+ "producer": "cx-architect",
4
+ "consumer": "cx-evaluator",
5
+ "trigger": {
6
+ "riskFlags": [
7
+ "ai",
8
+ "quality"
9
+ ],
10
+ "intent": [
11
+ "implementation"
12
+ ]
13
+ },
14
+ "input": {
15
+ "schema": "lib/contract-schemas/decision.json",
16
+ "mustContain": [
17
+ "goal",
18
+ "approach",
19
+ "evalCriteria"
20
+ ]
21
+ },
22
+ "output": {
23
+ "shape": "eval-spec",
24
+ "mustContain": [
25
+ "evaluationCriteria",
26
+ "scoringRubric",
27
+ "testCases",
28
+ "comparisonProtocol",
29
+ "passFailThreshold"
30
+ ]
31
+ },
32
+ "preconditions": [
33
+ "What 'better' means is defined in writing before the work is done",
34
+ "Baseline run identified or scheduled before proposed change runs"
35
+ ],
36
+ "postconditions": [
37
+ "Failing case is defined before results are seen",
38
+ "Regression checks enumerated; not just success-path test cases",
39
+ {
40
+ "id": "eval-spec-has-success-criteria",
41
+ "description": "Eval spec must contain a Success Criteria section",
42
+ "check": "artifact-has-section",
43
+ "section": "Success Criteria"
44
+ },
45
+ {
46
+ "id": "eval-spec-has-baseline",
47
+ "description": "Eval spec must contain a Baseline section",
48
+ "check": "artifact-has-section",
49
+ "section": "Baseline"
50
+ }
51
+ ],
52
+ "description": "",
53
+ "teamBoundary": {
54
+ "crosses": true,
55
+ "producerTeam": "engineering-group",
56
+ "consumerTeam": "quality-group",
57
+ "requiresApprovalFrom": []
58
+ }
59
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ "id": "architect-to-legal-compliance",
3
+ "producer": "cx-architect",
4
+ "consumer": "cx-legal-compliance",
5
+ "trigger": {
6
+ "riskFlags": [
7
+ "compliance",
8
+ "privacy",
9
+ "licensing"
10
+ ]
11
+ },
12
+ "input": {
13
+ "schema": "lib/contract-schemas/decision.json",
14
+ "mustContain": [
15
+ "goal",
16
+ "approach",
17
+ "dataFlows"
18
+ ]
19
+ },
20
+ "output": {
21
+ "shape": "compliance-memo",
22
+ "mustContain": [
23
+ "risks",
24
+ "severity",
25
+ "remediation"
26
+ ]
27
+ },
28
+ "preconditions": [
29
+ "Data flows enumerated: what is collected, stored, processed, and exported",
30
+ "Dependency tree surfaced past the first layer for licensing review"
31
+ ],
32
+ "postconditions": [
33
+ "Every assertion cites the regulation, standard, or contract clause it rests on",
34
+ "AI-generated user-facing content has a disclosure strategy noted, or is marked not-applicable with reason",
35
+ {
36
+ "id": "compliance-memo-has-regulatory-citations",
37
+ "description": "Compliance memo must contain a Regulatory Citations section",
38
+ "check": "artifact-has-section",
39
+ "section": "Regulatory Citations"
40
+ },
41
+ {
42
+ "id": "compliance-memo-has-remediation-plan",
43
+ "description": "Compliance memo must contain a Remediation Plan section",
44
+ "check": "artifact-has-section",
45
+ "section": "Remediation Plan"
46
+ }
47
+ ],
48
+ "description": "",
49
+ "teamBoundary": {
50
+ "crosses": true,
51
+ "producerTeam": "engineering-group",
52
+ "consumerTeam": "governance-group",
53
+ "requiresApprovalFrom": []
54
+ }
55
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "id": "architect-to-operations",
3
+ "producer": "cx-architect",
4
+ "consumer": "cx-operations",
5
+ "trigger": {
6
+ "intent": [
7
+ "implementation"
8
+ ],
9
+ "workCategory": "deep"
10
+ },
11
+ "input": {
12
+ "schema": "lib/contract-schemas/decision.json",
13
+ "mustContain": [
14
+ "goal",
15
+ "approach",
16
+ "tasks",
17
+ "acceptanceCriteria"
18
+ ]
19
+ },
20
+ "output": {
21
+ "shape": "ops-plan",
22
+ "mustContain": [
23
+ "sequencedTasks",
24
+ "dependencyGraph",
25
+ "ownershipMatrix",
26
+ "verificationGates"
27
+ ]
28
+ },
29
+ "preconditions": [
30
+ "Architect plan and devil-advocate feedback resolved",
31
+ "Tasks are atomic and individually verifiable"
32
+ ],
33
+ "postconditions": [
34
+ "Every task names a single owner",
35
+ "Every task names a verification gate and definition-of-done",
36
+ "Dependency graph identifies blockers; no task lies on a hidden critical path"
37
+ ],
38
+ "description": "",
39
+ "teamBoundary": {
40
+ "crosses": true,
41
+ "producerTeam": "engineering-group",
42
+ "consumerTeam": "operations-group",
43
+ "requiresApprovalFrom": []
44
+ }
45
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "id": "architect-to-platform-engineer",
3
+ "producer": "cx-architect",
4
+ "consumer": "cx-platform-engineer",
5
+ "trigger": {
6
+ "riskFlags": [
7
+ "platform",
8
+ "infrastructure"
9
+ ],
10
+ "intent": [
11
+ "implementation"
12
+ ]
13
+ },
14
+ "input": {
15
+ "schema": "lib/contract-schemas/decision.json",
16
+ "mustContain": [
17
+ "goal",
18
+ "approach",
19
+ "platformDependencies"
20
+ ]
21
+ },
22
+ "output": {
23
+ "shape": "platform-plan",
24
+ "mustContain": [
25
+ "problem",
26
+ "solution",
27
+ "impact",
28
+ "migration",
29
+ "rollback"
30
+ ]
31
+ },
32
+ "preconditions": [
33
+ "Observed friction quantified; not hypothetical future problems",
34
+ "Existing CI/CD and tooling surveyed before proposing new tooling"
35
+ ],
36
+ "postconditions": [
37
+ "Migration path described for existing workflows",
38
+ "Rollback procedure exists in case the change makes things worse",
39
+ "Improvement removes more configuration than it adds, or the added config is justified"
40
+ ],
41
+ "description": ""
42
+ }
@@ -0,0 +1,39 @@
1
+ {
2
+ "id": "business-strategist-to-product-manager",
3
+ "producer": "cx-business-strategist",
4
+ "consumer": "cx-product-manager",
5
+ "trigger": {
6
+ "strategy.required": true
7
+ },
8
+ "input": {
9
+ "shape": "strategic-memo",
10
+ "mustContain": [
11
+ "strategicContext",
12
+ "recommendation",
13
+ "evidence"
14
+ ]
15
+ },
16
+ "output": {
17
+ "shape": "prd-handoff",
18
+ "mustContain": [
19
+ "problem",
20
+ "users",
21
+ "functionalRequirements",
22
+ "acceptanceCriteria"
23
+ ]
24
+ },
25
+ "preconditions": [
26
+ "Strategic memo signed off; recommended option carried into PRD framing"
27
+ ],
28
+ "postconditions": [
29
+ "PRD Problem statement traces to the strategic memo's market context, not to internal roadmap items",
30
+ "PRD acknowledges the competitive dynamic named in the strategic memo"
31
+ ],
32
+ "description": "",
33
+ "teamBoundary": {
34
+ "crosses": true,
35
+ "producerTeam": "strategy-group",
36
+ "consumerTeam": "product-group",
37
+ "requiresApprovalFrom": []
38
+ }
39
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "id": "construct-to-orchestrator",
3
+ "producer": "construct",
4
+ "consumer": "cx-orchestrator",
5
+ "trigger": {
6
+ "track": "orchestrated"
7
+ },
8
+ "input": {
9
+ "shape": "task-packet",
10
+ "mustContain": [
11
+ "goal",
12
+ "intent",
13
+ "workCategory",
14
+ "riskFlags",
15
+ "acceptanceCriteria"
16
+ ]
17
+ },
18
+ "output": {
19
+ "schema": "lib/contract-schemas/decision.json",
20
+ "type": "decision"
21
+ },
22
+ "preconditions": [
23
+ "framingChallenge gate honored if required",
24
+ "externalResearch gate honored if required",
25
+ "docAuthoring.owner present if authoring a typed document"
26
+ ],
27
+ "postconditions": [
28
+ "Dispatch plan emitted with specialists in sequence",
29
+ "Parallel work marked with [parallel: ...] tags"
30
+ ],
31
+ "skillHints": [
32
+ "ai/orchestration-workflow",
33
+ "operating/orchestration-reference"
34
+ ],
35
+ "description": ""
36
+ }
@@ -0,0 +1,53 @@
1
+ {
2
+ "id": "construct-to-rd-lead",
3
+ "producer": "construct",
4
+ "consumer": "cx-rd-lead",
5
+ "trigger": {
6
+ "framingChallenge.required": true
7
+ },
8
+ "input": {
9
+ "shape": "framing-request",
10
+ "mustContain": [
11
+ "goal",
12
+ "uncertainty",
13
+ "assumptions"
14
+ ]
15
+ },
16
+ "output": {
17
+ "shape": "framing-brief",
18
+ "mustContain": [
19
+ "problemStatement",
20
+ "hypothesis",
21
+ "keyUnknowns",
22
+ "evidenceThreshold",
23
+ "recommendation"
24
+ ]
25
+ },
26
+ "preconditions": [
27
+ "Framing gate fires before architecture work begins",
28
+ "Strategy bets and non-bets reviewed in `.cx/knowledge/decisions/strategy/`"
29
+ ],
30
+ "postconditions": [
31
+ "Hypothesis is falsifiable and stated as 'We believe [X] will result in [Y] because [Z].'",
32
+ "Evidence threshold names a specific result that would confirm or disconfirm",
33
+ {
34
+ "id": "rd-framing-has-problem-section",
35
+ "description": "Framing artifact must contain a Problem section",
36
+ "check": "artifact-has-section",
37
+ "section": "Problem"
38
+ },
39
+ {
40
+ "id": "rd-framing-has-constraints-section",
41
+ "description": "Framing artifact must contain a Constraints section",
42
+ "check": "artifact-has-section",
43
+ "section": "Constraints"
44
+ },
45
+ {
46
+ "id": "rd-framing-has-open-questions-section",
47
+ "description": "Framing artifact must contain an Open Questions section",
48
+ "check": "artifact-has-section",
49
+ "section": "Open Questions"
50
+ }
51
+ ],
52
+ "description": ""
53
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "id": "data-analyst-to-product-manager",
3
+ "producer": "cx-data-analyst",
4
+ "consumer": "cx-product-manager",
5
+ "trigger": {
6
+ "docAuthoring.docType": [
7
+ "prd",
8
+ "meta-prd"
9
+ ],
10
+ "riskFlags": [
11
+ "metrics"
12
+ ]
13
+ },
14
+ "input": {
15
+ "shape": "metrics-analysis",
16
+ "mustContain": [
17
+ "metricDefinition",
18
+ "baseline",
19
+ "successThreshold"
20
+ ]
21
+ },
22
+ "output": {
23
+ "shape": "prd-handoff",
24
+ "mustContain": [
25
+ "acceptanceCriteria",
26
+ "successMetrics"
27
+ ]
28
+ },
29
+ "preconditions": [
30
+ "Metric definition reviewed for vanity-metric risk and for hit-without-solving-the-problem risk"
31
+ ],
32
+ "postconditions": [
33
+ "PRD success metrics carry the cited baseline and threshold from the analysis",
34
+ "Metrics that can be hit without solving the problem are flagged and replaced"
35
+ ],
36
+ "description": "",
37
+ "teamBoundary": {
38
+ "crosses": true,
39
+ "producerTeam": "strategy-group",
40
+ "consumerTeam": "product-group",
41
+ "requiresApprovalFrom": []
42
+ }
43
+ }