@geraldmaron/construct 1.4.2 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (519) hide show
  1. package/.env.example +36 -0
  2. package/README.md +41 -7
  3. package/bin/construct +1027 -64
  4. package/examples/distribution/sources/deck-one-pager.md +1 -1
  5. package/lib/acp/server.mjs +21 -7
  6. package/lib/adapters-sync.mjs +2 -1
  7. package/lib/audit-trail.mjs +185 -2
  8. package/lib/beads/auto-close.mjs +2 -1
  9. package/lib/beads/drift.mjs +2 -1
  10. package/lib/bridges/copilot-proxy.mjs +20 -5
  11. package/lib/certification/skill-inventory.mjs +10 -1
  12. package/lib/cli/approvals.mjs +147 -0
  13. package/lib/cli-commands.mjs +105 -14
  14. package/lib/comment-lint.mjs +127 -8
  15. package/lib/config/schema.mjs +6 -29
  16. package/lib/config/source-target-registry.mjs +70 -0
  17. package/lib/config/source-targets.mjs +179 -205
  18. package/lib/contracts/coverage.mjs +77 -0
  19. package/lib/contracts/validate.mjs +102 -13
  20. package/lib/contracts/violation-log.mjs +50 -4
  21. package/lib/db/migrate.mjs +69 -0
  22. package/lib/db/migrations/001_orchestration_runs.sql +9 -0
  23. package/lib/db/migrations/002_queue_provider.sql +50 -0
  24. package/lib/db/migrations/003_worker_registry.sql +17 -0
  25. package/lib/db/migrations/004_trace_events.sql +16 -0
  26. package/lib/db/migrations/005_shared_memory.sql +15 -0
  27. package/lib/db/migrations/006_orchestration_runs_tenant.sql +5 -0
  28. package/lib/decisions/enforced-baseline.json +0 -2
  29. package/lib/decisions/registry.mjs +3 -2
  30. package/lib/deployment/parity-contract.mjs +1 -1
  31. package/lib/deployment-mode.mjs +78 -2
  32. package/lib/diagram-export.mjs +10 -1
  33. package/lib/distill.mjs +5 -2
  34. package/lib/docs-verify.mjs +2 -1
  35. package/lib/doctor/cli.mjs +1 -0
  36. package/lib/doctor/command-on-path.mjs +24 -0
  37. package/lib/doctor/diagnosis.mjs +89 -0
  38. package/lib/doctor/embedding-health.mjs +50 -0
  39. package/lib/doctor/engine-health.mjs +93 -0
  40. package/lib/doctor/graph-validate.mjs +47 -0
  41. package/lib/doctor/index.mjs +18 -4
  42. package/lib/doctor/sidecar-providers.mjs +56 -0
  43. package/lib/doctor/watchers/consistency.mjs +93 -1
  44. package/lib/doctor/watchers/cx-budget.mjs +1 -1
  45. package/lib/doctor/watchers/graph-staleness.mjs +1 -1
  46. package/lib/doctor/watchers/mcp-protocol.mjs +17 -0
  47. package/lib/doctor/watchers/oracle-liveness.mjs +92 -0
  48. package/lib/doctor/watchers/orchestration-runs.mjs +108 -0
  49. package/lib/doctor/watchers/provider-breaker.mjs +78 -0
  50. package/lib/document-export.mjs +52 -27
  51. package/lib/document-extract/docling-client.mjs +9 -5
  52. package/lib/document-extract/docling-sidecar.py +30 -0
  53. package/lib/document-extract.mjs +1 -1
  54. package/lib/document-ingest.mjs +9 -0
  55. package/lib/embed/approval-queue.mjs +184 -88
  56. package/lib/embed/authority-guard.mjs +65 -2
  57. package/lib/embed/capability-jobs.mjs +365 -0
  58. package/lib/embed/capability-lifecycle.mjs +219 -0
  59. package/lib/embed/capability-loader.mjs +303 -0
  60. package/lib/embed/capability-runtime.mjs +58 -0
  61. package/lib/embed/cli.mjs +185 -8
  62. package/lib/embed/config.mjs +4 -0
  63. package/lib/embed/daemon.mjs +125 -6
  64. package/lib/embed/demand-fetch.mjs +190 -54
  65. package/lib/embed/inbox.mjs +12 -10
  66. package/lib/embed/presets/ops-triage.mjs +236 -0
  67. package/lib/embed/presets/pm-feedback.mjs +341 -0
  68. package/lib/embed/presets/tpm.mjs +401 -0
  69. package/lib/embed/providers/jira.mjs +72 -1
  70. package/lib/embed/providers/registry.mjs +140 -33
  71. package/lib/embedded-contract/capability.mjs +4 -0
  72. package/lib/embedded-contract/execution.mjs +1 -1
  73. package/lib/embedded-contract/model-resolve.mjs +53 -3
  74. package/lib/embedded-contract/workflow-defs.mjs +48 -73
  75. package/lib/embedded-contract/workflow-invoke.mjs +144 -4
  76. package/lib/embedded-contract/workflows/architecture-review.manifest.json +15 -0
  77. package/lib/embedded-contract/workflows/data-structure.manifest.json +14 -0
  78. package/lib/embedded-contract/workflows/evidence-ingest.manifest.json +14 -0
  79. package/lib/embedded-contract/workflows/memo-draft.manifest.json +14 -0
  80. package/lib/embedded-contract/workflows/operations-triage.manifest.json +18 -0
  81. package/lib/embedded-contract/workflows/operations.manifest.json +18 -0
  82. package/lib/embedded-contract/workflows/pm-feedback.manifest.json +18 -0
  83. package/lib/embedded-contract/workflows/prd-draft.manifest.json +15 -0
  84. package/lib/embedded-contract/workflows/proposal-review.manifest.json +15 -0
  85. package/lib/embedded-contract/workflows/research-synthesis.manifest.json +14 -0
  86. package/lib/embedded-contract/workflows/risk-review.manifest.json +15 -0
  87. package/lib/embedded-contract/workflows/structure-notes.manifest.json +14 -0
  88. package/lib/embedded-contract/workflows/transcript-process.manifest.json +14 -0
  89. package/lib/embedded-contract/workflows/triage.manifest.json +14 -0
  90. package/lib/env-config.mjs +50 -9
  91. package/lib/extensions/index.mjs +27 -0
  92. package/lib/extensions/loader.mjs +120 -0
  93. package/lib/extensions/manifest-schema.mjs +141 -0
  94. package/lib/extensions/manifests/anthropic.manifest.json +12 -0
  95. package/lib/extensions/manifests/atlassian-confluence.manifest.json +12 -0
  96. package/lib/extensions/manifests/atlassian-jira.manifest.json +53 -0
  97. package/lib/extensions/manifests/directory.manifest.json +12 -0
  98. package/lib/extensions/manifests/docling.manifest.json +37 -0
  99. package/lib/extensions/manifests/echo.manifest.json +8 -0
  100. package/lib/extensions/manifests/feedback.manifest.json +12 -0
  101. package/lib/extensions/manifests/github-copilot.manifest.json +12 -0
  102. package/lib/extensions/manifests/github.manifest.json +52 -0
  103. package/lib/extensions/manifests/linear.manifest.json +50 -0
  104. package/lib/extensions/manifests/local.manifest.json +12 -0
  105. package/lib/extensions/manifests/ollama.manifest.json +12 -0
  106. package/lib/extensions/manifests/openai.manifest.json +12 -0
  107. package/lib/extensions/manifests/openrouter-anthropic.manifest.json +12 -0
  108. package/lib/extensions/manifests/openrouter-deepseek.manifest.json +12 -0
  109. package/lib/extensions/manifests/openrouter-google.manifest.json +12 -0
  110. package/lib/extensions/manifests/openrouter-llama.manifest.json +12 -0
  111. package/lib/extensions/manifests/openrouter-qwen.manifest.json +12 -0
  112. package/lib/extensions/manifests/openrouter.manifest.json +12 -0
  113. package/lib/extensions/manifests/postgres.manifest.json +12 -0
  114. package/lib/extensions/manifests/salesforce.manifest.json +12 -0
  115. package/lib/extensions/manifests/slack.manifest.json +58 -0
  116. package/lib/extensions/manifests/whisper.manifest.json +36 -0
  117. package/lib/extensions/validate.mjs +175 -0
  118. package/lib/features.mjs +13 -9
  119. package/lib/flows/checkpoint.mjs +184 -0
  120. package/lib/flows/constants.mjs +27 -0
  121. package/lib/flows/define.mjs +146 -0
  122. package/lib/flows/engine.mjs +249 -0
  123. package/lib/flows/errors.mjs +19 -0
  124. package/lib/flows/index.mjs +27 -0
  125. package/lib/flows/joins.mjs +18 -0
  126. package/lib/flows/schema.mjs +90 -0
  127. package/lib/flows/state.mjs +31 -0
  128. package/lib/frameworks/loader.mjs +99 -0
  129. package/lib/frameworks/schema.mjs +157 -0
  130. package/lib/graph/build-from-corpus.mjs +67 -0
  131. package/lib/graph/build-from-embed.mjs +82 -0
  132. package/lib/graph/build-from-registry.mjs +164 -3
  133. package/lib/graph/cli.mjs +456 -12
  134. package/lib/graph/gap-queries.mjs +156 -0
  135. package/lib/graph/gaps.mjs +41 -0
  136. package/lib/graph/impacted.mjs +129 -0
  137. package/lib/graph/runtime-evidence.mjs +177 -0
  138. package/lib/graph/security-coverage.mjs +113 -0
  139. package/lib/graph/staleness.mjs +241 -10
  140. package/lib/graph/store.mjs +24 -7
  141. package/lib/graph/validate.mjs +161 -0
  142. package/lib/headhunt.mjs +9 -8
  143. package/lib/health-check.mjs +15 -7
  144. package/lib/hook-health.mjs +1 -1
  145. package/lib/hooks/agent-tracker.mjs +10 -4
  146. package/lib/hooks/edit-guard.mjs +3 -3
  147. package/lib/hooks/graph-impact-advisory.mjs +2 -2
  148. package/lib/hooks/guard-bash.mjs +41 -15
  149. package/lib/hooks/mcp-health-check.mjs +11 -4
  150. package/lib/hooks/model-fallback.mjs +50 -6
  151. package/lib/hooks/orchestration-dispatch-guard.mjs +14 -3
  152. package/lib/hooks/pre-compact.mjs +181 -173
  153. package/lib/hooks/rule-verifier.mjs +2 -1
  154. package/lib/hooks/session-reflect.mjs +2 -1
  155. package/lib/hooks/session-start.mjs +3 -3
  156. package/lib/host-capabilities.mjs +13 -2
  157. package/lib/host-disposition.mjs +19 -7
  158. package/lib/identity.mjs +92 -0
  159. package/lib/ingest/degraded-extract.mjs +96 -0
  160. package/lib/ingest/docling-remote.mjs +2 -1
  161. package/lib/ingest/provider-extract.mjs +7 -19
  162. package/lib/ingest/sidecar-providers.mjs +196 -0
  163. package/lib/ingest-tooling.mjs +11 -5
  164. package/lib/init-unified.mjs +55 -38
  165. package/lib/init-update.mjs +2 -1
  166. package/lib/install/legacy-global-cleanup.mjs +25 -0
  167. package/lib/intake/daemon.mjs +99 -8
  168. package/lib/intake/git-queue.mjs +110 -38
  169. package/lib/intake/queue-registry.mjs +50 -0
  170. package/lib/intake/queue.mjs +133 -17
  171. package/lib/intake/session-prelude.mjs +57 -8
  172. package/lib/integrations/intake-integrations.mjs +61 -111
  173. package/lib/intent-classifier.mjs +43 -5
  174. package/lib/libreoffice-export.mjs +8 -8
  175. package/lib/logging/rotate.mjs +5 -4
  176. package/lib/mcp/broker.mjs +332 -17
  177. package/lib/mcp/denied-store.mjs +95 -0
  178. package/lib/mcp/destructive-gate.mjs +30 -0
  179. package/lib/mcp/dispatch-envelope.mjs +199 -0
  180. package/lib/mcp/memory-bridge.mjs +2 -1
  181. package/lib/mcp/server.mjs +154 -1411
  182. package/lib/mcp/tool-definitions-memory.mjs +376 -0
  183. package/lib/mcp/tool-definitions-project.mjs +271 -0
  184. package/lib/mcp/tool-definitions-skills.mjs +311 -0
  185. package/lib/mcp/tool-definitions-workflow.mjs +398 -0
  186. package/lib/mcp/tool-definitions.mjs +25 -0
  187. package/lib/mcp/tool-registry.mjs +107 -0
  188. package/lib/mcp/tool-safety.mjs +1 -0
  189. package/lib/mcp/tools/orchestration-delegation-next.tool.mjs +68 -0
  190. package/lib/mcp/tools/orchestration-run.mjs +165 -25
  191. package/lib/mcp/tools/orchestration-task-result.tool.mjs +77 -0
  192. package/lib/mcp/tools/provider-write.mjs +187 -0
  193. package/lib/mcp/tools/scope.mjs +0 -3
  194. package/lib/mcp/tools/skills.mjs +1 -1
  195. package/lib/mcp/tools/storage.mjs +0 -8
  196. package/lib/mcp/transport/auth.mjs +238 -0
  197. package/lib/mcp/transport/http.mjs +136 -0
  198. package/lib/mcp/transport/mode.mjs +31 -0
  199. package/lib/mcp/transport/stdio.mjs +22 -0
  200. package/lib/mcp-catalog.json +4 -4
  201. package/lib/mcp-manager.mjs +34 -23
  202. package/lib/mcp-platform-config.mjs +31 -7
  203. package/lib/mode-capabilities.mjs +109 -0
  204. package/lib/model-router.mjs +42 -9
  205. package/lib/models/catalog.mjs +40 -1
  206. package/lib/net-guard.mjs +247 -0
  207. package/lib/observation-store.mjs +6 -2
  208. package/lib/ollama/provision-context.mjs +2 -1
  209. package/lib/opencode-config.mjs +22 -3
  210. package/lib/opencode-runtime-plugin.mjs +120 -2
  211. package/lib/oracle/actions.mjs +204 -10
  212. package/lib/oracle/cli.mjs +24 -3
  213. package/lib/oracle/dispatch.mjs +2 -1
  214. package/lib/oracle/execute.mjs +2 -2
  215. package/lib/oracle/gaps.mjs +3 -3
  216. package/lib/oracle/heartbeat.mjs +53 -0
  217. package/lib/oracle/read-model.mjs +69 -13
  218. package/lib/oracle/reconcile.mjs +3 -46
  219. package/lib/oracle/routing.mjs +37 -31
  220. package/lib/oracle/synthesize.mjs +1 -1
  221. package/lib/orchestration/classification.mjs +434 -0
  222. package/lib/orchestration/delegation-flow.mjs +132 -0
  223. package/lib/orchestration/flow-selection.mjs +418 -0
  224. package/lib/orchestration/gates.mjs +244 -0
  225. package/lib/orchestration/host-sampling.mjs +121 -0
  226. package/lib/orchestration/policy-constants.mjs +48 -0
  227. package/lib/orchestration/provider-outcome.mjs +197 -0
  228. package/lib/orchestration/readiness.mjs +114 -13
  229. package/lib/orchestration/run-store-postgres.mjs +32 -26
  230. package/lib/orchestration/run-store-sqlite.mjs +8 -14
  231. package/lib/orchestration/run-store.mjs +25 -12
  232. package/lib/orchestration/runtime.mjs +446 -39
  233. package/lib/orchestration/store.mjs +87 -12
  234. package/lib/orchestration/trace-store.mjs +125 -0
  235. package/lib/orchestration/web-capability.mjs +3 -2
  236. package/lib/orchestration/worker-runtime.mjs +162 -0
  237. package/lib/orchestration/worker.mjs +528 -89
  238. package/lib/orchestration-policy.mjs +67 -1111
  239. package/lib/packs/cli.mjs +144 -0
  240. package/lib/packs/core-pack.mjs +112 -0
  241. package/lib/packs/enablement.mjs +187 -0
  242. package/lib/packs/index.mjs +23 -0
  243. package/lib/packs/loader.mjs +176 -0
  244. package/lib/packs/manifest-schema.mjs +58 -0
  245. package/lib/packs/prompts.mjs +120 -0
  246. package/lib/packs/validate.mjs +208 -0
  247. package/lib/plugin-registry.mjs +4 -5
  248. package/lib/policy/audit-gate.mjs +42 -0
  249. package/lib/policy/consumption-budget.mjs +149 -0
  250. package/lib/policy/engine.mjs +81 -6
  251. package/lib/policy/role-authority.mjs +89 -0
  252. package/lib/prompt-composer.js +19 -3
  253. package/lib/providers/contract/adapters/confluence/governed-write.mjs +215 -0
  254. package/lib/providers/contract/adapters/confluence/manifest.json +17 -0
  255. package/lib/providers/contract/adapters/confluence/transport.mjs +135 -0
  256. package/lib/providers/contract/adapters/github/governed-write.mjs +121 -0
  257. package/lib/providers/contract/adapters/github/index.mjs +38 -3
  258. package/lib/providers/contract/adapters/jira/adf.mjs +151 -0
  259. package/lib/providers/contract/adapters/jira/createmeta.mjs +143 -0
  260. package/lib/providers/contract/adapters/jira/governed-write.mjs +182 -0
  261. package/lib/providers/contract/adapters/jira/manifest.json +17 -0
  262. package/lib/providers/contract/adapters/jira/transport.mjs +119 -0
  263. package/lib/providers/contract.mjs +207 -0
  264. package/lib/providers/credential-bootstrap.mjs +7 -4
  265. package/lib/providers/credential-sources.mjs +14 -2
  266. package/lib/providers/directory/index.mjs +261 -0
  267. package/lib/providers/feedback/index.mjs +392 -0
  268. package/lib/providers/filter-audit.mjs +68 -0
  269. package/lib/providers/filter-schema.mjs +54 -0
  270. package/lib/providers/github/index.mjs +31 -0
  271. package/lib/providers/instance-config.mjs +215 -0
  272. package/lib/providers/op-locate.mjs +96 -0
  273. package/lib/providers/op-run.mjs +64 -9
  274. package/lib/providers/registry.mjs +26 -3
  275. package/lib/providers/secret-audit-wiring.mjs +6 -0
  276. package/lib/providers/secret-resolver.mjs +240 -23
  277. package/lib/publish-template.mjs +6 -3
  278. package/lib/publish-tooling.mjs +4 -0
  279. package/lib/publish.mjs +32 -4
  280. package/lib/queue/pg-queue.mjs +395 -0
  281. package/lib/reflect.mjs +2 -1
  282. package/lib/registry/assemble.mjs +28 -2
  283. package/lib/registry/consolidation.mjs +8 -1
  284. package/lib/registry/custom-scaffold.mjs +200 -0
  285. package/lib/registry/custom-schema.mjs +137 -0
  286. package/lib/registry/loader.mjs +8 -3
  287. package/lib/registry/manifests/format-engines.default.json +15 -0
  288. package/lib/registry/manifests/surface-map.default.json +46 -0
  289. package/lib/registry/retired-paths.mjs +1 -0
  290. package/lib/registry/surface-map.mjs +100 -50
  291. package/lib/render-visual-check.mjs +240 -0
  292. package/lib/resources/budget.mjs +40 -17
  293. package/lib/roles/flavor-bindings.mjs +36 -14
  294. package/lib/roles/gateway.mjs +15 -8
  295. package/lib/roots.mjs +107 -0
  296. package/lib/runtime/uv-bootstrap.mjs +32 -6
  297. package/lib/runtime/whisper-bootstrap.mjs +11 -3
  298. package/lib/runtime-env.mjs +5 -2
  299. package/lib/scheduler/index.mjs +8 -20
  300. package/lib/schema-infer.mjs +31 -2
  301. package/lib/scopes/lifecycle.mjs +29 -25
  302. package/lib/scopes/loader.mjs +49 -12
  303. package/lib/scopes/teams.mjs +1 -1
  304. package/lib/security/ingest-boundary.mjs +80 -0
  305. package/lib/security/recall-wrapper.mjs +99 -0
  306. package/lib/security/trust.mjs +132 -0
  307. package/lib/service-manager.mjs +38 -19
  308. package/lib/setup.mjs +41 -23
  309. package/lib/skills-apply.mjs +4 -2
  310. package/lib/specialists/postconditions.mjs +2 -2
  311. package/lib/state-root.mjs +147 -0
  312. package/lib/status.mjs +597 -6
  313. package/lib/storage/admin.mjs +77 -5
  314. package/lib/storage/backend-registry.mjs +73 -0
  315. package/lib/storage/backend.mjs +63 -9
  316. package/lib/storage/embeddings-openai.mjs +12 -2
  317. package/lib/storage/hybrid-query.mjs +11 -3
  318. package/lib/storage/retrieval-hardening.mjs +384 -0
  319. package/lib/storage/shared-memory.mjs +158 -0
  320. package/lib/storage/vector-client.mjs +69 -2
  321. package/lib/team/health.mjs +72 -0
  322. package/lib/telemetry/backends/local.mjs +9 -3
  323. package/lib/telemetry/client.mjs +3 -7
  324. package/lib/template-registry.mjs +10 -12
  325. package/lib/tenant/context.mjs +82 -0
  326. package/lib/tenant/isolation.mjs +129 -0
  327. package/lib/test-corpus-inventory.mjs +103 -2
  328. package/lib/uninstall/uninstall.mjs +78 -12
  329. package/lib/validator.mjs +4 -6
  330. package/lib/worker/entrypoint.mjs +2 -1
  331. package/lib/worker/run.mjs +2 -2
  332. package/lib/worker/trace.mjs +5 -11
  333. package/lib/workflow-state.mjs +52 -8
  334. package/lib/workflows/liveness.mjs +203 -0
  335. package/lib/workflows/loader.mjs +177 -0
  336. package/lib/workflows/manifest-schema.mjs +71 -0
  337. package/lib/workflows/surface-parity.mjs +118 -0
  338. package/lib/workflows/validate.mjs +127 -0
  339. package/lib/writes/control-plane.mjs +140 -0
  340. package/lib/writes/envelope.mjs +206 -0
  341. package/lib/writes/sent-log.mjs +86 -0
  342. package/lib/writes/write-intent.mjs +109 -0
  343. package/package.json +16 -8
  344. package/personas/construct.md +12 -3
  345. package/registry/capabilities.json +143 -36
  346. package/rules/common/comments.md +1 -0
  347. package/schemas/project-config.schema.json +0 -12
  348. package/schemas/unified-registry.schema.json +2 -4
  349. package/scripts/sync-specialists.mjs +284 -81
  350. package/skills/docs/adr-workflow.md +1 -1
  351. package/skills/docs/codebase-research-workflow.md +3 -3
  352. package/skills/docs/prd-workflow.md +5 -6
  353. package/skills/docs/runbook-workflow.md +2 -2
  354. package/skills/docs/user-research-workflow.md +3 -3
  355. package/skills/operating/fleet-health-routing.md +77 -0
  356. package/skills/roles/ai-engineer.md +1 -1
  357. package/skills/roles/architect.md +0 -1
  358. package/skills/roles/business-strategist.md +1 -1
  359. package/skills/roles/data-analyst.telemetry.md +1 -1
  360. package/skills/roles/data-engineer.md +1 -1
  361. package/skills/roles/data-engineer.pipeline.md +1 -1
  362. package/skills/roles/data-engineer.vector-retrieval.md +1 -2
  363. package/skills/roles/data-engineer.warehouse.md +1 -1
  364. package/skills/roles/designer.accessibility.md +1 -1
  365. package/skills/roles/designer.md +0 -1
  366. package/skills/roles/devil-advocate.md +1 -1
  367. package/skills/roles/docs-keeper.md +1 -1
  368. package/skills/roles/evaluator.md +1 -1
  369. package/skills/roles/explorer.md +1 -1
  370. package/skills/roles/platform-engineer.md +1 -1
  371. package/skills/roles/qa.ai-eval.md +1 -2
  372. package/skills/roles/qa.api-contract.md +0 -1
  373. package/skills/roles/qa.data-pipeline.md +0 -1
  374. package/skills/roles/qa.md +0 -1
  375. package/skills/roles/qa.web-ui.md +0 -1
  376. package/skills/roles/release-manager.md +1 -1
  377. package/skills/roles/researcher.md +0 -2
  378. package/skills/roles/reviewer.md +0 -3
  379. package/skills/roles/security.ai.md +1 -1
  380. package/skills/roles/security.legal-compliance.md +1 -1
  381. package/skills/roles/security.md +0 -1
  382. package/skills/roles/security.privacy.md +0 -1
  383. package/skills/roles/security.supply-chain.md +1 -1
  384. package/skills/roles/sre.md +1 -1
  385. package/skills/roles/test-automation.md +1 -1
  386. package/skills/roles/trace-reviewer.md +1 -1
  387. package/skills/roles/ux-researcher.md +1 -1
  388. package/specialists/artifact-manifest.json +36 -36
  389. package/specialists/org/contracts/accessibility-to-qa.json +11 -3
  390. package/specialists/org/contracts/any-to-business-strategist.json +19 -7
  391. package/specialists/org/contracts/any-to-debugger.json +7 -1
  392. package/specialists/org/contracts/any-to-designer.json +7 -1
  393. package/specialists/org/contracts/any-to-docs-keeper.json +18 -4
  394. package/specialists/org/contracts/any-to-explorer.json +13 -4
  395. package/specialists/org/contracts/any-to-sre-incident.json +6 -2
  396. package/specialists/org/contracts/any-to-trace-reviewer.json +16 -4
  397. package/specialists/org/contracts/architect-to-ai-engineer.json +6 -2
  398. package/specialists/org/contracts/architect-to-data-engineer.json +17 -5
  399. package/specialists/org/contracts/architect-to-devil-advocate.json +11 -3
  400. package/specialists/org/contracts/architect-to-engineer.json +20 -4
  401. package/specialists/org/contracts/architect-to-evaluator.json +15 -5
  402. package/specialists/org/contracts/architect-to-legal-compliance.json +15 -5
  403. package/specialists/org/contracts/architect-to-operations.json +17 -4
  404. package/specialists/org/contracts/architect-to-platform-engineer.json +20 -4
  405. package/specialists/org/contracts/construct-to-orchestrator.json +10 -2
  406. package/specialists/org/contracts/data-analyst-to-product-manager.json +11 -2
  407. package/specialists/org/contracts/engineer-to-qa.json +20 -4
  408. package/specialists/org/contracts/engineer-to-reviewer.json +29 -5
  409. package/specialists/org/contracts/explorer-to-engineer.json +11 -3
  410. package/specialists/org/contracts/legal-compliance-to-release-manager.json +12 -4
  411. package/specialists/org/contracts/operations-to-user.json +53 -0
  412. package/specialists/org/contracts/operations-triage-output.json +53 -0
  413. package/specialists/org/contracts/pm-requirements-candidates.json +53 -0
  414. package/specialists/org/contracts/product-manager-to-architect.json +30 -10
  415. package/specialists/org/contracts/product-manager-to-data-analyst.json +13 -3
  416. package/specialists/org/contracts/product-manager-to-ux-researcher.json +15 -5
  417. package/specialists/org/contracts/qa-to-release-manager.json +11 -3
  418. package/specialists/org/contracts/researcher-to-architect.json +10 -2
  419. package/specialists/org/contracts/researcher-to-product-manager.json +16 -5
  420. package/specialists/org/contracts/reviewer-to-security.json +17 -3
  421. package/specialists/org/contracts/test-automation-to-engineer.json +11 -3
  422. package/specialists/org/contracts/trace-reviewer-to-sre.json +12 -4
  423. package/specialists/org/contracts/user-to-construct.json +11 -4
  424. package/specialists/org/frameworks/cx-architect-constraint-option-failure.md +66 -0
  425. package/specialists/org/frameworks/cx-engineer-feasibility-blast-radius.md +66 -0
  426. package/specialists/org/frameworks/cx-ops-dependency-sequencing.md +74 -0
  427. package/specialists/org/frameworks/cx-pm-value-tradeoff.md +66 -0
  428. package/specialists/org/frameworks/cx-qa-risk-based-coverage.md +69 -0
  429. package/specialists/org/groups/engineering-group.json +2 -6
  430. package/specialists/org/groups/governance-group.json +2 -3
  431. package/specialists/org/groups/operations-group.json +5 -8
  432. package/specialists/org/groups/product-group.json +4 -8
  433. package/specialists/org/groups/quality-group.json +3 -7
  434. package/specialists/org/groups/strategy-group.json +6 -9
  435. package/specialists/org/models.json.example +8 -0
  436. package/specialists/org/scopes/creative.json +6 -1
  437. package/specialists/org/scopes/operations.json +7 -1
  438. package/specialists/org/scopes/research.json +6 -1
  439. package/specialists/org/scopes/rnd.json +7 -1
  440. package/specialists/org/specialists/cx-architect.json +27 -8
  441. package/specialists/org/specialists/cx-designer.json +22 -8
  442. package/specialists/org/specialists/cx-engineer.json +71 -7
  443. package/specialists/org/specialists/cx-operations.json +89 -15
  444. package/specialists/org/specialists/cx-orchestrator.json +16 -4
  445. package/specialists/org/specialists/cx-product-manager.json +28 -9
  446. package/specialists/org/specialists/cx-qa.json +16 -6
  447. package/specialists/org/specialists/cx-researcher.json +40 -7
  448. package/specialists/org/specialists/cx-reviewer.json +61 -11
  449. package/specialists/org/specialists/cx-security.json +30 -10
  450. package/specialists/org/teams/design-team.json +3 -4
  451. package/specialists/org/teams/engineering-team.json +3 -10
  452. package/specialists/org/teams/governance-team.json +3 -5
  453. package/specialists/org/teams/operations-team.json +6 -12
  454. package/specialists/org/teams/product-management-team.json +2 -3
  455. package/specialists/org/teams/quality-team.json +4 -12
  456. package/specialists/org/teams/research-team.json +3 -3
  457. package/specialists/org/teams/strategy-team.json +7 -14
  458. package/specialists/prompts/cx-architect.md +20 -1
  459. package/specialists/prompts/cx-data-analyst.md +1 -1
  460. package/specialists/prompts/cx-designer.md +12 -4
  461. package/specialists/prompts/cx-engineer.md +15 -1
  462. package/specialists/prompts/cx-operations.md +14 -2
  463. package/specialists/prompts/cx-orchestrator.md +9 -5
  464. package/specialists/prompts/cx-product-manager.md +5 -1
  465. package/specialists/prompts/cx-qa.md +6 -2
  466. package/specialists/prompts/cx-researcher.md +25 -30
  467. package/specialists/prompts/cx-reviewer.md +19 -1
  468. package/specialists/prompts/cx-security.md +5 -1
  469. package/templates/distribution/construct-brand.typ +123 -59
  470. package/templates/distribution/construct-decision.typ +6 -3
  471. package/templates/distribution/construct-pdf.typ +11 -4
  472. package/templates/distribution/construct-prd.typ +6 -3
  473. package/templates/distribution/construct-research.typ +7 -4
  474. package/lib/providers/contract/adapters/git/index.mjs +0 -115
  475. package/lib/providers/contract/adapters/slack/index.mjs +0 -175
  476. package/specialists/org/contracts/business-strategist-to-product-manager.json +0 -39
  477. package/specialists/org/contracts/construct-to-rd-lead.json +0 -53
  478. package/specialists/org/contracts/data-engineer-to-platform-engineer.json +0 -36
  479. package/specialists/org/contracts/designer-to-accessibility.json +0 -36
  480. package/specialists/org/contracts/platform-engineer-to-engineer.json +0 -31
  481. package/specialists/org/contracts/qa-to-test-automation.json +0 -42
  482. package/specialists/org/contracts/rd-lead-to-architect.json +0 -38
  483. package/specialists/org/contracts/sre-to-release-manager.json +0 -36
  484. package/specialists/org/specialists/cx-accessibility.json +0 -69
  485. package/specialists/org/specialists/cx-ai-engineer.json +0 -75
  486. package/specialists/org/specialists/cx-business-strategist.json +0 -72
  487. package/specialists/org/specialists/cx-data-engineer.json +0 -71
  488. package/specialists/org/specialists/cx-devil-advocate.json +0 -71
  489. package/specialists/org/specialists/cx-docs-keeper.json +0 -82
  490. package/specialists/org/specialists/cx-evaluator.json +0 -69
  491. package/specialists/org/specialists/cx-explorer.json +0 -69
  492. package/specialists/org/specialists/cx-legal-compliance.json +0 -74
  493. package/specialists/org/specialists/cx-oracle.json +0 -46
  494. package/specialists/org/specialists/cx-platform-engineer.json +0 -80
  495. package/specialists/org/specialists/cx-rd-lead.json +0 -73
  496. package/specialists/org/specialists/cx-release-manager.json +0 -77
  497. package/specialists/org/specialists/cx-sre.json +0 -94
  498. package/specialists/org/specialists/cx-test-automation.json +0 -69
  499. package/specialists/org/specialists/cx-trace-reviewer.json +0 -69
  500. package/specialists/org/specialists/cx-ux-researcher.json +0 -68
  501. package/specialists/org/teams/accessibility-team.json +0 -39
  502. package/specialists/org/teams/ux-research-team.json +0 -39
  503. package/specialists/prompts/cx-accessibility.md +0 -55
  504. package/specialists/prompts/cx-ai-engineer.md +0 -124
  505. package/specialists/prompts/cx-business-strategist.md +0 -58
  506. package/specialists/prompts/cx-data-engineer.md +0 -55
  507. package/specialists/prompts/cx-devil-advocate.md +0 -59
  508. package/specialists/prompts/cx-docs-keeper.md +0 -164
  509. package/specialists/prompts/cx-evaluator.md +0 -49
  510. package/specialists/prompts/cx-explorer.md +0 -71
  511. package/specialists/prompts/cx-legal-compliance.md +0 -58
  512. package/specialists/prompts/cx-oracle.md +0 -98
  513. package/specialists/prompts/cx-platform-engineer.md +0 -97
  514. package/specialists/prompts/cx-rd-lead.md +0 -59
  515. package/specialists/prompts/cx-release-manager.md +0 -54
  516. package/specialists/prompts/cx-sre.md +0 -111
  517. package/specialists/prompts/cx-test-automation.md +0 -55
  518. package/specialists/prompts/cx-trace-reviewer.md +0 -101
  519. package/specialists/prompts/cx-ux-researcher.md +0 -53
