@aifabrix/builder 2.43.0 → 2.44.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 (371) hide show
  1. package/.cursor/rules/anchor-docs.mdc +15 -0
  2. package/.cursor/rules/cli-layout.mdc +75 -0
  3. package/.cursor/rules/project-rules.mdc +8 -0
  4. package/.npmrc.token +1 -0
  5. package/.nyc_output/55e9d034-ddab-4579-a706-e02a91d75c91.json +1 -0
  6. package/.nyc_output/processinfo/55e9d034-ddab-4579-a706-e02a91d75c91.json +1 -0
  7. package/.nyc_output/processinfo/index.json +1 -0
  8. package/README.md +1 -1
  9. package/anchor-docs/README.md +10 -0
  10. package/anchor-docs/_TEMPLATE +24 -0
  11. package/bin/aifabrix.js +13 -4
  12. package/integration/hubspot-test/README.md +31 -0
  13. package/integration/hubspot-test/create-hubspot.js +5 -5
  14. package/integration/hubspot-test/hubspot-test-datasource-company.json +58 -462
  15. package/integration/hubspot-test/hubspot-test-datasource-contact.json +61 -555
  16. package/integration/hubspot-test/hubspot-test-datasource-deal.json +63 -506
  17. package/integration/hubspot-test/hubspot-test-datasource-users.json +42 -83
  18. package/integration/hubspot-test/hubspot-test-deploy.json +3 -3
  19. package/integration/hubspot-test/test-dataplane-down-tests.js +1 -7
  20. package/integration/hubspot-test/test-dataplane-down.js +3 -3
  21. package/integration/hubspot-test/test.js +35 -43
  22. package/integration/hubspot-test/wizard-hubspot-test-headless.yaml +23 -0
  23. package/integration/roundtrip-test-local/README.md +144 -0
  24. package/integration/roundtrip-test-local/application.yaml +13 -0
  25. package/integration/roundtrip-test-local/env.template +15 -0
  26. package/integration/roundtrip-test-local/roundtrip-test-local-datasource-roundtrip-test-company.yaml +14 -0
  27. package/integration/roundtrip-test-local/roundtrip-test-local-deploy.json +61 -0
  28. package/integration/roundtrip-test-local/roundtrip-test-local-system.yaml +25 -0
  29. package/integration/roundtrip-test-local2/README.md +144 -0
  30. package/integration/roundtrip-test-local2/application.yaml +13 -0
  31. package/integration/roundtrip-test-local2/env.template +15 -0
  32. package/integration/roundtrip-test-local2/roundtrip-test-local2-datasource-company.yaml +31 -0
  33. package/integration/roundtrip-test-local2/roundtrip-test-local2-deploy.json +86 -0
  34. package/integration/roundtrip-test-local2/roundtrip-test-local2-system.yaml +25 -0
  35. package/integration/test/wizard.yaml +8 -0
  36. package/jest.config.default.js +10 -0
  37. package/jest.config.integration.fixtures.js +22 -0
  38. package/jest.config.integration.js +21 -18
  39. package/jest.config.isolated.js +10 -0
  40. package/jest.projects.js +301 -0
  41. package/lib/api/certificates.api.js +62 -0
  42. package/lib/api/datasources-core.api.js +3 -3
  43. package/lib/api/dev-mtls-request.js +110 -0
  44. package/lib/api/dev-server-https.js +145 -0
  45. package/lib/api/dev.api.js +133 -144
  46. package/lib/api/index.js +11 -3
  47. package/lib/api/pipeline.api.js +67 -20
  48. package/lib/api/types/certificates.types.js +48 -0
  49. package/lib/api/types/dev.types.js +4 -3
  50. package/lib/api/types/pipeline.types.js +8 -5
  51. package/lib/api/types/validation-run.types.js +56 -0
  52. package/lib/api/validation-run.api.js +111 -0
  53. package/lib/api/validation-runner.js +109 -0
  54. package/lib/app/certification-show-enrich.js +129 -0
  55. package/lib/app/certification-verify-rows.js +60 -0
  56. package/lib/app/config.js +1 -1
  57. package/lib/app/deploy-status-display.js +2 -2
  58. package/lib/app/deploy.js +7 -6
  59. package/lib/app/display.js +2 -1
  60. package/lib/app/dockerfile.js +3 -2
  61. package/lib/app/down.js +2 -1
  62. package/lib/app/helpers.js +6 -5
  63. package/lib/app/index.js +27 -8
  64. package/lib/app/list.js +7 -6
  65. package/lib/app/push.js +4 -3
  66. package/lib/app/register.js +16 -7
  67. package/lib/app/rotate-secret.js +14 -13
  68. package/lib/app/run-container-start.js +184 -0
  69. package/lib/app/run-docker-fallback.js +108 -0
  70. package/lib/app/run-env-compose.js +30 -42
  71. package/lib/app/run-helpers.js +49 -126
  72. package/lib/app/run-infra-requirements.js +30 -0
  73. package/lib/app/run-resolve-image.js +21 -0
  74. package/lib/app/run.js +74 -21
  75. package/lib/app/show-display.js +44 -1
  76. package/lib/app/show.js +93 -9
  77. package/lib/build/index.js +13 -10
  78. package/lib/certification/cli-cert-sync-skip.js +21 -0
  79. package/lib/certification/merge-certification-from-artifact.js +185 -0
  80. package/lib/certification/post-unified-cert-sync.js +33 -0
  81. package/lib/certification/sync-after-external-command.js +52 -0
  82. package/lib/certification/sync-system-certification.js +197 -0
  83. package/lib/cli/index.js +2 -0
  84. package/lib/cli/setup-app.help.js +67 -0
  85. package/lib/cli/setup-app.js +61 -121
  86. package/lib/cli/setup-app.test-commands.js +195 -0
  87. package/lib/cli/setup-auth.js +19 -5
  88. package/lib/cli/setup-credential-deployment.js +22 -8
  89. package/lib/cli/setup-dev-path-commands.js +124 -0
  90. package/lib/cli/setup-dev.js +170 -113
  91. package/lib/cli/setup-environment.js +7 -1
  92. package/lib/cli/setup-external-system.js +84 -23
  93. package/lib/cli/setup-infra.js +126 -47
  94. package/lib/cli/setup-parameters.js +32 -0
  95. package/lib/cli/setup-secrets.js +137 -18
  96. package/lib/cli/setup-service-user.js +1 -1
  97. package/lib/cli/setup-utility.js +54 -22
  98. package/lib/commands/app-down.js +5 -7
  99. package/lib/commands/app-install.js +14 -7
  100. package/lib/commands/app-logs.js +13 -10
  101. package/lib/commands/app-shell.js +4 -1
  102. package/lib/commands/app-test.js +25 -19
  103. package/lib/commands/app.js +32 -11
  104. package/lib/commands/auth-config.js +6 -6
  105. package/lib/commands/auth-status.js +4 -3
  106. package/lib/commands/credential-env.js +4 -3
  107. package/lib/commands/credential-list.js +5 -4
  108. package/lib/commands/credential-push.js +4 -3
  109. package/lib/commands/datasource-unified-test-cli.js +428 -0
  110. package/lib/commands/datasource-unified-test-cli.options.js +191 -0
  111. package/lib/commands/datasource-unified-test-e2e-cli-helpers.js +106 -0
  112. package/lib/commands/datasource-validation-cli.js +143 -0
  113. package/lib/commands/datasource.js +125 -95
  114. package/lib/commands/deployment-list.js +6 -5
  115. package/lib/commands/dev-cli-handlers.js +122 -18
  116. package/lib/commands/dev-down.js +4 -3
  117. package/lib/commands/dev-init.js +231 -116
  118. package/lib/commands/dev-show-display.js +473 -0
  119. package/lib/commands/login-credentials.js +3 -2
  120. package/lib/commands/login-device.js +4 -3
  121. package/lib/commands/login.js +5 -4
  122. package/lib/commands/logout.js +8 -7
  123. package/lib/commands/parameters-validate.js +54 -0
  124. package/lib/commands/repair-datasource.js +314 -68
  125. package/lib/commands/repair-env-template.js +2 -2
  126. package/lib/commands/repair.js +21 -3
  127. package/lib/commands/secrets-list.js +23 -12
  128. package/lib/commands/secrets-remove-all.js +220 -0
  129. package/lib/commands/secrets-remove.js +21 -12
  130. package/lib/commands/secrets-set.js +21 -12
  131. package/lib/commands/secrets-validate.js +4 -4
  132. package/lib/commands/secure.js +10 -9
  133. package/lib/commands/service-user.js +26 -25
  134. package/lib/commands/test-e2e-external.js +27 -1
  135. package/lib/commands/up-common.js +3 -2
  136. package/lib/commands/up-dataplane.js +29 -16
  137. package/lib/commands/up-miso.js +19 -29
  138. package/lib/commands/upload.js +149 -39
  139. package/lib/commands/wizard-core-helpers.js +1 -1
  140. package/lib/commands/wizard-dataplane.js +4 -3
  141. package/lib/commands/wizard-helpers.js +3 -3
  142. package/lib/commands/wizard.js +2 -2
  143. package/lib/core/admin-secrets.js +14 -5
  144. package/lib/core/audit-logger.js +12 -4
  145. package/lib/core/config-attach-extensions.js +46 -0
  146. package/lib/core/config-runtime-paths.js +29 -0
  147. package/lib/core/config.js +55 -56
  148. package/lib/core/diff.js +3 -2
  149. package/lib/core/ensure-encryption-key.js +1 -1
  150. package/lib/core/secrets-ensure-infra.js +77 -0
  151. package/lib/core/secrets-ensure.js +120 -64
  152. package/lib/core/secrets-env-write.js +35 -7
  153. package/lib/core/secrets-infra-placeholder-sync.js +61 -0
  154. package/lib/core/secrets.js +200 -37
  155. package/lib/core/templates-env.js +4 -3
  156. package/lib/datasource/abac-validator.js +1 -10
  157. package/lib/datasource/deploy.js +75 -53
  158. package/lib/datasource/field-reference-validator.js +9 -6
  159. package/lib/datasource/integration-context.js +63 -0
  160. package/lib/datasource/list.js +8 -7
  161. package/lib/datasource/log-viewer.js +189 -67
  162. package/lib/datasource/resolve-app.js +4 -4
  163. package/lib/datasource/test-e2e.js +113 -146
  164. package/lib/datasource/test-integration.js +114 -122
  165. package/lib/datasource/unified-validation-run-body.js +68 -0
  166. package/lib/datasource/unified-validation-run-post.js +23 -0
  167. package/lib/datasource/unified-validation-run-resolve.js +43 -0
  168. package/lib/datasource/unified-validation-run.js +93 -0
  169. package/lib/datasource/validate.js +157 -13
  170. package/lib/deployment/deployer.js +4 -3
  171. package/lib/deployment/environment.js +7 -6
  172. package/lib/deployment/push.js +17 -8
  173. package/lib/external-system/delete.js +4 -3
  174. package/lib/external-system/deploy.js +166 -53
  175. package/lib/external-system/download-helpers.js +1 -1
  176. package/lib/external-system/download.js +7 -6
  177. package/lib/external-system/generator.js +92 -6
  178. package/lib/external-system/integration-test-dispatch.js +26 -0
  179. package/lib/external-system/test-execution.js +5 -1
  180. package/lib/external-system/test-helpers.js +0 -4
  181. package/lib/external-system/test-system-level-helpers.js +110 -0
  182. package/lib/external-system/test-system-level.js +83 -44
  183. package/lib/external-system/test.js +59 -8
  184. package/lib/generator/builders.js +23 -11
  185. package/lib/generator/deploy-manifest-azure-kv.js +81 -0
  186. package/lib/generator/external.js +16 -4
  187. package/lib/generator/helpers.js +58 -3
  188. package/lib/generator/index.js +4 -0
  189. package/lib/generator/split-readme.js +12 -7
  190. package/lib/generator/split-variables.js +2 -1
  191. package/lib/generator/split.js +1 -1
  192. package/lib/generator/wizard-readme.js +3 -3
  193. package/lib/generator/wizard.js +8 -8
  194. package/lib/infrastructure/compose.js +70 -7
  195. package/lib/infrastructure/helpers-docker-check.js +67 -0
  196. package/lib/infrastructure/helpers.js +203 -42
  197. package/lib/infrastructure/index.js +31 -18
  198. package/lib/infrastructure/services.js +21 -67
  199. package/lib/internal/fs-real-sync.js +104 -0
  200. package/lib/internal/node-fs.js +98 -0
  201. package/lib/parameters/database-secret-values.js +173 -0
  202. package/lib/parameters/infra-kv-discovery.js +121 -0
  203. package/lib/parameters/infra-parameter-catalog.js +458 -0
  204. package/lib/parameters/infra-parameter-validate.js +64 -0
  205. package/lib/schema/application-schema.json +37 -17
  206. package/lib/schema/datasource-test-run.schema.json +493 -0
  207. package/lib/schema/deployment-rules.yaml +102 -63
  208. package/lib/schema/external-datasource.schema.json +1200 -442
  209. package/lib/schema/external-system.schema.json +203 -5
  210. package/lib/schema/flag-map-validation-run.json +31 -0
  211. package/lib/schema/infra-parameter.schema.json +106 -0
  212. package/lib/schema/infra.parameter.yaml +421 -0
  213. package/lib/schema/type/credential-auth-templates.json +40 -0
  214. package/lib/schema/type/document-storage.json +226 -0
  215. package/lib/schema/type/message-service.json +123 -0
  216. package/lib/schema/type/vector-store.json +88 -0
  217. package/lib/utils/aifabrix-runtime-config-dir.js +132 -0
  218. package/lib/utils/api-error-handler.js +2 -2
  219. package/lib/utils/api.js +77 -17
  220. package/lib/utils/app-register-api.js +3 -2
  221. package/lib/utils/app-register-auth.js +1 -1
  222. package/lib/utils/app-register-config.js +4 -4
  223. package/lib/utils/app-register-display.js +3 -2
  224. package/lib/utils/app-register-validator.js +3 -2
  225. package/lib/utils/app-run-containers.js +26 -22
  226. package/lib/utils/app-scoped-config.js +31 -0
  227. package/lib/utils/app-service-env-from-builder.js +164 -0
  228. package/lib/utils/build-copy.js +1 -1
  229. package/lib/utils/build-helpers.js +20 -20
  230. package/lib/utils/build-resolve-image.js +165 -0
  231. package/lib/utils/cli-layout-chalk.js +8 -0
  232. package/lib/utils/cli-test-layout-chalk.js +267 -0
  233. package/lib/utils/cli-utils.js +88 -11
  234. package/lib/utils/compose-db-passwords.js +138 -0
  235. package/lib/utils/compose-generate-docker-compose.js +216 -0
  236. package/lib/utils/compose-generator.js +197 -291
  237. package/lib/utils/compose-miso-env.js +18 -0
  238. package/lib/utils/compose-traefik-ingress-base.js +158 -0
  239. package/lib/utils/config-paths.js +166 -7
  240. package/lib/utils/config-scoped-resources-preference.js +41 -0
  241. package/lib/utils/configuration-env-resolver.js +11 -8
  242. package/lib/utils/controller-deployment-outcome.js +68 -0
  243. package/lib/utils/credential-display.js +2 -2
  244. package/lib/utils/credential-secrets-env.js +5 -5
  245. package/lib/utils/dataplane-pipeline-warning.js +4 -3
  246. package/lib/utils/datasource-test-run-capability-scope.js +43 -0
  247. package/lib/utils/datasource-test-run-certificate-tty.js +82 -0
  248. package/lib/utils/datasource-test-run-debug-display.js +137 -0
  249. package/lib/utils/datasource-test-run-debug-slice.js +93 -0
  250. package/lib/utils/datasource-test-run-display.js +459 -0
  251. package/lib/utils/datasource-test-run-exit.js +83 -0
  252. package/lib/utils/datasource-test-run-legacy-adapter.js +93 -0
  253. package/lib/utils/datasource-test-run-report-version.js +51 -0
  254. package/lib/utils/datasource-test-run-schema-sync.js +59 -0
  255. package/lib/utils/datasource-test-run-tty-log.js +81 -0
  256. package/lib/utils/datasource-validation-watch.js +266 -0
  257. package/lib/utils/declarative-url-ports.js +47 -0
  258. package/lib/utils/derive-env-key-from-client-id.js +41 -0
  259. package/lib/utils/dev-ca-install.js +185 -23
  260. package/lib/utils/dev-cert-helper.js +266 -17
  261. package/lib/utils/dev-hosts-helper.js +307 -0
  262. package/lib/utils/dev-init-cert-hints.js +37 -0
  263. package/lib/utils/dev-init-health-messages.js +52 -0
  264. package/lib/utils/dev-init-resolve.js +86 -0
  265. package/lib/utils/dev-init-ssh-merge.js +65 -0
  266. package/lib/utils/dev-ssh-config-helper.js +196 -0
  267. package/lib/utils/dev-user-groups.js +93 -0
  268. package/lib/utils/docker-build.js +42 -17
  269. package/lib/utils/docker-exec.js +28 -0
  270. package/lib/utils/docker-manifest-public-port.js +116 -0
  271. package/lib/utils/docker-not-running-hint.js +52 -0
  272. package/lib/utils/docker.js +98 -11
  273. package/lib/utils/ensure-dev-certs-for-remote-docker.js +192 -0
  274. package/lib/utils/env-config-loader.js +10 -91
  275. package/lib/utils/env-copy.js +19 -10
  276. package/lib/utils/env-map.js +35 -8
  277. package/lib/utils/env-template.js +2 -2
  278. package/lib/utils/environment-scoped-resources.js +144 -0
  279. package/lib/utils/error-formatter.js +92 -13
  280. package/lib/utils/error-formatters/http-status-errors.js +6 -5
  281. package/lib/utils/error-formatters/network-errors.js +2 -1
  282. package/lib/utils/error-formatters/permission-errors.js +2 -1
  283. package/lib/utils/error-formatters/validation-errors.js +2 -1
  284. package/lib/utils/external-readme.js +8 -1
  285. package/lib/utils/external-system-display.js +242 -136
  286. package/lib/utils/external-system-local-test-tty.js +389 -0
  287. package/lib/utils/external-system-readiness-core.js +377 -0
  288. package/lib/utils/external-system-readiness-deploy-display.js +270 -0
  289. package/lib/utils/external-system-readiness-display-internals.js +150 -0
  290. package/lib/utils/external-system-readiness-display.js +186 -0
  291. package/lib/utils/external-system-system-test-tty-overview.js +120 -0
  292. package/lib/utils/external-system-system-test-tty.js +417 -0
  293. package/lib/utils/external-system-test-helpers.js +24 -6
  294. package/lib/utils/external-system-validators.js +30 -12
  295. package/lib/utils/health-check-url.js +119 -0
  296. package/lib/utils/health-check.js +59 -25
  297. package/lib/utils/help-builder.js +11 -8
  298. package/lib/utils/image-version.js +4 -8
  299. package/lib/utils/infra-containers.js +4 -7
  300. package/lib/utils/infra-env-defaults.js +162 -0
  301. package/lib/utils/infra-status-display.js +167 -0
  302. package/lib/utils/infra-status.js +16 -8
  303. package/lib/utils/local-secrets.js +3 -4
  304. package/lib/utils/paths.js +148 -47
  305. package/lib/utils/port-resolver.js +10 -23
  306. package/lib/utils/redis-env-scope.js +62 -0
  307. package/lib/utils/register-aifabrix-shell-env.js +204 -0
  308. package/lib/utils/remote-builder-validation.js +99 -0
  309. package/lib/utils/remote-dev-auth.js +117 -21
  310. package/lib/utils/remote-docker-env.js +67 -15
  311. package/lib/utils/remote-secrets-loader.js +13 -4
  312. package/lib/utils/resolve-docker-image-ref.js +124 -0
  313. package/lib/utils/schema-loader.js +22 -9
  314. package/lib/utils/secrets-bash-kv.js +25 -0
  315. package/lib/utils/secrets-generator.js +169 -49
  316. package/lib/utils/secrets-helpers.js +70 -59
  317. package/lib/utils/secrets-kv-scope.js +60 -0
  318. package/lib/utils/secrets-utils.js +32 -38
  319. package/lib/utils/secrets-validation.js +3 -1
  320. package/lib/utils/secrets-yaml-preserve.js +109 -0
  321. package/lib/utils/ssh-key-helper.js +4 -2
  322. package/lib/utils/template-helpers.js +2 -2
  323. package/lib/utils/test-log-writer.js +3 -3
  324. package/lib/utils/token-manager.js +1 -2
  325. package/lib/utils/url-declarative-public-base.js +188 -0
  326. package/lib/utils/url-declarative-resolve-build.js +493 -0
  327. package/lib/utils/url-declarative-resolve-load-doc.js +51 -0
  328. package/lib/utils/url-declarative-resolve.js +220 -0
  329. package/lib/utils/url-declarative-token-parse.js +74 -0
  330. package/lib/utils/url-declarative-url-flags.js +50 -0
  331. package/lib/utils/url-declarative-vdir-inactive-env.js +99 -0
  332. package/lib/utils/url-public-path-prefix.js +34 -0
  333. package/lib/utils/urls-local-registry.js +220 -0
  334. package/lib/utils/validation-report-tty-kit.js +77 -0
  335. package/lib/utils/validation-run-poll.js +112 -0
  336. package/lib/utils/validation-run-post-retry.js +85 -0
  337. package/lib/utils/validation-run-request.js +116 -0
  338. package/lib/utils/variable-transformer.js +21 -4
  339. package/lib/utils/yaml-preserve.js +33 -14
  340. package/lib/validation/datasource-warnings.js +56 -0
  341. package/lib/validation/env-template-auth.js +1 -1
  342. package/lib/validation/external-manifest-validator.js +27 -7
  343. package/lib/validation/validate-display.js +37 -31
  344. package/lib/validation/validate-external-cert-sync.js +23 -0
  345. package/lib/validation/validate.js +8 -14
  346. package/lib/validation/validator-unresolved-placeholders.js +98 -0
  347. package/lib/validation/validator.js +22 -65
  348. package/lib/validation/wizard-config-validator.js +2 -1
  349. package/package.json +9 -4
  350. package/scripts/check-datasource-test-run-schema-sync.js +34 -0
  351. package/scripts/diagnose-cli.js +150 -0
  352. package/scripts/install-local.js +307 -55
  353. package/scripts/pnpm-global-remove.js +48 -0
  354. package/templates/README.md +15 -2
  355. package/templates/applications/dataplane/application.yaml +52 -2
  356. package/templates/applications/dataplane/env.template +79 -17
  357. package/templates/applications/dataplane/rbac.yaml +8 -0
  358. package/templates/applications/keycloak/application.yaml +9 -1
  359. package/templates/applications/keycloak/env.template +15 -6
  360. package/templates/applications/miso-controller/application.yaml +10 -2
  361. package/templates/applications/miso-controller/env.template +42 -12
  362. package/templates/applications/miso-controller/rbac.yaml +5 -0
  363. package/templates/external-system/README.md.hbs +20 -7
  364. package/templates/external-system/deploy.js.hbs +5 -5
  365. package/templates/external-system/external-datasource.yaml.hbs +197 -118
  366. package/templates/infra/compose.yaml.hbs +33 -16
  367. package/templates/infra/servers.json.hbs +3 -1
  368. package/templates/python/docker-compose.hbs +16 -0
  369. package/templates/typescript/docker-compose.hbs +16 -0
  370. package/lib/api/external-test.api.js +0 -111
  371. package/lib/schema/env-config.yaml +0 -60
