devcontour-harness 0.0.0-stage → 0.1.0-alpha.6

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 (390) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +183 -2
  3. package/docs/architecture.md +473 -0
  4. package/docs/compatibility-versions.md +56 -0
  5. package/docs/compatibility.md +192 -0
  6. package/docs/connectors.md +323 -0
  7. package/docs/contracts.md +603 -0
  8. package/docs/integrations/hindsight.md +148 -0
  9. package/docs/quickstart.md +182 -0
  10. package/docs/release-notes/0.1.0-alpha.6.md +238 -0
  11. package/docs/review-probes.md +120 -0
  12. package/docs/review-protocol.md +251 -0
  13. package/docs/toolchains.md +167 -0
  14. package/docs/turbo-starter.md +269 -0
  15. package/docs/upgrade.md +202 -0
  16. package/examples/README.md +27 -0
  17. package/examples/external-connector/README.md +19 -0
  18. package/examples/external-connector/connector.mjs +55 -0
  19. package/examples/files-only/README.md +28 -0
  20. package/examples/files-only/context/norms/rules.md +4 -0
  21. package/examples/files-only/graph.json +23 -0
  22. package/examples/files-only/policy.json +30 -0
  23. package/examples/one-vendor/README.md +19 -0
  24. package/examples/one-vendor/policy.json +27 -0
  25. package/examples/single-task/README.md +18 -0
  26. package/examples/single-task/graph.json +27 -0
  27. package/examples/single-task/policy-same-vendor.json +55 -0
  28. package/examples/single-task/policy.json +52 -0
  29. package/examples/single-task/src/.gitkeep +0 -0
  30. package/examples/single-task/test/run.js +19 -0
  31. package/examples/toolchains/README.md +32 -0
  32. package/examples/toolchains/go/bad/label/label.go +9 -0
  33. package/examples/toolchains/go/good/label/label.go +9 -0
  34. package/examples/toolchains/go/policy.json +79 -0
  35. package/examples/toolchains/go/repo/REQUIREMENTS.md +9 -0
  36. package/examples/toolchains/go/repo/_gitignore +1 -0
  37. package/examples/toolchains/go/repo/go.mod +5 -0
  38. package/examples/toolchains/go/repo/go.sum +2 -0
  39. package/examples/toolchains/go/repo/label/label.go +9 -0
  40. package/examples/toolchains/go/repo/label/label_test.go +27 -0
  41. package/examples/toolchains/go/repo/label/version.go +9 -0
  42. package/examples/toolchains/go/task.json +25 -0
  43. package/examples/toolchains/mixed-go/bad/backend/label/label.go +9 -0
  44. package/examples/toolchains/mixed-go/bad/frontend/src/label.js +4 -0
  45. package/examples/toolchains/mixed-go/good/backend/label/label.go +9 -0
  46. package/examples/toolchains/mixed-go/good/frontend/src/label.js +4 -0
  47. package/examples/toolchains/mixed-go/policy.json +126 -0
  48. package/examples/toolchains/mixed-go/repo/REQUIREMENTS.md +9 -0
  49. package/examples/toolchains/mixed-go/repo/_gitignore +6 -0
  50. package/examples/toolchains/mixed-go/repo/backend/go.mod +3 -0
  51. package/examples/toolchains/mixed-go/repo/backend/label/label.go +9 -0
  52. package/examples/toolchains/mixed-go/repo/backend/label/label_test.go +30 -0
  53. package/examples/toolchains/mixed-go/repo/contract/check.mjs +17 -0
  54. package/examples/toolchains/mixed-go/repo/contract/label.json +9 -0
  55. package/examples/toolchains/mixed-go/repo/frontend/package.json +15 -0
  56. package/examples/toolchains/mixed-go/repo/frontend/pnpm-lock.yaml +22 -0
  57. package/examples/toolchains/mixed-go/repo/frontend/src/label.js +4 -0
  58. package/examples/toolchains/mixed-go/repo/frontend/test/label.test.js +11 -0
  59. package/examples/toolchains/mixed-go/task.json +25 -0
  60. package/examples/toolchains/mixed-python/bad/backend/src/fx_backend/__init__.py +6 -0
  61. package/examples/toolchains/mixed-python/bad/frontend/src/label.js +4 -0
  62. package/examples/toolchains/mixed-python/good/backend/src/fx_backend/__init__.py +6 -0
  63. package/examples/toolchains/mixed-python/good/frontend/src/label.js +4 -0
  64. package/examples/toolchains/mixed-python/policy.json +121 -0
  65. package/examples/toolchains/mixed-python/repo/REQUIREMENTS.md +9 -0
  66. package/examples/toolchains/mixed-python/repo/_gitignore +6 -0
  67. package/examples/toolchains/mixed-python/repo/backend/.python-version +1 -0
  68. package/examples/toolchains/mixed-python/repo/backend/pyproject.toml +19 -0
  69. package/examples/toolchains/mixed-python/repo/backend/src/fx_backend/__init__.py +6 -0
  70. package/examples/toolchains/mixed-python/repo/backend/tests/test_label.py +11 -0
  71. package/examples/toolchains/mixed-python/repo/backend/uv.lock +108 -0
  72. package/examples/toolchains/mixed-python/repo/contract/check.mjs +17 -0
  73. package/examples/toolchains/mixed-python/repo/contract/label.json +9 -0
  74. package/examples/toolchains/mixed-python/repo/frontend/package.json +15 -0
  75. package/examples/toolchains/mixed-python/repo/frontend/pnpm-lock.yaml +22 -0
  76. package/examples/toolchains/mixed-python/repo/frontend/src/label.js +4 -0
  77. package/examples/toolchains/mixed-python/repo/frontend/test/label.test.js +11 -0
  78. package/examples/toolchains/mixed-python/task.json +25 -0
  79. package/examples/toolchains/npm/bad/src/label.js +4 -0
  80. package/examples/toolchains/npm/good/src/label.js +4 -0
  81. package/examples/toolchains/npm/policy.json +82 -0
  82. package/examples/toolchains/npm/repo/REQUIREMENTS.md +9 -0
  83. package/examples/toolchains/npm/repo/_gitignore +4 -0
  84. package/examples/toolchains/npm/repo/package-lock.json +22 -0
  85. package/examples/toolchains/npm/repo/package.json +13 -0
  86. package/examples/toolchains/npm/repo/src/label.js +4 -0
  87. package/examples/toolchains/npm/repo/test/label.test.js +13 -0
  88. package/examples/toolchains/npm/task.json +25 -0
  89. package/examples/toolchains/pnpm/bad/packages/label/src/label.js +4 -0
  90. package/examples/toolchains/pnpm/good/packages/label/src/label.js +4 -0
  91. package/examples/toolchains/pnpm/policy.json +85 -0
  92. package/examples/toolchains/pnpm/repo/REQUIREMENTS.md +9 -0
  93. package/examples/toolchains/pnpm/repo/_gitignore +4 -0
  94. package/examples/toolchains/pnpm/repo/package.json +10 -0
  95. package/examples/toolchains/pnpm/repo/packages/checker/check.mjs +5 -0
  96. package/examples/toolchains/pnpm/repo/packages/checker/package.json +9 -0
  97. package/examples/toolchains/pnpm/repo/packages/label/package.json +14 -0
  98. package/examples/toolchains/pnpm/repo/packages/label/src/label.js +4 -0
  99. package/examples/toolchains/pnpm/repo/packages/label/test/label.test.js +13 -0
  100. package/examples/toolchains/pnpm/repo/pnpm-lock.yaml +29 -0
  101. package/examples/toolchains/pnpm/repo/pnpm-workspace.yaml +2 -0
  102. package/examples/toolchains/pnpm/task.json +25 -0
  103. package/examples/toolchains/python/bad/src/fx_label/__init__.py +6 -0
  104. package/examples/toolchains/python/good/src/fx_label/__init__.py +6 -0
  105. package/examples/toolchains/python/policy.json +80 -0
  106. package/examples/toolchains/python/repo/.python-version +1 -0
  107. package/examples/toolchains/python/repo/REQUIREMENTS.md +9 -0
  108. package/examples/toolchains/python/repo/_gitignore +5 -0
  109. package/examples/toolchains/python/repo/pyproject.toml +19 -0
  110. package/examples/toolchains/python/repo/src/fx_label/__init__.py +6 -0
  111. package/examples/toolchains/python/repo/tests/test_label.py +13 -0
  112. package/examples/toolchains/python/repo/uv.lock +108 -0
  113. package/examples/toolchains/python/task.json +25 -0
  114. package/examples/toolchains/turbo/bad/packages/label/src/label.js +4 -0
  115. package/examples/toolchains/turbo/good/packages/label/src/label.js +4 -0
  116. package/examples/toolchains/turbo/policy.json +110 -0
  117. package/examples/toolchains/turbo/repo/REQUIREMENTS.md +9 -0
  118. package/examples/toolchains/turbo/repo/_gitignore +4 -0
  119. package/examples/toolchains/turbo/repo/package.json +13 -0
  120. package/examples/toolchains/turbo/repo/packages/checker/check.mjs +5 -0
  121. package/examples/toolchains/turbo/repo/packages/checker/package.json +9 -0
  122. package/examples/toolchains/turbo/repo/packages/label/package.json +14 -0
  123. package/examples/toolchains/turbo/repo/packages/label/src/label.js +4 -0
  124. package/examples/toolchains/turbo/repo/packages/label/test/label.test.js +13 -0
  125. package/examples/toolchains/turbo/repo/pnpm-lock.yaml +94 -0
  126. package/examples/toolchains/turbo/repo/pnpm-workspace.yaml +2 -0
  127. package/examples/toolchains/turbo/repo/turbo.json +7 -0
  128. package/examples/toolchains/turbo/task.json +25 -0
  129. package/examples/turbo-starter/README.md +16 -0
  130. package/examples/turbo-starter/changes/issued-at-consumer-only.patch +12 -0
  131. package/examples/turbo-starter/changes/issued-at.patch +130 -0
  132. package/examples/turbo-starter/cleanup.mjs +58 -0
  133. package/examples/turbo-starter/graph.json +32 -0
  134. package/examples/turbo-starter/harness/acceptance/db-isolation.test.mjs +97 -0
  135. package/examples/turbo-starter/harness/acceptance/env-probe.test.mjs +75 -0
  136. package/examples/turbo-starter/harness/acceptance/generation.test.mjs +54 -0
  137. package/examples/turbo-starter/harness/acceptance/issued-at.test.mjs +43 -0
  138. package/examples/turbo-starter/harness/acceptance/lifecycle-probe.test.mjs +47 -0
  139. package/examples/turbo-starter/harness/compose-bridge.mjs +593 -0
  140. package/examples/turbo-starter/harness/compose.acceptance.yml +23 -0
  141. package/examples/turbo-starter/harness/env/backend.env.template +7 -0
  142. package/examples/turbo-starter/harness/env/compose.env.template +6 -0
  143. package/examples/turbo-starter/policy.json +109 -0
  144. package/examples/turbo-starter/policy.lifecycle.json +114 -0
  145. package/examples/turbo-starter/setup.mjs +352 -0
  146. package/examples/two-vendors/policy.json +30 -0
  147. package/lib/agents/cli-adapter.d.ts +48 -0
  148. package/lib/agents/cli-adapter.js +386 -0
  149. package/lib/agents/inspect.d.ts +6 -0
  150. package/lib/agents/inspect.js +46 -0
  151. package/lib/agents/probe-server.d.ts +2 -0
  152. package/lib/agents/probe-server.js +13 -0
  153. package/lib/agents/review-probe.d.ts +295 -0
  154. package/lib/agents/review-probe.js +872 -0
  155. package/lib/agents/runtime-events.d.ts +11 -0
  156. package/lib/agents/runtime-events.js +21 -0
  157. package/lib/agents/schemas.d.ts +217 -0
  158. package/lib/agents/schemas.js +124 -0
  159. package/lib/agents/usage.d.ts +8 -0
  160. package/lib/agents/usage.js +83 -0
  161. package/lib/cli.d.ts +2 -0
  162. package/lib/cli.js +491 -0
  163. package/lib/connectors/files.d.ts +108 -0
  164. package/lib/connectors/files.js +133 -0
  165. package/lib/contracts/checks.d.ts +307 -0
  166. package/lib/contracts/checks.js +181 -0
  167. package/lib/contracts/cli.d.ts +3895 -0
  168. package/lib/contracts/cli.js +664 -0
  169. package/lib/contracts/context.d.ts +135 -0
  170. package/lib/contracts/context.js +129 -0
  171. package/lib/contracts/digest.d.ts +9 -0
  172. package/lib/contracts/digest.js +22 -0
  173. package/lib/contracts/errors.d.ts +81 -0
  174. package/lib/contracts/errors.js +70 -0
  175. package/lib/contracts/events.d.ts +827 -0
  176. package/lib/contracts/events.js +258 -0
  177. package/lib/contracts/execution.d.ts +3216 -0
  178. package/lib/contracts/execution.js +872 -0
  179. package/lib/contracts/failure.d.ts +67 -0
  180. package/lib/contracts/failure.js +127 -0
  181. package/lib/contracts/index.d.ts +18 -0
  182. package/lib/contracts/index.js +18 -0
  183. package/lib/contracts/policy.d.ts +1080 -0
  184. package/lib/contracts/policy.js +544 -0
  185. package/lib/contracts/ports.d.ts +417 -0
  186. package/lib/contracts/ports.js +1 -0
  187. package/lib/contracts/primitives.d.ts +63 -0
  188. package/lib/contracts/primitives.js +73 -0
  189. package/lib/contracts/profiles.d.ts +336 -0
  190. package/lib/contracts/profiles.js +109 -0
  191. package/lib/contracts/published.d.ts +3237 -0
  192. package/lib/contracts/published.js +34 -0
  193. package/lib/contracts/result.d.ts +1280 -0
  194. package/lib/contracts/result.js +311 -0
  195. package/lib/contracts/review.d.ts +441 -0
  196. package/lib/contracts/review.js +477 -0
  197. package/lib/contracts/toolchain.d.ts +96 -0
  198. package/lib/contracts/toolchain.js +89 -0
  199. package/lib/contracts/version.d.ts +17 -0
  200. package/lib/contracts/version.js +17 -0
  201. package/lib/contracts/work.d.ts +173 -0
  202. package/lib/contracts/work.js +178 -0
  203. package/lib/control/base-move.d.ts +44 -0
  204. package/lib/control/base-move.js +90 -0
  205. package/lib/control/doctor.d.ts +50 -0
  206. package/lib/control/doctor.js +113 -0
  207. package/lib/control/harness.d.ts +1125 -0
  208. package/lib/control/harness.js +741 -0
  209. package/lib/control/provenance.d.ts +17 -0
  210. package/lib/control/provenance.js +25 -0
  211. package/lib/control/recovery.d.ts +237 -0
  212. package/lib/control/recovery.js +236 -0
  213. package/lib/control/review.d.ts +62 -0
  214. package/lib/control/review.js +178 -0
  215. package/lib/control/workflow.d.ts +247 -0
  216. package/lib/control/workflow.js +259 -0
  217. package/lib/engine/budget.d.ts +345 -0
  218. package/lib/engine/budget.js +278 -0
  219. package/lib/engine/classify.d.ts +8 -0
  220. package/lib/engine/classify.js +32 -0
  221. package/lib/engine/engine.d.ts +1527 -0
  222. package/lib/engine/engine.js +2259 -0
  223. package/lib/engine/failure.d.ts +1 -0
  224. package/lib/engine/failure.js +3 -0
  225. package/lib/engine/joint-runner.d.ts +257 -0
  226. package/lib/engine/joint-runner.js +254 -0
  227. package/lib/engine/measured.d.ts +15 -0
  228. package/lib/engine/measured.js +82 -0
  229. package/lib/engine/prompt.d.ts +66 -0
  230. package/lib/engine/prompt.js +131 -0
  231. package/lib/engine/property-recovery.d.ts +50 -0
  232. package/lib/engine/property-recovery.js +171 -0
  233. package/lib/engine/repair.d.ts +33 -0
  234. package/lib/engine/repair.js +82 -0
  235. package/lib/engine/result.d.ts +9 -0
  236. package/lib/engine/result.js +218 -0
  237. package/lib/engine/reuse.d.ts +80 -0
  238. package/lib/engine/reuse.js +102 -0
  239. package/lib/engine/runner.d.ts +360 -0
  240. package/lib/engine/runner.js +1836 -0
  241. package/lib/engine/standalone.d.ts +6 -0
  242. package/lib/engine/standalone.js +48 -0
  243. package/lib/engine/usage.d.ts +87 -0
  244. package/lib/engine/usage.js +165 -0
  245. package/lib/environment/isolation.d.ts +110 -0
  246. package/lib/environment/isolation.js +238 -0
  247. package/lib/environment/lifecycle.d.ts +40 -0
  248. package/lib/environment/lifecycle.js +197 -0
  249. package/lib/environment/live-calls.d.ts +14 -0
  250. package/lib/environment/live-calls.js +73 -0
  251. package/lib/environment/os-tools.d.ts +16 -0
  252. package/lib/environment/os-tools.js +35 -0
  253. package/lib/environment/process.d.ts +32 -0
  254. package/lib/environment/process.js +369 -0
  255. package/lib/environment/redaction.d.ts +22 -0
  256. package/lib/environment/redaction.js +102 -0
  257. package/lib/environment/resources.d.ts +31 -0
  258. package/lib/environment/resources.js +120 -0
  259. package/lib/index.d.ts +65 -0
  260. package/lib/index.js +67 -0
  261. package/lib/integrations/connector/commands.d.ts +358 -0
  262. package/lib/integrations/connector/commands.js +428 -0
  263. package/lib/integrations/connector/config.d.ts +215 -0
  264. package/lib/integrations/connector/config.js +214 -0
  265. package/lib/integrations/connector/delivery.d.ts +107 -0
  266. package/lib/integrations/connector/delivery.js +591 -0
  267. package/lib/integrations/connector/fake.d.ts +291 -0
  268. package/lib/integrations/connector/fake.js +786 -0
  269. package/lib/integrations/connector/history.d.ts +124 -0
  270. package/lib/integrations/connector/history.js +497 -0
  271. package/lib/integrations/connector/index.d.ts +16 -0
  272. package/lib/integrations/connector/index.js +16 -0
  273. package/lib/integrations/connector/redact.d.ts +19 -0
  274. package/lib/integrations/connector/redact.js +91 -0
  275. package/lib/integrations/connector/registry.d.ts +15 -0
  276. package/lib/integrations/connector/registry.js +43 -0
  277. package/lib/integrations/connector/snapshot.d.ts +131 -0
  278. package/lib/integrations/connector/snapshot.js +422 -0
  279. package/lib/integrations/connector/source.d.ts +37 -0
  280. package/lib/integrations/connector/source.js +73 -0
  281. package/lib/integrations/connector/steps.d.ts +71 -0
  282. package/lib/integrations/connector/steps.js +188 -0
  283. package/lib/integrations/connector/store.d.ts +140 -0
  284. package/lib/integrations/connector/store.js +277 -0
  285. package/lib/integrations/connector/summary.d.ts +38 -0
  286. package/lib/integrations/connector/summary.js +59 -0
  287. package/lib/integrations/connector/testing-worker.d.ts +1 -0
  288. package/lib/integrations/connector/testing-worker.js +81 -0
  289. package/lib/integrations/connector/testing.d.ts +205 -0
  290. package/lib/integrations/connector/testing.js +1615 -0
  291. package/lib/integrations/connector/transport.d.ts +240 -0
  292. package/lib/integrations/connector/transport.js +28 -0
  293. package/lib/integrations/memory/context.d.ts +120 -0
  294. package/lib/integrations/memory/context.js +239 -0
  295. package/lib/integrations/memory/index.d.ts +8 -0
  296. package/lib/integrations/memory/index.js +8 -0
  297. package/lib/integrations/memory/provider.d.ts +79 -0
  298. package/lib/integrations/memory/provider.js +22 -0
  299. package/lib/integrations/memory/sink.d.ts +56 -0
  300. package/lib/integrations/memory/sink.js +116 -0
  301. package/lib/integrations/memory/testing.d.ts +44 -0
  302. package/lib/integrations/memory/testing.js +61 -0
  303. package/lib/integrations/relay-v1/index.d.ts +122 -0
  304. package/lib/integrations/relay-v1/index.js +860 -0
  305. package/lib/integrations/relay-v2/index.d.ts +145 -0
  306. package/lib/integrations/relay-v2/index.js +752 -0
  307. package/lib/integrations/relay-v2/process.d.ts +32 -0
  308. package/lib/integrations/relay-v2/process.js +112 -0
  309. package/lib/integrations/relay-v2/protocol.d.ts +172 -0
  310. package/lib/integrations/relay-v2/protocol.js +142 -0
  311. package/lib/package.d.ts +2 -0
  312. package/lib/package.js +3 -0
  313. package/lib/profiles/resolve.d.ts +190 -0
  314. package/lib/profiles/resolve.js +273 -0
  315. package/lib/storage/document.d.ts +1234 -0
  316. package/lib/storage/document.js +80 -0
  317. package/lib/storage/sqlite.d.ts +35 -0
  318. package/lib/storage/sqlite.js +260 -0
  319. package/lib/testing/index.d.ts +5 -0
  320. package/lib/testing/index.js +5 -0
  321. package/lib/testing/store-contract.d.ts +8 -0
  322. package/lib/testing/store-contract.js +167 -0
  323. package/lib/toolchains/index.d.ts +9 -0
  324. package/lib/toolchains/index.js +9 -0
  325. package/lib/toolchains/inspect.d.ts +105 -0
  326. package/lib/toolchains/inspect.js +831 -0
  327. package/lib/toolchains/manifests.d.ts +67 -0
  328. package/lib/toolchains/manifests.js +238 -0
  329. package/lib/toolchains/probe.d.ts +28 -0
  330. package/lib/toolchains/probe.js +54 -0
  331. package/lib/toolchains/recipes.d.ts +33 -0
  332. package/lib/toolchains/recipes.js +51 -0
  333. package/lib/validate.d.ts +36 -0
  334. package/lib/validate.js +175 -0
  335. package/lib/verification/acceptance.d.ts +284 -0
  336. package/lib/verification/acceptance.js +670 -0
  337. package/lib/verification/checks.d.ts +72 -0
  338. package/lib/verification/checks.js +190 -0
  339. package/lib/verification/confirm.d.ts +125 -0
  340. package/lib/verification/confirm.js +411 -0
  341. package/lib/verification/corpus.d.ts +1303 -0
  342. package/lib/verification/corpus.js +744 -0
  343. package/lib/verification/dependencies.d.ts +66 -0
  344. package/lib/verification/dependencies.js +144 -0
  345. package/lib/verification/gates.d.ts +160 -0
  346. package/lib/verification/gates.js +600 -0
  347. package/lib/verification/joint.d.ts +63 -0
  348. package/lib/verification/joint.js +121 -0
  349. package/lib/verification/proof.d.ts +54 -0
  350. package/lib/verification/proof.js +96 -0
  351. package/lib/verification/property.d.ts +86 -0
  352. package/lib/verification/property.js +214 -0
  353. package/lib/verification/requirements.d.ts +25 -0
  354. package/lib/verification/requirements.js +69 -0
  355. package/lib/verification/self-check.d.ts +29 -0
  356. package/lib/verification/self-check.js +99 -0
  357. package/lib/verification/spike.d.ts +79 -0
  358. package/lib/verification/spike.js +124 -0
  359. package/package.json +100 -4
  360. package/profiles/expo-mobile.json +15 -0
  361. package/profiles/go-api.json +15 -0
  362. package/profiles/go-gotestsum.json +21 -0
  363. package/profiles/mobile-maestro.json +29 -0
  364. package/profiles/nest-api.json +26 -0
  365. package/profiles/next-product.json +72 -0
  366. package/profiles/node-checks.json +77 -0
  367. package/profiles/npm-ci.json +22 -0
  368. package/profiles/pnpm-frozen.json +24 -0
  369. package/profiles/python-api.json +32 -0
  370. package/profiles/python-uv.json +26 -0
  371. package/profiles/react-native.json +50 -0
  372. package/profiles/react-vite-admin.json +71 -0
  373. package/schemas/context-snapshot.schema.json +231 -0
  374. package/schemas/contract-document.schema.json +385 -0
  375. package/schemas/execution-document.schema.json +3695 -0
  376. package/schemas/execution-policy.schema.json +2196 -0
  377. package/schemas/joint-verification.schema.json +617 -0
  378. package/schemas/result-envelope.schema.json +1652 -0
  379. package/schemas/review-record.schema.json +177 -0
  380. package/schemas/run-event.schema.json +2458 -0
  381. package/schemas/run-result.schema.json +1570 -0
  382. package/schemas/stack-profile.schema.json +535 -0
  383. package/schemas/work-graph.schema.json +381 -0
  384. package/schemas/work-order.schema.json +256 -0
  385. package/skills/harness/SKILL.md +64 -0
  386. package/templates/AGENTS.md +13 -0
  387. package/templates/controller-mode/AGENTS.controller.md +58 -0
  388. package/templates/controller-mode/README.md +44 -0
  389. package/templates/graph.json +22 -0
  390. package/templates/policy.json +28 -0