@@ -33,8 +33,8 @@
33
33
  "structuralLint": true,
34
34
  "citationLint": true,
35
35
  "proseMinimum": 3,
36
- "requiredReviewers": ["cx-devil-advocate"],
37
- "optionalReviewers": ["cx-ux-researcher"]
36
+ "requiredReviewers": ["cx-reviewer"],
37
+ "optionalReviewers": ["cx-researcher"]
38
38
  },
39
39
  "qualityContract": {
40
40
  "gateLevel": "render-smoke",
@@ -60,13 +60,13 @@
60
60
  "structuralLint": true,
61
61
  "citationLint": true,
62
62
  "proseMinimum": 3,
63
- "requiredReviewers": ["cx-devil-advocate", "cx-architect"],
63
+ "requiredReviewers": ["cx-reviewer", "cx-architect"],
64
64
  "optionalReviewers": []
65
65
  }
66
66
  },
67
67
  "prd-business": {
68
68
  "template": "templates/docs/prd-business.md",
69
- "primaryOwners": ["cx-product-manager", "cx-business-strategist"],
69
+ "primaryOwners": ["cx-product-manager"],
70
70
  "workflowSkill": "docs/prd-workflow",
71
71
  "toneDefault": "executive-concise",
72
72
  "toneAllowed": ["executive-concise", "decision-forcing-direct"],
@@ -76,13 +76,13 @@
76
76
  "structuralLint": true,
77
77
  "citationLint": true,
78
78
  "proseMinimum": 3,
79
- "requiredReviewers": ["cx-devil-advocate"],
80
- "optionalReviewers": ["cx-business-strategist"]
79
+ "requiredReviewers": ["cx-reviewer"],
80
+ "optionalReviewers": ["cx-product-manager"]
81
81
  }