@@ -0,0 +1,493 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "aifabrix://schema/datasource-test-run.schema.json",
4
+ "title": "DatasourceTestRun",
5
+ "description": "Canonical datasource-root test report (plans 362/365). Public success shape for POST /api/v1/validation/run (and async poll GET /validation/run/{testRunId}). runType=test|integration|e2e; CLI/docs may say test | test-integration | test-e2e; public JSON uses runType only. Includes validation layer (machine/explain), certificate snapshot, optional integration pipeline results, capability E2Es, debug by reference, plural audit refs, developer summaries. Forward-compatible: minor reportVersion bumps may add fields.",
6
+ "type": "object",
7
+ "required": ["reportVersion", "datasourceKey", "systemKey", "runType", "status"],
8
+ "properties": {
9
+ "reportVersion": {
10
+ "type": "string",
11
+ "description": "Semver-style contract version for this envelope. Policy: additive fields => minor bump within same major; removed/renamed fields => major bump. Route migrations must cite target reportVersion.",
12
+ "example": "1.1.0"
13
+ },
14
+ "runType": {
15
+ "type": "string",
16
+ "description": "Kind of run. Maps to CLI/commands: test=test, test-integration=integration, test-e2e=e2e. Do not use kebab strings inside runType.",
17
+ "enum": ["test", "integration", "e2e"]
18
+ },
19
+ "status": {
20
+ "type": "string",
21
+ "description": "Root rollup across validation, integration, certificate, and capabilities for this datasource run: ok | warn | fail | skipped.",
22
+ "enum": ["ok", "warn", "fail", "skipped"]
23
+ },
24
+ "reportCompleteness": {
25
+ "type": "string",
26
+ "description": "How much of the report is populated: full=all sections populated for this runType; partial=in progress or degraded fill; minimal=async accept or early poll (use testRunId/runId to continue).",
27
+ "enum": ["full", "partial", "minimal"]
28
+ },
29
+ "runId": {
30
+ "type": "string",
31
+ "description": "Server-issued stable id for this logical report run (correlation)."
32
+ },
33
+ "testRunId": {
34
+ "type": "string",
35
+ "description": "Compatibility id for async E2E polling (POST /validation/run with runType=e2e and asyncRun=true, then GET /validation/run/{testRunId}); may equal runId per implementation."
36
+ },
37
+ "systemKey": {
38
+ "type": "string",
39
+ "description": "External system key this datasource belongs to."
40
+ },
41
+ "datasourceKey": {
42
+ "type": "string",
43
+ "description": "External datasource key within the system."
44
+ },
45
+ "validation": {
46
+ "$ref": "#/$defs/ValidationLayerResult"
47
+ },
48
+ "integration": {
49
+ "$ref": "#/$defs/IntegrationResult"
50
+ },
51
+ "certificate": {
52
+ "$ref": "#/$defs/CertificateResult"
53
+ },
54
+ "capabilitySummary": {
55
+ "$ref": "#/$defs/CapabilitySummary"
56
+ },
57
+ "capabilities": {
58
+ "type": "array",
59
+ "description": "Per-capability results; optional nested e2e object per item (see CapabilityResult). Capability discovery precedence (highest first): request.capabilities > datasource.capabilities > execution.cip.operations > openapi.operations. Custom operation keys are permitted; CIP/OpenAPI keys use canonical CRUD names where applicable.",
60
+ "items": {
61
+ "$ref": "#/$defs/CapabilityResult"
62
+ }
63
+ },
64
+ "debug": {
65
+ "$ref": "#/$defs/DebugTrace"
66
+ },
67
+ "audit": {
68
+ "$ref": "#/$defs/AuditRefs"
69
+ },
70
+ "developer": {
71
+ "$ref": "#/$defs/DeveloperSummary"
72
+ }
73
+ },
74
+ "$defs": {
75
+ "ValidationLayerResult": {
76
+ "type": "object",
77
+ "required": ["status"],
78
+ "description": "Structural validation outcome and explain-oriented machine outputs (ICC/PDS/DTS-shaped metrics, certification machine payloads, issues). Separate from developer narrative under developer.*",
79
+ "properties": {
80
+ "status": {
81
+ "type": "string",
82
+ "description": "Validation layer rollup: ok | warn | fail.",
83
+ "enum": ["ok", "warn", "fail"]
84
+ },
85
+ "summary": {
86
+ "type": "string",
87
+ "description": "Short human summary of validation outcome."
88
+ },
89
+ "issues": {
90
+ "type": "array",
91
+ "description": "Structured issues with optional codes, severity, and remediation hints.",
92
+ "items": {
93
+ "$ref": "#/$defs/Issue"
94
+ }
95
+ },
96
+ "dataReadiness": {
97
+ "type": "string",
98
+ "description": "Normalized data readiness for downstream use.",
99
+ "enum": ["ready", "partial", "not_ready"]
100
+ },
101
+ "metricsOutput": {
102
+ "type": "object",
103
+ "description": "Explain-oriented metrics payload (e.g. ICC/PDS/DTS-shaped); align with ValidationRunService / engine—not CLI narrative.",
104
+ "additionalProperties": true
105
+ },
106
+ "certificationOutput": {
107
+ "type": "object",
108
+ "description": "Explain-oriented certification payload from validation/certify path—machine layer; not developer executive copy.",
109
+ "additionalProperties": true
110
+ }
111
+ }
112
+ },
113
+ "IntegrationResult": {
114
+ "type": "object",
115
+ "required": ["status"],
116
+ "description": "Pipeline/integration layer (test-integration); ordered step outcomes—not per-capability E2E (see capabilities[].e2e).",
117
+ "properties": {
118
+ "status": {
119
+ "type": "string",
120
+ "description": "Integration layer rollup: ok | warn | fail | skipped.",
121
+ "enum": ["ok", "warn", "fail", "skipped"]
122
+ },
123
+ "summary": {
124
+ "type": "string",
125
+ "description": "Short human summary of the integration run."
126
+ },
127
+ "stepResults": {
128
+ "type": "array",
129
+ "description": "Ordered integration step outcomes (fetch, map, normalize, etc.).",
130
+ "items": {
131
+ "$ref": "#/$defs/IntegrationStepResult"
132
+ }
133
+ }
134
+ }
135
+ },
136
+ "IntegrationStepResult": {
137
+ "type": "object",
138
+ "required": ["name", "success"],
139
+ "description": "Single step in an integration pipeline run.",
140
+ "properties": {
141
+ "name": {
142
+ "type": "string",
143
+ "description": "Step identifier (e.g. fetch, map, normalize)."
144
+ },
145
+ "success": {
146
+ "type": "boolean",
147
+ "description": "Whether this step completed without failure."
148
+ },
149
+ "message": {
150
+ "type": "string",
151
+ "description": "Optional step-level message."
152
+ },
153
+ "order": {
154
+ "type": "integer",
155
+ "description": "Optional ordering index within the pipeline."
156
+ },
157
+ "evidence": {
158
+ "type": "object",
159
+ "description": "Structured evidence (timings, counts, IDs); shape is implementation-defined.",
160
+ "additionalProperties": true
161
+ }
162
+ }
163
+ },
164
+ "CertificateResult": {
165
+ "type": "object",
166
+ "required": ["status"],
167
+ "description": "Certification layer for the datasource: tier, blockers, and optional capability coverage counts.",
168
+ "properties": {
169
+ "status": {
170
+ "type": "string",
171
+ "description": "Whether certification passed at the reported level.",
172
+ "enum": ["passed", "not_passed"]
173
+ },
174
+ "level": {
175
+ "type": "string",
176
+ "description": "Achieved certification tier when applicable.",
177
+ "enum": ["bronze", "silver", "gold"]
178
+ },
179
+ "summary": {
180
+ "type": "string",
181
+ "description": "Short human summary of certification outcome."
182
+ },
183
+ "blockers": {
184
+ "type": "array",
185
+ "description": "Issues preventing a higher tier or pass.",
186
+ "items": {
187
+ "$ref": "#/$defs/Issue"
188
+ }
189
+ },
190
+ "capabilityCoverage": {
191
+ "$ref": "#/$defs/CapabilitySummary"
192
+ }
193
+ }
194
+ },
195
+ "CapabilitySummary": {
196
+ "type": "object",
197
+ "description": "Aggregate pass/fail counts across capabilities (e.g. for certificate coverage or dashboards).",
198
+ "properties": {
199
+ "total": {
200
+ "type": "integer",
201
+ "description": "Total capabilities considered."
202
+ },
203
+ "passed": {
204
+ "type": "integer",
205
+ "description": "Capabilities that passed."
206
+ },
207
+ "failed": {
208
+ "type": "integer",
209
+ "description": "Capabilities that failed or errored."
210
+ }
211
+ }
212
+ },
213
+ "CapabilityResult": {
214
+ "type": "object",
215
+ "required": ["key", "status"],
216
+ "description": "Result for one capability or CIP operation key; may include E2E detail and dependency refs.",
217
+ "properties": {
218
+ "key": {
219
+ "type": "string",
220
+ "description": "Capability or operation key (e.g. deal.list).",
221
+ "example": "deal.create"
222
+ },
223
+ "type": {
224
+ "type": "string",
225
+ "description": "Class of capability: read | write | sync | custom.",
226
+ "enum": ["read", "write", "sync", "custom"]
227
+ },
228
+ "permission": {
229
+ "type": "string",
230
+ "description": "RBAC permission name when relevant to this capability."
231
+ },
232
+ "status": {
233
+ "type": "string",
234
+ "description": "Capability rollup: ok | warn | fail | skipped.",
235
+ "enum": ["ok", "warn", "fail", "skipped"]
236
+ },
237
+ "e2e": {
238
+ "$ref": "#/$defs/E2EResult"
239
+ },
240
+ "dependsOn": {
241
+ "type": "array",
242
+ "description": "Upstream validation or integration dependencies for this capability.",
243
+ "items": {
244
+ "$ref": "#/$defs/Dependency"
245
+ }
246
+ }
247
+ }
248
+ },
249
+ "E2EResult": {
250
+ "type": "object",
251
+ "description": "End-to-end test outcome for a single capability or strategy. Optional debug and auditRefs point at trace material for this E2E slice.",
252
+ "properties": {
253
+ "supported": {
254
+ "type": "boolean",
255
+ "description": "Whether E2E is supported for this capability in the current configuration."
256
+ },
257
+ "strategy": {
258
+ "type": "string",
259
+ "description": "E2E strategy used: read | writeRead | crudLifecycle | custom.",
260
+ "enum": ["read", "writeRead", "crudLifecycle", "custom"]
261
+ },
262
+ "status": {
263
+ "type": "string",
264
+ "description": "E2E rollup for this capability: ok | warn | fail | skipped.",
265
+ "enum": ["ok", "warn", "fail", "skipped"]
266
+ },
267
+ "steps": {
268
+ "type": "array",
269
+ "description": "Ordered execution steps for this E2E run.",
270
+ "items": {
271
+ "$ref": "#/$defs/ExecutionStep"
272
+ }
273
+ },
274
+ "debug": {
275
+ "$ref": "#/$defs/DebugTrace"
276
+ },
277
+ "auditRefs": {
278
+ "$ref": "#/$defs/AuditRefs"
279
+ }
280
+ }
281
+ },
282
+ "ExecutionStep": {
283
+ "type": "object",
284
+ "required": ["stage", "status"],
285
+ "description": "Single stage within an execution or E2E trace.",
286
+ "properties": {
287
+ "stage": {
288
+ "type": "string",
289
+ "description": "Pipeline stage name.",
290
+ "enum": [
291
+ "fetch",
292
+ "transform",
293
+ "normalize",
294
+ "execute",
295
+ "verify",
296
+ "sync"
297
+ ]
298
+ },
299
+ "status": {
300
+ "type": "string",
301
+ "description": "Step outcome: ok | warn | fail.",
302
+ "enum": ["ok", "warn", "fail"]
303
+ },
304
+ "durationMs": {
305
+ "type": "number",
306
+ "description": "Wall-clock duration for this step in milliseconds."
307
+ },
308
+ "error": {
309
+ "$ref": "#/$defs/Error"
310
+ }
311
+ }
312
+ },
313
+ "Issue": {
314
+ "type": "object",
315
+ "required": ["message"],
316
+ "description": "Structured issue or blocker (validation, certificate, or policy).",
317
+ "properties": {
318
+ "code": {
319
+ "type": "string",
320
+ "description": "Stable code: DP-VAL-* (structural/config), DP-CIP-* (execution/CIP), DP-SEC-* (auth/RBAC/exposure), DP-CONN-* (REST/MCP/connectivity), DP-E2E-* (end-to-end live); warnings DP-*-Wnn. Mapped from engine errorCode in DatasourceTestRun builders.",
321
+ "example": "DP-CIP-010"
322
+ },
323
+ "message": {
324
+ "type": "string",
325
+ "description": "Human-readable description."
326
+ },
327
+ "severity": {
328
+ "type": "string",
329
+ "description": "blocking | warning | info.",
330
+ "enum": ["blocking", "warning", "info"]
331
+ },
332
+ "hint": {
333
+ "type": "string",
334
+ "description": "Remediation or next-step hint."
335
+ }
336
+ }
337
+ },
338
+ "Error": {
339
+ "type": "object",
340
+ "description": "Compact error object for execution steps and debug traces.",
341
+ "properties": {
342
+ "code": {
343
+ "type": "string",
344
+ "description": "Optional stable error code."
345
+ },
346
+ "message": {
347
+ "type": "string",
348
+ "description": "Human-readable error text."
349
+ },
350
+ "hint": {
351
+ "type": "string",
352
+ "description": "Remediation or next-step hint."
353
+ }
354
+ }
355
+ },
356
+ "Dependency": {
357
+ "type": "object",
358
+ "description": "Reference to an upstream validation or integration dependency.",
359
+ "properties": {
360
+ "type": {
361
+ "type": "string",
362
+ "description": "Kind of dependency.",
363
+ "enum": ["validation", "integration"]
364
+ },
365
+ "ref": {
366
+ "type": "string",
367
+ "description": "Opaque reference to the dependent run or artifact."
368
+ }
369
+ }
370
+ },
371
+ "DebugTrace": {
372
+ "type": "object",
373
+ "description": "Debug material for the run. Prefer summaries and payloadRefs; embed large request/response bodies only when mode=raw and after redaction—deep trace remains on existing audit/trace APIs.",
374
+ "properties": {
375
+ "mode": {
376
+ "type": "string",
377
+ "description": "Verbosity: summary | full | raw (raw may include redacted payloads).",
378
+ "enum": ["summary", "full", "raw"]
379
+ },
380
+ "executionSummary": {
381
+ "type": "string",
382
+ "description": "Human-readable summary of executed work."
383
+ },
384
+ "executionIds": {
385
+ "type": "array",
386
+ "items": { "type": "string" },
387
+ "description": "CIP execution ids tied to this debug slice (opaque correlation)."
388
+ },
389
+ "steps": {
390
+ "type": "array",
391
+ "description": "Execution steps included in this trace.",
392
+ "items": {
393
+ "$ref": "#/$defs/ExecutionStep"
394
+ }
395
+ },
396
+ "errors": {
397
+ "type": "array",
398
+ "description": "Errors collected during the traced run.",
399
+ "items": {
400
+ "$ref": "#/$defs/Error"
401
+ }
402
+ },
403
+ "recommendations": {
404
+ "type": "array",
405
+ "items": { "type": "string" },
406
+ "description": "Suggested remediations or follow-ups."
407
+ },
408
+ "payloadRefs": {
409
+ "type": "array",
410
+ "description": "Pointers to full payloads via audit/trace APIs when authorized.",
411
+ "items": {
412
+ "$ref": "#/$defs/PayloadRef"
413
+ }
414
+ },
415
+ "e2eAsyncDebug": {
416
+ "type": "object",
417
+ "description": "Async E2E poll: masked debug from run store (requestId, timing, stepDebug, firstRequestUrl, requestParams, …).",
418
+ "additionalProperties": true
419
+ }
420
+ }
421
+ },
422
+ "PayloadRef": {
423
+ "type": "object",
424
+ "description": "Reference to stored or audit-linked payload; avoids bloating the report envelope.",
425
+ "properties": {
426
+ "key": {
427
+ "type": "string",
428
+ "description": "Logical name (e.g. lastRequest, normalizedSnapshot)."
429
+ },
430
+ "ref": {
431
+ "type": "string",
432
+ "description": "Opaque id or URL to retrieve via audit/trace APIs when authorized."
433
+ }
434
+ }
435
+ },
436
+ "AuditRefs": {
437
+ "type": "object",
438
+ "description": "Plural by design: one datasource-root run can fan out to multiple executions. Resolve traces via these refs—no parallel trace store.",
439
+ "properties": {
440
+ "executionIds": {
441
+ "type": "array",
442
+ "items": { "type": "string" },
443
+ "description": "Opaque execution identifiers."
444
+ },
445
+ "traceRefs": {
446
+ "type": "array",
447
+ "items": { "type": "string" },
448
+ "description": "URLs or opaque refs to execution trace endpoints."
449
+ },
450
+ "rbacTraceRefs": {
451
+ "type": "array",
452
+ "items": { "type": "string" },
453
+ "description": "RBAC decision or trace refs."
454
+ },
455
+ "abacTraceRefs": {
456
+ "type": "array",
457
+ "items": { "type": "string" },
458
+ "description": "ABAC decision or trace refs."
459
+ }
460
+ }
461
+ },
462
+ "DeveloperSummary": {
463
+ "type": "object",
464
+ "description": "CLI-oriented narrative strings only; keep ICC/PDS/DTS and raw metrics in validation.metricsOutput / certificate / debug machine paths.",
465
+ "properties": {
466
+ "executiveSummary": {
467
+ "type": "string",
468
+ "description": "High-level narrative for developers."
469
+ },
470
+ "whatPassed": {
471
+ "type": "array",
472
+ "items": { "type": "string" },
473
+ "description": "Bullets describing what succeeded."
474
+ },
475
+ "whatFailed": {
476
+ "type": "array",
477
+ "items": { "type": "string" },
478
+ "description": "Bullets describing what failed."
479
+ },
480
+ "whatNeedsAttention": {
481
+ "type": "array",
482
+ "items": { "type": "string" },
483
+ "description": "Bullets for warnings or follow-ups."
484
+ },
485
+ "nextActions": {
486
+ "type": "array",
487
+ "items": { "type": "string" },
488
+ "description": "Suggested next steps."
489
+ }
490
+ }
491
+ }
492
+ }
493
+ }
@@ -5,9 +5,10 @@
5
5
  # Schemas (application, external-system, external-datasource) remain clean; no x-* annotations.
