@geraldmaron/construct 1.2.3 → 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 (504) hide show
  1. package/README.md +7 -10
  2. package/bin/construct +235 -209
  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 +55 -54
  28. package/lib/comment-lint.mjs +1 -5
  29. package/lib/completions.mjs +20 -2
  30. package/lib/config/legacy-config-migration.mjs +90 -24
  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/scopes/enrich.mjs +67 -0
  153. package/lib/scopes/hooks.mjs +12 -0
  154. package/lib/{profiles → scopes}/lifecycle.mjs +70 -70
  155. package/lib/scopes/loader.mjs +104 -0
  156. package/lib/scopes/rebrand.mjs +32 -0
  157. package/lib/scopes/research-profile.mjs +16 -0
  158. package/lib/scopes/teams.mjs +98 -0
  159. package/lib/service-manager.mjs +1 -117
  160. package/lib/setup-prompts.mjs +1 -1
  161. package/lib/setup.mjs +6 -26
  162. package/lib/skills/composition-graph.mjs +98 -0
  163. package/lib/skills/router.mjs +80 -0
  164. package/lib/specialist-contracts.mjs +17 -18
  165. package/lib/specialists/postconditions.mjs +2 -2
  166. package/lib/specialists/prompt-schema.mjs +6 -5
  167. package/lib/specialists/roster.mjs +7 -12
  168. package/lib/specialists/schema.mjs +9 -6
  169. package/lib/status.mjs +25 -90
  170. package/lib/storage/file-lock.mjs +6 -3
  171. package/lib/telemetry/skill-calls.mjs +1 -1
  172. package/lib/templates/doc-presentation.mjs +63 -0
  173. package/lib/templates/visual-requirements.mjs +35 -2
  174. package/lib/term-format.mjs +107 -2
  175. package/lib/test-env-setup.mjs +21 -0
  176. package/lib/ui/components.mjs +42 -0
  177. package/lib/ui/glyphs.mjs +58 -0
  178. package/lib/ui/links.mjs +115 -0
  179. package/lib/ui/theme.mjs +108 -0
  180. package/lib/uninstall/uninstall.mjs +2 -1
  181. package/lib/validator.mjs +45 -8
  182. package/lib/validators/skill-effectiveness.mjs +174 -0
  183. package/lib/validators/skills.mjs +1 -1
  184. package/package.json +12 -8
  185. package/personas/construct.md +12 -3
  186. package/platforms/claude/CLAUDE.md +1 -1
  187. package/rules/common/beads-hygiene.md +52 -0
  188. package/rules/common/neurodivergent-output.md +4 -7
  189. package/rules/common/research.md +2 -0
  190. package/scripts/sync-specialists.mjs +260 -49
  191. package/skills/ai/prompt-optimizer.md +3 -3
  192. package/skills/brand/output-vibe.md +48 -0
  193. package/skills/docs/adr-workflow.md +3 -0
  194. package/skills/docs/backlog-proposal-workflow.md +3 -0
  195. package/skills/docs/codebase-research-workflow.md +5 -2
  196. package/skills/docs/customer-profile-workflow.md +3 -0
  197. package/skills/docs/document-ingest-workflow.md +3 -0
  198. package/skills/docs/evidence-ingest-workflow.md +4 -1
  199. package/skills/docs/init-project.md +1 -1
  200. package/skills/docs/prd-workflow.md +1 -1
  201. package/skills/docs/prfaq-workflow.md +3 -0
  202. package/skills/docs/product-intelligence-workflow.md +4 -1
  203. package/skills/docs/product-signal-workflow.md +3 -0
  204. package/skills/docs/research-workflow.md +13 -6
  205. package/skills/docs/runbook-workflow.md +3 -0
  206. package/skills/docs/strategy-workflow.md +3 -0
  207. package/skills/docs/user-research-workflow.md +6 -3
  208. package/skills/operating/orchestration-reference.md +1 -1
  209. package/skills/roles/{engineer.ai.md → ai-engineer.md} +2 -2
  210. package/skills/roles/architect.ai-systems.md +1 -1
  211. package/skills/roles/architect.data.md +1 -1
  212. package/skills/roles/architect.enterprise.md +1 -1
  213. package/skills/roles/architect.integration.md +1 -1
  214. package/skills/roles/architect.md +1 -1
  215. package/skills/roles/architect.platform.md +1 -1
  216. package/skills/roles/{product-manager.business-strategy.md → business-strategist.md} +3 -3
  217. package/skills/roles/data-analyst.experiment.md +1 -1
  218. package/skills/roles/data-analyst.md +1 -1
  219. package/skills/roles/data-analyst.product-intelligence.md +1 -1
  220. package/skills/roles/data-analyst.product.md +1 -1
  221. package/skills/roles/data-analyst.telemetry.md +1 -1
  222. package/skills/roles/{engineer.data.md → data-engineer.md} +2 -2
  223. package/skills/roles/data-engineer.pipeline.md +2 -2
  224. package/skills/roles/data-engineer.vector-retrieval.md +2 -2
  225. package/skills/roles/data-engineer.warehouse.md +2 -2
  226. package/skills/roles/debugger.md +1 -1
  227. package/skills/roles/designer.accessibility.md +1 -1
  228. package/skills/roles/designer.md +1 -1
  229. package/skills/roles/{reviewer.devil-advocate.md → devil-advocate.md} +2 -2
  230. package/skills/roles/{operator.docs.md → docs-keeper.md} +3 -3
  231. package/skills/roles/engineer.md +3 -7
  232. package/skills/roles/{reviewer.evaluator.md → evaluator.md} +2 -2
  233. package/skills/roles/{researcher.explorer.md → explorer.md} +2 -2
  234. package/skills/roles/{operator.md → operations.md} +2 -5
  235. package/skills/roles/orchestrator.md +1 -1
  236. package/skills/roles/{engineer.platform.md → platform-engineer.md} +2 -2
  237. package/skills/roles/product-manager.ai-product.md +1 -1
  238. package/skills/roles/product-manager.enterprise.md +1 -1
  239. package/skills/roles/product-manager.growth.md +1 -2
  240. package/skills/roles/product-manager.md +1 -2
  241. package/skills/roles/product-manager.platform.md +1 -1
  242. package/skills/roles/product-manager.product.md +1 -1
  243. package/skills/roles/qa.ai-eval.md +1 -1
  244. package/skills/roles/qa.api-contract.md +1 -1
  245. package/skills/roles/qa.data-pipeline.md +1 -1
  246. package/skills/roles/qa.md +1 -1
  247. package/skills/roles/qa.web-ui.md +1 -1
  248. package/skills/roles/{operator.release.md → release-manager.md} +3 -3
  249. package/skills/roles/researcher.md +1 -1
  250. package/skills/roles/reviewer.md +1 -1
  251. package/skills/roles/security.ai.md +1 -1
  252. package/skills/roles/security.appsec.md +1 -1
  253. package/skills/roles/security.cloud.md +1 -1
  254. package/skills/roles/security.legal-compliance.md +1 -1
  255. package/skills/roles/security.md +1 -1
  256. package/skills/roles/security.privacy.md +1 -1
  257. package/skills/roles/security.supply-chain.md +1 -1
  258. package/skills/roles/{operator.sre.md → sre.md} +3 -3
  259. package/skills/roles/{qa.test-automation.md → test-automation.md} +2 -2
  260. package/skills/roles/{reviewer.trace.md → trace-reviewer.md} +2 -2
  261. package/skills/roles/{researcher.ux.md → ux-researcher.md} +2 -2
  262. package/skills/routing.json +18 -0
  263. package/skills/routing.md +1 -1
  264. package/specialists/artifact-manifest.json +2 -1
  265. package/specialists/audit-enrichments.json +14 -14
  266. package/specialists/org/contracts/accessibility-to-qa.json +37 -0
  267. package/specialists/org/contracts/any-to-business-strategist.json +57 -0
  268. package/specialists/org/contracts/any-to-debugger.json +38 -0
  269. package/specialists/org/contracts/any-to-designer.json +33 -0
  270. package/specialists/org/contracts/any-to-docs-keeper.json +34 -0
  271. package/specialists/org/contracts/any-to-explorer.json +39 -0
  272. package/specialists/org/contracts/any-to-sre-incident.json +33 -0
  273. package/specialists/org/contracts/any-to-trace-reviewer.json +32 -0
  274. package/specialists/org/contracts/architect-to-ai-engineer.json +32 -0
  275. package/specialists/org/contracts/architect-to-data-engineer.json +52 -0
  276. package/specialists/org/contracts/architect-to-devil-advocate.json +38 -0
  277. package/specialists/org/contracts/architect-to-engineer.json +34 -0
  278. package/specialists/org/contracts/architect-to-evaluator.json +59 -0
  279. package/specialists/org/contracts/architect-to-legal-compliance.json +55 -0
  280. package/specialists/org/contracts/architect-to-operations.json +45 -0
  281. package/specialists/org/contracts/architect-to-platform-engineer.json +42 -0
  282. package/specialists/org/contracts/business-strategist-to-product-manager.json +39 -0
  283. package/specialists/org/contracts/construct-to-orchestrator.json +36 -0
  284. package/specialists/org/contracts/construct-to-rd-lead.json +53 -0
  285. package/specialists/org/contracts/data-analyst-to-product-manager.json +43 -0
  286. package/specialists/org/contracts/data-engineer-to-platform-engineer.json +36 -0
  287. package/specialists/org/contracts/designer-to-accessibility.json +36 -0
  288. package/specialists/org/contracts/engineer-to-qa.json +34 -0
  289. package/specialists/org/contracts/engineer-to-reviewer.json +52 -0
  290. package/specialists/org/contracts/explorer-to-engineer.json +38 -0
  291. package/specialists/org/contracts/legal-compliance-to-release-manager.json +43 -0
  292. package/specialists/org/contracts/platform-engineer-to-engineer.json +31 -0
  293. package/specialists/org/contracts/product-manager-to-architect.json +71 -0
  294. package/specialists/org/contracts/product-manager-to-data-analyst.json +49 -0
  295. package/specialists/org/contracts/product-manager-to-ux-researcher.json +51 -0
  296. package/specialists/org/contracts/qa-to-release-manager.json +42 -0
  297. package/specialists/org/contracts/qa-to-test-automation.json +42 -0
  298. package/specialists/org/contracts/rd-lead-to-architect.json +38 -0
  299. package/specialists/org/contracts/researcher-to-architect.json +40 -0
  300. package/specialists/org/contracts/researcher-to-product-manager.json +57 -0
  301. package/specialists/org/contracts/reviewer-to-security.json +41 -0
  302. package/specialists/org/contracts/sre-to-release-manager.json +36 -0
  303. package/specialists/org/contracts/test-automation-to-engineer.json +34 -0
  304. package/specialists/org/contracts/trace-reviewer-to-sre.json +41 -0
  305. package/specialists/org/contracts/user-to-construct.json +30 -0
  306. package/specialists/org/groups/engineering-group.json +43 -0
  307. package/specialists/org/groups/governance-group.json +38 -0
  308. package/specialists/org/groups/operations-group.json +41 -0
  309. package/specialists/org/groups/product-group.json +46 -0
  310. package/specialists/org/groups/quality-group.json +42 -0
  311. package/specialists/org/groups/strategy-group.json +41 -0
  312. package/specialists/org/policies/action-approval.json +13 -0
  313. package/specialists/org/policies/agents-routing.json +13 -0
  314. package/specialists/org/policies/architecture.json +20 -0
  315. package/specialists/org/policies/bash-safety.json +13 -0
  316. package/specialists/org/policies/beads-hygiene.json +13 -0
  317. package/specialists/org/policies/bootstrap-state.json +13 -0
  318. package/specialists/org/policies/code-review.json +13 -0
  319. package/specialists/org/policies/coding-style.json +13 -0
  320. package/specialists/org/policies/comments.json +13 -0
  321. package/specialists/org/policies/commit-approval.json +13 -0
  322. package/specialists/org/policies/contract-preconditions.json +13 -0
  323. package/specialists/org/policies/deployment.json +20 -0
  324. package/specialists/org/policies/description.json +14 -0
  325. package/specialists/org/policies/design-approval.json +19 -0
  326. package/specialists/org/policies/doc-ownership.json +13 -0
  327. package/specialists/org/policies/file-path-fence.json +13 -0
  328. package/specialists/org/policies/framing.json +13 -0
  329. package/specialists/org/policies/git-workflow.json +13 -0
  330. package/specialists/org/policies/incident-response.json +15 -0
  331. package/specialists/org/policies/intake-triage.json +15 -0
  332. package/specialists/org/policies/neurodivergent-output.json +13 -0
  333. package/specialists/org/policies/no-fabrication.json +13 -0
  334. package/specialists/org/policies/patterns.json +13 -0
  335. package/specialists/org/policies/quality-gate-approval.json +17 -0
  336. package/specialists/org/policies/release-gates.json +13 -0
  337. package/specialists/org/policies/research-evidence.json +13 -0
  338. package/specialists/org/policies/review-before-change.json +13 -0
  339. package/specialists/org/policies/rollback.json +15 -0
  340. package/specialists/org/policies/scope-change.json +20 -0
  341. package/specialists/org/policies/secret-scan.json +13 -0
  342. package/specialists/org/policies/security-approval.json +17 -0
  343. package/specialists/org/policies/security.json +13 -0
  344. package/specialists/org/policies/session-efficiency.json +13 -0
  345. package/specialists/org/policies/skill-routing.json +13 -0
  346. package/specialists/org/policies/strategic-prioritization.json +17 -0
  347. package/specialists/org/policies/testing.json +13 -0
  348. package/specialists/org/policies/tool-invisibility.json +14 -0
  349. package/specialists/org/scopes/creative.json +54 -0
  350. package/specialists/org/scopes/operations.json +51 -0
  351. package/specialists/org/scopes/research.json +60 -0
  352. package/specialists/org/scopes/rnd.json +81 -0
  353. package/specialists/org/specialists/cx-accessibility.json +69 -0
  354. package/specialists/org/specialists/cx-ai-engineer.json +75 -0
  355. package/specialists/org/specialists/cx-architect.json +89 -0
  356. package/specialists/org/specialists/cx-business-strategist.json +72 -0
  357. package/specialists/org/specialists/cx-data-analyst.json +68 -0
  358. package/specialists/org/specialists/cx-data-engineer.json +71 -0
  359. package/specialists/org/specialists/cx-debugger.json +75 -0
  360. package/specialists/org/specialists/cx-designer.json +85 -0
  361. package/specialists/org/specialists/cx-devil-advocate.json +71 -0
  362. package/specialists/org/specialists/cx-docs-keeper.json +82 -0
  363. package/specialists/org/specialists/cx-engineer.json +106 -0
  364. package/specialists/org/specialists/cx-evaluator.json +69 -0
  365. package/specialists/org/specialists/cx-explorer.json +69 -0
  366. package/specialists/org/specialists/cx-legal-compliance.json +74 -0
  367. package/specialists/org/specialists/cx-operations.json +72 -0
  368. package/specialists/org/specialists/cx-oracle.json +46 -0
  369. package/specialists/org/specialists/cx-orchestrator.json +81 -0
  370. package/specialists/org/specialists/cx-platform-engineer.json +80 -0
  371. package/specialists/org/specialists/cx-product-manager.json +102 -0
  372. package/specialists/org/specialists/cx-qa.json +79 -0
  373. package/specialists/org/specialists/cx-rd-lead.json +73 -0
  374. package/specialists/org/specialists/cx-release-manager.json +77 -0
  375. package/specialists/org/specialists/cx-researcher.json +82 -0
  376. package/specialists/org/specialists/cx-reviewer.json +71 -0
  377. package/specialists/org/specialists/cx-security.json +91 -0
  378. package/specialists/org/specialists/cx-sre.json +94 -0
  379. package/specialists/org/specialists/cx-test-automation.json +69 -0
  380. package/specialists/org/specialists/cx-trace-reviewer.json +69 -0
  381. package/specialists/org/specialists/cx-ux-researcher.json +68 -0
  382. package/specialists/org/teams/accessibility-team.json +39 -0
  383. package/specialists/org/teams/design-team.json +40 -0
  384. package/specialists/org/teams/engineering-team.json +50 -0
  385. package/specialists/org/teams/governance-team.json +41 -0
  386. package/specialists/org/teams/operations-team.json +46 -0
  387. package/specialists/org/teams/product-management-team.json +45 -0
  388. package/specialists/org/teams/quality-team.json +49 -0
  389. package/specialists/org/teams/research-team.json +39 -0
  390. package/specialists/org/teams/strategy-team.json +48 -0
  391. package/specialists/org/teams/ux-research-team.json +39 -0
  392. package/specialists/prompts/_shared/validation-contract.md +1 -1
  393. package/specialists/prompts/_team-template.md +10 -0
  394. package/specialists/prompts/cx-accessibility.md +1 -0
  395. package/specialists/prompts/cx-ai-engineer.md +1 -1
  396. package/specialists/prompts/cx-business-strategist.md +1 -1
  397. package/specialists/prompts/cx-data-engineer.md +1 -1
  398. package/specialists/prompts/cx-designer.md +1 -0
  399. package/specialists/prompts/cx-devil-advocate.md +1 -1
  400. package/specialists/prompts/cx-docs-keeper.md +1 -1
  401. package/specialists/prompts/cx-evaluator.md +1 -1
  402. package/specialists/prompts/cx-explorer.md +1 -1
  403. package/specialists/prompts/cx-operations.md +1 -1
  404. package/specialists/prompts/cx-oracle.md +7 -3
  405. package/specialists/prompts/cx-orchestrator.md +17 -1
  406. package/specialists/prompts/cx-platform-engineer.md +1 -1
  407. package/specialists/prompts/cx-product-manager.md +2 -0
  408. package/specialists/prompts/cx-release-manager.md +1 -1
  409. package/specialists/prompts/cx-researcher.md +7 -4
  410. package/specialists/prompts/cx-sre.md +1 -1
  411. package/specialists/prompts/cx-test-automation.md +2 -2
  412. package/specialists/prompts/cx-trace-reviewer.md +3 -3
  413. package/specialists/prompts/cx-ux-researcher.md +2 -1
  414. package/templates/demos/scripts/architecture-review-adr.json +30 -0
  415. package/templates/demos/scripts/capability-contract.json +25 -0
  416. package/templates/demos/scripts/intake-triage.json +25 -0
  417. package/templates/demos/scripts/profile-doctor-health.json +25 -0
  418. package/templates/demos/tapes/agentic-platforms-prd.tape +2 -2
  419. package/templates/demos/tapes/architecture-review-adr.tape +44 -0
  420. package/templates/demos/tapes/capability-contract.tape +39 -0
  421. package/templates/demos/tapes/intake-triage.tape +39 -0
  422. package/templates/demos/tapes/profile-doctor-health.tape +39 -0
  423. package/templates/distribution/construct-brand.typ +23 -18
  424. package/templates/distribution/construct-decision.typ +1 -1
  425. package/templates/distribution/construct-pdf.typ +1 -1
  426. package/templates/distribution/construct-prd.typ +1 -1
  427. package/templates/distribution/construct-research.typ +1 -1
  428. package/templates/distribution/mermaid-puppeteer.json +8 -0
  429. package/templates/docs/persona-artifact.md +1 -1
  430. package/templates/docs/prd.md +6 -0
  431. package/apps/chat/engine/ai-sdk-agent.mjs +0 -183
  432. package/apps/chat/engine/loop-driver.mjs +0 -211
  433. package/apps/chat/engine/models.mjs +0 -122
  434. package/apps/chat/engine/provider-adapters.mjs +0 -171
  435. package/apps/chat/engine/tools/permission.mjs +0 -54
  436. package/apps/chat/engine/tools/primitives.mjs +0 -180
  437. package/apps/chat/engine/tools/registry.mjs +0 -122
  438. package/apps/chat/engine/turn-controls.mjs +0 -70
  439. package/lib/boundary.mjs +0 -127
  440. package/lib/certification/dashboard-api.mjs +0 -71
  441. package/lib/chat/cli.mjs +0 -333
  442. package/lib/chat/command-suggest.mjs +0 -161
  443. package/lib/chat/commands.mjs +0 -215
  444. package/lib/chat/config.mjs +0 -142
  445. package/lib/chat/context-compactor.mjs +0 -250
  446. package/lib/chat/context-continuation.mjs +0 -253
  447. package/lib/chat/continuation-source.mjs +0 -58
  448. package/lib/chat/demo-guide.mjs +0 -61
  449. package/lib/chat/design-tokens.mjs +0 -91
  450. package/lib/chat/desktop-binary.mjs +0 -81
  451. package/lib/chat/desktop-build.mjs +0 -130
  452. package/lib/chat/desktop-launcher.mjs +0 -133
  453. package/lib/chat/evidence.mjs +0 -145
  454. package/lib/chat/export.mjs +0 -74
  455. package/lib/chat/harness/driver.mjs +0 -91
  456. package/lib/chat/list-picker.mjs +0 -112
  457. package/lib/chat/model-picker.mjs +0 -356
  458. package/lib/chat/openrouter-fallback.mjs +0 -151
  459. package/lib/chat/permission-prompt.mjs +0 -33
  460. package/lib/chat/picker-catalog.mjs +0 -45
  461. package/lib/chat/policy-telemetry.mjs +0 -34
  462. package/lib/chat/present.mjs +0 -246
  463. package/lib/chat/session-context.mjs +0 -39
  464. package/lib/chat/session-persist.mjs +0 -73
  465. package/lib/chat/session-restore.mjs +0 -71
  466. package/lib/chat/session-settings.mjs +0 -53
  467. package/lib/chat/system-prompt.mjs +0 -52
  468. package/lib/chat/transparency.mjs +0 -93
  469. package/lib/chat/tui/color-scheme.mjs +0 -42
  470. package/lib/chat/tui/markdown.mjs +0 -123
  471. package/lib/chat/tui/presentation.mjs +0 -100
  472. package/lib/chat/tui/render.mjs +0 -500
  473. package/lib/chat/tui/turn-block.mjs +0 -284
  474. package/lib/chat/tui/turn-present.mjs +0 -18
  475. package/lib/chat/tui/turn-state.mjs +0 -88
  476. package/lib/chat/tui/usage.mjs +0 -122
  477. package/lib/chat/web-commands.mjs +0 -146
  478. package/lib/chat/web-launcher.mjs +0 -63
  479. package/lib/chat/web-picker-keys.mjs +0 -46
  480. package/lib/chat/web-session.mjs +0 -159
  481. package/lib/config/alias.mjs +0 -57
  482. package/lib/dashboard-demo.mjs +0 -71
  483. package/lib/dashboard-static.mjs +0 -175
  484. package/lib/install/desktop-binary-download.mjs +0 -88
  485. package/lib/profiles/loader.mjs +0 -123
  486. package/lib/profiles/rebrand.mjs +0 -46
  487. package/lib/server/auth.mjs +0 -169
  488. package/lib/server/chat-loop.mjs +0 -622
  489. package/lib/server/chat.mjs +0 -336
  490. package/lib/server/cors.mjs +0 -77
  491. package/lib/server/csrf.mjs +0 -103
  492. package/lib/server/demo-preview.mjs +0 -63
  493. package/lib/server/index.mjs +0 -2641
  494. package/lib/server/insights.mjs +0 -780
  495. package/lib/server/langfuse-login.mjs +0 -58
  496. package/lib/server/rate-limit.mjs +0 -93
  497. package/lib/server/telemetry-login.mjs +0 -100
  498. package/lib/server/webhook.mjs +0 -512
  499. package/specialists/contracts.json +0 -1032
  500. package/specialists/contracts.schema.json +0 -83
  501. package/specialists/policy-inventory.json +0 -188
  502. package/specialists/registry.json +0 -1412
  503. package/specialists/role-manifests.json +0 -217
  504. 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
+ }