82
82
  },
83
83
  "meta-prd": {
84
84
  "template": "templates/docs/meta-prd.md",
85
- "primaryOwners": ["cx-product-manager", "cx-docs-keeper"],
85
+ "primaryOwners": ["cx-product-manager", "cx-operations"],
86
86
  "workflowSkill": "docs/prd-workflow",
87
87
  "toneDefault": "decision-forcing-direct",
88
88
  "toneAllowed": ["decision-forcing-direct"],
@@ -92,13 +92,13 @@
92
92
  "structuralLint": true,
93
93
  "citationLint": true,
94
94
  "proseMinimum": 3,
95
- "requiredReviewers": ["cx-devil-advocate", "cx-reviewer"],
95
+ "requiredReviewers": ["cx-reviewer"],
96
96
  "optionalReviewers": []
97
97
  }
98
98
  },
99
99
  "adr": {
100
100
  "template": "templates/docs/adr.md",
101
- "primaryOwners": ["cx-architect", "cx-rd-lead"],
101
+ "primaryOwners": ["cx-architect"],
102
102
  "workflowSkill": "docs/adr-workflow",
103
103
  "toneDefault": "decision-forcing-direct",
104
104
  "toneAllowed": ["decision-forcing-direct"],
@@ -111,7 +111,7 @@
111
111
  "structuralLint": true,
112
112
  "citationLint": true,
113
113
  "proseMinimum": 2,
114
- "requiredReviewers": ["cx-devil-advocate", "cx-reviewer"],
114
+ "requiredReviewers": ["cx-reviewer"],
115
115
  "optionalReviewers": ["cx-architect"]
116
116
  }