6
6
  #
7
7
  # Semantics:
8
- # triggerPaths: Change affects deployment key / requires deploy
9
- # overridablePaths: Value can differ per environment (preserve on promote)
10
- # A path may appear in both (e.g. authentication.endpoints triggers deploy and is overridable).
8
+ # deployment.triggerPaths: Change affects deployment key / requires deploy
9
+ # deployment.overridablePaths: Value can differ per environment (preserve on promote)
10
+ # certification.triggerPaths: Subset of 346.rules.md §17 inputs to certification contract hash only
11
+ # A path may appear in both deployment trigger and overridable (e.g. authentication.endpoints).
11
12
  #
12
13
  # Path format: Dot notation. Child paths override parent when both match.
13
14
  # Schema keys: application | externalSystem | externalDataSource
@@ -32,6 +33,7 @@ application:
32
33
  - configuration.items.portalInput
33
34
  - healthCheck
34
35
  - healthCheck.path
36
+ - healthCheck.bashProbe
35
37
  - healthCheck.probePath
36
38
  - healthCheck.probeRequestType
37
39
  - healthCheck.probeProtocol
@@ -53,65 +55,102 @@ application:
53
55
  - healthCheck.probeIntervalInSeconds
54
56
 
55
57
  externalSystem:
56
- triggerPaths:
57
- - key
58
- - displayName
59
- - description
60
- - type
61
- - enabled
62
- - authentication
63
- - openapi
64
- - mcp
65
- - dataSources
66
- - configuration
67
- - configuration.items
68
- - tags
69
- - roles
70
- - permissions
71
- - endpoints
72
- - endpointsActive
73
- - generateMcpContract
74
- - generateOpenApiContract
75
- overridablePaths:
76
- - authentication.oauth2
77
- - authentication.apikey
78
- - authentication.basic
79
- - authentication.aad
80
- - openapi.specUrl
81
- - openapi.documentKey
82
- - mcp.serverUrl
83
- - mcp.toolPrefix
84
- - configuration.items.value
85
- - credentialIdOrKey
58
+ deployment:
59
+ triggerPaths:
60
+ - key
61
+ - displayName
62
+ - description
63
+ - type
64
+ - enabled
65
+ - authentication
66
+ - openapi
67
+ - mcp
68
+ - dataSources
69
+ - configuration
70
+ - configuration.items
71
+ - tags
72
+ - roles
73
+ - permissions
74
+ - endpoints
75
+ - endpointsActive
76
+ - generateMcpContract
77
+ - generateOpenApiContract
78
+ overridablePaths:
79
+ - authentication.oauth2
80
+ - authentication.apikey
81
+ - authentication.basic
82
+ - authentication.aad
83
+ - openapi.specUrl
84
+ - openapi.documentKey
85
+ - mcp.serverUrl
86
+ - mcp.toolPrefix
87
+ - configuration.items.value
88
+ - credentialIdOrKey
89
+ certification:
90
+ triggerPaths:
91
+ - key
92
+ - type
93
+ - version
94
+ - authentication
95
+ - openapi
96
+ - mcp
97
+ - roles
98
+ - permissions
99
+ - generateMcpContract
100
+ - generateOpenApiContract
101
+ - configuration
102
+ - configuration.items
103
+ - endpoints
104
+ - endpointsActive
86
105
 
