@geraldmaron/construct 1.4.1 → 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 (556) hide show
  1. package/.env.example +36 -0
  2. package/README.md +41 -7
  3. package/bin/construct +1029 -65
  4. package/bin/construct-postinstall.mjs +27 -2
  5. package/config/tag-vocabulary.json +264 -0
  6. package/examples/distribution/sources/deck-one-pager.md +1 -1
  7. package/lib/acp/server.mjs +21 -7
  8. package/lib/adapters-sync.mjs +2 -1
  9. package/lib/audit-trail.mjs +185 -2
  10. package/lib/beads/auto-close.mjs +2 -1
  11. package/lib/beads/drift.mjs +2 -1
  12. package/lib/bridges/copilot-proxy.mjs +20 -5
  13. package/lib/certification/skill-inventory.mjs +10 -1
  14. package/lib/cli/approvals.mjs +147 -0
  15. package/lib/cli-commands.mjs +105 -14
  16. package/lib/comment-lint.mjs +127 -8
  17. package/lib/config/schema.mjs +7 -30
  18. package/lib/config/source-target-registry.mjs +70 -0
  19. package/lib/config/source-targets.mjs +179 -205
  20. package/lib/contracts/coverage.mjs +77 -0
  21. package/lib/contracts/validate.mjs +102 -13
  22. package/lib/contracts/violation-log.mjs +50 -4
  23. package/lib/db/migrate.mjs +69 -0
  24. package/lib/db/migrations/001_orchestration_runs.sql +9 -0
  25. package/lib/db/migrations/002_queue_provider.sql +50 -0
  26. package/lib/db/migrations/003_worker_registry.sql +17 -0
  27. package/lib/db/migrations/004_trace_events.sql +16 -0
  28. package/lib/db/migrations/005_shared_memory.sql +15 -0
  29. package/lib/db/migrations/006_orchestration_runs_tenant.sql +5 -0
  30. package/lib/decisions/enforced-baseline.json +0 -2
  31. package/lib/decisions/registry.mjs +3 -2
  32. package/lib/deployment/parity-contract.mjs +1 -1
  33. package/lib/deployment-mode.mjs +78 -2
  34. package/lib/diagram-export.mjs +10 -1
  35. package/lib/distill.mjs +5 -2
  36. package/lib/docs-verify.mjs +2 -1
  37. package/lib/doctor/cli.mjs +1 -0
  38. package/lib/doctor/command-on-path.mjs +24 -0
  39. package/lib/doctor/diagnosis.mjs +109 -0
  40. package/lib/doctor/embedding-health.mjs +50 -0
  41. package/lib/doctor/engine-health.mjs +93 -0
  42. package/lib/doctor/graph-validate.mjs +47 -0
  43. package/lib/doctor/index.mjs +23 -4
  44. package/lib/doctor/sidecar-providers.mjs +56 -0
  45. package/lib/doctor/watchers/consistency.mjs +93 -1
  46. package/lib/doctor/watchers/cx-budget.mjs +1 -1
  47. package/lib/doctor/watchers/graph-staleness.mjs +1 -1
  48. package/lib/doctor/watchers/mcp-protocol.mjs +17 -0
  49. package/lib/doctor/watchers/oracle-liveness.mjs +92 -0
  50. package/lib/doctor/watchers/orchestration-runs.mjs +108 -0
  51. package/lib/doctor/watchers/provider-breaker.mjs +78 -0
  52. package/lib/document-export.mjs +52 -27
  53. package/lib/document-extract/docling-client.mjs +9 -5
  54. package/lib/document-extract/docling-sidecar.py +30 -0
  55. package/lib/document-extract.mjs +1 -1
  56. package/lib/document-ingest.mjs +9 -0
  57. package/lib/embed/approval-queue.mjs +184 -88
  58. package/lib/embed/authority-guard.mjs +65 -2
  59. package/lib/embed/capability-jobs.mjs +365 -0
  60. package/lib/embed/capability-lifecycle.mjs +219 -0
  61. package/lib/embed/capability-loader.mjs +303 -0
  62. package/lib/embed/capability-runtime.mjs +58 -0
  63. package/lib/embed/cli.mjs +185 -8
  64. package/lib/embed/config.mjs +4 -0
  65. package/lib/embed/daemon.mjs +125 -6
  66. package/lib/embed/demand-fetch.mjs +190 -54
  67. package/lib/embed/inbox.mjs +12 -10
  68. package/lib/embed/presets/ops-triage.mjs +236 -0
  69. package/lib/embed/presets/pm-feedback.mjs +341 -0
  70. package/lib/embed/presets/tpm.mjs +401 -0
  71. package/lib/embed/providers/jira.mjs +72 -1
  72. package/lib/embed/providers/registry.mjs +140 -33
  73. package/lib/embed/worker.mjs +5 -0
  74. package/lib/embedded-contract/capability.mjs +4 -0
  75. package/lib/embedded-contract/execution.mjs +1 -1
  76. package/lib/embedded-contract/model-resolve.mjs +53 -3
  77. package/lib/embedded-contract/workflow-defs.mjs +48 -73
  78. package/lib/embedded-contract/workflow-invoke.mjs +144 -4
  79. package/lib/embedded-contract/workflows/architecture-review.manifest.json +15 -0
  80. package/lib/embedded-contract/workflows/data-structure.manifest.json +14 -0
  81. package/lib/embedded-contract/workflows/evidence-ingest.manifest.json +14 -0
  82. package/lib/embedded-contract/workflows/memo-draft.manifest.json +14 -0
  83. package/lib/embedded-contract/workflows/operations-triage.manifest.json +18 -0
  84. package/lib/embedded-contract/workflows/operations.manifest.json +18 -0
  85. package/lib/embedded-contract/workflows/pm-feedback.manifest.json +18 -0
  86. package/lib/embedded-contract/workflows/prd-draft.manifest.json +15 -0
  87. package/lib/embedded-contract/workflows/proposal-review.manifest.json +15 -0
  88. package/lib/embedded-contract/workflows/research-synthesis.manifest.json +14 -0
  89. package/lib/embedded-contract/workflows/risk-review.manifest.json +15 -0
  90. package/lib/embedded-contract/workflows/structure-notes.manifest.json +14 -0
  91. package/lib/embedded-contract/workflows/transcript-process.manifest.json +14 -0
  92. package/lib/embedded-contract/workflows/triage.manifest.json +14 -0
  93. package/lib/env-config.mjs +60 -11
  94. package/lib/export-validate.mjs +34 -2
  95. package/lib/extensions/index.mjs +27 -0
  96. package/lib/extensions/loader.mjs +120 -0
  97. package/lib/extensions/manifest-schema.mjs +141 -0
  98. package/lib/extensions/manifests/anthropic.manifest.json +12 -0
  99. package/lib/extensions/manifests/atlassian-confluence.manifest.json +12 -0
  100. package/lib/extensions/manifests/atlassian-jira.manifest.json +53 -0
  101. package/lib/extensions/manifests/directory.manifest.json +12 -0
  102. package/lib/extensions/manifests/docling.manifest.json +37 -0
  103. package/lib/extensions/manifests/echo.manifest.json +8 -0
  104. package/lib/extensions/manifests/feedback.manifest.json +12 -0
  105. package/lib/extensions/manifests/github-copilot.manifest.json +12 -0
  106. package/lib/extensions/manifests/github.manifest.json +52 -0
  107. package/lib/extensions/manifests/linear.manifest.json +50 -0
  108. package/lib/extensions/manifests/local.manifest.json +12 -0
  109. package/lib/extensions/manifests/ollama.manifest.json +12 -0
  110. package/lib/extensions/manifests/openai.manifest.json +12 -0
  111. package/lib/extensions/manifests/openrouter-anthropic.manifest.json +12 -0
  112. package/lib/extensions/manifests/openrouter-deepseek.manifest.json +12 -0
  113. package/lib/extensions/manifests/openrouter-google.manifest.json +12 -0
  114. package/lib/extensions/manifests/openrouter-llama.manifest.json +12 -0
  115. package/lib/extensions/manifests/openrouter-qwen.manifest.json +12 -0
  116. package/lib/extensions/manifests/openrouter.manifest.json +12 -0
  117. package/lib/extensions/manifests/postgres.manifest.json +12 -0
  118. package/lib/extensions/manifests/salesforce.manifest.json +12 -0
  119. package/lib/extensions/manifests/slack.manifest.json +58 -0
  120. package/lib/extensions/manifests/whisper.manifest.json +36 -0
  121. package/lib/extensions/validate.mjs +175 -0
  122. package/lib/features.mjs +13 -9
  123. package/lib/flows/checkpoint.mjs +184 -0
  124. package/lib/flows/constants.mjs +27 -0
  125. package/lib/flows/define.mjs +146 -0
  126. package/lib/flows/engine.mjs +249 -0
  127. package/lib/flows/errors.mjs +19 -0
  128. package/lib/flows/index.mjs +27 -0
  129. package/lib/flows/joins.mjs +18 -0
  130. package/lib/flows/schema.mjs +90 -0
  131. package/lib/flows/state.mjs +31 -0
  132. package/lib/frameworks/loader.mjs +99 -0
  133. package/lib/frameworks/schema.mjs +157 -0
  134. package/lib/graph/build-from-corpus.mjs +67 -0
  135. package/lib/graph/build-from-embed.mjs +82 -0
  136. package/lib/graph/build-from-registry.mjs +164 -3
  137. package/lib/graph/cli.mjs +456 -12
  138. package/lib/graph/gap-queries.mjs +156 -0
  139. package/lib/graph/gaps.mjs +41 -0
  140. package/lib/graph/impacted.mjs +129 -0
  141. package/lib/graph/runtime-evidence.mjs +177 -0
  142. package/lib/graph/security-coverage.mjs +113 -0
  143. package/lib/graph/staleness.mjs +241 -10
  144. package/lib/graph/store.mjs +24 -7
  145. package/lib/graph/validate.mjs +161 -0
  146. package/lib/headhunt.mjs +9 -8
  147. package/lib/health-check.mjs +15 -7
  148. package/lib/hook-health.mjs +1 -1
  149. package/lib/hooks/agent-tracker.mjs +10 -4
  150. package/lib/hooks/edit-guard.mjs +3 -3
  151. package/lib/hooks/graph-impact-advisory.mjs +2 -2
  152. package/lib/hooks/guard-bash.mjs +41 -15
  153. package/lib/hooks/mcp-health-check.mjs +11 -4
  154. package/lib/hooks/model-fallback.mjs +50 -6
  155. package/lib/hooks/orchestration-dispatch-guard.mjs +14 -3
  156. package/lib/hooks/pre-compact.mjs +181 -173
  157. package/lib/hooks/rule-verifier.mjs +2 -1
  158. package/lib/hooks/session-reflect.mjs +2 -1
  159. package/lib/hooks/session-start.mjs +3 -3
  160. package/lib/host/readiness.mjs +109 -0
  161. package/lib/host-capabilities.mjs +13 -2
  162. package/lib/host-disposition.mjs +29 -8
  163. package/lib/identity.mjs +92 -0
  164. package/lib/ingest/degraded-extract.mjs +96 -0
  165. package/lib/ingest/docling-remote.mjs +2 -1
  166. package/lib/ingest/provider-extract.mjs +7 -19
  167. package/lib/ingest/sidecar-providers.mjs +196 -0
  168. package/lib/ingest-tooling.mjs +11 -5
  169. package/lib/init-unified.mjs +55 -38
  170. package/lib/init-update.mjs +2 -1
  171. package/lib/install/legacy-global-cleanup.mjs +25 -0
  172. package/lib/install/stage-project.mjs +41 -4
  173. package/lib/intake/daemon.mjs +99 -8
  174. package/lib/intake/git-queue.mjs +110 -38
  175. package/lib/intake/prepare.mjs +2 -0
  176. package/lib/intake/queue-registry.mjs +50 -0
  177. package/lib/intake/queue.mjs +133 -17
  178. package/lib/intake/session-prelude.mjs +57 -8
  179. package/lib/integrations/intake-integrations.mjs +61 -111
  180. package/lib/intent-classifier.mjs +43 -5
  181. package/lib/libreoffice-export.mjs +8 -8
  182. package/lib/logging/rotate.mjs +5 -4
  183. package/lib/mcp/broker.mjs +332 -17
  184. package/lib/mcp/denied-store.mjs +95 -0
  185. package/lib/mcp/destructive-approval.mjs +57 -0
  186. package/lib/mcp/destructive-gate.mjs +30 -0
  187. package/lib/mcp/dispatch-envelope.mjs +199 -0
  188. package/lib/mcp/memory-bridge.mjs +2 -1
  189. package/lib/mcp/server.mjs +185 -1268
  190. package/lib/mcp/tool-definitions-memory.mjs +376 -0
  191. package/lib/mcp/tool-definitions-project.mjs +271 -0
  192. package/lib/mcp/tool-definitions-skills.mjs +311 -0
  193. package/lib/mcp/tool-definitions-workflow.mjs +398 -0
  194. package/lib/mcp/tool-definitions.mjs +25 -0
  195. package/lib/mcp/tool-rate-limit.mjs +47 -0
  196. package/lib/mcp/tool-registry.mjs +107 -0
  197. package/lib/mcp/tool-safety.mjs +95 -0
  198. package/lib/mcp/tool-surface-parity.mjs +60 -0
  199. package/lib/mcp/tools/orchestration-delegation-next.tool.mjs +68 -0
  200. package/lib/mcp/tools/orchestration-run.mjs +197 -19
  201. package/lib/mcp/tools/orchestration-task-result.tool.mjs +77 -0
  202. package/lib/mcp/tools/project.mjs +25 -8
  203. package/lib/mcp/tools/provider-write.mjs +187 -0
  204. package/lib/mcp/tools/scope.mjs +0 -3
  205. package/lib/mcp/tools/skills.mjs +1 -1
  206. package/lib/mcp/tools/storage.mjs +2 -2
  207. package/lib/mcp/tools/web-search-governance.mjs +96 -0
  208. package/lib/mcp/tools/web-search.mjs +5 -76
  209. package/lib/mcp/transport/auth.mjs +238 -0
  210. package/lib/mcp/transport/http.mjs +136 -0
  211. package/lib/mcp/transport/mode.mjs +31 -0
  212. package/lib/mcp/transport/stdio.mjs +22 -0
  213. package/lib/mcp-catalog.json +4 -4
  214. package/lib/mcp-manager.mjs +34 -23
  215. package/lib/mcp-platform-config.mjs +53 -20
  216. package/lib/mode-capabilities.mjs +109 -0
  217. package/lib/model-router.mjs +42 -9
  218. package/lib/models/catalog.mjs +40 -1
  219. package/lib/net-guard.mjs +247 -0
  220. package/lib/observation-store.mjs +6 -2
  221. package/lib/ollama/provision-context.mjs +2 -1
  222. package/lib/opencode-config.mjs +22 -3
  223. package/lib/opencode-runtime-plugin.mjs +120 -2
  224. package/lib/oracle/actions.mjs +204 -10
  225. package/lib/oracle/cli.mjs +24 -3
  226. package/lib/oracle/daemon-entry.mjs +6 -0
  227. package/lib/oracle/dispatch.mjs +2 -1
  228. package/lib/oracle/execute.mjs +2 -2
  229. package/lib/oracle/gaps.mjs +3 -3
  230. package/lib/oracle/heartbeat.mjs +53 -0
  231. package/lib/oracle/read-model.mjs +69 -13
  232. package/lib/oracle/reconcile.mjs +3 -46
  233. package/lib/oracle/routing.mjs +37 -31
  234. package/lib/oracle/synthesize.mjs +1 -1
  235. package/lib/orchestration/classification.mjs +434 -0
  236. package/lib/orchestration/delegation-flow.mjs +132 -0
  237. package/lib/orchestration/flow-selection.mjs +418 -0
  238. package/lib/orchestration/gates.mjs +244 -0
  239. package/lib/orchestration/host-sampling.mjs +121 -0
  240. package/lib/orchestration/policy-constants.mjs +48 -0
  241. package/lib/orchestration/provider-outcome.mjs +197 -0
  242. package/lib/orchestration/readiness.mjs +114 -13
  243. package/lib/orchestration/run-store-postgres.mjs +32 -26
  244. package/lib/orchestration/run-store-sqlite.mjs +8 -14
  245. package/lib/orchestration/run-store.mjs +25 -12
  246. package/lib/orchestration/runtime.mjs +508 -62
  247. package/lib/orchestration/store.mjs +87 -12
  248. package/lib/orchestration/trace-store.mjs +125 -0
  249. package/lib/orchestration/web-capability.mjs +60 -0
  250. package/lib/orchestration/worker-runtime.mjs +162 -0
  251. package/lib/orchestration/worker.mjs +763 -80
  252. package/lib/orchestration-policy.mjs +67 -1111
  253. package/lib/output-quality.mjs +61 -2
  254. package/lib/packs/cli.mjs +144 -0
  255. package/lib/packs/core-pack.mjs +112 -0
  256. package/lib/packs/enablement.mjs +187 -0
  257. package/lib/packs/index.mjs +23 -0
  258. package/lib/packs/loader.mjs +176 -0
  259. package/lib/packs/manifest-schema.mjs +58 -0
  260. package/lib/packs/prompts.mjs +120 -0
  261. package/lib/packs/validate.mjs +208 -0
  262. package/lib/path-policy.mjs +56 -0
  263. package/lib/plugin-registry.mjs +4 -5
  264. package/lib/policy/audit-gate.mjs +42 -0
  265. package/lib/policy/consumption-budget.mjs +149 -0
  266. package/lib/policy/engine.mjs +81 -6
  267. package/lib/policy/role-authority.mjs +89 -0
  268. package/lib/prompt-composer.js +19 -3
  269. package/lib/providers/contract/adapters/confluence/governed-write.mjs +215 -0
  270. package/lib/providers/contract/adapters/confluence/manifest.json +17 -0
  271. package/lib/providers/contract/adapters/confluence/transport.mjs +135 -0
  272. package/lib/providers/contract/adapters/github/governed-write.mjs +121 -0
  273. package/lib/providers/contract/adapters/github/index.mjs +38 -3
  274. package/lib/providers/contract/adapters/jira/adf.mjs +151 -0
  275. package/lib/providers/contract/adapters/jira/createmeta.mjs +143 -0
  276. package/lib/providers/contract/adapters/jira/governed-write.mjs +182 -0
  277. package/lib/providers/contract/adapters/jira/manifest.json +17 -0
  278. package/lib/providers/contract/adapters/jira/transport.mjs +119 -0
  279. package/lib/providers/contract.mjs +207 -0
  280. package/lib/providers/credential-bootstrap.mjs +7 -4
  281. package/lib/providers/credential-sources.mjs +14 -2
  282. package/lib/providers/directory/index.mjs +261 -0
  283. package/lib/providers/feedback/index.mjs +392 -0
  284. package/lib/providers/filter-audit.mjs +68 -0
  285. package/lib/providers/filter-schema.mjs +54 -0
  286. package/lib/providers/github/index.mjs +31 -0
  287. package/lib/providers/instance-config.mjs +215 -0
  288. package/lib/providers/op-locate.mjs +96 -0
  289. package/lib/providers/op-run.mjs +64 -9
  290. package/lib/providers/registry.mjs +26 -3
  291. package/lib/providers/secret-audit-wiring.mjs +41 -18
  292. package/lib/providers/secret-resolver.mjs +263 -31
  293. package/lib/publish-template.mjs +6 -3
  294. package/lib/publish-tooling.mjs +4 -0
  295. package/lib/publish.mjs +32 -4
  296. package/lib/queue/pg-queue.mjs +395 -0
  297. package/lib/reflect.mjs +2 -1
  298. package/lib/registry/assemble.mjs +28 -2
  299. package/lib/registry/catalog.mjs +6 -0
  300. package/lib/registry/consolidation.mjs +8 -1
  301. package/lib/registry/custom-scaffold.mjs +200 -0
  302. package/lib/registry/custom-schema.mjs +137 -0
  303. package/lib/registry/loader.mjs +15 -4
  304. package/lib/registry/manifests/format-engines.default.json +15 -0
  305. package/lib/registry/manifests/surface-map.default.json +46 -0
  306. package/lib/registry/retired-paths.mjs +1 -0
  307. package/lib/registry/surface-map.mjs +100 -50
  308. package/lib/registry/validate.mjs +3 -3
  309. package/lib/render-visual-check.mjs +240 -0
  310. package/lib/resources/budget.mjs +40 -17
  311. package/lib/roles/flavor-bindings.mjs +36 -14
  312. package/lib/roles/gateway.mjs +15 -8
  313. package/lib/roots.mjs +107 -0
  314. package/lib/runtime/uv-bootstrap.mjs +32 -6
  315. package/lib/runtime/whisper-bootstrap.mjs +11 -3
  316. package/lib/runtime-env.mjs +5 -2
  317. package/lib/sandbox.mjs +1 -1
  318. package/lib/scheduler/index.mjs +8 -20
  319. package/lib/schema-infer.mjs +31 -2
  320. package/lib/scopes/lifecycle.mjs +29 -25
  321. package/lib/scopes/loader.mjs +49 -12
  322. package/lib/scopes/teams.mjs +1 -1
  323. package/lib/security/ingest-boundary.mjs +80 -0
  324. package/lib/security/recall-wrapper.mjs +99 -0
  325. package/lib/security/trust.mjs +132 -0
  326. package/lib/service-manager.mjs +93 -24
  327. package/lib/setup.mjs +41 -23
  328. package/lib/skills-apply.mjs +4 -2
  329. package/lib/specialists/postconditions.mjs +2 -2
  330. package/lib/state-root.mjs +147 -0
  331. package/lib/status.mjs +597 -6
  332. package/lib/storage/admin.mjs +84 -7
  333. package/lib/storage/backend-registry.mjs +73 -0
  334. package/lib/storage/backend.mjs +63 -9
  335. package/lib/storage/embeddings-openai.mjs +12 -2
  336. package/lib/storage/hybrid-query.mjs +11 -3
  337. package/lib/storage/retrieval-hardening.mjs +384 -0
  338. package/lib/storage/shared-memory.mjs +158 -0
  339. package/lib/storage/vector-client.mjs +69 -2
  340. package/lib/team/health.mjs +72 -0
  341. package/lib/telemetry/backends/local.mjs +9 -3
  342. package/lib/telemetry/client.mjs +3 -7
  343. package/lib/template-registry.mjs +10 -12
  344. package/lib/tenant/context.mjs +82 -0
  345. package/lib/tenant/isolation.mjs +129 -0
  346. package/lib/test-corpus-inventory.mjs +103 -2
  347. package/lib/uninstall/uninstall.mjs +78 -12
  348. package/lib/validator.mjs +4 -6
  349. package/lib/worker/entrypoint.mjs +2 -1
  350. package/lib/worker/run.mjs +2 -2
  351. package/lib/worker/trace.mjs +5 -11
  352. package/lib/workflow-state.mjs +52 -8
  353. package/lib/workflows/liveness.mjs +203 -0
  354. package/lib/workflows/loader.mjs +177 -0
  355. package/lib/workflows/manifest-schema.mjs +71 -0
  356. package/lib/workflows/surface-parity.mjs +118 -0
  357. package/lib/workflows/validate.mjs +127 -0
  358. package/lib/writes/control-plane.mjs +140 -0
  359. package/lib/writes/envelope.mjs +206 -0
  360. package/lib/writes/sent-log.mjs +86 -0
  361. package/lib/writes/write-intent.mjs +109 -0
  362. package/package.json +20 -7
  363. package/personas/construct.md +12 -3
  364. package/registry/agent-manifest.json +117 -0
  365. package/registry/capabilities.json +1987 -0
  366. package/rules/common/comments.md +1 -0
  367. package/schemas/brand-voice.schema.json +24 -0
  368. package/schemas/capability-registry.schema.json +72 -0
  369. package/schemas/certification-run.schema.json +130 -0
  370. package/schemas/demo-recording.schema.json +46 -0
  371. package/schemas/eval-dataset.schema.json +79 -0
  372. package/schemas/execution-capability-profile.schema.json +46 -0
  373. package/schemas/execution-policy.schema.json +114 -0
  374. package/schemas/improvement-proposal.schema.json +65 -0
  375. package/schemas/mcp-tool-output.schema.json +61 -0
  376. package/schemas/platform-capabilities.schema.json +83 -0
  377. package/schemas/project-config.schema.json +215 -0
  378. package/schemas/project-demo.schema.json +60 -0
  379. package/schemas/provider-behavior-matrix.schema.json +91 -0
  380. package/schemas/scope.schema.json +197 -0
  381. package/schemas/specialist-trace.schema.json +107 -0
  382. package/schemas/team.schema.json +99 -0
  383. package/schemas/unified-registry.schema.json +546 -0
  384. package/scripts/sync-specialists.mjs +336 -106
  385. package/skills/docs/adr-workflow.md +1 -1
  386. package/skills/docs/codebase-research-workflow.md +3 -3
  387. package/skills/docs/prd-workflow.md +5 -6
  388. package/skills/docs/runbook-workflow.md +2 -2
  389. package/skills/docs/user-research-workflow.md +3 -3
  390. package/skills/operating/fleet-health-routing.md +77 -0
  391. package/skills/roles/ai-engineer.md +1 -1
  392. package/skills/roles/architect.md +0 -1
  393. package/skills/roles/business-strategist.md +1 -1
  394. package/skills/roles/data-analyst.telemetry.md +1 -1
  395. package/skills/roles/data-engineer.md +1 -1
  396. package/skills/roles/data-engineer.pipeline.md +1 -1
  397. package/skills/roles/data-engineer.vector-retrieval.md +1 -2
  398. package/skills/roles/data-engineer.warehouse.md +1 -1
  399. package/skills/roles/designer.accessibility.md +1 -1
  400. package/skills/roles/designer.md +0 -1
  401. package/skills/roles/devil-advocate.md +1 -1
  402. package/skills/roles/docs-keeper.md +1 -1
  403. package/skills/roles/evaluator.md +1 -1
  404. package/skills/roles/explorer.md +1 -1
  405. package/skills/roles/platform-engineer.md +1 -1
  406. package/skills/roles/qa.ai-eval.md +1 -2
  407. package/skills/roles/qa.api-contract.md +0 -1
  408. package/skills/roles/qa.data-pipeline.md +0 -1
  409. package/skills/roles/qa.md +0 -1
  410. package/skills/roles/qa.web-ui.md +0 -1
  411. package/skills/roles/release-manager.md +1 -1
  412. package/skills/roles/researcher.md +0 -2
  413. package/skills/roles/reviewer.md +0 -3
  414. package/skills/roles/security.ai.md +1 -1
  415. package/skills/roles/security.legal-compliance.md +1 -1
  416. package/skills/roles/security.md +0 -1
  417. package/skills/roles/security.privacy.md +0 -1
  418. package/skills/roles/security.supply-chain.md +1 -1
  419. package/skills/roles/sre.md +1 -1
  420. package/skills/roles/test-automation.md +1 -1
  421. package/skills/roles/trace-reviewer.md +1 -1
  422. package/skills/roles/ux-researcher.md +1 -1
  423. package/specialists/artifact-manifest.json +36 -36
  424. package/specialists/org/contracts/accessibility-to-qa.json +11 -3
  425. package/specialists/org/contracts/any-to-business-strategist.json +19 -7
  426. package/specialists/org/contracts/any-to-debugger.json +7 -1
  427. package/specialists/org/contracts/any-to-designer.json +7 -1
  428. package/specialists/org/contracts/any-to-docs-keeper.json +18 -4
  429. package/specialists/org/contracts/any-to-explorer.json +13 -4
  430. package/specialists/org/contracts/any-to-sre-incident.json +6 -2
  431. package/specialists/org/contracts/any-to-trace-reviewer.json +16 -4
  432. package/specialists/org/contracts/architect-to-ai-engineer.json +6 -2
  433. package/specialists/org/contracts/architect-to-data-engineer.json +17 -5
  434. package/specialists/org/contracts/architect-to-devil-advocate.json +11 -3
  435. package/specialists/org/contracts/architect-to-engineer.json +20 -4
  436. package/specialists/org/contracts/architect-to-evaluator.json +15 -5
  437. package/specialists/org/contracts/architect-to-legal-compliance.json +15 -5
  438. package/specialists/org/contracts/architect-to-operations.json +17 -4
  439. package/specialists/org/contracts/architect-to-platform-engineer.json +20 -4
  440. package/specialists/org/contracts/construct-to-orchestrator.json +10 -2
  441. package/specialists/org/contracts/data-analyst-to-product-manager.json +11 -2
  442. package/specialists/org/contracts/engineer-to-qa.json +20 -4
  443. package/specialists/org/contracts/engineer-to-reviewer.json +29 -5
  444. package/specialists/org/contracts/explorer-to-engineer.json +11 -3
  445. package/specialists/org/contracts/legal-compliance-to-release-manager.json +12 -4
  446. package/specialists/org/contracts/operations-to-user.json +53 -0
  447. package/specialists/org/contracts/operations-triage-output.json +53 -0
  448. package/specialists/org/contracts/pm-requirements-candidates.json +53 -0
  449. package/specialists/org/contracts/product-manager-to-architect.json +30 -10
  450. package/specialists/org/contracts/product-manager-to-data-analyst.json +13 -3
  451. package/specialists/org/contracts/product-manager-to-ux-researcher.json +15 -5
  452. package/specialists/org/contracts/qa-to-release-manager.json +11 -3
  453. package/specialists/org/contracts/researcher-to-architect.json +10 -2
  454. package/specialists/org/contracts/researcher-to-product-manager.json +16 -5
  455. package/specialists/org/contracts/reviewer-to-security.json +17 -3
  456. package/specialists/org/contracts/test-automation-to-engineer.json +11 -3
  457. package/specialists/org/contracts/trace-reviewer-to-sre.json +12 -4
  458. package/specialists/org/contracts/user-to-construct.json +11 -4
  459. package/specialists/org/frameworks/cx-architect-constraint-option-failure.md +66 -0
  460. package/specialists/org/frameworks/cx-engineer-feasibility-blast-radius.md +66 -0
  461. package/specialists/org/frameworks/cx-ops-dependency-sequencing.md +74 -0
  462. package/specialists/org/frameworks/cx-pm-value-tradeoff.md +66 -0
  463. package/specialists/org/frameworks/cx-qa-risk-based-coverage.md +69 -0
  464. package/specialists/org/groups/engineering-group.json +2 -6
  465. package/specialists/org/groups/governance-group.json +2 -3
  466. package/specialists/org/groups/operations-group.json +5 -8
  467. package/specialists/org/groups/product-group.json +4 -8
  468. package/specialists/org/groups/quality-group.json +3 -7
  469. package/specialists/org/groups/strategy-group.json +6 -9
  470. package/specialists/org/models.json.example +8 -0
  471. package/specialists/org/scopes/creative.json +6 -1
  472. package/specialists/org/scopes/operations.json +7 -1
  473. package/specialists/org/scopes/research.json +6 -1
  474. package/specialists/org/scopes/rnd.json +7 -1
  475. package/specialists/org/specialists/cx-architect.json +27 -8
  476. package/specialists/org/specialists/cx-designer.json +22 -8
  477. package/specialists/org/specialists/cx-engineer.json +71 -7
  478. package/specialists/org/specialists/cx-operations.json +89 -15
  479. package/specialists/org/specialists/cx-orchestrator.json +16 -4
  480. package/specialists/org/specialists/cx-product-manager.json +28 -9
  481. package/specialists/org/specialists/cx-qa.json +16 -6
  482. package/specialists/org/specialists/cx-researcher.json +41 -7
  483. package/specialists/org/specialists/cx-reviewer.json +61 -11
  484. package/specialists/org/specialists/cx-security.json +30 -10
  485. package/specialists/org/teams/design-team.json +3 -4
  486. package/specialists/org/teams/engineering-team.json +3 -10
  487. package/specialists/org/teams/governance-team.json +3 -5
  488. package/specialists/org/teams/operations-team.json +6 -12
  489. package/specialists/org/teams/product-management-team.json +2 -3
  490. package/specialists/org/teams/quality-team.json +4 -12
  491. package/specialists/org/teams/research-team.json +3 -3
  492. package/specialists/org/teams/strategy-team.json +7 -14
  493. package/specialists/prompts/cx-architect.md +20 -1
  494. package/specialists/prompts/cx-data-analyst.md +1 -1
  495. package/specialists/prompts/cx-designer.md +12 -4
  496. package/specialists/prompts/cx-engineer.md +15 -1
  497. package/specialists/prompts/cx-operations.md +14 -2
  498. package/specialists/prompts/cx-orchestrator.md +9 -5
  499. package/specialists/prompts/cx-product-manager.md +5 -1
  500. package/specialists/prompts/cx-qa.md +6 -2
  501. package/specialists/prompts/cx-researcher.md +27 -31
  502. package/specialists/prompts/cx-reviewer.md +19 -1
  503. package/specialists/prompts/cx-security.md +5 -1
  504. package/templates/distribution/construct-brand.typ +123 -59
  505. package/templates/distribution/construct-decision.typ +6 -3
  506. package/templates/distribution/construct-pdf.typ +11 -4
  507. package/templates/distribution/construct-prd.typ +6 -3
  508. package/templates/distribution/construct-research.typ +7 -4
  509. package/vendor/pandoc-ext/README.md +3 -0
  510. package/vendor/pandoc-ext/diagram.lua +687 -0
  511. package/lib/providers/contract/adapters/git/index.mjs +0 -115
  512. package/lib/providers/contract/adapters/slack/index.mjs +0 -175
  513. package/specialists/org/contracts/business-strategist-to-product-manager.json +0 -39
  514. package/specialists/org/contracts/construct-to-rd-lead.json +0 -53
  515. package/specialists/org/contracts/data-engineer-to-platform-engineer.json +0 -36
  516. package/specialists/org/contracts/designer-to-accessibility.json +0 -36
  517. package/specialists/org/contracts/platform-engineer-to-engineer.json +0 -31
  518. package/specialists/org/contracts/qa-to-test-automation.json +0 -42
  519. package/specialists/org/contracts/rd-lead-to-architect.json +0 -38
  520. package/specialists/org/contracts/sre-to-release-manager.json +0 -36
  521. package/specialists/org/specialists/cx-accessibility.json +0 -69
  522. package/specialists/org/specialists/cx-ai-engineer.json +0 -75
  523. package/specialists/org/specialists/cx-business-strategist.json +0 -72
  524. package/specialists/org/specialists/cx-data-engineer.json +0 -71
  525. package/specialists/org/specialists/cx-devil-advocate.json +0 -71
  526. package/specialists/org/specialists/cx-docs-keeper.json +0 -82
  527. package/specialists/org/specialists/cx-evaluator.json +0 -69
  528. package/specialists/org/specialists/cx-explorer.json +0 -69
  529. package/specialists/org/specialists/cx-legal-compliance.json +0 -74
  530. package/specialists/org/specialists/cx-oracle.json +0 -46
  531. package/specialists/org/specialists/cx-platform-engineer.json +0 -80
  532. package/specialists/org/specialists/cx-rd-lead.json +0 -73
  533. package/specialists/org/specialists/cx-release-manager.json +0 -77
  534. package/specialists/org/specialists/cx-sre.json +0 -94
  535. package/specialists/org/specialists/cx-test-automation.json +0 -69
  536. package/specialists/org/specialists/cx-trace-reviewer.json +0 -69
  537. package/specialists/org/specialists/cx-ux-researcher.json +0 -68
  538. package/specialists/org/teams/accessibility-team.json +0 -39
  539. package/specialists/org/teams/ux-research-team.json +0 -39
  540. package/specialists/prompts/cx-accessibility.md +0 -55
  541. package/specialists/prompts/cx-ai-engineer.md +0 -124
  542. package/specialists/prompts/cx-business-strategist.md +0 -58
  543. package/specialists/prompts/cx-data-engineer.md +0 -55
  544. package/specialists/prompts/cx-devil-advocate.md +0 -59
  545. package/specialists/prompts/cx-docs-keeper.md +0 -164
  546. package/specialists/prompts/cx-evaluator.md +0 -49
  547. package/specialists/prompts/cx-explorer.md +0 -71
  548. package/specialists/prompts/cx-legal-compliance.md +0 -58
  549. package/specialists/prompts/cx-oracle.md +0 -98
  550. package/specialists/prompts/cx-platform-engineer.md +0 -97
  551. package/specialists/prompts/cx-rd-lead.md +0 -59
  552. package/specialists/prompts/cx-release-manager.md +0 -54
  553. package/specialists/prompts/cx-sre.md +0 -111
  554. package/specialists/prompts/cx-test-automation.md +0 -55
  555. package/specialists/prompts/cx-trace-reviewer.md +0 -101
  556. package/specialists/prompts/cx-ux-researcher.md +0 -53