117
117
  },
@@ -130,7 +130,7 @@
130
130
  "structuralLint": true,
131
131
  "citationLint": true,
132
132
  "proseMinimum": 3,
133
- "requiredReviewers": ["cx-devil-advocate", "cx-reviewer"],
133
+ "requiredReviewers": ["cx-reviewer"],
134
134
  "optionalReviewers": []
135
135
  }
136
136
  },
@@ -149,13 +149,13 @@
149
149
  "structuralLint": true,
150
150
  "citationLint": true,
151
151
  "proseMinimum": 3,
152
- "requiredReviewers": ["cx-devil-advocate", "cx-reviewer"],
152
+ "requiredReviewers": ["cx-reviewer"],
153
153
  "optionalReviewers": []
154
154
  }
155
155
  },
156
156
  "research-brief": {
157
157
  "template": "templates/docs/research-brief.md",
158
- "primaryOwners": ["cx-researcher", "cx-ux-researcher", "cx-explorer"],
158
+ "primaryOwners": ["cx-researcher"],
159
159
  "workflowSkill": "docs/research-workflow",
160
160
  "toneDefault": "direct",
161
161
  "toneAllowed": ["direct", "pedagogical"],
@@ -171,7 +171,7 @@
171
171
  },
172
172
  "evidence-brief": {
173
173
  "template": "templates/docs/evidence-brief.md",
174
- "primaryOwners": ["cx-product-manager", "cx-researcher", "cx-ux-researcher"],
174
+ "primaryOwners": ["cx-product-manager", "cx-researcher"],
175
175
  "workflowSkill": "docs/evidence-ingest-workflow",
176
176
  "toneDefault": "direct",
177
177
  "toneAllowed": ["direct", "executive-concise"],
@@ -182,7 +182,7 @@
182
182
  "citationLint": true,
183
183
  "proseMinimum": 2,
184
184
  "requiredReviewers": [],
185
- "optionalReviewers": ["cx-devil-advocate"]
185
+ "optionalReviewers": ["cx-reviewer"]
186
186
  }
