@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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "architect-to-evaluator",
3
3
  "producer": "cx-architect",
4
- "consumer": "cx-evaluator",
4
+ "consumer": "cx-reviewer",
5
5
  "trigger": {
6
6
  "riskFlags": [
7
7
  "ai",
@@ -34,19 +34,29 @@
34
34
  "Baseline run identified or scheduled before proposed change runs"
35
35
  ],
36
36
  "postconditions": [
37
- "Failing case is defined before results are seen",
38
- "Regression checks enumerated; not just success-path test cases",
37
+ {
38
+ "id": "architect-to-evaluator-pc-0-failing-case-is-defined-before-results",
39
+ "description": "Failing case is defined before results are seen",
40
+ "postconditionType": "advisory"
41
+ },
42
+ {
43
+ "id": "architect-to-evaluator-pc-1-regression-checks-enumerated-not-just-success",
44
+ "description": "Regression checks enumerated; not just success-path test cases",
45
+ "postconditionType": "advisory"
46
+ },
39
47
  {
40
48
  "id": "eval-spec-has-success-criteria",
41
49
  "description": "Eval spec must contain a Success Criteria section",
42
50
  "check": "artifact-has-section",
43
- "section": "Success Criteria"
51
+ "section": "Success Criteria",
52
+ "postconditionType": "executable"
44
53
  },
45
54
  {
46
55
  "id": "eval-spec-has-baseline",
47
56
  "description": "Eval spec must contain a Baseline section",
48
57
  "check": "artifact-has-section",
49
- "section": "Baseline"
58
+ "section": "Baseline",
59
+ "postconditionType": "executable"
50
60
  }
51
61
  ],
52
62
  "description": "",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "architect-to-legal-compliance",
3
3
  "producer": "cx-architect",
4
- "consumer": "cx-legal-compliance",
4
+ "consumer": "cx-security",
5
5
  "trigger": {
6
6
  "riskFlags": [
7
7
  "compliance",
@@ -30,19 +30,29 @@
30
30
  "Dependency tree surfaced past the first layer for licensing review"
31
31
  ],
32
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",
33
+ {
34
+ "id": "architect-to-legal-compliance-pc-0-every-assertion-cites-the-regulation-standard",
35
+ "description": "Every assertion cites the regulation, standard, or contract clause it rests on",
36
+ "postconditionType": "advisory"
37
+ },
38
+ {
39
+ "id": "architect-to-legal-compliance-pc-1-ai-generated-user-facing-content-has",
40
+ "description": "AI-generated user-facing content has a disclosure strategy noted, or is marked not-applicable with reason",
41
+ "postconditionType": "advisory"
42
+ },
35
43
  {
36
44
  "id": "compliance-memo-has-regulatory-citations",
37
45
  "description": "Compliance memo must contain a Regulatory Citations section",
38
46
  "check": "artifact-has-section",
39
- "section": "Regulatory Citations"
47
+ "section": "Regulatory Citations",
48
+ "postconditionType": "executable"
40
49
  },
41
50
  {
42
51
  "id": "compliance-memo-has-remediation-plan",
43
52
  "description": "Compliance memo must contain a Remediation Plan section",
44
53
  "check": "artifact-has-section",
45
- "section": "Remediation Plan"
54
+ "section": "Remediation Plan",
55
+ "postconditionType": "executable"
46
56
  }
47
57
  ],
48
58
  "description": "",
@@ -23,7 +23,8 @@
23
23
  "sequencedTasks",
24
24
  "dependencyGraph",
25
25
  "ownershipMatrix",
26
- "verificationGates"
26
+ "verificationGates",
27
+ "slippageRisk"
27
28
  ]
28
29
  },
29
30
  "preconditions": [
@@ -31,9 +32,21 @@
31
32
  "Tasks are atomic and individually verifiable"
32
33
  ],
33
34
  "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"