@@ -4,10 +4,8 @@
4
4
  "owner": "product-manager",
5
5
  "roles": [
6
6
  "product-manager",
7
- "ux-researcher",
8
7
  "designer",
9
- "researcher",
10
- "accessibility"
8
+ "researcher"
11
9
  ],
12
10
  "decisionRights": [
13
11
  "intake-triage",
@@ -22,10 +20,10 @@
22
20
  ],
23
21
  "escalationPath": [
24
22
  "product-manager",
25
- "rd-lead",
23
+ "architect",
26
24
  "orchestrator"
27
25
  ],
28
- "charter": "Translate user reality into shippable change. Owns problem framing, requirements, evidence gathering, design decisions, and acceptance criteria. Does not own implementation choices, deployment decisions, or security policy. Escalates scope conflicts to R&D leadership.",
26
+ "charter": "Translate user reality into shippable change. Owns problem framing, requirements, evidence gathering, design decisions, and acceptance criteria — including strategic/market framing (business-strategist), accessibility (designer), and user/UX + codebase research (researcher), all folded in at construct-rf26.11. Does not own implementation choices, deployment decisions, or security policy.",
29
27
  "contact": {
30
28
  "slack": "#product",
31
29
  "email": "product@example.com",
@@ -38,9 +36,7 @@
38
36
  "kind": "group",
39
37
  "squads": [
40
38
  "product-management-team",
41
- "ux-research-team",
42
39
  "design-team",
43
- "research-team",
44
- "accessibility-team"
40
+ "research-team"
45
41
  ]
46
42
  }