87
106
  externalDataSource:
88
- triggerPaths:
89
- - key
90
- - displayName
91
- - description
92
- - enabled
93
- - systemKey
94
- - entityType
95
- - resourceType
96
- - version
97
- - metadataSchema
98
- - fieldMappings
99
- - exposed
100
- - validation
101
- - quality
102
- - indexing
103
- - context
104
- - documentStorage
105
- - portalInput
106
- - capabilities
107
- - execution
108
- - config
109
- - openapi
110
- overridablePaths:
111
- - sync
112
- - sync.mode
113
- - sync.schedule
114
- - sync.batchSize
115
- - sync.maxParallelRequests
116
- - openapi.baseUrl
117
- - openapi.resourcePath
107
+ deployment:
108
+ triggerPaths:
109
+ - key
110
+ - displayName
111
+ - description
112
+ - enabled
113
+ - systemKey
114
+ - entityType
115
+ - resourceType
116
+ - version
117
+ - metadataSchema
118
+ - fieldMappings
119
+ - exposed
120
+ - validation
121
+ - quality
122
+ - indexing
123
+ - context
124
+ - documentStorage
125
+ - capabilities
126
+ - execution
127
+ - config
128
+ - openapi
129
+ overridablePaths:
130
+ - sync
131
+ - sync.mode
132
+ - sync.schedule
133
+ - sync.batchSize
134
+ - sync.maxParallelRequests
135
+ - openapi.baseUrl
136
+ - openapi.resourcePath
137
+ certification:
138
+ triggerPaths:
139
+ - key
140
+ - systemKey
141
+ - version
142
+ - entityType
143
+ - resourceType
144
+ - metadataSchema
145
+ - primaryKey
146
+ - labelKey
147
+ - foreignKeys
148
+ - dimensions
149
+ - fieldMappings
150
+ - exposed
151
+ - capabilities
152
+ - openapi
153
+ - execution
154
+ - documentStorage
155
+ - contract
156
+ - config.extensions