187
187
  },
188
188
  "signal-brief": {
@@ -203,7 +203,7 @@
203
203
  },
204
204
  "runbook": {
205
205
  "template": "templates/docs/runbook.md",
206
- "primaryOwners": ["cx-sre", "cx-operations"],
206
+ "primaryOwners": ["cx-operations"],
207
207
  "workflowSkill": "docs/runbook-workflow",
208
208
  "toneDefault": "blameless",
209
209
  "toneAllowed": ["blameless", "direct"],
@@ -217,12 +217,12 @@
217
217
  "citationLint": false,
218
218
  "proseMinimum": 2,
219
219
  "requiredReviewers": [],
220
- "optionalReviewers": ["cx-sre"]
220
+ "optionalReviewers": ["cx-operations"]
221
221
  }
222
222
  },
223
223
  "incident-report": {
224
224
  "template": "templates/docs/incident-report.md",
225
- "primaryOwners": ["cx-sre", "cx-operations"],
225
+ "primaryOwners": ["cx-operations"],
226
226
  "workflowSkill": "docs/runbook-workflow",
227
227
  "toneDefault": "blameless",
228
228
  "toneAllowed": ["blameless"],
@@ -236,12 +236,12 @@
236
236
  "citationLint": false,
237
237
  "proseMinimum": 2,
238
238
  "requiredReviewers": [],
239
- "optionalReviewers": ["cx-devil-advocate"]
239
+ "optionalReviewers": ["cx-reviewer"]
240
240
  }
