@geraldmaron/construct 1.2.3 → 1.3.1

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 (505) 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/cli.mjs +12 -2
  44. package/lib/doctor/source-checkout.mjs +3 -4
  45. package/lib/doctor/watchers/consistency.mjs +148 -43
  46. package/lib/doctor/watchers/credential-parity.mjs +97 -0
  47. package/lib/doctor/watchers/mcp-protocol.mjs +1 -1
  48. package/lib/doctor/watchers/service-health.mjs +4 -32
  49. package/lib/document-export.mjs +73 -9
  50. package/lib/document-extract.mjs +10 -198
  51. package/lib/embed/artifact.mjs +2 -3
  52. package/lib/embed/cli.mjs +1 -1
  53. package/lib/embed/config.mjs +1 -2
  54. package/lib/embed/customer-profiles.mjs +1 -1
  55. package/lib/embed/daemon.mjs +5 -6
  56. package/lib/embed/demand-fetch.mjs +114 -2
  57. package/lib/embed/docs-lifecycle.mjs +9 -5
  58. package/lib/embed/intake-metrics.mjs +2 -2
  59. package/lib/embed/notifications.mjs +2 -3
  60. package/lib/embed/recommendation-store.mjs +25 -22
  61. package/lib/embed/role-framing.mjs +4 -9
  62. package/lib/embedded-contract/capability.mjs +4 -2
  63. package/lib/embedded-contract/contract-version.mjs +1 -1
  64. package/lib/env-config.mjs +2 -2
  65. package/lib/flavors/loader.mjs +21 -19
  66. package/lib/graph/build-from-registry.mjs +31 -7
  67. package/lib/graph/staleness.mjs +1 -1
  68. package/lib/headhunt.mjs +82 -35
  69. package/lib/hooks/agent-tracker.mjs +2 -2
  70. package/lib/hooks/config-protection.mjs +1 -1
  71. package/lib/hooks/registry-sync.mjs +3 -3
  72. package/lib/host-capabilities.mjs +5 -5
  73. package/lib/improvement/controller.mjs +2 -2
  74. package/lib/init-unified.mjs +19 -21
  75. package/lib/intake/classify.mjs +26 -0
  76. package/lib/intake/daemon.mjs +2 -3
  77. package/lib/intake/prepare.mjs +10 -3
  78. package/lib/intake/session-prelude.mjs +1 -1
  79. package/lib/intake/tables/creative.mjs +9 -9
  80. package/lib/intake/tables/operations.mjs +4 -4
  81. package/lib/intake/tables/research.mjs +2 -2
  82. package/lib/integrations/intake-integrations.mjs +9 -10
  83. package/lib/knowledge/research-store.mjs +2 -2
  84. package/lib/mcp/server.mjs +104 -61
  85. package/lib/mcp/tool-budget.mjs +1 -46
  86. package/lib/mcp/tool-recovery.mjs +44 -0
  87. package/lib/mcp/tools/artifact-author.mjs +36 -0
  88. package/lib/mcp/tools/find-tool.mjs +86 -0
  89. package/lib/mcp/tools/orchestration-run.mjs +107 -69
  90. package/lib/mcp/tools/project.mjs +4 -3
  91. package/lib/mcp/tools/{profile.mjs → scope.mjs} +54 -52
  92. package/lib/mcp/tools/skills.mjs +39 -22
  93. package/lib/mcp/tools/telemetry.mjs +2 -1
  94. package/lib/mcp/tools/workflow.mjs +1 -1
  95. package/lib/mcp-platform-config.mjs +7 -5
  96. package/lib/migrations/index.mjs +4 -2
  97. package/lib/migrations/v2-unified-registry.mjs +35 -0
  98. package/lib/model-router.mjs +203 -36
  99. package/lib/models/catalog.mjs +25 -9
  100. package/lib/models/execution-capability-profile.mjs +3 -3
  101. package/lib/models/execution-policy.mjs +7 -6
  102. package/lib/models/provider-poll.mjs +18 -4
  103. package/lib/opencode-config.mjs +56 -1
  104. package/lib/opencode-runtime-plugin.mjs +13 -10
  105. package/lib/oracle/artifact-gate.mjs +14 -4
  106. package/lib/oracle/cli.mjs +2 -0
  107. package/lib/oracle/dispatch.mjs +18 -1
  108. package/lib/oracle/execute.mjs +39 -7
  109. package/lib/oracle/index.mjs +1 -1
  110. package/lib/oracle/org-graph.mjs +10 -5
  111. package/lib/oracle/policy.mjs +6 -0
  112. package/lib/oracle/read-model.mjs +103 -6
  113. package/lib/oracle/reconcile.mjs +31 -4
  114. package/lib/oracle/remediation-dispatch.mjs +53 -0
  115. package/lib/oracle/routing.mjs +5 -0
  116. package/lib/oracle/synthesize.mjs +80 -3
  117. package/lib/orchestration/routing-tables.mjs +44 -10
  118. package/lib/orchestration/runtime.mjs +2 -0
  119. package/lib/orchestration/worker.mjs +1 -1
  120. package/lib/orchestration-policy.mjs +351 -62
  121. package/lib/overrides/resolver.mjs +1 -12
  122. package/lib/parity.mjs +37 -11
  123. package/lib/policy/engine.mjs +80 -15
  124. package/lib/prompt-composer.js +51 -15
  125. package/lib/prompt-metadata.mjs +3 -2
  126. package/lib/providers/connection-probe.mjs +58 -0
  127. package/lib/providers/copilot-auth.mjs +1 -1
  128. package/lib/providers/credential-bootstrap.mjs +1 -1
  129. package/lib/providers/op-run.mjs +3 -4
  130. package/lib/providers/secret-resolver.mjs +31 -0
  131. package/lib/publish-tooling.mjs +3 -11
  132. package/lib/publish.mjs +12 -29
  133. package/lib/reconcile/mcp-entry-reconcile.mjs +14 -9
  134. package/lib/reflect.mjs +2 -2
  135. package/lib/registry/agent-manifest.mjs +190 -0
  136. package/lib/registry/assemble.mjs +133 -0
  137. package/lib/registry/catalog.mjs +171 -0
  138. package/lib/registry/cli.mjs +590 -6
  139. package/lib/registry/consolidation.mjs +5 -4
  140. package/lib/registry/docs-sync.mjs +67 -0
  141. package/lib/registry/loader.mjs +147 -0
  142. package/lib/registry/org-io.mjs +76 -0
  143. package/lib/registry/retired-paths.mjs +71 -0
  144. package/lib/registry/surface-map.mjs +5 -7
  145. package/lib/registry/validator.mjs +438 -0
  146. package/lib/research-execution-policy.mjs +173 -0
  147. package/lib/roles/catalog.mjs +4 -9
  148. package/lib/roles/fence.mjs +107 -1
  149. package/lib/roles/flavor-bindings.mjs +68 -0
  150. package/lib/roles/gateway.mjs +140 -29
  151. package/lib/roles/manifest.mjs +22 -13
  152. package/lib/roles/router.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 +6 -26
  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 -8
  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 +269 -51
  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/apps/chat/engine/ai-sdk-agent.mjs +0 -183
  433. package/apps/chat/engine/loop-driver.mjs +0 -211
  434. package/apps/chat/engine/models.mjs +0 -122
  435. package/apps/chat/engine/provider-adapters.mjs +0 -171
  436. package/apps/chat/engine/tools/permission.mjs +0 -54
  437. package/apps/chat/engine/tools/primitives.mjs +0 -180
  438. package/apps/chat/engine/tools/registry.mjs +0 -122
  439. package/apps/chat/engine/turn-controls.mjs +0 -70
  440. package/lib/boundary.mjs +0 -127
  441. package/lib/certification/dashboard-api.mjs +0 -71
  442. package/lib/chat/cli.mjs +0 -333
  443. package/lib/chat/command-suggest.mjs +0 -161
  444. package/lib/chat/commands.mjs +0 -215
  445. package/lib/chat/config.mjs +0 -142
  446. package/lib/chat/context-compactor.mjs +0 -250
  447. package/lib/chat/context-continuation.mjs +0 -253
  448. package/lib/chat/continuation-source.mjs +0 -58
  449. package/lib/chat/demo-guide.mjs +0 -61
  450. package/lib/chat/design-tokens.mjs +0 -91
  451. package/lib/chat/desktop-binary.mjs +0 -81
  452. package/lib/chat/desktop-build.mjs +0 -130
  453. package/lib/chat/desktop-launcher.mjs +0 -133
  454. package/lib/chat/evidence.mjs +0 -145
  455. package/lib/chat/export.mjs +0 -74
  456. package/lib/chat/harness/driver.mjs +0 -91
  457. package/lib/chat/list-picker.mjs +0 -112
  458. package/lib/chat/model-picker.mjs +0 -356
  459. package/lib/chat/openrouter-fallback.mjs +0 -151
  460. package/lib/chat/permission-prompt.mjs +0 -33
  461. package/lib/chat/picker-catalog.mjs +0 -45
  462. package/lib/chat/policy-telemetry.mjs +0 -34
  463. package/lib/chat/present.mjs +0 -246
  464. package/lib/chat/session-context.mjs +0 -39
  465. package/lib/chat/session-persist.mjs +0 -73
  466. package/lib/chat/session-restore.mjs +0 -71
  467. package/lib/chat/session-settings.mjs +0 -53
  468. package/lib/chat/system-prompt.mjs +0 -52
  469. package/lib/chat/transparency.mjs +0 -93
  470. package/lib/chat/tui/color-scheme.mjs +0 -42
  471. package/lib/chat/tui/markdown.mjs +0 -123
  472. package/lib/chat/tui/presentation.mjs +0 -100
  473. package/lib/chat/tui/render.mjs +0 -500
  474. package/lib/chat/tui/turn-block.mjs +0 -284
  475. package/lib/chat/tui/turn-present.mjs +0 -18
  476. package/lib/chat/tui/turn-state.mjs +0 -88
  477. package/lib/chat/tui/usage.mjs +0 -122
  478. package/lib/chat/web-commands.mjs +0 -146
  479. package/lib/chat/web-launcher.mjs +0 -63
  480. package/lib/chat/web-picker-keys.mjs +0 -46
  481. package/lib/chat/web-session.mjs +0 -159
  482. package/lib/config/alias.mjs +0 -57
  483. package/lib/dashboard-demo.mjs +0 -71
  484. package/lib/dashboard-static.mjs +0 -175
  485. package/lib/install/desktop-binary-download.mjs +0 -88
  486. package/lib/profiles/loader.mjs +0 -123
  487. package/lib/profiles/rebrand.mjs +0 -46
  488. package/lib/server/auth.mjs +0 -169
  489. package/lib/server/chat-loop.mjs +0 -622
  490. package/lib/server/chat.mjs +0 -336
  491. package/lib/server/cors.mjs +0 -77
  492. package/lib/server/csrf.mjs +0 -103
  493. package/lib/server/demo-preview.mjs +0 -63
  494. package/lib/server/index.mjs +0 -2641
  495. package/lib/server/insights.mjs +0 -780
  496. package/lib/server/langfuse-login.mjs +0 -58
  497. package/lib/server/rate-limit.mjs +0 -93
  498. package/lib/server/telemetry-login.mjs +0 -100
  499. package/lib/server/webhook.mjs +0 -512
  500. package/specialists/contracts.json +0 -1032
  501. package/specialists/contracts.schema.json +0 -83
  502. package/specialists/policy-inventory.json +0 -188
  503. package/specialists/registry.json +0 -1412
  504. package/specialists/role-manifests.json +0 -217
  505. package/specialists/teams.json +0 -94