35
+ {
36
+ "id": "architect-to-operations-pc-0-every-task-names-a-single-owner",
37
+ "description": "Every task names a single owner",
38
+ "postconditionType": "advisory"
39
+ },
40
+ {
41
+ "id": "architect-to-operations-pc-1-every-task-names-a-verification-gate",
42
+ "description": "Every task names a verification gate and definition-of-done",
43
+ "postconditionType": "advisory"
44
+ },
45
+ {
46
+ "id": "architect-to-operations-pc-2-dependency-graph-identifies-blockers-no-task",
47
+ "description": "Dependency graph identifies blockers; no task lies on a hidden critical path",
48
+ "postconditionType": "advisory"
49
+ }
37
50
  ],
38
51
  "description": "",
39
52
  "teamBoundary": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "architect-to-platform-engineer",
3
3
  "producer": "cx-architect",
4
- "consumer": "cx-platform-engineer",
4
+ "consumer": "cx-engineer",
5
5
  "trigger": {
6
6
  "riskFlags": [
7
7
  "platform",
@@ -34,9 +34,25 @@
34
34
  "Existing CI/CD and tooling surveyed before proposing new tooling"
35
35
  ],
36
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"
37
+ {
38
+ "id": "architect-to-platform-engineer-pc-0-migration-path-described-for-existing-workflows",
39
+ "description": "Migration path described for existing workflows",
40
+ "postconditionType": "executable",
41
+ "enforcedVia": "output-shape",
42
+ "enforcedBy": "migration"
43
+ },
44
+ {
45
+ "id": "architect-to-platform-engineer-pc-1-rollback-procedure-exists-in-case-the",
46
+ "description": "Rollback procedure exists in case the change makes things worse",
47
+ "postconditionType": "executable",
48
+ "enforcedVia": "output-shape",
49
+ "enforcedBy": "rollback"
50
+ },
51
+ {
52
+ "id": "architect-to-platform-engineer-pc-2-improvement-removes-more-configuration-than-it",
53
+ "description": "Improvement removes more configuration than it adds, or the added config is justified",
54
+ "postconditionType": "advisory"
55
+ }
40
56
  ],
41
57
  "description": ""
42
58
  }
@@ -25,8 +25,16 @@
25
25
  "docAuthoring.owner present if authoring a typed document"
26
26
  ],
27
27
  "postconditions": [
28
- "Dispatch plan emitted with specialists in sequence",
29
- "Parallel work marked with [parallel: ...] tags"
28
+ {
29
+ "id": "construct-to-orchestrator-pc-0-dispatch-plan-emitted-with-specialists-in",
30
+ "description": "Dispatch plan emitted with specialists in sequence",
31
+ "postconditionType": "advisory"
32
+ },
33
+ {
34
+ "id": "construct-to-orchestrator-pc-1-parallel-work-marked-with-parallel-tags",
35
+ "description": "Parallel work marked with [parallel: ...] tags",
36
+ "postconditionType": "advisory"
37
+ }
30
38
  ],
31
39
  "skillHints": [
32
40
  "ai/orchestration-workflow",
@@ -30,8 +30,17 @@
30
30
  "Metric definition reviewed for vanity-metric risk and for hit-without-solving-the-problem risk"
31
31
  ],
32
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"
33
+ {
34
+ "id": "data-analyst-to-product-manager-pc-0-prd-success-metrics-carry-the-cited",
35
+ "description": "PRD success metrics carry the cited baseline and threshold from the analysis",
36
+ "postconditionType": "executable",
37
+ "check": "artifact-claims-cited"
38
+ },
39
+ {
40
+ "id": "data-analyst-to-product-manager-pc-1-metrics-that-can-be-hit-without",
41
+ "description": "Metrics that can be hit without solving the problem are flagged and replaced",
42
+ "postconditionType": "advisory"
43
+ }
35
44
  ],
36
45
  "description": "",