241
241
  },
242
242
  "postmortem": {
243
243
  "template": "templates/docs/postmortem.md",
244
- "primaryOwners": ["cx-sre"],
244
+ "primaryOwners": ["cx-operations"],
245
245
  "workflowSkill": "docs/runbook-workflow",
246
246
  "toneDefault": "blameless",
247
247
  "toneAllowed": ["blameless"],
@@ -260,7 +260,7 @@
260
260
  },
261
261
  "strategy": {
262
262
  "template": "templates/docs/strategy.md",
263
- "primaryOwners": ["cx-business-strategist", "cx-product-manager"],
263
+ "primaryOwners": ["cx-product-manager"],
264
264
  "workflowSkill": "docs/strategy-workflow",
265
265
  "toneDefault": "executive-concise",
266
266
  "toneAllowed": ["executive-concise", "decision-forcing-direct"],
@@ -273,13 +273,13 @@
273
273
  "structuralLint": true,
274
274
  "citationLint": true,
275
275
  "proseMinimum": 2,
276
- "requiredReviewers": ["cx-devil-advocate"],
277
- "optionalReviewers": ["cx-business-strategist"]
276
+ "requiredReviewers": ["cx-reviewer"],
277
+ "optionalReviewers": ["cx-product-manager"]
278
278
  }
279
279
  },
280
280
  "memo": {
281
281
  "template": "templates/docs/memo.md",
282
- "primaryOwners": ["cx-docs-keeper", "cx-business-strategist"],
282
+ "primaryOwners": ["cx-operations", "cx-product-manager"],
283
283
  "workflowSkill": "docs/memo-and-decision-capture",
284
284
  "toneDefault": "executive-concise",
285
285
  "toneAllowed": ["executive-concise", "friendly", "decision-forcing-direct"],
@@ -295,7 +295,7 @@
295
295
  },
296
296
  "prfaq": {
297
297
  "template": "templates/docs/prfaq.md",
298
- "primaryOwners": ["cx-product-manager", "cx-business-strategist"],
298
+ "primaryOwners": ["cx-product-manager"],
299
299
  "workflowSkill": "docs/prfaq-workflow",
300
300
  "toneDefault": "friendly",
301
301
  "toneAllowed": ["friendly", "executive-concise"],
@@ -308,13 +308,13 @@
308
308
  "structuralLint": true,
309
309
  "citationLint": true,
310
310
  "proseMinimum": 3,
311
- "requiredReviewers": ["cx-devil-advocate"],
312
- "optionalReviewers": ["cx-ux-researcher"]
311
+ "requiredReviewers": ["cx-reviewer"],
312
+ "optionalReviewers": ["cx-researcher"]
313
313
  }
314
314
  },
315
315
  "one-pager": {
316
316
  "template": "templates/docs/one-pager.md",
317
- "primaryOwners": ["cx-product-manager", "cx-business-strategist"],
317
+ "primaryOwners": ["cx-product-manager"],
318
318
  "workflowSkill": "docs/prd-workflow",
319
319
  "toneDefault": "executive-concise",
320
320
  "toneAllowed": ["executive-concise"],
@@ -327,7 +327,7 @@
327
327
  "structuralLint": true,
328
328
  "citationLint": true,
329
329
  "proseMinimum": 2,
330
- "requiredReviewers": ["cx-devil-advocate"],
330
+ "requiredReviewers": ["cx-reviewer"],
331
331
  "optionalReviewers": []
332
332
  },
333
333
  "qualityContract": {
@@ -340,7 +340,7 @@
340
340
  },
341
341
  "customer-profile": {
342
342
  "template": "templates/docs/customer-profile.md",
343
- "primaryOwners": ["cx-product-manager", "cx-docs-keeper"],
343
+ "primaryOwners": ["cx-product-manager", "cx-operations"],
344
344
  "workflowSkill": "docs/customer-profile-workflow",
345
345
  "toneDefault": "direct",
346
346
  "toneAllowed": ["direct", "friendly"],
@@ -375,7 +375,7 @@
375
375
  },
376
376
  "test-plan": {
377
377
  "template": "templates/docs/test-plan.md",
378
- "primaryOwners": ["cx-qa", "cx-test-automation"],
378
+ "primaryOwners": ["cx-qa"],
379
379
  "workflowSkill": "devops/testing",
380
380
  "toneDefault": "direct",
381
381
  "toneAllowed": ["direct"],
@@ -410,7 +410,7 @@
410
410
  },
411
411
  "changelog": {
412
412
  "template": "templates/docs/changelog-entry.md",
413
- "primaryOwners": ["cx-docs-keeper", "cx-release-manager"],
413
+ "primaryOwners": ["cx-operations"],
414
414
  "workflowSkill": "docs/memo-and-decision-capture",
415
415
  "toneDefault": "direct",
416
416
  "toneAllowed": ["direct", "friendly"],
@@ -468,7 +468,7 @@
468
468
  "structuralLint": true,
469
469
  "citationLint": true,
470
470
  "proseMinimum": 2,
471
- "requiredReviewers": ["cx-devil-advocate"],
471
+ "requiredReviewers": ["cx-reviewer"],
472
472
  "optionalReviewers": []
473
473
  }
474
474
  },
@@ -484,13 +484,13 @@
484
484
  "structuralLint": true,
485
485
  "citationLint": true,
486
486
  "proseMinimum": 2,
487
- "requiredReviewers": ["cx-devil-advocate"],
487
+ "requiredReviewers": ["cx-reviewer"],
488
488
  "optionalReviewers": []
489
489
  }
490
490
  },
