@geraldmaron/construct 1.4.2 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +57 -45
  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 +273 -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 +104 -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
@@ -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",