@@ -0,0 +1,1280 @@
1
+ import { z } from 'zod';
2
+ export declare const findingSchema: z.ZodObject<{
3
+ severity: z.ZodString;
4
+ message: z.ZodString;
5
+ path: z.ZodOptional<z.ZodNullable<z.ZodString>>;
6
+ line: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
7
+ rule: z.ZodOptional<z.ZodString>;
8
+ id: z.ZodOptional<z.ZodString>;
9
+ status: z.ZodOptional<z.ZodEnum<{
10
+ open: "open";
11
+ closed: "closed";
12
+ withdrawn: "withdrawn";
13
+ }>>;
14
+ }, z.core.$strict>;
15
+ export type Finding = z.infer<typeof findingSchema>;
16
+ /**
17
+ * Ссылка на доказательство. Само evidence (логи, отчёты) хранит
18
+ * ExecutionStore; результат несёт digest и SHA, по которым его сверяют.
19
+ */
20
+ export declare const evidenceRefSchema: z.ZodObject<{
21
+ id: z.ZodString;
22
+ kind: z.ZodEnum<{
23
+ check: "check";
24
+ test: "test";
25
+ property: "property";
26
+ review: "review";
27
+ consumer: "consumer";
28
+ }>;
29
+ phase: z.ZodEnum<{
30
+ candidate: "candidate";
31
+ integration: "integration";
32
+ }>;
33
+ gate: z.ZodString;
34
+ sha: z.ZodString;
35
+ passed: z.ZodBoolean;
36
+ digest: z.ZodString;
37
+ summary: z.ZodString;
38
+ consumer: z.ZodOptional<z.ZodString>;
39
+ checks: z.ZodOptional<z.ZodString>;
40
+ tests: z.ZodOptional<z.ZodArray<z.ZodObject<{
41
+ id: z.ZodString;
42
+ status: z.ZodEnum<{
43
+ passed: "passed";
44
+ failed: "failed";
45
+ skipped: "skipped";
46
+ }>;
47
+ opaque: z.ZodOptional<z.ZodLiteral<true>>;
48
+ }, z.core.$strict>>>;
49
+ testsTruncated: z.ZodOptional<z.ZodBoolean>;
50
+ property: z.ZodOptional<z.ZodObject<{
51
+ level: z.ZodOptional<z.ZodEnum<{
52
+ manifest: "manifest";
53
+ legacy: "legacy";
54
+ }>>;
55
+ manifest: z.ZodOptional<z.ZodObject<{
56
+ digest: z.ZodString;
57
+ properties: z.ZodArray<z.ZodString>;
58
+ corpus: z.ZodOptional<z.ZodObject<{
59
+ digest: z.ZodString;
60
+ cases: z.ZodNumber;
61
+ }, z.core.$strict>>;
62
+ }, z.core.$strict>>;
63
+ }, z.core.$strict>>;
64
+ reviewer: z.ZodOptional<z.ZodObject<{
65
+ runtime: z.ZodEnum<{
66
+ codex: "codex";
67
+ claude: "claude";
68
+ fixture: "fixture";
69
+ }>;
70
+ model: z.ZodOptional<z.ZodString>;
71
+ sameVendor: z.ZodBoolean;
72
+ }, z.core.$strict>>;
73
+ review: z.ZodOptional<z.ZodObject<{
74
+ round: z.ZodNumber;
75
+ call: z.ZodNumber;
76
+ protocol: z.ZodEnum<{
77
+ valid: "valid";
78
+ invalid: "invalid";
79
+ unsafe: "unsafe";
80
+ }>;
81
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
82
+ path: z.ZodString;
83
+ reason: z.ZodString;
84
+ message: z.ZodString;
85
+ }, z.core.$strict>>>;
86
+ transitions: z.ZodOptional<z.ZodArray<z.ZodObject<{
87
+ id: z.ZodString;
88
+ from: z.ZodEnum<{
89
+ open: "open";
90
+ closed: "closed";
91
+ withdrawn: "withdrawn";
92
+ }>;
93
+ to: z.ZodEnum<{
94
+ open: "open";
95
+ closed: "closed";
96
+ withdrawn: "withdrawn";
97
+ }>;
98
+ }, z.core.$strict>>>;
99
+ }, z.core.$strict>>;
100
+ }, z.core.$strict>;
101
+ export type EvidenceRef = z.infer<typeof evidenceRefSchema>;
102
+ /**
103
+ * Против чего проверена попытка: снимки зависимостей и их свежесть на момент
104
+ * окончания, проверенная комбинация каждого потребителя. Свежесть
105
+ * записывается, а не запрещает приёмку: устаревший снимок — сведение для
106
+ * получателя, а не отказ (семантика DevContour сохраняется).
107
+ */
108
+ export declare const checkedInputsSchema: z.ZodObject<{
109
+ dependencies: z.ZodArray<z.ZodObject<{
110
+ repositoryId: z.ZodString;
111
+ sha: z.ZodString;
112
+ tree: z.ZodString;
113
+ artifacts: z.ZodArray<z.ZodObject<{
114
+ path: z.ZodString;
115
+ digest: z.ZodString;
116
+ }, z.core.$strict>>;
117
+ }, z.core.$strict>>;
118
+ freshness: z.ZodArray<z.ZodObject<{
119
+ repositoryId: z.ZodString;
120
+ snapshot: z.ZodString;
121
+ head: z.ZodString;
122
+ fresh: z.ZodBoolean;
123
+ }, z.core.$strict>>;
124
+ consumers: z.ZodArray<z.ZodObject<{
125
+ repositoryId: z.ZodString;
126
+ gates: z.ZodArray<z.ZodString>;
127
+ sha: z.ZodString;
128
+ tree: z.ZodString;
129
+ dependencies: z.ZodArray<z.ZodObject<{
130
+ repositoryId: z.ZodString;
131
+ sha: z.ZodString;
132
+ tree: z.ZodString;
133
+ artifacts: z.ZodArray<z.ZodObject<{
134
+ path: z.ZodString;
135
+ digest: z.ZodString;
136
+ }, z.core.$strict>>;
137
+ }, z.core.$strict>>;
138
+ freshness: z.ZodArray<z.ZodObject<{
139
+ repositoryId: z.ZodString;
140
+ snapshot: z.ZodString;
141
+ head: z.ZodString;
142
+ fresh: z.ZodBoolean;
143
+ }, z.core.$strict>>;
144
+ }, z.core.$strict>>;
145
+ }, z.core.$strict>;
146
+ export declare const outcomes: readonly ["accepted", "rejected", "blocked", "cancelled", "stopped"];
147
+ /**
148
+ * Итог работы над одной редакцией поручения. `accepted` — result SHA уже в
149
+ * target ref (result = integration), evidence обеих фаз записано; остальные
150
+ * исходы называют причину остановки кодом из договора ошибок. Различие
151
+ * выражено вариантами, а не проверкой после разбора, поэтому JSON Schema
152
+ * задаёт то же правило.
153
+ */
154
+ export declare const runResultSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
155
+ outcome: z.ZodLiteral<"accepted">;
156
+ shas: z.ZodObject<{
157
+ base: z.ZodString;
158
+ candidate: z.ZodString;
159
+ integration: z.ZodString;
160
+ result: z.ZodString;
161
+ }, z.core.$strict>;
162
+ apiVersion: z.ZodLiteral<"devcontour-harness/v1alpha1">;
163
+ workOrderId: z.ZodString;
164
+ graphId: z.ZodString;
165
+ source: z.ZodObject<{
166
+ connector: z.ZodString;
167
+ ref: z.ZodString;
168
+ revision: z.ZodString;
169
+ }, z.core.$strict>;
170
+ runId: z.ZodString;
171
+ attempt: z.ZodNumber;
172
+ repositoryId: z.ZodString;
173
+ targetRef: z.ZodString;
174
+ inputs: z.ZodObject<{
175
+ harnessVersion: z.ZodString;
176
+ consumerVersion: z.ZodOptional<z.ZodString>;
177
+ stateVersion: z.ZodLiteral<1>;
178
+ workOrderDigest: z.ZodString;
179
+ graphDigest: z.ZodString;
180
+ policyDigest: z.ZodString;
181
+ contextDigest: z.ZodOptional<z.ZodString>;
182
+ checks: z.ZodOptional<z.ZodString>;
183
+ corpus: z.ZodOptional<z.ZodObject<{
184
+ suite: z.ZodString;
185
+ number: z.ZodNumber;
186
+ digest: z.ZodString;
187
+ }, z.core.$strict>>;
188
+ requiredGates: z.ZodOptional<z.ZodArray<z.ZodString>>;
189
+ writer: z.ZodOptional<z.ZodObject<{
190
+ runtime: z.ZodEnum<{
191
+ codex: "codex";
192
+ claude: "claude";
193
+ fixture: "fixture";
194
+ }>;
195
+ model: z.ZodOptional<z.ZodString>;
196
+ }, z.core.$strict>>;
197
+ }, z.core.$strict>;
198
+ checked: z.ZodObject<{
199
+ dependencies: z.ZodArray<z.ZodObject<{
200
+ repositoryId: z.ZodString;
201
+ sha: z.ZodString;
202
+ tree: z.ZodString;
203
+ artifacts: z.ZodArray<z.ZodObject<{
204
+ path: z.ZodString;
205
+ digest: z.ZodString;
206
+ }, z.core.$strict>>;
207
+ }, z.core.$strict>>;
208
+ freshness: z.ZodArray<z.ZodObject<{
209
+ repositoryId: z.ZodString;
210
+ snapshot: z.ZodString;
211
+ head: z.ZodString;
212
+ fresh: z.ZodBoolean;
213
+ }, z.core.$strict>>;
214
+ consumers: z.ZodArray<z.ZodObject<{
215
+ repositoryId: z.ZodString;
216
+ gates: z.ZodArray<z.ZodString>;
217
+ sha: z.ZodString;
218
+ tree: z.ZodString;
219
+ dependencies: z.ZodArray<z.ZodObject<{
220
+ repositoryId: z.ZodString;
221
+ sha: z.ZodString;
222
+ tree: z.ZodString;
223
+ artifacts: z.ZodArray<z.ZodObject<{
224
+ path: z.ZodString;
225
+ digest: z.ZodString;
226
+ }, z.core.$strict>>;
227
+ }, z.core.$strict>>;
228
+ freshness: z.ZodArray<z.ZodObject<{
229
+ repositoryId: z.ZodString;
230
+ snapshot: z.ZodString;
231
+ head: z.ZodString;
232
+ fresh: z.ZodBoolean;
233
+ }, z.core.$strict>>;
234
+ }, z.core.$strict>>;
235
+ }, z.core.$strict>;
236
+ evidence: z.ZodArray<z.ZodObject<{
237
+ id: z.ZodString;
238
+ kind: z.ZodEnum<{
239
+ check: "check";
240
+ test: "test";
241
+ property: "property";
242
+ review: "review";
243
+ consumer: "consumer";
244
+ }>;
245
+ phase: z.ZodEnum<{
246
+ candidate: "candidate";
247
+ integration: "integration";
248
+ }>;
249
+ gate: z.ZodString;
250
+ sha: z.ZodString;
251
+ passed: z.ZodBoolean;
252
+ digest: z.ZodString;
253
+ summary: z.ZodString;
254
+ consumer: z.ZodOptional<z.ZodString>;
255
+ checks: z.ZodOptional<z.ZodString>;
256
+ tests: z.ZodOptional<z.ZodArray<z.ZodObject<{
257
+ id: z.ZodString;
258
+ status: z.ZodEnum<{
259
+ passed: "passed";
260
+ failed: "failed";
261
+ skipped: "skipped";
262
+ }>;
263
+ opaque: z.ZodOptional<z.ZodLiteral<true>>;
264
+ }, z.core.$strict>>>;
265
+ testsTruncated: z.ZodOptional<z.ZodBoolean>;
266
+ property: z.ZodOptional<z.ZodObject<{
267
+ level: z.ZodOptional<z.ZodEnum<{
268
+ manifest: "manifest";
269
+ legacy: "legacy";
270
+ }>>;
271
+ manifest: z.ZodOptional<z.ZodObject<{
272
+ digest: z.ZodString;
273
+ properties: z.ZodArray<z.ZodString>;
274
+ corpus: z.ZodOptional<z.ZodObject<{
275
+ digest: z.ZodString;
276
+ cases: z.ZodNumber;
277
+ }, z.core.$strict>>;
278
+ }, z.core.$strict>>;
279
+ }, z.core.$strict>>;
280
+ reviewer: z.ZodOptional<z.ZodObject<{
281
+ runtime: z.ZodEnum<{
282
+ codex: "codex";
283
+ claude: "claude";
284
+ fixture: "fixture";
285
+ }>;
286
+ model: z.ZodOptional<z.ZodString>;
287
+ sameVendor: z.ZodBoolean;
288
+ }, z.core.$strict>>;
289
+ review: z.ZodOptional<z.ZodObject<{
290
+ round: z.ZodNumber;
291
+ call: z.ZodNumber;
292
+ protocol: z.ZodEnum<{
293
+ valid: "valid";
294
+ invalid: "invalid";
295
+ unsafe: "unsafe";
296
+ }>;
297
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
298
+ path: z.ZodString;
299
+ reason: z.ZodString;
300
+ message: z.ZodString;
301
+ }, z.core.$strict>>>;
302
+ transitions: z.ZodOptional<z.ZodArray<z.ZodObject<{
303
+ id: z.ZodString;
304
+ from: z.ZodEnum<{
305
+ open: "open";
306
+ closed: "closed";
307
+ withdrawn: "withdrawn";
308
+ }>;
309
+ to: z.ZodEnum<{
310
+ open: "open";
311
+ closed: "closed";
312
+ withdrawn: "withdrawn";
313
+ }>;
314
+ }, z.core.$strict>>>;
315
+ }, z.core.$strict>>;
316
+ }, z.core.$strict>>;
317
+ findings: z.ZodDefault<z.ZodArray<z.ZodObject<{
318
+ severity: z.ZodString;
319
+ message: z.ZodString;
320
+ path: z.ZodOptional<z.ZodNullable<z.ZodString>>;
321
+ line: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
322
+ rule: z.ZodOptional<z.ZodString>;
323
+ id: z.ZodOptional<z.ZodString>;
324
+ status: z.ZodOptional<z.ZodEnum<{
325
+ open: "open";
326
+ closed: "closed";
327
+ withdrawn: "withdrawn";
328
+ }>>;
329
+ }, z.core.$strict>>>;
330
+ limitations: z.ZodDefault<z.ZodArray<z.ZodString>>;
331
+ finishedAt: z.ZodISODateTime;
332
+ }, z.core.$strict>, z.ZodObject<{
333
+ outcome: z.ZodEnum<{
334
+ rejected: "rejected";
335
+ blocked: "blocked";
336
+ cancelled: "cancelled";
337
+ stopped: "stopped";
338
+ }>;
339
+ shas: z.ZodObject<{
340
+ base: z.ZodOptional<z.ZodString>;
341
+ candidate: z.ZodOptional<z.ZodString>;
342
+ integration: z.ZodOptional<z.ZodString>;
343
+ }, z.core.$strict>;
344
+ stopReason: z.ZodObject<{
345
+ code: z.ZodEnum<{
346
+ INVALID_INPUT: "INVALID_INPUT";
347
+ UNSUPPORTED_COMMAND: "UNSUPPORTED_COMMAND";
348
+ UNSUPPORTED_VERSION: "UNSUPPORTED_VERSION";
349
+ GRAPH_CYCLE: "GRAPH_CYCLE";
350
+ GRAPH_UNKNOWN_DEPENDENCY: "GRAPH_UNKNOWN_DEPENDENCY";
351
+ GRAPH_DUPLICATE_ID: "GRAPH_DUPLICATE_ID";
352
+ GATE_UNKNOWN: "GATE_UNKNOWN";
353
+ GATE_GROUP_CYCLE: "GATE_GROUP_CYCLE";
354
+ REVIEWER_SAME_VENDOR: "REVIEWER_SAME_VENDOR";
355
+ REVIEWER_MISSING: "REVIEWER_MISSING";
356
+ APPROVAL_STALE: "APPROVAL_STALE";
357
+ APPROVAL_REQUIRED: "APPROVAL_REQUIRED";
358
+ LEASE_STALE: "LEASE_STALE";
359
+ CONTROLLER_BUSY: "CONTROLLER_BUSY";
360
+ PAUSED: "PAUSED";
361
+ NOT_READY: "NOT_READY";
362
+ SCOPE_VIOLATION: "SCOPE_VIOLATION";
363
+ GATE_FAILED: "GATE_FAILED";
364
+ REVIEW_REJECTED: "REVIEW_REJECTED";
365
+ BUDGET_EXHAUSTED: "BUDGET_EXHAUSTED";
366
+ BUDGET_UNKNOWN: "BUDGET_UNKNOWN";
367
+ ATTEMPTS_EXHAUSTED: "ATTEMPTS_EXHAUSTED";
368
+ REVISION_CONFLICT: "REVISION_CONFLICT";
369
+ CANCELLED: "CANCELLED";
370
+ NOT_FOUND: "NOT_FOUND";
371
+ STATE_VERSION_UNSUPPORTED: "STATE_VERSION_UNSUPPORTED";
372
+ RUNTIME_UNAVAILABLE: "RUNTIME_UNAVAILABLE";
373
+ REVIEW_PROTOCOL_INVALID: "REVIEW_PROTOCOL_INVALID";
374
+ SANDBOX_UNAVAILABLE: "SANDBOX_UNAVAILABLE";
375
+ GIT_FAILED: "GIT_FAILED";
376
+ STORAGE_FAILED: "STORAGE_FAILED";
377
+ DELIVERY_FAILED: "DELIVERY_FAILED";
378
+ INTERNAL: "INTERNAL";
379
+ }>;
380
+ message: z.ZodString;
381
+ }, z.core.$strict>;
382
+ apiVersion: z.ZodLiteral<"devcontour-harness/v1alpha1">;
383
+ workOrderId: z.ZodString;
384
+ graphId: z.ZodString;
385
+ source: z.ZodObject<{
386
+ connector: z.ZodString;
387
+ ref: z.ZodString;
388
+ revision: z.ZodString;
389
+ }, z.core.$strict>;
390
+ runId: z.ZodString;
391
+ attempt: z.ZodNumber;
392
+ repositoryId: z.ZodString;
393
+ targetRef: z.ZodString;
394
+ inputs: z.ZodObject<{
395
+ harnessVersion: z.ZodString;
396
+ consumerVersion: z.ZodOptional<z.ZodString>;
397
+ stateVersion: z.ZodLiteral<1>;
398
+ workOrderDigest: z.ZodString;
399
+ graphDigest: z.ZodString;
400
+ policyDigest: z.ZodString;
401
+ contextDigest: z.ZodOptional<z.ZodString>;
402
+ checks: z.ZodOptional<z.ZodString>;
403
+ corpus: z.ZodOptional<z.ZodObject<{
404
+ suite: z.ZodString;
405
+ number: z.ZodNumber;
406
+ digest: z.ZodString;
407
+ }, z.core.$strict>>;
408
+ requiredGates: z.ZodOptional<z.ZodArray<z.ZodString>>;
409
+ writer: z.ZodOptional<z.ZodObject<{
410
+ runtime: z.ZodEnum<{
411
+ codex: "codex";
412
+ claude: "claude";
413
+ fixture: "fixture";
414
+ }>;
415
+ model: z.ZodOptional<z.ZodString>;
416
+ }, z.core.$strict>>;
417
+ }, z.core.$strict>;
418
+ checked: z.ZodObject<{
419
+ dependencies: z.ZodArray<z.ZodObject<{
420
+ repositoryId: z.ZodString;
421
+ sha: z.ZodString;
422
+ tree: z.ZodString;
423
+ artifacts: z.ZodArray<z.ZodObject<{
424
+ path: z.ZodString;
425
+ digest: z.ZodString;
426
+ }, z.core.$strict>>;
427
+ }, z.core.$strict>>;
428
+ freshness: z.ZodArray<z.ZodObject<{
429
+ repositoryId: z.ZodString;
430
+ snapshot: z.ZodString;
431
+ head: z.ZodString;
432
+ fresh: z.ZodBoolean;
433
+ }, z.core.$strict>>;
434
+ consumers: z.ZodArray<z.ZodObject<{
435
+ repositoryId: z.ZodString;
436
+ gates: z.ZodArray<z.ZodString>;
437
+ sha: z.ZodString;
438
+ tree: z.ZodString;
439
+ dependencies: z.ZodArray<z.ZodObject<{
440
+ repositoryId: z.ZodString;
441
+ sha: z.ZodString;
442
+ tree: z.ZodString;
443
+ artifacts: z.ZodArray<z.ZodObject<{
444
+ path: z.ZodString;
445
+ digest: z.ZodString;
446
+ }, z.core.$strict>>;
447
+ }, z.core.$strict>>;
448
+ freshness: z.ZodArray<z.ZodObject<{
449
+ repositoryId: z.ZodString;
450
+ snapshot: z.ZodString;
451
+ head: z.ZodString;
452
+ fresh: z.ZodBoolean;
453
+ }, z.core.$strict>>;
454
+ }, z.core.$strict>>;
455
+ }, z.core.$strict>;
456
+ evidence: z.ZodArray<z.ZodObject<{
457
+ id: z.ZodString;
458
+ kind: z.ZodEnum<{
459
+ check: "check";
460
+ test: "test";
461
+ property: "property";
462
+ review: "review";
463
+ consumer: "consumer";
464
+ }>;
465
+ phase: z.ZodEnum<{
466
+ candidate: "candidate";
467
+ integration: "integration";
468
+ }>;
469
+ gate: z.ZodString;
470
+ sha: z.ZodString;
471
+ passed: z.ZodBoolean;
472
+ digest: z.ZodString;
473
+ summary: z.ZodString;
474
+ consumer: z.ZodOptional<z.ZodString>;
475
+ checks: z.ZodOptional<z.ZodString>;
476
+ tests: z.ZodOptional<z.ZodArray<z.ZodObject<{
477
+ id: z.ZodString;
478
+ status: z.ZodEnum<{
479
+ passed: "passed";
480
+ failed: "failed";
481
+ skipped: "skipped";
482
+ }>;
483
+ opaque: z.ZodOptional<z.ZodLiteral<true>>;
484
+ }, z.core.$strict>>>;
485
+ testsTruncated: z.ZodOptional<z.ZodBoolean>;
486
+ property: z.ZodOptional<z.ZodObject<{
487
+ level: z.ZodOptional<z.ZodEnum<{
488
+ manifest: "manifest";
489
+ legacy: "legacy";
490
+ }>>;
491
+ manifest: z.ZodOptional<z.ZodObject<{
492
+ digest: z.ZodString;
493
+ properties: z.ZodArray<z.ZodString>;
494
+ corpus: z.ZodOptional<z.ZodObject<{
495
+ digest: z.ZodString;
496
+ cases: z.ZodNumber;
497
+ }, z.core.$strict>>;
498
+ }, z.core.$strict>>;
499
+ }, z.core.$strict>>;
500
+ reviewer: z.ZodOptional<z.ZodObject<{
501
+ runtime: z.ZodEnum<{
502
+ codex: "codex";
503
+ claude: "claude";
504
+ fixture: "fixture";
505
+ }>;
506
+ model: z.ZodOptional<z.ZodString>;
507
+ sameVendor: z.ZodBoolean;
508
+ }, z.core.$strict>>;
509
+ review: z.ZodOptional<z.ZodObject<{
510
+ round: z.ZodNumber;
511
+ call: z.ZodNumber;
512
+ protocol: z.ZodEnum<{
513
+ valid: "valid";
514
+ invalid: "invalid";
515
+ unsafe: "unsafe";
516
+ }>;
517
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
518
+ path: z.ZodString;
519
+ reason: z.ZodString;
520
+ message: z.ZodString;
521
+ }, z.core.$strict>>>;
522
+ transitions: z.ZodOptional<z.ZodArray<z.ZodObject<{
523
+ id: z.ZodString;
524
+ from: z.ZodEnum<{
525
+ open: "open";
526
+ closed: "closed";
527
+ withdrawn: "withdrawn";
528
+ }>;
529
+ to: z.ZodEnum<{
530
+ open: "open";
531
+ closed: "closed";
532
+ withdrawn: "withdrawn";
533
+ }>;
534
+ }, z.core.$strict>>>;
535
+ }, z.core.$strict>>;
536
+ }, z.core.$strict>>;
537
+ findings: z.ZodDefault<z.ZodArray<z.ZodObject<{
538
+ severity: z.ZodString;
539
+ message: z.ZodString;
540
+ path: z.ZodOptional<z.ZodNullable<z.ZodString>>;
541
+ line: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
542
+ rule: z.ZodOptional<z.ZodString>;
543
+ id: z.ZodOptional<z.ZodString>;
544
+ status: z.ZodOptional<z.ZodEnum<{
545
+ open: "open";
546
+ closed: "closed";
547
+ withdrawn: "withdrawn";
548
+ }>>;
549
+ }, z.core.$strict>>>;
550
+ limitations: z.ZodDefault<z.ZodArray<z.ZodString>>;
551
+ finishedAt: z.ZodISODateTime;
552
+ }, z.core.$strict>], "outcome">;
553
+ export type RunResult = z.infer<typeof runResultSchema>;
554
+ /**
555
+ * Состояние доставки результата получателю — отдельно от исхода исполнения.
556
+ * Недоступность получателя не откатывает принятый код; повтор доставки
557
+ * идёт с тем же ключом и не вызывает моделей или интеграции.
558
+ */
559
+ export declare const deliveryStateSchema: z.ZodObject<{
560
+ sink: z.ZodString;
561
+ key: z.ZodString;
562
+ revision: z.ZodString;
563
+ status: z.ZodEnum<{
564
+ failed: "failed";
565
+ pending: "pending";
566
+ delivered: "delivered";
567
+ conflict: "conflict";
568
+ uncertain: "uncertain";
569
+ }>;
570
+ attempts: z.ZodNumber;
571
+ lastError: z.ZodOptional<z.ZodString>;
572
+ operation: z.ZodOptional<z.ZodString>;
573
+ currentRevision: z.ZodOptional<z.ZodString>;
574
+ receipt: z.ZodOptional<z.ZodString>;
575
+ updatedAt: z.ZodISODateTime;
576
+ }, z.core.$strict>;
577
+ export type DeliveryState = z.infer<typeof deliveryStateSchema>;
578
+ /** Выход `harness result`: результат и состояние его доставки. */
579
+ export declare const resultEnvelopeSchema: z.ZodObject<{
580
+ apiVersion: z.ZodLiteral<"devcontour-harness/v1alpha1">;
581
+ result: z.ZodDiscriminatedUnion<[z.ZodObject<{
582
+ outcome: z.ZodLiteral<"accepted">;
583
+ shas: z.ZodObject<{
584
+ base: z.ZodString;
585
+ candidate: z.ZodString;
586
+ integration: z.ZodString;
587
+ result: z.ZodString;
588
+ }, z.core.$strict>;
589
+ apiVersion: z.ZodLiteral<"devcontour-harness/v1alpha1">;
590
+ workOrderId: z.ZodString;
591
+ graphId: z.ZodString;
592
+ source: z.ZodObject<{
593
+ connector: z.ZodString;
594
+ ref: z.ZodString;
595
+ revision: z.ZodString;
596
+ }, z.core.$strict>;
597
+ runId: z.ZodString;
598
+ attempt: z.ZodNumber;
599
+ repositoryId: z.ZodString;
600
+ targetRef: z.ZodString;
601
+ inputs: z.ZodObject<{
602
+ harnessVersion: z.ZodString;
603
+ consumerVersion: z.ZodOptional<z.ZodString>;
604
+ stateVersion: z.ZodLiteral<1>;
605
+ workOrderDigest: z.ZodString;
606
+ graphDigest: z.ZodString;
607
+ policyDigest: z.ZodString;
608
+ contextDigest: z.ZodOptional<z.ZodString>;
609
+ checks: z.ZodOptional<z.ZodString>;
610
+ corpus: z.ZodOptional<z.ZodObject<{
611
+ suite: z.ZodString;
612
+ number: z.ZodNumber;
613
+ digest: z.ZodString;
614
+ }, z.core.$strict>>;
615
+ requiredGates: z.ZodOptional<z.ZodArray<z.ZodString>>;
616
+ writer: z.ZodOptional<z.ZodObject<{
617
+ runtime: z.ZodEnum<{
618
+ codex: "codex";
619
+ claude: "claude";
620
+ fixture: "fixture";
621
+ }>;
622
+ model: z.ZodOptional<z.ZodString>;
623
+ }, z.core.$strict>>;
624
+ }, z.core.$strict>;
625
+ checked: z.ZodObject<{
626
+ dependencies: z.ZodArray<z.ZodObject<{
627
+ repositoryId: z.ZodString;
628
+ sha: z.ZodString;
629
+ tree: z.ZodString;
630
+ artifacts: z.ZodArray<z.ZodObject<{
631
+ path: z.ZodString;
632
+ digest: z.ZodString;
633
+ }, z.core.$strict>>;
634
+ }, z.core.$strict>>;
635
+ freshness: z.ZodArray<z.ZodObject<{
636
+ repositoryId: z.ZodString;
637
+ snapshot: z.ZodString;
638
+ head: z.ZodString;
639
+ fresh: z.ZodBoolean;
640
+ }, z.core.$strict>>;
641
+ consumers: z.ZodArray<z.ZodObject<{
642
+ repositoryId: z.ZodString;
643
+ gates: z.ZodArray<z.ZodString>;
644
+ sha: z.ZodString;
645
+ tree: z.ZodString;
646
+ dependencies: z.ZodArray<z.ZodObject<{
647
+ repositoryId: z.ZodString;
648
+ sha: z.ZodString;
649
+ tree: z.ZodString;
650
+ artifacts: z.ZodArray<z.ZodObject<{
651
+ path: z.ZodString;
652
+ digest: z.ZodString;
653
+ }, z.core.$strict>>;
654
+ }, z.core.$strict>>;
655
+ freshness: z.ZodArray<z.ZodObject<{
656
+ repositoryId: z.ZodString;
657
+ snapshot: z.ZodString;
658
+ head: z.ZodString;
659
+ fresh: z.ZodBoolean;
660
+ }, z.core.$strict>>;
661
+ }, z.core.$strict>>;
662
+ }, z.core.$strict>;
663
+ evidence: z.ZodArray<z.ZodObject<{
664
+ id: z.ZodString;
665
+ kind: z.ZodEnum<{
666
+ check: "check";
667
+ test: "test";
668
+ property: "property";
669
+ review: "review";
670
+ consumer: "consumer";
671
+ }>;
672
+ phase: z.ZodEnum<{
673
+ candidate: "candidate";
674
+ integration: "integration";
675
+ }>;
676
+ gate: z.ZodString;
677
+ sha: z.ZodString;
678
+ passed: z.ZodBoolean;
679
+ digest: z.ZodString;
680
+ summary: z.ZodString;
681
+ consumer: z.ZodOptional<z.ZodString>;
682
+ checks: z.ZodOptional<z.ZodString>;
683
+ tests: z.ZodOptional<z.ZodArray<z.ZodObject<{
684
+ id: z.ZodString;
685
+ status: z.ZodEnum<{
686
+ passed: "passed";
687
+ failed: "failed";
688
+ skipped: "skipped";
689
+ }>;
690
+ opaque: z.ZodOptional<z.ZodLiteral<true>>;
691
+ }, z.core.$strict>>>;
692
+ testsTruncated: z.ZodOptional<z.ZodBoolean>;
693
+ property: z.ZodOptional<z.ZodObject<{
694
+ level: z.ZodOptional<z.ZodEnum<{
695
+ manifest: "manifest";
696
+ legacy: "legacy";
697
+ }>>;
698
+ manifest: z.ZodOptional<z.ZodObject<{
699
+ digest: z.ZodString;
700
+ properties: z.ZodArray<z.ZodString>;
701
+ corpus: z.ZodOptional<z.ZodObject<{
702
+ digest: z.ZodString;
703
+ cases: z.ZodNumber;
704
+ }, z.core.$strict>>;
705
+ }, z.core.$strict>>;
706
+ }, z.core.$strict>>;
707
+ reviewer: z.ZodOptional<z.ZodObject<{
708
+ runtime: z.ZodEnum<{
709
+ codex: "codex";
710
+ claude: "claude";
711
+ fixture: "fixture";
712
+ }>;
713
+ model: z.ZodOptional<z.ZodString>;
714
+ sameVendor: z.ZodBoolean;
715
+ }, z.core.$strict>>;
716
+ review: z.ZodOptional<z.ZodObject<{
717
+ round: z.ZodNumber;
718
+ call: z.ZodNumber;
719
+ protocol: z.ZodEnum<{
720
+ valid: "valid";
721
+ invalid: "invalid";
722
+ unsafe: "unsafe";
723
+ }>;
724
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
725
+ path: z.ZodString;
726
+ reason: z.ZodString;
727
+ message: z.ZodString;
728
+ }, z.core.$strict>>>;
729
+ transitions: z.ZodOptional<z.ZodArray<z.ZodObject<{
730
+ id: z.ZodString;
731
+ from: z.ZodEnum<{
732
+ open: "open";
733
+ closed: "closed";
734
+ withdrawn: "withdrawn";
735
+ }>;
736
+ to: z.ZodEnum<{
737
+ open: "open";
738
+ closed: "closed";
739
+ withdrawn: "withdrawn";
740
+ }>;
741
+ }, z.core.$strict>>>;
742
+ }, z.core.$strict>>;
743
+ }, z.core.$strict>>;
744
+ findings: z.ZodDefault<z.ZodArray<z.ZodObject<{
745
+ severity: z.ZodString;
746
+ message: z.ZodString;
747
+ path: z.ZodOptional<z.ZodNullable<z.ZodString>>;
748
+ line: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
749
+ rule: z.ZodOptional<z.ZodString>;
750
+ id: z.ZodOptional<z.ZodString>;
751
+ status: z.ZodOptional<z.ZodEnum<{
752
+ open: "open";
753
+ closed: "closed";
754
+ withdrawn: "withdrawn";
755
+ }>>;
756
+ }, z.core.$strict>>>;
757
+ limitations: z.ZodDefault<z.ZodArray<z.ZodString>>;
758
+ finishedAt: z.ZodISODateTime;
759
+ }, z.core.$strict>, z.ZodObject<{
760
+ outcome: z.ZodEnum<{
761
+ rejected: "rejected";
762
+ blocked: "blocked";
763
+ cancelled: "cancelled";
764
+ stopped: "stopped";
765
+ }>;
766
+ shas: z.ZodObject<{
767
+ base: z.ZodOptional<z.ZodString>;
768
+ candidate: z.ZodOptional<z.ZodString>;
769
+ integration: z.ZodOptional<z.ZodString>;
770
+ }, z.core.$strict>;
771
+ stopReason: z.ZodObject<{
772
+ code: z.ZodEnum<{
773
+ INVALID_INPUT: "INVALID_INPUT";
774
+ UNSUPPORTED_COMMAND: "UNSUPPORTED_COMMAND";
775
+ UNSUPPORTED_VERSION: "UNSUPPORTED_VERSION";
776
+ GRAPH_CYCLE: "GRAPH_CYCLE";
777
+ GRAPH_UNKNOWN_DEPENDENCY: "GRAPH_UNKNOWN_DEPENDENCY";
778
+ GRAPH_DUPLICATE_ID: "GRAPH_DUPLICATE_ID";
779
+ GATE_UNKNOWN: "GATE_UNKNOWN";
780
+ GATE_GROUP_CYCLE: "GATE_GROUP_CYCLE";
781
+ REVIEWER_SAME_VENDOR: "REVIEWER_SAME_VENDOR";
782
+ REVIEWER_MISSING: "REVIEWER_MISSING";
783
+ APPROVAL_STALE: "APPROVAL_STALE";
784
+ APPROVAL_REQUIRED: "APPROVAL_REQUIRED";
785
+ LEASE_STALE: "LEASE_STALE";
786
+ CONTROLLER_BUSY: "CONTROLLER_BUSY";
787
+ PAUSED: "PAUSED";
788
+ NOT_READY: "NOT_READY";
789
+ SCOPE_VIOLATION: "SCOPE_VIOLATION";
790
+ GATE_FAILED: "GATE_FAILED";
791
+ REVIEW_REJECTED: "REVIEW_REJECTED";
792
+ BUDGET_EXHAUSTED: "BUDGET_EXHAUSTED";
793
+ BUDGET_UNKNOWN: "BUDGET_UNKNOWN";
794
+ ATTEMPTS_EXHAUSTED: "ATTEMPTS_EXHAUSTED";
795
+ REVISION_CONFLICT: "REVISION_CONFLICT";
796
+ CANCELLED: "CANCELLED";
797
+ NOT_FOUND: "NOT_FOUND";
798
+ STATE_VERSION_UNSUPPORTED: "STATE_VERSION_UNSUPPORTED";
799
+ RUNTIME_UNAVAILABLE: "RUNTIME_UNAVAILABLE";
800
+ REVIEW_PROTOCOL_INVALID: "REVIEW_PROTOCOL_INVALID";
801
+ SANDBOX_UNAVAILABLE: "SANDBOX_UNAVAILABLE";
802
+ GIT_FAILED: "GIT_FAILED";
803
+ STORAGE_FAILED: "STORAGE_FAILED";
804
+ DELIVERY_FAILED: "DELIVERY_FAILED";
805
+ INTERNAL: "INTERNAL";
806
+ }>;
807
+ message: z.ZodString;
808
+ }, z.core.$strict>;
809
+ apiVersion: z.ZodLiteral<"devcontour-harness/v1alpha1">;
810
+ workOrderId: z.ZodString;
811
+ graphId: z.ZodString;
812
+ source: z.ZodObject<{
813
+ connector: z.ZodString;
814
+ ref: z.ZodString;
815
+ revision: z.ZodString;
816
+ }, z.core.$strict>;
817
+ runId: z.ZodString;
818
+ attempt: z.ZodNumber;
819
+ repositoryId: z.ZodString;
820
+ targetRef: z.ZodString;
821
+ inputs: z.ZodObject<{
822
+ harnessVersion: z.ZodString;
823
+ consumerVersion: z.ZodOptional<z.ZodString>;
824
+ stateVersion: z.ZodLiteral<1>;
825
+ workOrderDigest: z.ZodString;
826
+ graphDigest: z.ZodString;
827
+ policyDigest: z.ZodString;
828
+ contextDigest: z.ZodOptional<z.ZodString>;
829
+ checks: z.ZodOptional<z.ZodString>;
830
+ corpus: z.ZodOptional<z.ZodObject<{
831
+ suite: z.ZodString;
832
+ number: z.ZodNumber;
833
+ digest: z.ZodString;
834
+ }, z.core.$strict>>;
835
+ requiredGates: z.ZodOptional<z.ZodArray<z.ZodString>>;
836
+ writer: z.ZodOptional<z.ZodObject<{
837
+ runtime: z.ZodEnum<{
838
+ codex: "codex";
839
+ claude: "claude";
840
+ fixture: "fixture";
841
+ }>;
842
+ model: z.ZodOptional<z.ZodString>;
843
+ }, z.core.$strict>>;
844
+ }, z.core.$strict>;
845
+ checked: z.ZodObject<{
846
+ dependencies: z.ZodArray<z.ZodObject<{
847
+ repositoryId: z.ZodString;
848
+ sha: z.ZodString;
849
+ tree: z.ZodString;
850
+ artifacts: z.ZodArray<z.ZodObject<{
851
+ path: z.ZodString;
852
+ digest: z.ZodString;
853
+ }, z.core.$strict>>;
854
+ }, z.core.$strict>>;
855
+ freshness: z.ZodArray<z.ZodObject<{
856
+ repositoryId: z.ZodString;
857
+ snapshot: z.ZodString;
858
+ head: z.ZodString;
859
+ fresh: z.ZodBoolean;
860
+ }, z.core.$strict>>;
861
+ consumers: z.ZodArray<z.ZodObject<{
862
+ repositoryId: z.ZodString;
863
+ gates: z.ZodArray<z.ZodString>;
864
+ sha: z.ZodString;
865
+ tree: z.ZodString;
866
+ dependencies: z.ZodArray<z.ZodObject<{
867
+ repositoryId: z.ZodString;
868
+ sha: z.ZodString;
869
+ tree: z.ZodString;
870
+ artifacts: z.ZodArray<z.ZodObject<{
871
+ path: z.ZodString;
872
+ digest: z.ZodString;
873
+ }, z.core.$strict>>;
874
+ }, z.core.$strict>>;
875
+ freshness: z.ZodArray<z.ZodObject<{
876
+ repositoryId: z.ZodString;
877
+ snapshot: z.ZodString;
878
+ head: z.ZodString;
879
+ fresh: z.ZodBoolean;
880
+ }, z.core.$strict>>;
881
+ }, z.core.$strict>>;
882
+ }, z.core.$strict>;
883
+ evidence: z.ZodArray<z.ZodObject<{
884
+ id: z.ZodString;
885
+ kind: z.ZodEnum<{
886
+ check: "check";
887
+ test: "test";
888
+ property: "property";
889
+ review: "review";
890
+ consumer: "consumer";
891
+ }>;
892
+ phase: z.ZodEnum<{
893
+ candidate: "candidate";
894
+ integration: "integration";
895
+ }>;
896
+ gate: z.ZodString;
897
+ sha: z.ZodString;
898
+ passed: z.ZodBoolean;
899
+ digest: z.ZodString;
900
+ summary: z.ZodString;
901
+ consumer: z.ZodOptional<z.ZodString>;
902
+ checks: z.ZodOptional<z.ZodString>;
903
+ tests: z.ZodOptional<z.ZodArray<z.ZodObject<{
904
+ id: z.ZodString;
905
+ status: z.ZodEnum<{
906
+ passed: "passed";
907
+ failed: "failed";
908
+ skipped: "skipped";
909
+ }>;
910
+ opaque: z.ZodOptional<z.ZodLiteral<true>>;
911
+ }, z.core.$strict>>>;
912
+ testsTruncated: z.ZodOptional<z.ZodBoolean>;
913
+ property: z.ZodOptional<z.ZodObject<{
914
+ level: z.ZodOptional<z.ZodEnum<{
915
+ manifest: "manifest";
916
+ legacy: "legacy";
917
+ }>>;
918
+ manifest: z.ZodOptional<z.ZodObject<{
919
+ digest: z.ZodString;
920
+ properties: z.ZodArray<z.ZodString>;
921
+ corpus: z.ZodOptional<z.ZodObject<{
922
+ digest: z.ZodString;
923
+ cases: z.ZodNumber;
924
+ }, z.core.$strict>>;
925
+ }, z.core.$strict>>;
926
+ }, z.core.$strict>>;
927
+ reviewer: z.ZodOptional<z.ZodObject<{
928
+ runtime: z.ZodEnum<{
929
+ codex: "codex";
930
+ claude: "claude";
931
+ fixture: "fixture";
932
+ }>;
933
+ model: z.ZodOptional<z.ZodString>;
934
+ sameVendor: z.ZodBoolean;
935
+ }, z.core.$strict>>;
936
+ review: z.ZodOptional<z.ZodObject<{
937
+ round: z.ZodNumber;
938
+ call: z.ZodNumber;
939
+ protocol: z.ZodEnum<{
940
+ valid: "valid";
941
+ invalid: "invalid";
942
+ unsafe: "unsafe";
943
+ }>;
944
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
945
+ path: z.ZodString;
946
+ reason: z.ZodString;
947
+ message: z.ZodString;
948
+ }, z.core.$strict>>>;
949
+ transitions: z.ZodOptional<z.ZodArray<z.ZodObject<{
950
+ id: z.ZodString;
951
+ from: z.ZodEnum<{
952
+ open: "open";
953
+ closed: "closed";
954
+ withdrawn: "withdrawn";
955
+ }>;
956
+ to: z.ZodEnum<{
957
+ open: "open";
958
+ closed: "closed";
959
+ withdrawn: "withdrawn";
960
+ }>;
961
+ }, z.core.$strict>>>;
962
+ }, z.core.$strict>>;
963
+ }, z.core.$strict>>;
964
+ findings: z.ZodDefault<z.ZodArray<z.ZodObject<{
965
+ severity: z.ZodString;
966
+ message: z.ZodString;
967
+ path: z.ZodOptional<z.ZodNullable<z.ZodString>>;
968
+ line: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
969
+ rule: z.ZodOptional<z.ZodString>;
970
+ id: z.ZodOptional<z.ZodString>;
971
+ status: z.ZodOptional<z.ZodEnum<{
972
+ open: "open";
973
+ closed: "closed";
974
+ withdrawn: "withdrawn";
975
+ }>>;
976
+ }, z.core.$strict>>>;
977
+ limitations: z.ZodDefault<z.ZodArray<z.ZodString>>;
978
+ finishedAt: z.ZodISODateTime;
979
+ }, z.core.$strict>], "outcome">;
980
+ delivery: z.ZodArray<z.ZodObject<{
981
+ sink: z.ZodString;
982
+ key: z.ZodString;
983
+ revision: z.ZodString;
984
+ status: z.ZodEnum<{
985
+ failed: "failed";
986
+ pending: "pending";
987
+ delivered: "delivered";
988
+ conflict: "conflict";
989
+ uncertain: "uncertain";
990
+ }>;
991
+ attempts: z.ZodNumber;
992
+ lastError: z.ZodOptional<z.ZodString>;
993
+ operation: z.ZodOptional<z.ZodString>;
994
+ currentRevision: z.ZodOptional<z.ZodString>;
995
+ receipt: z.ZodOptional<z.ZodString>;
996
+ updatedAt: z.ZodISODateTime;
997
+ }, z.core.$strict>>;
998
+ }, z.core.$strict>;
999
+ export type ResultEnvelope = z.infer<typeof resultEnvelopeSchema>;
1000
+ /**
1001
+ * Совместная проверка закреплённой комбинации SHA нескольких репозиториев
1002
+ * gates уровня workspace (`policy.workspaceGates`). Это техническая
1003
+ * проверка; решение о продуктовом принятии (ChangeSet, релиз) принимает
1004
+ * хост. Атомарность продвижения нескольких Git-репозиториев не заявляется:
1005
+ * результат привязан к manifest, и смена любого SHA делает его устаревшим.
1006
+ */
1007
+ export declare const jointManifestSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
1008
+ sha: z.ZodString;
1009
+ tree: z.ZodString;
1010
+ }, z.core.$strict>>;
1011
+ export declare const jointEvidenceSchema: z.ZodObject<{
1012
+ gate: z.ZodString;
1013
+ passed: z.ZodBoolean;
1014
+ command: z.ZodArray<z.ZodString>;
1015
+ exitCode: z.ZodNumber;
1016
+ log: z.ZodString;
1017
+ digest: z.ZodString;
1018
+ summary: z.ZodString;
1019
+ artifacts: z.ZodArray<z.ZodObject<{
1020
+ path: z.ZodString;
1021
+ digest: z.ZodString;
1022
+ }, z.core.$strict>>;
1023
+ durationMs: z.ZodOptional<z.ZodNumber>;
1024
+ }, z.core.$strict>;
1025
+ export declare const jointImpactSchema: z.ZodObject<{
1026
+ changed: z.ZodArray<z.ZodString>;
1027
+ affected: z.ZodArray<z.ZodString>;
1028
+ gateIds: z.ZodArray<z.ZodString>;
1029
+ mode: z.ZodEnum<{
1030
+ all: "all";
1031
+ affected: "affected";
1032
+ }>;
1033
+ reason: z.ZodString;
1034
+ baseline: z.ZodOptional<z.ZodString>;
1035
+ }, z.core.$strict>;
1036
+ /**
1037
+ * Состояния совместной проверки. `active` — начата, manifest ещё может
1038
+ * отсутствовать (снимок SHA делается после старта); `failed` — отказ, в том
1039
+ * числе до получения manifest; `passed` — только с manifest и его digest.
1040
+ * Выдумывать manifest для ранних состояний нельзя.
1041
+ */
1042
+ export declare const jointActiveSchema: z.ZodObject<{
1043
+ status: z.ZodLiteral<"active">;
1044
+ manifest: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1045
+ sha: z.ZodString;
1046
+ tree: z.ZodString;
1047
+ }, z.core.$strict>>>;
1048
+ manifestDigest: z.ZodOptional<z.ZodString>;
1049
+ apiVersion: z.ZodLiteral<"devcontour-harness/v1alpha1">;
1050
+ id: z.ZodString;
1051
+ startedAt: z.ZodISODateTime;
1052
+ policyDigest: z.ZodString;
1053
+ specDigest: z.ZodString;
1054
+ workIds: z.ZodArray<z.ZodString>;
1055
+ impact: z.ZodOptional<z.ZodObject<{
1056
+ changed: z.ZodArray<z.ZodString>;
1057
+ affected: z.ZodArray<z.ZodString>;
1058
+ gateIds: z.ZodArray<z.ZodString>;
1059
+ mode: z.ZodEnum<{
1060
+ all: "all";
1061
+ affected: "affected";
1062
+ }>;
1063
+ reason: z.ZodString;
1064
+ baseline: z.ZodOptional<z.ZodString>;
1065
+ }, z.core.$strict>>;
1066
+ evidence: z.ZodArray<z.ZodObject<{
1067
+ gate: z.ZodString;
1068
+ passed: z.ZodBoolean;
1069
+ command: z.ZodArray<z.ZodString>;
1070
+ exitCode: z.ZodNumber;
1071
+ log: z.ZodString;
1072
+ digest: z.ZodString;
1073
+ summary: z.ZodString;
1074
+ artifacts: z.ZodArray<z.ZodObject<{
1075
+ path: z.ZodString;
1076
+ digest: z.ZodString;
1077
+ }, z.core.$strict>>;
1078
+ durationMs: z.ZodOptional<z.ZodNumber>;
1079
+ }, z.core.$strict>>;
1080
+ }, z.core.$strict>;
1081
+ export declare const jointFailedSchema: z.ZodObject<{
1082
+ status: z.ZodLiteral<"failed">;
1083
+ finishedAt: z.ZodISODateTime;
1084
+ manifest: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1085
+ sha: z.ZodString;
1086
+ tree: z.ZodString;
1087
+ }, z.core.$strict>>>;
1088
+ manifestDigest: z.ZodOptional<z.ZodString>;
1089
+ error: z.ZodString;
1090
+ apiVersion: z.ZodLiteral<"devcontour-harness/v1alpha1">;
1091
+ id: z.ZodString;
1092
+ startedAt: z.ZodISODateTime;
1093
+ policyDigest: z.ZodString;
1094
+ specDigest: z.ZodString;
1095
+ workIds: z.ZodArray<z.ZodString>;
1096
+ impact: z.ZodOptional<z.ZodObject<{
1097
+ changed: z.ZodArray<z.ZodString>;
1098
+ affected: z.ZodArray<z.ZodString>;
1099
+ gateIds: z.ZodArray<z.ZodString>;
1100
+ mode: z.ZodEnum<{
1101
+ all: "all";
1102
+ affected: "affected";
1103
+ }>;
1104
+ reason: z.ZodString;
1105
+ baseline: z.ZodOptional<z.ZodString>;
1106
+ }, z.core.$strict>>;
1107
+ evidence: z.ZodArray<z.ZodObject<{
1108
+ gate: z.ZodString;
1109
+ passed: z.ZodBoolean;
1110
+ command: z.ZodArray<z.ZodString>;
1111
+ exitCode: z.ZodNumber;
1112
+ log: z.ZodString;
1113
+ digest: z.ZodString;
1114
+ summary: z.ZodString;
1115
+ artifacts: z.ZodArray<z.ZodObject<{
1116
+ path: z.ZodString;
1117
+ digest: z.ZodString;
1118
+ }, z.core.$strict>>;
1119
+ durationMs: z.ZodOptional<z.ZodNumber>;
1120
+ }, z.core.$strict>>;
1121
+ }, z.core.$strict>;
1122
+ export declare const jointPassedSchema: z.ZodObject<{
1123
+ status: z.ZodLiteral<"passed">;
1124
+ finishedAt: z.ZodISODateTime;
1125
+ manifest: z.ZodRecord<z.ZodString, z.ZodObject<{
1126
+ sha: z.ZodString;
1127
+ tree: z.ZodString;
1128
+ }, z.core.$strict>>;
1129
+ manifestDigest: z.ZodString;
1130
+ apiVersion: z.ZodLiteral<"devcontour-harness/v1alpha1">;
1131
+ id: z.ZodString;
1132
+ startedAt: z.ZodISODateTime;
1133
+ policyDigest: z.ZodString;
1134
+ specDigest: z.ZodString;
1135
+ workIds: z.ZodArray<z.ZodString>;
1136
+ impact: z.ZodOptional<z.ZodObject<{
1137
+ changed: z.ZodArray<z.ZodString>;
1138
+ affected: z.ZodArray<z.ZodString>;
1139
+ gateIds: z.ZodArray<z.ZodString>;
1140
+ mode: z.ZodEnum<{
1141
+ all: "all";
1142
+ affected: "affected";
1143
+ }>;
1144
+ reason: z.ZodString;
1145
+ baseline: z.ZodOptional<z.ZodString>;
1146
+ }, z.core.$strict>>;
1147
+ evidence: z.ZodArray<z.ZodObject<{
1148
+ gate: z.ZodString;
1149
+ passed: z.ZodBoolean;
1150
+ command: z.ZodArray<z.ZodString>;
1151
+ exitCode: z.ZodNumber;
1152
+ log: z.ZodString;
1153
+ digest: z.ZodString;
1154
+ summary: z.ZodString;
1155
+ artifacts: z.ZodArray<z.ZodObject<{
1156
+ path: z.ZodString;
1157
+ digest: z.ZodString;
1158
+ }, z.core.$strict>>;
1159
+ durationMs: z.ZodOptional<z.ZodNumber>;
1160
+ }, z.core.$strict>>;
1161
+ }, z.core.$strict>;
1162
+ export declare const jointVerificationSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
1163
+ status: z.ZodLiteral<"active">;
1164
+ manifest: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1165
+ sha: z.ZodString;
1166
+ tree: z.ZodString;
1167
+ }, z.core.$strict>>>;
1168
+ manifestDigest: z.ZodOptional<z.ZodString>;
1169
+ apiVersion: z.ZodLiteral<"devcontour-harness/v1alpha1">;
1170
+ id: z.ZodString;
1171
+ startedAt: z.ZodISODateTime;
1172
+ policyDigest: z.ZodString;
1173
+ specDigest: z.ZodString;
1174
+ workIds: z.ZodArray<z.ZodString>;
1175
+ impact: z.ZodOptional<z.ZodObject<{
1176
+ changed: z.ZodArray<z.ZodString>;
1177
+ affected: z.ZodArray<z.ZodString>;
1178
+ gateIds: z.ZodArray<z.ZodString>;
1179
+ mode: z.ZodEnum<{
1180
+ all: "all";
1181
+ affected: "affected";
1182
+ }>;
1183
+ reason: z.ZodString;
1184
+ baseline: z.ZodOptional<z.ZodString>;
1185
+ }, z.core.$strict>>;
1186
+ evidence: z.ZodArray<z.ZodObject<{
1187
+ gate: z.ZodString;
1188
+ passed: z.ZodBoolean;
1189
+ command: z.ZodArray<z.ZodString>;
1190
+ exitCode: z.ZodNumber;
1191
+ log: z.ZodString;
1192
+ digest: z.ZodString;
1193
+ summary: z.ZodString;
1194
+ artifacts: z.ZodArray<z.ZodObject<{
1195
+ path: z.ZodString;
1196
+ digest: z.ZodString;
1197
+ }, z.core.$strict>>;
1198
+ durationMs: z.ZodOptional<z.ZodNumber>;
1199
+ }, z.core.$strict>>;
1200
+ }, z.core.$strict>, z.ZodObject<{
1201
+ status: z.ZodLiteral<"failed">;
1202
+ finishedAt: z.ZodISODateTime;
1203
+ manifest: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1204
+ sha: z.ZodString;
1205
+ tree: z.ZodString;
1206
+ }, z.core.$strict>>>;
1207
+ manifestDigest: z.ZodOptional<z.ZodString>;
1208
+ error: z.ZodString;
1209
+ apiVersion: z.ZodLiteral<"devcontour-harness/v1alpha1">;
1210
+ id: z.ZodString;
1211
+ startedAt: z.ZodISODateTime;
1212
+ policyDigest: z.ZodString;
1213
+ specDigest: z.ZodString;
1214
+ workIds: z.ZodArray<z.ZodString>;
1215
+ impact: z.ZodOptional<z.ZodObject<{
1216
+ changed: z.ZodArray<z.ZodString>;
1217
+ affected: z.ZodArray<z.ZodString>;
1218
+ gateIds: z.ZodArray<z.ZodString>;
1219
+ mode: z.ZodEnum<{
1220
+ all: "all";
1221
+ affected: "affected";
1222
+ }>;
1223
+ reason: z.ZodString;
1224
+ baseline: z.ZodOptional<z.ZodString>;
1225
+ }, z.core.$strict>>;
1226
+ evidence: z.ZodArray<z.ZodObject<{
1227
+ gate: z.ZodString;
1228
+ passed: z.ZodBoolean;
1229
+ command: z.ZodArray<z.ZodString>;
1230
+ exitCode: z.ZodNumber;
1231
+ log: z.ZodString;
1232
+ digest: z.ZodString;
1233
+ summary: z.ZodString;
1234
+ artifacts: z.ZodArray<z.ZodObject<{
1235
+ path: z.ZodString;
1236
+ digest: z.ZodString;
1237
+ }, z.core.$strict>>;
1238
+ durationMs: z.ZodOptional<z.ZodNumber>;
1239
+ }, z.core.$strict>>;
1240
+ }, z.core.$strict>, z.ZodObject<{
1241
+ status: z.ZodLiteral<"passed">;
1242
+ finishedAt: z.ZodISODateTime;
1243
+ manifest: z.ZodRecord<z.ZodString, z.ZodObject<{
1244
+ sha: z.ZodString;
1245
+ tree: z.ZodString;
1246
+ }, z.core.$strict>>;
1247
+ manifestDigest: z.ZodString;
1248
+ apiVersion: z.ZodLiteral<"devcontour-harness/v1alpha1">;
1249
+ id: z.ZodString;
1250
+ startedAt: z.ZodISODateTime;
1251
+ policyDigest: z.ZodString;
1252
+ specDigest: z.ZodString;
1253
+ workIds: z.ZodArray<z.ZodString>;
1254
+ impact: z.ZodOptional<z.ZodObject<{
1255
+ changed: z.ZodArray<z.ZodString>;
1256
+ affected: z.ZodArray<z.ZodString>;
1257
+ gateIds: z.ZodArray<z.ZodString>;
1258
+ mode: z.ZodEnum<{
1259
+ all: "all";
1260
+ affected: "affected";
1261
+ }>;
1262
+ reason: z.ZodString;
1263
+ baseline: z.ZodOptional<z.ZodString>;
1264
+ }, z.core.$strict>>;
1265
+ evidence: z.ZodArray<z.ZodObject<{
1266
+ gate: z.ZodString;
1267
+ passed: z.ZodBoolean;
1268
+ command: z.ZodArray<z.ZodString>;
1269
+ exitCode: z.ZodNumber;
1270
+ log: z.ZodString;
1271
+ digest: z.ZodString;
1272
+ summary: z.ZodString;
1273
+ artifacts: z.ZodArray<z.ZodObject<{
1274
+ path: z.ZodString;
1275
+ digest: z.ZodString;
1276
+ }, z.core.$strict>>;
1277
+ durationMs: z.ZodOptional<z.ZodNumber>;
1278
+ }, z.core.$strict>>;
1279
+ }, z.core.$strict>], "status">;
1280
+ export type JointVerification = z.infer<typeof jointVerificationSchema>;