37
46
  "teamBoundary": {
@@ -9,7 +9,9 @@
9
9
  "schema": "lib/contract-schemas/implementation.json",
10
10
  "mustContain": [
11
11
  "filesChanged",
12
- "tests"
12
+ "tests",
13
+ "effortClass",
14
+ "blastRadius"
13
15
  ]
14
16
  },
15
17
  "output": {
@@ -20,9 +22,23 @@
20
22
  "Test plan exists or is derivable from acceptance criteria"
21
23
  ],
22
24
  "postconditions": [
23
- "Verdict in {PASS, FAIL}",
24
- "Coverage meets project threshold",
25
- "FAIL blocks DONE in workflow"
25
+ {
26
+ "id": "engineer-to-qa-pc-0-verdict-in-pass-fail",
27
+ "description": "Verdict in {PASS, FAIL}",
28
+ "postconditionType": "executable",
29
+ "enforcedVia": "output-shape",
30
+ "enforcedBy": "verdict (schema enum)"
31
+ },
32
+ {
33
+ "id": "engineer-to-qa-pc-1-coverage-meets-project-threshold",
34
+ "description": "Coverage meets project threshold",
35
+ "postconditionType": "advisory"
36
+ },
37
+ {
38
+ "id": "engineer-to-qa-pc-2-fail-blocks-done-in-workflow",
39
+ "description": "FAIL blocks DONE in workflow",
40
+ "postconditionType": "advisory"
41
+ }
26
42
  ],
27
43
  "description": "",
28
44
  "teamBoundary": {
@@ -9,7 +9,11 @@
9
9
  "schema": "lib/contract-schemas/implementation.json",
10
10
  "mustContain": [
11
11
  "filesChanged",
12
- "verificationChecklist"
12
+ "verificationChecklist",
13
+ "feasibilityAssessment",
14
+ "effortClass",
15
+ "debtNote",
16
+ "blastRadius"
13
17
  ]
14
18
  },
15
19
  "output": {
@@ -37,10 +41,30 @@
37
41
  "Tests compiled; static analysis run"
38
42
  ],
39
43
  "postconditions": [
40
- "Verdict in {APPROVED, APPROVED_WITH_WARNINGS, BLOCKED}",
41
- "BLOCKED verdict stops downstream work until addressed",
42
- "CRITICAL findings prevent release",
43
- "Either findings is non-empty or noIssuesFoundAt enumerates the inspected paths — prevents silent rubber-stamp reviews"
44
+ {
45
+ "id": "engineer-to-reviewer-pc-0-verdict-in-approved-approved-with-warnings",
46
+ "description": "Verdict in {APPROVED, APPROVED_WITH_WARNINGS, BLOCKED}",
47
+ "postconditionType": "executable",
48
+ "enforcedVia": "output-shape",
49
+ "enforcedBy": "verdict (mustMatchEnum)"
50
+ },
51
+ {
52
+ "id": "engineer-to-reviewer-pc-1-blocked-verdict-stops-downstream-work-until",
53
+ "description": "BLOCKED verdict stops downstream work until addressed",
54
+ "postconditionType": "advisory"
55
+ },
56
+ {
57
+ "id": "engineer-to-reviewer-pc-2-critical-findings-prevent-release",
58
+ "description": "CRITICAL findings prevent release",
59
+ "postconditionType": "advisory"
60
+ },
61
+ {
62
+ "id": "engineer-to-reviewer-pc-3-either-findings-is-non-empty-or",
63
+ "description": "Either findings is non-empty or noIssuesFoundAt enumerates the inspected paths — prevents silent rubber-stamp reviews",
64
+ "postconditionType": "executable",
65
+ "enforcedVia": "output-shape",
66
+ "enforcedBy": "findings|noIssuesFoundAt (mustContainOneOf)"
67
+ }
44
68
  ],
45
69
  "description": "",
46
70
  "teamBoundary": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "id": "explorer-to-engineer",
3
- "producer": "cx-explorer",
3
+ "producer": "cx-researcher",
4
4
  "consumer": "cx-engineer",