491
491
  "product-intelligence-report": {
492
492
  "template": "templates/docs/product-intelligence-report.md",
493
- "primaryOwners": ["cx-product-manager", "cx-business-strategist"],
493
+ "primaryOwners": ["cx-product-manager"],
494
494
  "workflowSkill": "docs/product-intelligence-workflow",
495
495
  "toneDefault": "executive-concise",
496
496
  "toneAllowed": ["executive-concise", "direct"],
@@ -501,7 +501,7 @@
501
501
  "citationLint": true,
502
502
  "proseMinimum": 3,
503
503
  "requiredReviewers": [],
504
- "optionalReviewers": ["cx-devil-advocate"]
504
+ "optionalReviewers": ["cx-reviewer"]
505
505
  }
506
506
  }
507
507
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "id": "accessibility-to-qa",
3
- "producer": "cx-accessibility",
3
+ "producer": "cx-designer",
4
4
  "consumer": "cx-qa",
5
5
  "trigger": {
6
6
  "riskFlags": [
@@ -24,8 +24,16 @@
24
24
  "A11y findings filed against specific elements (file:line) before QA verification"
25
25
  ],
26
26
  "postconditions": [
27
- "QA test plan covers keyboard-only and screen-reader paths for each finding",
28
- "Findings flagged 'unverified' by accessibility get a verified test in QA before close"
27
+ {
28
+ "id": "accessibility-to-qa-pc-0-qa-test-plan-covers-keyboard-only",
29
+ "description": "QA test plan covers keyboard-only and screen-reader paths for each finding",
30
+ "postconditionType": "advisory"
31
+ },
32
+ {
33
+ "id": "accessibility-to-qa-pc-1-findings-flagged-unverified-by-accessibility-get",
34
+ "description": "Findings flagged 'unverified' by accessibility get a verified test in QA before close",
35
+ "postconditionType": "advisory"
36
+ }
29
37
  ],
30
38
  "description": "",
31
39
  "teamBoundary": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "any-to-business-strategist",
3
3
  "producer": "*",
4
- "consumer": "cx-business-strategist",
4
+ "consumer": "cx-product-manager",
5
5
  "trigger": {
6
6
  "strategy.required": true
7
7
  },
@@ -27,30 +27,42 @@
27
27
  "Strategy documents in `.cx/knowledge/decisions/strategy/` reviewed for declared Bets and Non-bets"
28
28
  ],
29
29
  "postconditions": [
30
- "Options section contains 2-4 genuinely distinct strategic paths, not implementation variants",
31
- "Any recommendation that contradicts a declared Non-bet is surfaced explicitly with a user-decision marker",
30
+ {
31
+ "id": "any-to-business-strategist-pc-0-options-section-contains-2-4-genuinely",
32
+ "description": "Options section contains 2-4 genuinely distinct strategic paths, not implementation variants",
33
+ "postconditionType": "advisory"
34
+ },
35
+ {
36
+ "id": "any-to-business-strategist-pc-1-any-recommendation-that-contradicts-a-declared",
37
+ "description": "Any recommendation that contradicts a declared Non-bet is surfaced explicitly with a user-decision marker",
38
+ "postconditionType": "advisory"
39
+ },
32
40
  {
33
41
  "id": "strategic-memo-has-market-context",
34
42
  "description": "Strategic memo must contain a Market Context section",
35
43
  "check": "artifact-has-section",
36
- "section": "Market Context"
44
+ "section": "Market Context",
45
+ "postconditionType": "executable"
37
46
  },
38
47
  {
39
48
  "id": "strategic-memo-options-nonempty",
40
49
  "description": "Strategic memo Options section is present and non-empty",
41
50
  "check": "artifact-section-nonempty",
42
- "section": "Options"
51
+ "section": "Options",
52
+ "postconditionType": "executable"
43
53
  },
44
54
  {
45
55
  "id": "strategic-memo-has-strategic-risks",
46
56
  "description": "Strategic memo must contain a Strategic Risks section",
47
57
  "check": "artifact-has-section",
48
- "section": "Strategic Risks"
58
+ "section": "Strategic Risks",
59
+ "postconditionType": "executable"
49
60
  },
50
61
  {
51
62
  "id": "strategic-memo-claims-cited",
52
63
  "description": "Every market/competitive numeric claim cites a primary source with a date",
53
- "check": "artifact-claims-cited"
64
+ "check": "artifact-claims-cited",
65
+ "postconditionType": "executable"
54
66
  }
55
67
  ],
56
68
  "description": ""
@@ -32,7 +32,13 @@
32
32
  "Bug reproduced or trace captured before proposing a fix"
33
33
  ],
34
34
  "postconditions": [
35
- "rootCauseConfirmedVia in {reproduction, trace, test} — prevents symptom-only fixes that don't address the actual cause"
35
+ {
36
+ "id": "any-to-debugger-pc-0-rootcauseconfirmedvia-in-reproduction-trace-test-prevents",
37
+ "description": "rootCauseConfirmedVia in {reproduction, trace, test} — prevents symptom-only fixes that don't address the actual cause",
38
+ "postconditionType": "executable",
39
+ "enforcedVia": "output-shape",
40
+ "enforcedBy": "rootCauseConfirmedVia"
41
+ }
36
42
  ],
37
43
  "description": ""
38
44
  }
@@ -27,7 +27,13 @@
27
27
  "Affected surface scoped"
28
28
  ],
29
29
  "postconditions": [
30
- "accessibilityCheckRan=true — prevents post-hoc a11y fixes by forcing a pre-ship check on every design deliverable"
30
+ {
31
+ "id": "any-to-designer-pc-0-accessibilitycheckran-true-prevents-post-hoc-a11y",
32
+ "description": "accessibilityCheckRan=true — prevents post-hoc a11y fixes by forcing a pre-ship check on every design deliverable",
33
+ "postconditionType": "executable",
34
+ "enforcedVia": "binary-postcondition",
35
+ "enforcedBy": "designer.accessibility-check-ran"
36
+ }
31
37
  ],
32
38
  "description": ""
33
39
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "any-to-docs-keeper",
3
3
  "producer": "*",
4
- "consumer": "cx-docs-keeper",
4
+ "consumer": "cx-operations",
5
5
  "trigger": {
6
6
  "postConsumer": true,
7
7
  "changedCoreDocs": true
@@ -26,9 +26,23 @@
26
26
  "Implementation or decision is marked DONE"
27
27
  ],
28
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"
29
+ {
30
+ "id": "any-to-docs-keeper-pc-0-cross-doc-coherence-preserved-prd-adr",
31
+ "description": "Cross-doc coherence preserved (PRD ADR code)",
32
+ "postconditionType": "advisory"
33
+ },
34
+ {
35
+ "id": "any-to-docs-keeper-pc-1-auto-managed-regions-regenerated-via-construct",
36
+ "description": "AUTO-managed regions regenerated via construct sync",
37
+ "postconditionType": "advisory"
38
+ },
39
+ {
40
+ "id": "any-to-docs-keeper-pc-2-crossdoccoherencecheckran-true-with-a-named-coherencediff",
41
+ "description": "crossDocCoherenceCheckRan=true with a named coherenceDiff — prevents stale-doc PRs that claim 'docs updated' without a real diff",
42
+ "postconditionType": "executable",
43
+ "enforcedVia": "binary-postcondition",
44
+ "enforcedBy": "docs-keeper.cross-doc-coherence-check-ran"
45
+ }
32
46
  ],
33
47
  "description": ""
34
48
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "any-to-explorer",
3
3
  "producer": "*",
4
- "consumer": "cx-explorer",
4
+ "consumer": "cx-researcher",
5
5
  "trigger": {
6
6
  "intent": "investigation",
7
7
  "category": "exploration"
@@ -27,12 +27,21 @@
27
27
  "Scope tagged; investigation does not follow imports past two hops from named entry points"
28
28
  ],