@@ -4,11 +4,7 @@
4
4
  "owner": "reviewer",
5
5
  "roles": [
6
6
  "reviewer",
7
- "qa",
8
- "test-automation",
9
- "evaluator",
10
- "trace-reviewer",
11
- "devil-advocate"
7
+ "qa"
12
8
  ],
13
9
  "decisionRights": [
14
10
  "quality-gate-approval",
@@ -24,9 +20,9 @@
24
20
  "escalationPath": [
25
21
  "reviewer",
26
22
  "architect",
27
- "rd-lead"
23
+ "orchestrator"
28
24
  ],
29
- "charter": "Verify the system does what it claims and surface what is broken. Owns review, testing, evaluation, trace analysis, and devil's-advocate framing. Does not own implementation or product decisions. Escalates quality vs. schedule conflicts to architecture/R&D.",
25
+ "charter": "Verify the system does what it claims and surface what is broken. Owns code review, plan-challenge framing, AI/eval rigor, and fleet-level trace analysis (devil-advocate, evaluator, trace-reviewer folded into cx-reviewer; test-automation folded into cx-qa; construct-rf26.11), plus test strategy and automation. Does not own implementation or product decisions. Escalates quality vs. schedule conflicts to architecture.",
30
26
  "contact": {
31
27
  "slack": "#quality",
32
28
  "email": "quality@example.com",
@@ -1,13 +1,10 @@
1
1
  {
2
2
  "id": "strategy-group",
3
3
  "name": "Strategy Group",
4
- "owner": "rd-lead",
4
+ "owner": "orchestrator",
5
5
  "roles": [
6
- "rd-lead",
7
- "business-strategist",
8
- "data-analyst",
9
- "explorer",
10
- "orchestrator"
6
+ "orchestrator",
7
+ "data-analyst"
11
8
  ],
12
9
  "decisionRights": [
13
10
  "direction-setting",
@@ -22,14 +19,14 @@
22
19
  "ops-procedures"
23
20
  ],
24
21
  "escalationPath": [
25
- "rd-lead",
22
+ "architect",
26
23
  "orchestrator"
27
24
  ],
28
- "charter": "Hold the long view: what to build next, what to measure, what to retire. Owns R&D direction, strategic prioritization, measurement design, cross-team orchestration, and exploration. Does not own implementation or day-to-day operations. Arbitrates escalations from other groups.",
25
+ "charter": "Hold the long view on measurement and cross-team dispatch. Owns metrics/measurement design (cx-data-analyst) and cross-team orchestration (cx-orchestrator). R&D framing-gate duties folded into cx-architect and exploration folded into cx-researcher (rd-lead and explorer retired/folded; construct-rf26.11) — this group no longer owns R&D direction or exploration directly. Does not own implementation or day-to-day operations.",
29
26
  "contact": {
30
27
  "slack": "#strategy",
31
28
  "email": "strategy@example.com",
32
- "owner": "rd-lead"
29
+ "owner": "orchestrator"
33
30
  },
34
31
  "evidence": [
35
32
  "AGENTS.md (rnd profile departments section)"
@@ -0,0 +1,8 @@
1
+ {
2
+ "_comment": "Starter model registry. Copy to models.json to activate operator-supplied tier defaults. Construct ships no active models.json: an unconfigured machine degrades honestly (no implicit model defaults) rather than resolving a model whose credentials may be absent. Precedence when active: CX_MODEL_<TIER> / CONSTRUCT_MODEL_<TIER> env pins ALWAYS win; registry tiers below fill only the tiers no env pin sets. Each tier is either a bare model id string or {\"primary\": id, \"fallback\": [ids]}. Resolution uses the primary.",
3
+ "models": {
4
+ "reasoning": { "primary": "anthropic/claude-opus-4-6", "fallback": ["anthropic/claude-sonnet-4-6"] },
5
+ "standard": { "primary": "anthropic/claude-sonnet-4-6", "fallback": ["anthropic/claude-opus-4-6"] },
6
+ "fast": { "primary": "anthropic/claude-haiku-4-5-20251001", "fallback": ["anthropic/claude-sonnet-4-6"] }
7
+ }
8
+ }
@@ -35,7 +35,12 @@
35
35
  "sessionReflect": "on",
36
36
  "sessionOptimize": "on"
37
37
  },
38
- "defaultSkills": [],
38
+ "defaultSkills": [
39
+ "docs/user-research-workflow",
40
+ "strategy/narrative-arc",
41
+ "docs/memo-and-decision-capture",
42
+ "quality-gates/review-work"
43
+ ],
39
44
  "toneDefaults": {
40
45
  "one-pager": "friendly",
41
46
  "memo": "friendly",
@@ -33,7 +33,13 @@
33
33
  "sessionReflect": "on",
34
34
  "sessionOptimize": "on"
35
35
  },
36
- "defaultSkills": [],
36
+ "defaultSkills": [
37
+ "operating/incident-response",
38
+ "operating/oncall-rotation",
39
+ "operating/change-management",
40
+ "docs/runbook-workflow",
41
+ "quality-gates/verify-change"
42
+ ],
37
43
  "toneDefaults": {
38
44
  "runbook": "blameless",
39
45
  "incident-report": "blameless",
@@ -33,7 +33,12 @@
33
33
  "sessionReflect": "on",
34
34
  "sessionOptimize": "on"
35
35
  },
36
- "defaultSkills": [],
36
+ "defaultSkills": [
37
+ "docs/research-workflow",
38
+ "docs/evidence-ingest-workflow",
39
+ "docs/transcript-synthesis",
40
+ "strategy/market-research-methods"
41
+ ],
37
42
  "toneDefaults": {
38
43
  "research-brief": "direct",
39
44
  "evidence-brief": "direct",
@@ -53,7 +53,13 @@
53
53
  "sessionReflect": "on",
54
54
  "sessionOptimize": "on"
55
55
  },
56
- "defaultSkills": [],
56
+ "defaultSkills": [
57
+ "docs/prd-workflow",
58
+ "docs/adr-workflow",
59
+ "docs/research-workflow",
60
+ "quality-gates/verify-change",
61
+ "operating/incident-response"
62
+ ],
57
63
  "toneDefaults": {
58
64
  "prd": "decision-forcing-direct",
59
65
  "prfaq": "friendly",
@@ -10,11 +10,15 @@
10
10
  "architecture/caching",
11
11
  "architecture/cloud-native",
12
12
  "architecture/message-queue",
13
- "architecture/security-arch"
13
+ "architecture/security-arch",
14
+ "ai/agent-dev",
15
+ "ai/prompt-and-eval",
16
+ "docs/research-workflow"
14
17
  ],
15
18
  "events": [
16
19
  "adr.requested",
17
- "arch.boundary.violated"
20
+ "arch.boundary.violated",
21
+ "research.gate.required"
18
22
  ],
19
23
  "fence": {
20
24
  "allowedPaths": [
@@ -24,13 +28,20 @@
24
28
  "docs/rfc/**",
25
29
  "docs/guides/concepts/architecture.md",
26
30
  "docs/concepts/architecture.md",
27
- "docs/system-design/**"
31
+ "docs/system-design/**",
32
+ "docs/notes/research/**",
33
+ "docs/research/**",
34
+ "docs/experiments/**",
35
+ ".cx/experiments/**"
28
36
  ],
29
37
  "allowedBdLabels": [
30
38
  "architecture",
31
39
  "adr",
32
40
  "rfc",
33
- "design"
41
+ "design",
42
+ "rd",
43
+ "research",
44
+ "experiment"
34
45
  ],
35
46
  "allowedCommands": [
36
47
  "bd create",
@@ -61,13 +72,21 @@
61
72
  "coupling and cohesion",
62
73
  "unvalidated assumptions",
63
74
  "interface contracts",
64
- "tech debt accumulation"
75
+ "tech debt accumulation",
76
+ "hypothesis validation",
77
+ "experiment progress",
78
+ "assumption tracking",
79
+ "learning velocity"
65
80
  ],
66
81
  "riskSignals": [
67
82
  "missing ADRs",
68
83
  "implicit contracts",
69
84
  "data model drift",
70
- "undocumented invariants"
85
+ "undocumented invariants",
86
+ "untested assumptions",
87
+ "premature hardening",
88
+ "stalled experiments",
89
+ "unfalsifiable claims"
71
90
  ],
72
91
  "artifactBias": [
73
92
  "adrs",
@@ -80,8 +99,8 @@
80
99
  "killSwitchEnv": "CONSTRUCT_ROLE_ARCHITECT",
81
100
  "handoffCandidates": [
82
101
  "engineer",
83
- "platform-engineer",
84
- "reviewer"
102
+ "reviewer",
103
+ "researcher"
85
104
  ],
86
105
  "team": "engineering-team",
87
106
  "teamId": "engineering-team",
@@ -11,22 +11,28 @@
11
11
  "frontend-design/component-patterns",
12
12
  "frontend-design/state-management",
13
13
  "frontend-design/engineering",
14
- "frontend-design/accessibility"
14
+ "frontend-design/accessibility",
15
+ "frontend-design/screen-reader-testing"
15
16
  ],
16
17
  "events": [
17
- "design.requested"
18
+ "design.requested",
19
+ "a11y.violation"
18
20
  ],
19
21
  "fence": {
20
22
  "allowedPaths": [
21
23
  "docs/design/**",
22
24
  "docs/wireframes/**",
23
- "design/**"
25
+ "design/**",
26
+ "docs/accessibility/**",
27
+ "docs/a11y/**"
24
28
  ],
25
29
  "allowedBdLabels": [
26
30
  "design",
27
31
  "ux",
28
32
  "ui",
29
- "wireframe"
33
+ "wireframe",
34
+ "accessibility",
35
+ "a11y"
30
36
  ],
31
37
  "allowedCommands": [
32
38
  "bd create",
@@ -57,13 +63,21 @@
57
63
  "interaction completeness",
58
64
  "state coverage",
59
65
  "design consistency",
60
- "accessibility compliance"
66
+ "accessibility compliance",
67
+ "keyboard navigability",
68
+ "screen reader compatibility",
69
+ "contrast compliance",
70
+ "ARIA correctness"
61
71
  ],
62
72
  "riskSignals": [
63
73
  "missing error states",
64
74
  "no empty states",
65
75
  "inconsistent patterns",
66
- "untested responsive breakpoints"
76
+ "untested responsive breakpoints",
77
+ "ARIA added without testing",
78
+ "keyboard traps",
79
+ "contrast failures",
80
+ "missing focus indicators"
67
81
  ],
68
82
  "artifactBias": [
69
83
  "notes",
@@ -71,13 +85,13 @@
71
85
  ]
72
86
  },
73
87
  "canEdit": true,
74
- "claudeTools": "Read,Grep,Glob,LS,Edit,Write,Bash,list_skills,get_skill,search_skills,memory_search,memory_add_observations",
88
+ "claudeTools": "Read,Grep,Glob,LS,Edit,Write,Bash,list_skills,get_skill,search_skills,get_template,list_templates,memory_search,memory_add_observations",
75
89
  "internal": true,
76
90
  "killSwitchEnv": "CONSTRUCT_ROLE_DESIGNER",
77
91
  "handoffCandidates": [
78
92
  "product-manager",
79
93
  "engineer",
80
- "accessibility"
94
+ "qa"
81
95
  ],
82
96
  "team": "design-team",
83
97
  "teamId": "design-team",
@@ -24,12 +24,30 @@
24
24
  "frameworks/spring-boot",
25
25
  "exploration/unknown-codebase-onboarding",
26
26
  "exploration/tracer-bullet-method",
27
- "exploration/dependency-graph-reading"
27
+ "exploration/dependency-graph-reading",
28
+ "ai/agent-dev",
29
+ "ai/rag-system",
30
+ "ai/llm-security",
31
+ "ai/prompt-and-eval",
32
+ "ai/prompt-optimizer",
33
+ "ai/ml-ops",
34
+ "devops/data-engineering",
35
+ "devops/database",
36
+ "devops/observability",
37
+ "operating/raw-data-structuring",
38
+ "devops/ci-cd",
39
+ "devops/monorepo",
40
+ "devops/containerization",
41
+ "devops/dependency-management",
42
+ "devops/devsecops",
43
+ "devops/cost-optimization"
28
44
  ],
29
45
  "events": [
30
46
  "incident.handoff",
31
47
  "bug.assigned",
32
- "feature.assigned"
48
+ "feature.assigned",
49
+ "infra.change.requested",
50
+ "service.scale.event"
33
51
  ],
34
52
  "fence": {
35
53
  "allowedPaths": [
@@ -38,14 +56,34 @@
38
56
  "src/**",
39
57
  "app/**",
40
58
  "tests/**",
41
- "docs/**"
59
+ "docs/**",
60
+ "docs/ai/**",
61
+ "docs/specialists/**",
62
+ "specialists/**",
63
+ "skills/ai/**",
64
+ "docs/data/**",
65
+ "docs/etl/**",
66
+ "docs/platform/**",
67
+ "docs/infra/**",
68
+ "infra/**",
69
+ "terraform/**",
70
+ "k8s/**"
42
71
  ],
43
72
  "allowedBdLabels": [
44
73
  "bug",
45
74
  "feature",
46
75
  "task",
47
76
  "engineering",
48
- "fix"
77
+ "fix",
78
+ "ai",
79
+ "agent",
80
+ "model",
81
+ "data",
82
+ "etl",
83
+ "pipeline",
84
+ "platform",
85
+ "infrastructure",
86
+ "infra"
49
87
  ],
50
88
  "allowedCommands": [
51
89
  "bd create",
@@ -65,6 +103,8 @@
65
103
  "push",
66
104
  "edit:specialists/org",
67
105
  "edit:lib/setup.mjs",
106
+ "edit:bin/construct-postinstall.mjs",
107
+ "edit:lib/hooks/**",
68
108
  "edit:claude/settings.template.json"
69
109
  ]
70
110
  },
@@ -77,13 +117,35 @@
77
117
  "implementation progress",
78
118
  "test coverage gaps",
79
119
  "build health",
80
- "PR velocity"
120
+ "PR velocity",
121
+ "model reliability",
122
+ "failure mode coverage",
123
+ "prompt stability",
124
+ "eval health",
125
+ "pipeline reliability",
126
+ "data quality",
127
+ "schema contract adherence",
128
+ "idempotency",
129
+ "developer friction",
130
+ "dependency freshness"
81
131
  ],
82
132
  "riskSignals": [
83
133
  "failing CI",
84
134
  "stale PRs",
85
135
  "untested paths",
86
- "pattern drift"
136
+ "pattern drift",
137
+ "untested failure paths",
138
+ "hallucination risk dismissed",
139
+ "prompt drift",
140
+ "demo-only validation",
141
+ "non-idempotent pipelines",
142
+ "missing data quality tests",
143
+ "schema drift",
144
+ "uncontracted outputs",
145
+ "slow CI",
146
+ "stale dependencies",
147
+ "manual steps in pipelines",
148
+ "config only author understands"
87
149
  ],
88
150
  "artifactBias": [
89
151
  "notes",
@@ -98,7 +160,9 @@
98
160
  "qa",
99
161
  "reviewer",
100
162
  "security",
101
- "sre"
163
+ "operations",
164
+ "architect",
165
+ "data-analyst"
102
166
  ],
103
167
  "team": "engineering-team",
104
168
  "teamId": "engineering-team",
@@ -10,19 +10,50 @@
10
10
  "docs/init-project",
11
11
  "operating/incident-response",
12
12
  "operating/oncall-rotation",
13
- "operating/change-management"
13
+ "operating/change-management",
14
+ "devops/observability",
15
+ "devops/ci-cd",
16
+ "devops/performance",
17
+ "devops/incident-response",
18
+ "devops/git-workflow",
19
+ "quality-gates/verify-change",
20
+ "docs/memo-and-decision-capture",
21
+ "docs/adr-workflow",
22
+ "docs/runbook-workflow",
23
+ "docs/init-docs",
24
+ "docs/document-ingest-workflow"
14
25
  ],
15
26
  "events": [
16
- "plan.requested"
27
+ "plan.requested",
28
+ "push_gate.fail",
29
+ "service.down",
30
+ "mcp.unhealthy.persistent",
31
+ "edit_loop.stuck",
32
+ "release.candidate",
33
+ "version.bump.needed",
34
+ "pr.merged.no-docs",
35
+ "changelog.missing",
36
+ "readme.stale",
37
+ "document.stale"
17
38
  ],
18
39
  "fence": {
19
40
  "allowedPaths": [
20
- "docs/ops/**",
21
- "docs/operations/**"
41
+ "docs/**",
42
+ "**/README.md",
43
+ "CHANGELOG.md"
22
44
  ],
23
45
  "allowedBdLabels": [
24
46
  "ops",
25
- "operations"
47
+ "operations",
48
+ "incident",
49
+ "sre",
50
+ "reliability",
51
+ "release",
52
+ "version",
53
+ "shipping",
54
+ "docs",
55
+ "doc-drift",
56
+ "changelog"
26
57
  ],
27
58
  "allowedCommands": [
28
59
  "bd create",
@@ -32,11 +63,25 @@
32
63
  "approvalRequired": [
33
64
  "commit",
34
65
  "push",
35
- "edit:**"
66
+ "edit:package.json",
67
+ "edit:lib/**",
68
+ "edit:bin/**",
69
+ "edit:specialists/**"
36
70
  ]
37
71
  },
38
- "docArtifacts": [],
39
- "watchConditions": [],
72
+ "docArtifacts": [
73
+ "runbook",
74
+ "incident-report",
75
+ "postmortem",
76
+ "memo",
77
+ "changelog"
78
+ ],
79
+ "watchConditions": [
80
+ {
81
+ "watcher": "wide-blast-radius",
82
+ "reason": "wide blast radius — operational readiness review"
83
+ }
84
+ ],
40
85
  "permissions": {},
41
86
  "promptFile": "specialists/prompts/cx-operations.md",
42
87
  "embedOrientation": {
@@ -44,27 +89,56 @@
44
89
  "dependency sequencing",
45
90
  "ownership clarity",
46
91
  "blocker resolution",
47
- "delivery cadence"
92
+ "delivery cadence",
93
+ "reliability posture",
94
+ "observability coverage",
95
+ "incident readiness",
96
+ "SLO adherence",
97
+ "release readiness",
98
+ "rollback viability",
99
+ "changelog completeness",
100
+ "migration safety",
101
+ "documentation freshness",
102
+ "decision traceability",
103
+ "context completeness",
104
+ "onboarding clarity"
48
105
  ],
49
106
  "riskSignals": [
50
107
  "hidden dependencies",
51
108
  "unowned tasks",
52
109
  "blocked work aging",
53
- "parallel plans with serial reality"
110
+ "parallel plans with serial reality",
111
+ "missing alerts",
112
+ "untested rollbacks",
113
+ "observability gaps",
114
+ "SLOs defined post-incident",
115
+ "untested rollback",
116
+ "irreversible migrations",
117
+ "missing changelog entries",
118
+ "canary without rollback trigger",
119
+ "stale docs",
120
+ "undocumented decisions",
121
+ "missing context updates",
122
+ "tribal knowledge growing"
54
123
  ],
55
124
  "artifactBias": [
56
125
  "notes",
57
- "memos"
126
+ "memos",
127
+ "adrs"
58
128
  ]
59
129
  },
60
- "canEdit": false,
130
+ "canEdit": true,
61
131
  "claudeTools": "Read,Grep,Glob,LS,Bash,Edit,Write,list_skills,get_skill,search_skills,get_template,list_templates,memory_search,memory_add_observations",
62
132
  "internal": true,
133
+ "severityImmediate": [
134
+ "service.down"
135
+ ],
63
136
  "killSwitchEnv": "CONSTRUCT_ROLE_OPERATIONS",
64
137
  "handoffCandidates": [
65
- "sre",
66
- "platform-engineer",
67
- "release-manager"
138
+ "engineer",
139
+ "debugger",
140
+ "qa",
141
+ "reviewer"
68
142
  ],
69
143
  "team": "operations-team",
70
144
  "teamId": "operations-team",
@@ -9,7 +9,10 @@
9
9
  "ai/orchestration-workflow",
10
10
  "operating/orchestration-reference",
11
11
  "operating/change-management",
12
- "operating/unstructured-triage"
12
+ "operating/unstructured-triage",
13
+ "exploration/dependency-graph-reading",
14
+ "roles/trace-reviewer",
15
+ "operating/fleet-health-routing"
13
16
  ],
14
17
  "events": [
15
18
  "handoff.received"
@@ -50,13 +53,22 @@
50
53
  "routing accuracy",
51
54
  "workload balance",
52
55
  "handoff completeness",
53
- "specialist utilization"
56
+ "specialist utilization",
57
+ "parity drift",
58
+ "contract violations",
59
+ "doctor escalations",
60
+ "alignment census staleness",
61
+ "outcomes degradation"
54
62
  ],
55
63
  "riskSignals": [
56
64
  "misrouted tasks",
57
65
  "overloaded specialists",
58
66
  "dropped handoffs",
59
- "stale queued work"
67
+ "stale queued work",
68
+ "unrouted systemic gaps",
69
+ "auto actions needing approval",
70
+ "stale alignment census",
71
+ "missing read-model signals"
60
72
  ],
61
73
  "artifactBias": [
62
74
  "notes",
@@ -73,7 +85,7 @@
73
85
  "engineer",
74
86
  "security",
75
87
  "qa",
76
- "sre"
88
+ "operations"
77
89
  ],
78
90
  "team": "strategy-team",
79
91
  "teamId": "strategy-team",