5
5
  "trigger": {
6
6
  "intent": [
@@ -25,8 +25,16 @@
25
25
  "Exploration findings reviewed; gaps and surprising dependencies surfaced"
26
26
  ],
27
27
  "postconditions": [
28
- "Implementation reads the files cited in keyFiles before edits",
29
- "Gaps named by explorer (missing tests, missing error handling) are addressed or filed"
28
+ {
29
+ "id": "explorer-to-engineer-pc-0-implementation-reads-the-files-cited-in",
30
+ "description": "Implementation reads the files cited in keyFiles before edits",
31
+ "postconditionType": "advisory"
32
+ },
33
+ {
34
+ "id": "explorer-to-engineer-pc-1-gaps-named-by-explorer-missing-tests",
35
+ "description": "Gaps named by explorer (missing tests, missing error handling) are addressed or filed",
36
+ "postconditionType": "advisory"
37
+ }
30
38
  ],
31
39
  "description": "",
32
40
  "teamBoundary": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "legal-compliance-to-release-manager",
3
- "producer": "cx-legal-compliance",
4
- "consumer": "cx-release-manager",
3
+ "producer": "cx-security",
4
+ "consumer": "cx-operations",
5
5
  "trigger": {
6
6
  "riskFlags": [
7
7
  "compliance"
@@ -30,8 +30,16 @@
30
30
  "All must-fix compliance items closed or accepted in writing by the release owner"
31
31
  ],
32
32
  "postconditions": [
33
- "Release blocks if any must-fix item is unresolved",
34
- "Should-fix items carry a tracking issue and an owner"
33
+ {
34
+ "id": "legal-compliance-to-release-manager-pc-0-release-blocks-if-any-must-fix",
35
+ "description": "Release blocks if any must-fix item is unresolved",
36
+ "postconditionType": "advisory"
37
+ },
38
+ {
39
+ "id": "legal-compliance-to-release-manager-pc-1-should-fix-items-carry-a-tracking",
40
+ "description": "Should-fix items carry a tracking issue and an owner",
41
+ "postconditionType": "advisory"
42
+ }
35
43
  ],
36
44
  "description": "",
37
45
  "teamBoundary": {
@@ -0,0 +1,53 @@
1
+ {
2
+ "id": "operations-tpm-briefing",
3
+ "producer": "cx-operations",
4
+ "consumer": "user",
5
+ "trigger": {
6
+ "intent": ["implementation"],
7
+ "workCategory": "deep"
8
+ },
9
+ "input": {
10
+ "shape": "bound-snapshot-slice",
11
+ "mustContain": [
12
+ "snapshotSections"
13
+ ]
14
+ },
15
+ "output": {
16
+ "shape": "tpm-briefing",
17
+ "mustContain": [
18
+ "coverageMatrix",
19
+ "missingWork",
20
+ "timelineRisks",
21
+ "misalignment",
22
+ "proposals",
23
+ "provenance"
24
+ ]
25
+ },
26
+ "preconditions": [
27
+ "The operations specialist's bound provider snapshot has been sliced (Jira + Confluence + Slack sections present or explicitly empty)",
28
+ "Provider bindings and filters have been enforced at read time before the slice reaches analysis"
29
+ ],
30
+ "postconditions": [
31
+ {
32
+ "id": "operations-tpm-briefing-pc-0-every-missing-work-finding-cites-the",
33
+ "description": "Every missing-work finding cites the requirement id and the empty coverage",
34
+ "postconditionType": "advisory"
35
+ },
36
+ {
37
+ "id": "operations-tpm-briefing-pc-1-every-timeline-risk-finding-cites-its",
38
+ "description": "Every timeline-risk finding cites its evidence (issue id, due date, blocking chain)",
39
+ "postconditionType": "advisory"
40
+ },
41
+ {
42
+ "id": "operations-tpm-briefing-pc-2-every-proposal-names-the-provider-write",
43
+ "description": "Every proposal names the provider write kind and traces to an uncovered requirement",
44
+ "postconditionType": "advisory"
45
+ },
46
+ {
47
+ "id": "operations-tpm-briefing-pc-3-no-load-bearing-claim-is-present",
48
+ "description": "No load-bearing claim is present without a source id; unknowns are marked, never invented",
49
+ "postconditionType": "advisory"
50
+ }
51
+ ],
52
+ "description": "Recurring TPM briefing produced by the operations specialist over its bound Jira + Confluence + Slack snapshot: PRD-versus-epic coverage, timeline risk, misalignment, and approval-gated ticket proposals."
53
+ }
@@ -0,0 +1,53 @@
1
+ {
2
+ "id": "operations-triage",
3
+ "producer": "cx-operations",
4
+ "consumer": "user",
5
+ "trigger": {
6
+ "intent": ["implementation"],
7
+ "workCategory": "deep"
8
+ },
9
+ "input": {
10
+ "shape": "bound-snapshot-slice",
11
+ "mustContain": [
12
+ "snapshotSections"
13
+ ]
14
+ },
15
+ "output": {
16
+ "shape": "triage-briefing",
17
+ "mustContain": [
18
+ "inventoried",
19
+ "duplicates",
20
+ "underspecified",
21
+ "proposals",
22
+ "provenance",
23
+ "summary"
24
+ ]
25
+ },
26
+ "preconditions": [
27
+ "The operations specialist's bound provider snapshot has been sliced (Jira + Confluence sections present or explicitly empty)",
28
+ "Provider bindings and filters have been enforced at read time before the slice reaches triage"
29
+ ],
30
+ "postconditions": [
31
+ {
32
+ "id": "operations-triage-pc-0-every-duplicate-finding-cites-the-issue",
33
+ "description": "Every duplicate finding cites the issue keys being compared",
34
+ "postconditionType": "advisory"
35
+ },
36
+ {
37
+ "id": "operations-triage-pc-1-every-under-specified-finding-cites-the",
38
+ "description": "Every under-specified finding cites the issue key and the reasons",
39
+ "postconditionType": "advisory"
40
+ },
41
+ {
42
+ "id": "operations-triage-pc-2-every-proposal-carries-a-typed-writeintent",
43
+ "description": "Every proposal carries a typed writeIntent (duplicate-link or needs-info comment) and traces to its source issue",
44
+ "postconditionType": "advisory"
45
+ },
46
+ {
47
+ "id": "operations-triage-pc-3-no-provider-write-executes-without-approval",
48
+ "description": "No provider write executes without approval; no load-bearing claim is present without a source id",
49
+ "postconditionType": "advisory"
50
+ }
51
+ ],
52
+ "description": "Triage briefing produced by the operations specialist over its bound Jira + Confluence snapshot: inventoried tickets, detected duplicates, under-specified issues, and approval-gated triage proposals."
53
+ }
@@ -0,0 +1,53 @@
1
+ {
2
+ "id": "pm-requirements-candidates",
3
+ "producer": "cx-product-manager",
4
+ "consumer": "user",
5
+ "trigger": {
6
+ "intent": ["implementation"],
7
+ "workCategory": "deep"
8
+ },
9
+ "input": {
10
+ "shape": "bound-snapshot-slice",
11
+ "mustContain": [
12
+ "snapshotSections"
13
+ ]
14
+ },
15
+ "output": {
16
+ "shape": "requirements-candidates",
17
+ "mustContain": [
18
+ "candidates",
19
+ "clusters",
20
+ "requirements",
21
+ "provenance",
22
+ "summary"
23
+ ]
24
+ },
25
+ "preconditions": [
26
+ "The product-manager specialist's bound provider snapshot has been sliced (feedback + Confluence sections present or explicitly empty)",
27
+ "Provider bindings and filters have been enforced at read time before the slice reaches analysis",
28
+ "Feedback-item text is stamped EXTERNAL_UNAUTHENTICATED (B14/N1) and is treated as quoted evidence, never as instruction"
29
+ ],
30
+ "postconditions": [
31
+ {
32
+ "id": "pm-requirements-candidates-pc-0-every-requirements-candidate-cites-the",
33
+ "description": "Every requirements-candidate cites the feedback rows it was clustered from and, when matched, the PRD requirement id it relates to",
34
+ "postconditionType": "advisory"
35
+ },
36
+ {
37
+ "id": "pm-requirements-candidates-pc-1-every-candidates-relation-is-one-of",
38
+ "description": "Every candidate's relation is one of supports, contradicts, or new — new is used only when no PRD requirement matched",
39
+ "postconditionType": "advisory"
40
+ },
41
+ {
42
+ "id": "pm-requirements-candidates-pc-2-no-load-bearing-claim-is-present",
43
+ "description": "No load-bearing claim is present without a source id; unknowns are marked, never invented",
44
+ "postconditionType": "advisory"
45
+ },
46
+ {
47
+ "id": "pm-requirements-candidates-pc-3-no-provider-write-executes-this-preset",
48
+ "description": "No provider write executes: this preset is artifact-only and proposes no writeIntent",
49
+ "postconditionType": "advisory"
50
+ }
51
+ ],
52
+ "description": "Requirements-candidates artifact produced by the product-manager specialist over its bound feedback + Confluence snapshot: feedback clustered by theme, scored with the user-value rubric, and cross-referenced against PRD requirements."
53
+ }
@@ -17,7 +17,10 @@
17
17
  "functionalRequirements",
18
18
  "nonFunctionalRequirements",
19
19
  "acceptanceCriteria",
20
- "constraints"
20
+ "constraints",
21
+ "valueStatement",
22
+ "tradeoffTable",
23
+ "prioritizationCall"
21
24
  ]
22
25
  },
23
26
  "output": {
@@ -25,40 +28,57 @@
25
28
  "type": "decision"
26
29
  },
27
30
  "preconditions": [
28
- "cx-devil-advocate framing challenge logged if riskFlags.architecture"
31
+ "cx-reviewer framing challenge logged if riskFlags.architecture"
29
32
  ],
30
33
  "postconditions": [
31
- "ADR Problem section traces to PRD Problem, not to tickets",
32
- "ADR Rejected alternatives section present with ≥2 alternatives and specific rejection reasons",
33
- "Reversibility section states whether one-way or two-way door",
34
+ {
35
+ "id": "product-manager-to-architect-pc-0-adr-problem-section-traces-to-prd",
36
+ "description": "ADR Problem section traces to PRD Problem, not to tickets",
37
+ "postconditionType": "advisory"
38
+ },
39
+ {
40
+ "id": "product-manager-to-architect-pc-1-adr-rejected-alternatives-section-present-with",
41
+ "description": "ADR Rejected alternatives section present with ≥2 alternatives and specific rejection reasons",
42
+ "postconditionType": "advisory"
43
+ },
44
+ {
45
+ "id": "product-manager-to-architect-pc-2-reversibility-section-states-whether-one-way",
46
+ "description": "Reversibility section states whether one-way or two-way door",
47
+ "postconditionType": "advisory"
48
+ },
34
49
  {
35
50
  "id": "adr-has-rejected-alternatives",
36
51
  "description": "ADR must contain a Rejected Alternatives section",
37
52
  "check": "artifact-has-section",
38
- "section": "Rejected Alternatives"
53
+ "section": "Rejected Alternatives",
54
+ "postconditionType": "executable"
39
55
  },
40
56
  {
41
57
  "id": "adr-reversibility-stated",
42
58
  "description": "ADR Reversibility section is present and non-empty",
43
59
  "check": "artifact-section-nonempty",
44
- "section": "Reversibility"
60
+ "section": "Reversibility",
61
+ "postconditionType": "executable"
45
62
  },
46
63
  {
47
64
  "id": "adr-consequences-stated",
48
65
  "description": "ADR Consequences section is present and non-empty",
49
66
  "check": "artifact-section-nonempty",
50
- "section": "Consequences"
67
+ "section": "Consequences",
68
+ "postconditionType": "executable"
51
69
  },
52
70
  {
53
71
  "id": "adr-numeric-claims-cited",
54
72
  "description": "Every numeric claim in the ADR body cites a source",
55
- "check": "artifact-claims-cited"
73
+ "check": "artifact-claims-cited",
74
+ "postconditionType": "executable"
56
75
  },
57
76
  {
58
77
  "id": "adr-manifest-reviewers",
59
78
  "description": "Manifest required reviewers must appear in agent log before handoff",
60
79
  "check": "artifact-reviewers-seen",
61
- "fromManifest": true
80
+ "fromManifest": true,
81
+ "postconditionType": "executable"
62
82
  }
63
83
  ],
64
84
  "description": "",
@@ -31,12 +31,22 @@
31
31
  "Success definition stated in writing before metric design begins"
32
32
  ],