29
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",
30
+ {
31
+ "id": "any-to-explorer-pc-0-every-claim-about-existing-code-cites",
32
+ "description": "Every claim about existing code cites file:line from a read actually performed",
33
+ "postconditionType": "advisory"
34
+ },
35
+ {
36
+ "id": "any-to-explorer-pc-1-one-match-is-not-called-a",
37
+ "description": "One match is not called a pattern; multi-callsite patterns cite each call site",
38
+ "postconditionType": "advisory"
39
+ },
32
40
  {
33
41
  "id": "exploration-findings-claims-cited",
34
42
  "description": "Every load-bearing claim cites file:line or a primary external reference",
35
- "check": "artifact-claims-cited"
43
+ "check": "artifact-claims-cited",
44
+ "postconditionType": "executable"
36
45
  }
37
46
  ],
38
47
  "description": ""
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "any-to-sre-incident",
3
3
  "producer": "*",
4
- "consumer": "cx-sre",
4
+ "consumer": "cx-operations",
5
5
  "trigger": {
6
6
  "intent": "investigation",
7
7
  "category": "incident"
@@ -27,7 +27,11 @@
27
27
  "Blast radius assessed before remediation"
28
28
  ],
29
29
  "postconditions": [
30
- "Blameless postmortem; no tickets in Problem statement"
30
+ {
31
+ "id": "any-to-sre-incident-pc-0-blameless-postmortem-no-tickets-in-problem",
32
+ "description": "Blameless postmortem; no tickets in Problem statement",
33
+ "postconditionType": "advisory"
34
+ }
31
35
  ],
32
36
  "description": ""
33
37
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "any-to-trace-reviewer",
3
3
  "producer": "*",
4
- "consumer": "cx-trace-reviewer",
4
+ "consumer": "cx-reviewer",
5
5
  "trigger": {
6
6
  "trace.anomaly": true
7
7
  },
@@ -24,9 +24,21 @@
24
24
  "Trace backend reachable via the configured `CONSTRUCT_TRACE_BACKEND` adapter"
25
25
  ],
26
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"
27
+ {
28
+ "id": "any-to-trace-reviewer-pc-0-every-performance-claim-cites-the-trace",
29
+ "description": "Every performance claim cites the trace id and span",
30
+ "postconditionType": "advisory"
31
+ },
32
+ {
33
+ "id": "any-to-trace-reviewer-pc-1-promotion-verdicts-cite-the-staging-vs",
34
+ "description": "Promotion verdicts cite the staging-vs-production score delta, not a vibe",
35
+ "postconditionType": "advisory"
36
+ },
37
+ {
38
+ "id": "any-to-trace-reviewer-pc-2-variance-and-trend-reported-alongside-median",
39
+ "description": "Variance and trend reported alongside median; stable medians that hide tail variance are surfaced",
40
+ "postconditionType": "advisory"
41
+ }
30
42
  ],
31
43
  "description": ""
32
44
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "architect-to-ai-engineer",
3
3
  "producer": "cx-architect",
4
- "consumer": "cx-ai-engineer",
4
+ "consumer": "cx-engineer",
5
5
  "trigger": {
6
6
  "riskFlags": [
7
7
  "ai"
@@ -26,7 +26,11 @@
26
26
  "Eval set defined with failure cases before prompt/model changes ship"
27
27
  ],
28
28
  "postconditions": [
29
- "Eval verdict from cx-evaluator before DONE"
29
+ {
30
+ "id": "architect-to-ai-engineer-pc-0-eval-verdict-from-cx-evaluator-before",
31
+ "description": "Eval verdict from cx-reviewer before DONE",
32
+ "postconditionType": "advisory"
33
+ }
30
34
  ],
31
35
  "description": ""
32
36
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "architect-to-data-engineer",
3
3
  "producer": "cx-architect",
4
- "consumer": "cx-data-engineer",
4
+ "consumer": "cx-engineer",
5
5
  "trigger": {
6
6
  "riskFlags": [
7
7
  "data",
@@ -33,19 +33,31 @@
33
33
  "Existing schema inspected; column names and table relationships not invented"
34
34
  ],
35
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",
36
+ {
37
+ "id": "architect-to-data-engineer-pc-0-pipeline-is-idempotent-and-observable-not",
38
+ "description": "Pipeline is idempotent and observable; not running on faith",
39
+ "postconditionType": "advisory"
40
+ },
41
+ {
42
+ "id": "architect-to-data-engineer-pc-1-data-contract-is-written-down-quality",
43
+ "description": "Data contract is written down; quality gates defined as part of the design",
44
+ "postconditionType": "executable",
45
+ "enforcedVia": "output-shape",
46
+ "enforcedBy": "dataContract, qualityGates"
47
+ },
38
48
  {
39
49
  "id": "pipeline-spec-has-idempotency-plan",
40
50
  "description": "Pipeline spec must contain an Idempotency Plan section",
41
51
  "check": "artifact-has-section",
42
- "section": "Idempotency Plan"
52
+ "section": "Idempotency Plan",
53
+ "postconditionType": "executable"
43
54
  },
44
55
  {
45
56
  "id": "pipeline-spec-has-observability",
46
57
  "description": "Pipeline spec must contain an Observability section",
47
58
  "check": "artifact-has-section",
48
- "section": "Observability"
59
+ "section": "Observability",
60
+ "postconditionType": "executable"
49
61
  }
50
62
  ],
51
63
  "description": ""
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "architect-to-devil-advocate",
3
3
  "producer": "cx-architect",
4
- "consumer": "cx-devil-advocate",
4
+ "consumer": "cx-reviewer",
5
5
  "trigger": {
6
6
  "framingChallenge.required": true
7
7
  },
@@ -25,8 +25,16 @@
25
25
  "Problem statement stated independent of tickets/transcripts"
26
26
  ],
27
27
  "postconditions": [
28
- "If verdict is BLOCKED, architect revises framing before proceeding",
29
- "Challenge checkpoint logged to audit trail"
28
+ {
29
+ "id": "architect-to-devil-advocate-pc-0-if-verdict-is-blocked-architect-revises",
30
+ "description": "If verdict is BLOCKED, architect revises framing before proceeding",
31
+ "postconditionType": "advisory"
32
+ },
33
+ {
34
+ "id": "architect-to-devil-advocate-pc-1-challenge-checkpoint-logged-to-audit-trail",
35
+ "description": "Challenge checkpoint logged to audit trail",
36
+ "postconditionType": "advisory"
37
+ }
30
38
  ],
31
39
  "description": "",
32
40
  "teamBoundary": {
@@ -14,7 +14,9 @@
14
14
  "goal",
15
15
  "approach",
16
16
  "tasks",
17
- "acceptanceCriteria"
17
+ "acceptanceCriteria",
18
+ "constraintMap",
19
+ "optionScoring"
18
20
  ]
19
21
  },
20
22
  "output": {
@@ -26,9 +28,23 @@
26
28
  "Task packet contains readFirst and doNotChange lists"
27
29
  ],
28
30
  "postconditions": [
29
- "Implementation cites the ADR tasks it completed",
30
- "filesChanged matches tasks in the ADR",
31
- "verificationChecklist evaluated before DONE"
31
+ {
32
+ "id": "architect-to-engineer-pc-0-implementation-cites-the-adr-tasks-it",
33
+ "description": "Implementation cites the ADR tasks it completed",
34
+ "postconditionType": "advisory"
35
+ },
36
+ {
37
+ "id": "architect-to-engineer-pc-1-fileschanged-matches-tasks-in-the-adr",
38
+ "description": "filesChanged matches tasks in the ADR",
39
+ "postconditionType": "advisory"
40
+ },
41
+ {
42
+ "id": "architect-to-engineer-pc-2-verificationchecklist-evaluated-before-done",
43
+ "description": "verificationChecklist evaluated before DONE",
44
+ "postconditionType": "executable",
45
+ "enforcedVia": "output-shape",
46
+ "enforcedBy": "verificationChecklist (nested schema required)"
47
+ }
32
48
  ],
33
49
  "description": ""
34
50
  }