@@ -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
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "id": "data-engineer-to-platform-engineer",
3
+ "producer": "cx-data-engineer",
4
+ "consumer": "cx-platform-engineer",
5
+ "trigger": {
6
+ "riskFlags": [
7
+ "data",
8
+ "pipeline",
9
+ "infrastructure"
10
+ ]
11
+ },
12
+ "input": {
13
+ "shape": "pipeline-spec",
14
+ "mustContain": [
15
+ "dataContract",
16
+ "qualityGates"
17
+ ]
18
+ },
19
+ "output": {
20
+ "shape": "platform-plan",
21
+ "mustContain": [
22
+ "problem",
23
+ "solution",
24
+ "migration",
25
+ "rollback"
26
+ ]
27
+ },
28
+ "preconditions": [
29
+ "Pipeline operational requirements (alerts, retries, backfills) stated in pipeline spec"
30
+ ],
31
+ "postconditions": [
32
+ "Operational burden (who maintains, how to debug) accepted by platform owner",
33
+ "Pipeline observability surfaces appear on a named dashboard, not just in logs"
34
+ ],
35
+ "description": ""
36
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "id": "designer-to-accessibility",
3
+ "producer": "cx-designer",
4
+ "consumer": "cx-accessibility",
5
+ "trigger": {
6
+ "riskFlags": [
7
+ "ui",
8
+ "accessibility"
9
+ ]
10
+ },
11
+ "input": {
12
+ "shape": "design-deliverable",
13
+ "mustContain": [
14
+ "surface",
15
+ "deliverable",
16
+ "accessibilityCheckRan"
17
+ ]
18
+ },
19
+ "output": {
20
+ "shape": "a11y-findings",
21
+ "mustContain": [
22
+ "findings",
23
+ "wcagCriterion",
24
+ "userImpact",
25
+ "fix"
26
+ ]
27
+ },
28
+ "preconditions": [
29
+ "Flow exercised with a keyboard and a screen reader; not just spec-read"
30
+ ],
31
+ "postconditions": [
32
+ "Every finding cites a WCAG criterion and a concrete repro step",
33
+ "Findings that weren't exercised with the assistive technology are labeled 'unverified'"
34
+ ],
35
+ "description": ""
36
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "id": "engineer-to-qa",
3
+ "producer": "cx-engineer",
4
+ "consumer": "cx-qa",
5
+ "trigger": {
6
+ "always": true
7
+ },
8
+ "input": {
9
+ "schema": "lib/contract-schemas/implementation.json",
10
+ "mustContain": [
11
+ "filesChanged",
12
+ "tests"
13
+ ]
14
+ },
15
+ "output": {
16
+ "schema": "lib/contract-schemas/test-report.json",
17
+ "type": "test-report"
18
+ },
19
+ "preconditions": [
20
+ "Test plan exists or is derivable from acceptance criteria"
21
+ ],
22
+ "postconditions": [
23
+ "Verdict in {PASS, FAIL}",
24
+ "Coverage meets project threshold",
25
+ "FAIL blocks DONE in workflow"
26
+ ],
27
+ "description": "",
28
+ "teamBoundary": {
29
+ "crosses": true,
30
+ "producerTeam": "engineering-group",
31
+ "consumerTeam": "quality-group",
32
+ "requiresApprovalFrom": []
33
+ }
34
+ }