33
33
  "postconditions": [
34
- "Every percentage, multiplier, or magnitude cites the query, dashboard, or run that produced it",
35
- "Baseline is a measured value or names the plan to establish one",
34
+ {
35
+ "id": "product-manager-to-data-analyst-pc-0-every-percentage-multiplier-or-magnitude-cites",
36
+ "description": "Every percentage, multiplier, or magnitude cites the query, dashboard, or run that produced it",
37
+ "postconditionType": "executable",
38
+ "check": "artifact-claims-cited"
39
+ },
40
+ {
41
+ "id": "product-manager-to-data-analyst-pc-1-baseline-is-a-measured-value-or",
42
+ "description": "Baseline is a measured value or names the plan to establish one",
43
+ "postconditionType": "advisory"
44
+ },
36
45
  {
37
46
  "id": "metrics-analysis-claims-cited",
38
47
  "description": "Every numeric claim in the analysis cites the query or dashboard",
39
- "check": "artifact-claims-cited"
48
+ "check": "artifact-claims-cited",
49
+ "postconditionType": "executable"
40
50
  }
41
51
  ],
42
52
  "description": "",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "product-manager-to-ux-researcher",
3
3
  "producer": "cx-product-manager",
4
- "consumer": "cx-ux-researcher",
4
+ "consumer": "cx-researcher",
5
5
  "trigger": {
6
6
  "docAuthoring.docType": [
7
7
  "prd",
@@ -33,18 +33,28 @@
33
33
  "PRD has an open user-research question; PRD not finalized"
34
34
  ],
35
35
  "postconditions": [
36
- "Every friction-map entry cites the observation or session it came from",
37
- "Stated preferences are labeled distinctly from observed behaviors",
36
+ {
37
+ "id": "product-manager-to-ux-researcher-pc-0-every-friction-map-entry-cites-the",
38
+ "description": "Every friction-map entry cites the observation or session it came from",
39
+ "postconditionType": "advisory"
40
+ },
41
+ {
42
+ "id": "product-manager-to-ux-researcher-pc-1-stated-preferences-are-labeled-distinctly-from",
43
+ "description": "Stated preferences are labeled distinctly from observed behaviors",
44
+ "postconditionType": "advisory"
45
+ },
38
46
  {
39
47
  "id": "ux-research-has-sources-section",
40
48
  "description": "UX research artifact must contain a Sources section",
41
49
  "check": "artifact-has-section",
42
- "section": "Sources"
50
+ "section": "Sources",
51
+ "postconditionType": "executable"
43
52
  },
44
53
  {
45
54
  "id": "ux-research-claims-cited",
46
55
  "description": "Every numeric or generalization claim in the UX brief cites the research source",
47
- "check": "artifact-claims-cited"
56
+ "check": "artifact-claims-cited",
57
+ "postconditionType": "executable"
48
58
  }
49
59
  ],
50
60
  "description": ""