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

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 (464) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +249 -2
  3. package/docs/architecture.md +495 -0
  4. package/docs/compatibility-versions.md +60 -0
  5. package/docs/compatibility.md +192 -0
  6. package/docs/connectors.md +323 -0
  7. package/docs/contracts.md +630 -0
  8. package/docs/integrations/hindsight.md +148 -0
  9. package/docs/quickstart.md +185 -0
  10. package/docs/release-notes/0.1.0-alpha.10.md +50 -0
  11. package/docs/release-notes/0.1.0-alpha.11.md +44 -0
  12. package/docs/release-notes/0.1.0-alpha.6.md +238 -0
  13. package/docs/release-notes/0.1.0-alpha.7.md +71 -0
  14. package/docs/release-notes/0.1.0-alpha.8.md +73 -0
  15. package/docs/release-notes/0.1.0-alpha.9.md +55 -0
  16. package/docs/review-probes.md +199 -0
  17. package/docs/review-protocol.md +251 -0
  18. package/docs/standalone.md +250 -0
  19. package/docs/toolchains.md +167 -0
  20. package/docs/turbo-starter.md +269 -0
  21. package/docs/upgrade.md +219 -0
  22. package/examples/README.md +27 -0
  23. package/examples/external-connector/README.md +19 -0
  24. package/examples/external-connector/connector.mjs +55 -0
  25. package/examples/files-only/README.md +28 -0
  26. package/examples/files-only/context/norms/rules.md +4 -0
  27. package/examples/files-only/graph.json +23 -0
  28. package/examples/files-only/policy.json +30 -0
  29. package/examples/one-vendor/README.md +19 -0
  30. package/examples/one-vendor/policy.json +27 -0
  31. package/examples/single-task/README.md +18 -0
  32. package/examples/single-task/graph.json +27 -0
  33. package/examples/single-task/policy-same-vendor.json +55 -0
  34. package/examples/single-task/policy.json +52 -0
  35. package/examples/single-task/src/.gitkeep +0 -0
  36. package/examples/single-task/test/run.js +19 -0
  37. package/examples/toolchains/README.md +32 -0
  38. package/examples/toolchains/go/bad/label/label.go +9 -0
  39. package/examples/toolchains/go/good/label/label.go +9 -0
  40. package/examples/toolchains/go/policy.json +79 -0
  41. package/examples/toolchains/go/repo/REQUIREMENTS.md +9 -0
  42. package/examples/toolchains/go/repo/_gitignore +1 -0
  43. package/examples/toolchains/go/repo/go.mod +5 -0
  44. package/examples/toolchains/go/repo/go.sum +2 -0
  45. package/examples/toolchains/go/repo/label/label.go +9 -0
  46. package/examples/toolchains/go/repo/label/label_test.go +27 -0
  47. package/examples/toolchains/go/repo/label/version.go +9 -0
  48. package/examples/toolchains/go/task.json +25 -0
  49. package/examples/toolchains/mixed-go/bad/backend/label/label.go +9 -0
  50. package/examples/toolchains/mixed-go/bad/frontend/src/label.js +4 -0
  51. package/examples/toolchains/mixed-go/good/backend/label/label.go +9 -0
  52. package/examples/toolchains/mixed-go/good/frontend/src/label.js +4 -0
  53. package/examples/toolchains/mixed-go/policy.json +126 -0
  54. package/examples/toolchains/mixed-go/repo/REQUIREMENTS.md +9 -0
  55. package/examples/toolchains/mixed-go/repo/_gitignore +6 -0
  56. package/examples/toolchains/mixed-go/repo/backend/go.mod +3 -0
  57. package/examples/toolchains/mixed-go/repo/backend/label/label.go +9 -0
  58. package/examples/toolchains/mixed-go/repo/backend/label/label_test.go +30 -0
  59. package/examples/toolchains/mixed-go/repo/contract/check.mjs +17 -0
  60. package/examples/toolchains/mixed-go/repo/contract/label.json +9 -0
  61. package/examples/toolchains/mixed-go/repo/frontend/package.json +15 -0
  62. package/examples/toolchains/mixed-go/repo/frontend/pnpm-lock.yaml +22 -0
  63. package/examples/toolchains/mixed-go/repo/frontend/src/label.js +4 -0
  64. package/examples/toolchains/mixed-go/repo/frontend/test/label.test.js +11 -0
  65. package/examples/toolchains/mixed-go/task.json +25 -0
  66. package/examples/toolchains/mixed-python/bad/backend/src/fx_backend/__init__.py +6 -0
  67. package/examples/toolchains/mixed-python/bad/frontend/src/label.js +4 -0
  68. package/examples/toolchains/mixed-python/good/backend/src/fx_backend/__init__.py +6 -0
  69. package/examples/toolchains/mixed-python/good/frontend/src/label.js +4 -0
  70. package/examples/toolchains/mixed-python/policy.json +121 -0
  71. package/examples/toolchains/mixed-python/repo/REQUIREMENTS.md +9 -0
  72. package/examples/toolchains/mixed-python/repo/_gitignore +6 -0
  73. package/examples/toolchains/mixed-python/repo/backend/.python-version +1 -0
  74. package/examples/toolchains/mixed-python/repo/backend/pyproject.toml +19 -0
  75. package/examples/toolchains/mixed-python/repo/backend/src/fx_backend/__init__.py +6 -0
  76. package/examples/toolchains/mixed-python/repo/backend/tests/test_label.py +11 -0
  77. package/examples/toolchains/mixed-python/repo/backend/uv.lock +108 -0
  78. package/examples/toolchains/mixed-python/repo/contract/check.mjs +17 -0
  79. package/examples/toolchains/mixed-python/repo/contract/label.json +9 -0
  80. package/examples/toolchains/mixed-python/repo/frontend/package.json +15 -0
  81. package/examples/toolchains/mixed-python/repo/frontend/pnpm-lock.yaml +22 -0
  82. package/examples/toolchains/mixed-python/repo/frontend/src/label.js +4 -0
  83. package/examples/toolchains/mixed-python/repo/frontend/test/label.test.js +11 -0
  84. package/examples/toolchains/mixed-python/task.json +25 -0
  85. package/examples/toolchains/npm/bad/src/label.js +4 -0
  86. package/examples/toolchains/npm/good/src/label.js +4 -0
  87. package/examples/toolchains/npm/policy.json +82 -0
  88. package/examples/toolchains/npm/repo/REQUIREMENTS.md +9 -0
  89. package/examples/toolchains/npm/repo/_gitignore +4 -0
  90. package/examples/toolchains/npm/repo/package-lock.json +22 -0
  91. package/examples/toolchains/npm/repo/package.json +13 -0
  92. package/examples/toolchains/npm/repo/src/label.js +4 -0
  93. package/examples/toolchains/npm/repo/test/label.test.js +13 -0
  94. package/examples/toolchains/npm/task.json +25 -0
  95. package/examples/toolchains/pnpm/bad/packages/label/src/label.js +4 -0
  96. package/examples/toolchains/pnpm/good/packages/label/src/label.js +4 -0
  97. package/examples/toolchains/pnpm/policy.json +85 -0
  98. package/examples/toolchains/pnpm/repo/REQUIREMENTS.md +9 -0
  99. package/examples/toolchains/pnpm/repo/_gitignore +4 -0
  100. package/examples/toolchains/pnpm/repo/package.json +10 -0
  101. package/examples/toolchains/pnpm/repo/packages/checker/check.mjs +5 -0
  102. package/examples/toolchains/pnpm/repo/packages/checker/package.json +9 -0
  103. package/examples/toolchains/pnpm/repo/packages/label/package.json +14 -0
  104. package/examples/toolchains/pnpm/repo/packages/label/src/label.js +4 -0
  105. package/examples/toolchains/pnpm/repo/packages/label/test/label.test.js +13 -0
  106. package/examples/toolchains/pnpm/repo/pnpm-lock.yaml +29 -0
  107. package/examples/toolchains/pnpm/repo/pnpm-workspace.yaml +2 -0
  108. package/examples/toolchains/pnpm/task.json +25 -0
  109. package/examples/toolchains/python/bad/src/fx_label/__init__.py +6 -0
  110. package/examples/toolchains/python/good/src/fx_label/__init__.py +6 -0
  111. package/examples/toolchains/python/policy.json +80 -0
  112. package/examples/toolchains/python/repo/.python-version +1 -0
  113. package/examples/toolchains/python/repo/REQUIREMENTS.md +9 -0
  114. package/examples/toolchains/python/repo/_gitignore +5 -0
  115. package/examples/toolchains/python/repo/pyproject.toml +19 -0
  116. package/examples/toolchains/python/repo/src/fx_label/__init__.py +6 -0
  117. package/examples/toolchains/python/repo/tests/test_label.py +13 -0
  118. package/examples/toolchains/python/repo/uv.lock +108 -0
  119. package/examples/toolchains/python/task.json +25 -0
  120. package/examples/toolchains/turbo/bad/packages/label/src/label.js +4 -0
  121. package/examples/toolchains/turbo/good/packages/label/src/label.js +4 -0
  122. package/examples/toolchains/turbo/policy.json +110 -0
  123. package/examples/toolchains/turbo/repo/REQUIREMENTS.md +9 -0
  124. package/examples/toolchains/turbo/repo/_gitignore +4 -0
  125. package/examples/toolchains/turbo/repo/package.json +13 -0
  126. package/examples/toolchains/turbo/repo/packages/checker/check.mjs +5 -0
  127. package/examples/toolchains/turbo/repo/packages/checker/package.json +9 -0
  128. package/examples/toolchains/turbo/repo/packages/label/package.json +14 -0
  129. package/examples/toolchains/turbo/repo/packages/label/src/label.js +4 -0
  130. package/examples/toolchains/turbo/repo/packages/label/test/label.test.js +13 -0
  131. package/examples/toolchains/turbo/repo/pnpm-lock.yaml +94 -0
  132. package/examples/toolchains/turbo/repo/pnpm-workspace.yaml +2 -0
  133. package/examples/toolchains/turbo/repo/turbo.json +7 -0
  134. package/examples/toolchains/turbo/task.json +25 -0
  135. package/examples/turbo-starter/README.md +16 -0
  136. package/examples/turbo-starter/changes/issued-at-consumer-only.patch +12 -0
  137. package/examples/turbo-starter/changes/issued-at.patch +130 -0
  138. package/examples/turbo-starter/cleanup.mjs +58 -0
  139. package/examples/turbo-starter/graph.json +32 -0
  140. package/examples/turbo-starter/harness/acceptance/db-isolation.test.mjs +97 -0
  141. package/examples/turbo-starter/harness/acceptance/env-probe.test.mjs +75 -0
  142. package/examples/turbo-starter/harness/acceptance/generation.test.mjs +54 -0
  143. package/examples/turbo-starter/harness/acceptance/issued-at.test.mjs +43 -0
  144. package/examples/turbo-starter/harness/acceptance/lifecycle-probe.test.mjs +47 -0
  145. package/examples/turbo-starter/harness/compose-bridge.mjs +593 -0
  146. package/examples/turbo-starter/harness/compose.acceptance.yml +23 -0
  147. package/examples/turbo-starter/harness/env/backend.env.template +7 -0
  148. package/examples/turbo-starter/harness/env/compose.env.template +6 -0
  149. package/examples/turbo-starter/policy.json +109 -0
  150. package/examples/turbo-starter/policy.lifecycle.json +114 -0
  151. package/examples/turbo-starter/setup.mjs +352 -0
  152. package/examples/two-vendors/policy.json +30 -0
  153. package/lib/agents/cli-adapter.d.ts +48 -0
  154. package/lib/agents/cli-adapter.js +393 -0
  155. package/lib/agents/inspect.d.ts +60 -0
  156. package/lib/agents/inspect.js +296 -0
  157. package/lib/agents/probe-server.d.ts +2 -0
  158. package/lib/agents/probe-server.js +13 -0
  159. package/lib/agents/review-probe.d.ts +345 -0
  160. package/lib/agents/review-probe.js +1037 -0
  161. package/lib/agents/runtime-events.d.ts +11 -0
  162. package/lib/agents/runtime-events.js +21 -0
  163. package/lib/agents/schemas.d.ts +217 -0
  164. package/lib/agents/schemas.js +124 -0
  165. package/lib/agents/usage.d.ts +8 -0
  166. package/lib/agents/usage.js +83 -0
  167. package/lib/catalog/bytes.d.ts +9 -0
  168. package/lib/catalog/bytes.js +14 -0
  169. package/lib/catalog/harness.d.ts +3 -0
  170. package/lib/catalog/harness.js +11 -0
  171. package/lib/catalog/index.d.ts +5 -0
  172. package/lib/catalog/index.js +5 -0
  173. package/lib/catalog/operations.d.ts +24 -0
  174. package/lib/catalog/operations.js +74 -0
  175. package/lib/catalog/page.d.ts +46 -0
  176. package/lib/catalog/page.js +128 -0
  177. package/lib/catalog/shared.d.ts +37 -0
  178. package/lib/catalog/shared.js +67 -0
  179. package/lib/cli.d.ts +2 -0
  180. package/lib/cli.js +673 -0
  181. package/lib/connectors/files.d.ts +108 -0
  182. package/lib/connectors/files.js +133 -0
  183. package/lib/contracts/catalog.d.ts +31 -0
  184. package/lib/contracts/catalog.js +18 -0
  185. package/lib/contracts/checks.d.ts +307 -0
  186. package/lib/contracts/checks.js +181 -0
  187. package/lib/contracts/cli.d.ts +4665 -0
  188. package/lib/contracts/cli.js +840 -0
  189. package/lib/contracts/context.d.ts +135 -0
  190. package/lib/contracts/context.js +129 -0
  191. package/lib/contracts/diagnosis.d.ts +108 -0
  192. package/lib/contracts/diagnosis.js +69 -0
  193. package/lib/contracts/digest.d.ts +9 -0
  194. package/lib/contracts/digest.js +22 -0
  195. package/lib/contracts/errors.d.ts +89 -0
  196. package/lib/contracts/errors.js +74 -0
  197. package/lib/contracts/events.d.ts +827 -0
  198. package/lib/contracts/events.js +258 -0
  199. package/lib/contracts/execution.d.ts +3423 -0
  200. package/lib/contracts/execution.js +936 -0
  201. package/lib/contracts/failure.d.ts +38 -0
  202. package/lib/contracts/failure.js +53 -0
  203. package/lib/contracts/index.d.ts +22 -0
  204. package/lib/contracts/index.js +22 -0
  205. package/lib/contracts/planning.d.ts +433 -0
  206. package/lib/contracts/planning.js +159 -0
  207. package/lib/contracts/policy.d.ts +1075 -0
  208. package/lib/contracts/policy.js +544 -0
  209. package/lib/contracts/ports.d.ts +417 -0
  210. package/lib/contracts/ports.js +1 -0
  211. package/lib/contracts/primitives.d.ts +63 -0
  212. package/lib/contracts/primitives.js +73 -0
  213. package/lib/contracts/profiles.d.ts +340 -0
  214. package/lib/contracts/profiles.js +109 -0
  215. package/lib/contracts/project.d.ts +69 -0
  216. package/lib/contracts/project.js +47 -0
  217. package/lib/contracts/published.d.ts +3467 -0
  218. package/lib/contracts/published.js +40 -0
  219. package/lib/contracts/repair-policy.d.ts +31 -0
  220. package/lib/contracts/repair-policy.js +77 -0
  221. package/lib/contracts/result.d.ts +1284 -0
  222. package/lib/contracts/result.js +311 -0
  223. package/lib/contracts/review.d.ts +441 -0
  224. package/lib/contracts/review.js +477 -0
  225. package/lib/contracts/toolchain.d.ts +96 -0
  226. package/lib/contracts/toolchain.js +89 -0
  227. package/lib/contracts/version.d.ts +17 -0
  228. package/lib/contracts/version.js +17 -0
  229. package/lib/contracts/work.d.ts +171 -0
  230. package/lib/contracts/work.js +178 -0
  231. package/lib/control/base-move.d.ts +44 -0
  232. package/lib/control/base-move.js +90 -0
  233. package/lib/control/doctor.d.ts +50 -0
  234. package/lib/control/doctor.js +113 -0
  235. package/lib/control/harness.d.ts +1125 -0
  236. package/lib/control/harness.js +741 -0
  237. package/lib/control/provenance.d.ts +17 -0
  238. package/lib/control/provenance.js +25 -0
  239. package/lib/control/recovery.d.ts +237 -0
  240. package/lib/control/recovery.js +236 -0
  241. package/lib/control/review.d.ts +62 -0
  242. package/lib/control/review.js +182 -0
  243. package/lib/control/workflow.d.ts +256 -0
  244. package/lib/control/workflow.js +277 -0
  245. package/lib/engine/budget.d.ts +345 -0
  246. package/lib/engine/budget.js +278 -0
  247. package/lib/engine/classify.d.ts +8 -0
  248. package/lib/engine/classify.js +41 -0
  249. package/lib/engine/engine.d.ts +1564 -0
  250. package/lib/engine/engine.js +2283 -0
  251. package/lib/engine/failure.d.ts +1 -0
  252. package/lib/engine/failure.js +3 -0
  253. package/lib/engine/joint-runner.d.ts +257 -0
  254. package/lib/engine/joint-runner.js +254 -0
  255. package/lib/engine/measured.d.ts +15 -0
  256. package/lib/engine/measured.js +82 -0
  257. package/lib/engine/prompt.d.ts +66 -0
  258. package/lib/engine/prompt.js +131 -0
  259. package/lib/engine/property-recovery.d.ts +50 -0
  260. package/lib/engine/property-recovery.js +171 -0
  261. package/lib/engine/repair.d.ts +33 -0
  262. package/lib/engine/repair.js +82 -0
  263. package/lib/engine/result.d.ts +9 -0
  264. package/lib/engine/result.js +194 -0
  265. package/lib/engine/reuse.d.ts +80 -0
  266. package/lib/engine/reuse.js +102 -0
  267. package/lib/engine/runner.d.ts +360 -0
  268. package/lib/engine/runner.js +1844 -0
  269. package/lib/engine/standalone.d.ts +6 -0
  270. package/lib/engine/standalone.js +48 -0
  271. package/lib/engine/usage.d.ts +87 -0
  272. package/lib/engine/usage.js +165 -0
  273. package/lib/environment/isolation.d.ts +110 -0
  274. package/lib/environment/isolation.js +238 -0
  275. package/lib/environment/lifecycle.d.ts +40 -0
  276. package/lib/environment/lifecycle.js +197 -0
  277. package/lib/environment/live-calls.d.ts +14 -0
  278. package/lib/environment/live-calls.js +73 -0
  279. package/lib/environment/os-tools.d.ts +16 -0
  280. package/lib/environment/os-tools.js +35 -0
  281. package/lib/environment/process.d.ts +40 -0
  282. package/lib/environment/process.js +375 -0
  283. package/lib/environment/redaction.d.ts +22 -0
  284. package/lib/environment/redaction.js +102 -0
  285. package/lib/environment/resources.d.ts +31 -0
  286. package/lib/environment/resources.js +120 -0
  287. package/lib/explain/diagnose.d.ts +25 -0
  288. package/lib/explain/diagnose.js +60 -0
  289. package/lib/explain/state.d.ts +18 -0
  290. package/lib/explain/state.js +305 -0
  291. package/lib/index.d.ts +72 -0
  292. package/lib/index.js +74 -0
  293. package/lib/init/policy.d.ts +40 -0
  294. package/lib/init/policy.js +73 -0
  295. package/lib/init/project.d.ts +52 -0
  296. package/lib/init/project.js +412 -0
  297. package/lib/integrations/connector/commands.d.ts +358 -0
  298. package/lib/integrations/connector/commands.js +428 -0
  299. package/lib/integrations/connector/config.d.ts +215 -0
  300. package/lib/integrations/connector/config.js +214 -0
  301. package/lib/integrations/connector/delivery.d.ts +107 -0
  302. package/lib/integrations/connector/delivery.js +591 -0
  303. package/lib/integrations/connector/fake.d.ts +291 -0
  304. package/lib/integrations/connector/fake.js +786 -0
  305. package/lib/integrations/connector/history.d.ts +124 -0
  306. package/lib/integrations/connector/history.js +497 -0
  307. package/lib/integrations/connector/index.d.ts +16 -0
  308. package/lib/integrations/connector/index.js +16 -0
  309. package/lib/integrations/connector/redact.d.ts +19 -0
  310. package/lib/integrations/connector/redact.js +91 -0
  311. package/lib/integrations/connector/registry.d.ts +15 -0
  312. package/lib/integrations/connector/registry.js +43 -0
  313. package/lib/integrations/connector/snapshot.d.ts +131 -0
  314. package/lib/integrations/connector/snapshot.js +422 -0
  315. package/lib/integrations/connector/source.d.ts +37 -0
  316. package/lib/integrations/connector/source.js +73 -0
  317. package/lib/integrations/connector/steps.d.ts +71 -0
  318. package/lib/integrations/connector/steps.js +188 -0
  319. package/lib/integrations/connector/store.d.ts +140 -0
  320. package/lib/integrations/connector/store.js +277 -0
  321. package/lib/integrations/connector/summary.d.ts +38 -0
  322. package/lib/integrations/connector/summary.js +59 -0
  323. package/lib/integrations/connector/testing-worker.d.ts +1 -0
  324. package/lib/integrations/connector/testing-worker.js +81 -0
  325. package/lib/integrations/connector/testing.d.ts +205 -0
  326. package/lib/integrations/connector/testing.js +1615 -0
  327. package/lib/integrations/connector/transport.d.ts +240 -0
  328. package/lib/integrations/connector/transport.js +28 -0
  329. package/lib/integrations/memory/context.d.ts +120 -0
  330. package/lib/integrations/memory/context.js +239 -0
  331. package/lib/integrations/memory/index.d.ts +8 -0
  332. package/lib/integrations/memory/index.js +8 -0
  333. package/lib/integrations/memory/provider.d.ts +79 -0
  334. package/lib/integrations/memory/provider.js +22 -0
  335. package/lib/integrations/memory/sink.d.ts +56 -0
  336. package/lib/integrations/memory/sink.js +116 -0
  337. package/lib/integrations/memory/testing.d.ts +44 -0
  338. package/lib/integrations/memory/testing.js +61 -0
  339. package/lib/integrations/relay-v1/index.d.ts +122 -0
  340. package/lib/integrations/relay-v1/index.js +860 -0
  341. package/lib/integrations/relay-v2/index.d.ts +145 -0
  342. package/lib/integrations/relay-v2/index.js +752 -0
  343. package/lib/integrations/relay-v2/process.d.ts +32 -0
  344. package/lib/integrations/relay-v2/process.js +112 -0
  345. package/lib/integrations/relay-v2/protocol.d.ts +172 -0
  346. package/lib/integrations/relay-v2/protocol.js +142 -0
  347. package/lib/package.d.ts +2 -0
  348. package/lib/package.js +3 -0
  349. package/lib/planning/check.d.ts +26 -0
  350. package/lib/planning/check.js +174 -0
  351. package/lib/planning/facts.d.ts +13 -0
  352. package/lib/planning/facts.js +47 -0
  353. package/lib/planning/graph.d.ts +20 -0
  354. package/lib/planning/graph.js +114 -0
  355. package/lib/planning/index.d.ts +6 -0
  356. package/lib/planning/index.js +6 -0
  357. package/lib/planning/issues.d.ts +19 -0
  358. package/lib/planning/issues.js +210 -0
  359. package/lib/planning/request.d.ts +19 -0
  360. package/lib/planning/request.js +57 -0
  361. package/lib/planning/standalone.d.ts +16 -0
  362. package/lib/planning/standalone.js +19 -0
  363. package/lib/planning/stub.d.ts +2 -0
  364. package/lib/planning/stub.js +5 -0
  365. package/lib/profiles/resolve.d.ts +266 -0
  366. package/lib/profiles/resolve.js +322 -0
  367. package/lib/projections/chain.d.ts +35 -0
  368. package/lib/projections/chain.js +72 -0
  369. package/lib/projections/clip.d.ts +6 -0
  370. package/lib/projections/clip.js +23 -0
  371. package/lib/projections/enums.d.ts +7 -0
  372. package/lib/projections/enums.js +19 -0
  373. package/lib/projections/index.d.ts +8 -0
  374. package/lib/projections/index.js +9 -0
  375. package/lib/projections/next.d.ts +28 -0
  376. package/lib/projections/next.js +75 -0
  377. package/lib/projections/progress.d.ts +27 -0
  378. package/lib/projections/progress.js +37 -0
  379. package/lib/projections/queue.d.ts +21 -0
  380. package/lib/projections/queue.js +18 -0
  381. package/lib/projections/stop.d.ts +98 -0
  382. package/lib/projections/stop.js +532 -0
  383. package/lib/setup/files.d.ts +45 -0
  384. package/lib/setup/files.js +280 -0
  385. package/lib/storage/document.d.ts +1286 -0
  386. package/lib/storage/document.js +80 -0
  387. package/lib/storage/sqlite.d.ts +35 -0
  388. package/lib/storage/sqlite.js +260 -0
  389. package/lib/testing/index.d.ts +5 -0
  390. package/lib/testing/index.js +5 -0
  391. package/lib/testing/store-contract.d.ts +8 -0
  392. package/lib/testing/store-contract.js +167 -0
  393. package/lib/toolchains/index.d.ts +9 -0
  394. package/lib/toolchains/index.js +9 -0
  395. package/lib/toolchains/inspect.d.ts +105 -0
  396. package/lib/toolchains/inspect.js +831 -0
  397. package/lib/toolchains/manifests.d.ts +67 -0
  398. package/lib/toolchains/manifests.js +238 -0
  399. package/lib/toolchains/probe.d.ts +28 -0
  400. package/lib/toolchains/probe.js +54 -0
  401. package/lib/toolchains/recipes.d.ts +33 -0
  402. package/lib/toolchains/recipes.js +51 -0
  403. package/lib/validate.d.ts +37 -0
  404. package/lib/validate.js +182 -0
  405. package/lib/verification/acceptance.d.ts +284 -0
  406. package/lib/verification/acceptance.js +670 -0
  407. package/lib/verification/checks.d.ts +72 -0
  408. package/lib/verification/checks.js +190 -0
  409. package/lib/verification/confirm.d.ts +125 -0
  410. package/lib/verification/confirm.js +411 -0
  411. package/lib/verification/corpus.d.ts +1303 -0
  412. package/lib/verification/corpus.js +744 -0
  413. package/lib/verification/dependencies.d.ts +66 -0
  414. package/lib/verification/dependencies.js +144 -0
  415. package/lib/verification/gates.d.ts +182 -0
  416. package/lib/verification/gates.js +641 -0
  417. package/lib/verification/joint.d.ts +63 -0
  418. package/lib/verification/joint.js +121 -0
  419. package/lib/verification/proof.d.ts +54 -0
  420. package/lib/verification/proof.js +96 -0
  421. package/lib/verification/property.d.ts +86 -0
  422. package/lib/verification/property.js +214 -0
  423. package/lib/verification/requirements.d.ts +25 -0
  424. package/lib/verification/requirements.js +69 -0
  425. package/lib/verification/self-check.d.ts +29 -0
  426. package/lib/verification/self-check.js +99 -0
  427. package/lib/verification/spike.d.ts +79 -0
  428. package/lib/verification/spike.js +124 -0
  429. package/package.json +104 -4
  430. package/profiles/expo-mobile.json +15 -0
  431. package/profiles/go-api.json +15 -0
  432. package/profiles/go-gotestsum.json +21 -0
  433. package/profiles/mobile-maestro.json +29 -0
  434. package/profiles/nest-api.json +26 -0
  435. package/profiles/next-product.json +72 -0
  436. package/profiles/node-checks.json +77 -0
  437. package/profiles/npm-ci.json +22 -0
  438. package/profiles/pnpm-frozen.json +24 -0
  439. package/profiles/python-api.json +32 -0
  440. package/profiles/python-uv.json +26 -0
  441. package/profiles/react-native.json +50 -0
  442. package/profiles/react-vite-admin.json +71 -0
  443. package/schemas/context-snapshot.schema.json +231 -0
  444. package/schemas/contract-document.schema.json +385 -0
  445. package/schemas/execution-document.schema.json +3881 -0
  446. package/schemas/execution-policy.schema.json +2196 -0
  447. package/schemas/joint-verification.schema.json +617 -0
  448. package/schemas/plan-draft.schema.json +217 -0
  449. package/schemas/project-manifest.schema.json +167 -0
  450. package/schemas/result-envelope.schema.json +1654 -0
  451. package/schemas/review-record.schema.json +177 -0
  452. package/schemas/run-event.schema.json +2458 -0
  453. package/schemas/run-result.schema.json +1572 -0
  454. package/schemas/stack-profile.schema.json +535 -0
  455. package/schemas/stop-diagnosis.schema.json +169 -0
  456. package/schemas/work-graph.schema.json +381 -0
  457. package/schemas/work-order.schema.json +256 -0
  458. package/skills/harness/SKILL.md +245 -0
  459. package/templates/AGENTS.md +13 -0
  460. package/templates/controller-mode/AGENTS.controller.md +58 -0
  461. package/templates/controller-mode/README.md +44 -0
  462. package/templates/graph.json +22 -0
  463. package/templates/plan-draft.json +35 -0
  464. package/templates/policy.json +28 -0
@@ -0,0 +1,40 @@
1
+ import { workGraphSchema, workOrderSchema } from "./work.js";
2
+ import { executionPolicySchema } from "./policy.js";
3
+ import { contextSnapshotSchema } from "./context.js";
4
+ import { jointVerificationSchema, resultEnvelopeSchema, runResultSchema } from "./result.js";
5
+ import { runEventSchema } from "./events.js";
6
+ import { reviewRecordSchema } from "./review.js";
7
+ import { executionDocumentSchema } from "./execution.js";
8
+ import { contractDocumentSchema } from "./checks.js";
9
+ import { stackProfileSchema } from "./profiles.js";
10
+ import { projectManifestSchema } from "./project.js";
11
+ import { stopDiagnosisSchema } from "./diagnosis.js";
12
+ import { planDraftSchema } from "./planning.js";
13
+ /**
14
+ * Схемы, публикуемые как JSON Schema (`schemas/<имя>.schema.json`).
15
+ *
16
+ * JSON Schema выражает всё, что относится к одному значению: типы,
17
+ * обязательность, закрытость объектов, пределы, регулярные выражения путей
18
+ * и refs, варианты исходов. Связи *между* значениями — граф без циклов и
19
+ * неизвестных зависимостей, согласованность политики, связь поручений с
20
+ * политикой, совпадение содержимого контекста с digests — проверяют
21
+ * `graphIssues`, `policyIssues`, `crossIssues`, `contextIssues` и CLI
22
+ * `harness validate`; JSON Schema их не заменяет.
23
+ */
24
+ export const publishedSchemas = {
25
+ 'work-order': workOrderSchema,
26
+ 'work-graph': workGraphSchema,
27
+ 'execution-policy': executionPolicySchema,
28
+ 'context-snapshot': contextSnapshotSchema,
29
+ 'contract-document': contractDocumentSchema,
30
+ 'run-result': runResultSchema,
31
+ 'result-envelope': resultEnvelopeSchema,
32
+ 'run-event': runEventSchema,
33
+ 'review-record': reviewRecordSchema,
34
+ 'joint-verification': jointVerificationSchema,
35
+ 'execution-document': executionDocumentSchema,
36
+ 'stack-profile': stackProfileSchema,
37
+ 'project-manifest': projectManifestSchema,
38
+ 'stop-diagnosis': stopDiagnosisSchema,
39
+ 'plan-draft': planDraftSchema,
40
+ };
@@ -0,0 +1,31 @@
1
+ import type { FailureKind } from './execution.ts';
2
+ export interface RepairRule {
3
+ /** `retry` — новая попытка той же задачи; `stop` — звать человека. */
4
+ action: 'retry' | 'stop';
5
+ /**
6
+ * Сколько раз один и тот же отпечаток разрешено чинить автоматически.
7
+ * Исчерпан — гипотез больше нет, и цикл останавливается с этой причиной.
8
+ */
9
+ repeats: number;
10
+ /** Причина, которую увидит человек, когда цикл остановится. */
11
+ explain: string;
12
+ /**
13
+ * Отказ повторится на любой задаче, а не только на этой: выдача
14
+ * останавливается целиком, иначе очередь переберёт задачи одну за другой и
15
+ * сожжёт бюджет попыток каждой на одной и той же внешней причине.
16
+ *
17
+ * Этим же свойством причина снимается: починив её, восстановление убирает
18
+ * свою запись из списка блокировок, а выдача возвращается, только когда не
19
+ * осталось ни одной. Решать это по тексту сообщения нельзя — замечание
20
+ * ревью про «401 Unauthorized» в разрабатываемом приложении так становилось
21
+ * отказом провайдера и останавливало работу насовсем.
22
+ */
23
+ blocksQueue?: boolean;
24
+ }
25
+ /**
26
+ * Что разрешено делать с каждым классом. Таблица намеренно узкая: повтор и
27
+ * остановка. Повтор безопасен, потому что прошлый отказ и замечания ревью
28
+ * попадают в подсказку следующей попытки, а бюджет попыток задачи не растёт —
29
+ * сброс бюджета остаётся действием человека.
30
+ */
31
+ export declare const repairPolicy: Record<FailureKind, RepairRule>;
@@ -0,0 +1,77 @@
1
+ // Таблица восстановления без node:* — её читают и движок, и чистые проекции
2
+ // (`devcontour-harness/projections`, доступные браузеру).
3
+ /**
4
+ * Что разрешено делать с каждым классом. Таблица намеренно узкая: повтор и
5
+ * остановка. Повтор безопасен, потому что прошлый отказ и замечания ревью
6
+ * попадают в подсказку следующей попытки, а бюджет попыток задачи не растёт —
7
+ * сброс бюджета остаётся действием человека.
8
+ */
9
+ export const repairPolicy = {
10
+ 'provider-auth': {
11
+ action: 'stop',
12
+ repeats: 0,
13
+ blocksQueue: true,
14
+ explain: 'Провайдер отказал: нет кредитов, исчерпан лимит сессии или частоты, либо runtime не авторизован. Это вне контура: очередь стоит до устранения или сброса лимита, повтор сейчас потратил бы бюджет впустую.',
15
+ },
16
+ environment: {
17
+ action: 'retry',
18
+ repeats: 1,
19
+ blocksQueue: true,
20
+ explain: 'Окружение не дало исполнителю работать. Однократный повтор оправдан: обрыв чаще всего разовый. Второй такой же отказ — неисправность окружения, её устраняет человек.',
21
+ },
22
+ timeout: {
23
+ action: 'retry',
24
+ repeats: 1,
25
+ explain: 'Попытка исчерпала время. Второй такой же исход означает, что задача не помещается в отведённый предел: её нужно разделить или поднять предел осознанно.',
26
+ },
27
+ 'stale-base': {
28
+ action: 'stop',
29
+ repeats: 0,
30
+ explain: 'База прогонов отстала от рабочей ветки. Перенос базы меняет то, что увидят все исполнители, и выполняется отдельной командой base-update при остановленной очереди.',
31
+ },
32
+ 'empty-result': {
33
+ action: 'retry',
34
+ repeats: 1,
35
+ explain: 'Исполнитель отчитался о выполнении, не изменив ни файла. Повтор получает этот отказ в подсказке; второй такой же означает, что задача поставлена неверно или невыполнима в своей области.',
36
+ },
37
+ 'scope-violation': {
38
+ action: 'retry',
39
+ repeats: 1,
40
+ explain: 'Изменения вышли за область задачи или роли. Повтор получает точный список; второй такой же означает, что область задачи не соответствует работе.',
41
+ },
42
+ gate: {
43
+ action: 'retry',
44
+ repeats: 2,
45
+ explain: 'Настроенная проверка не прошла. Повторы получают вывод проверки; когда один и тот же провал держится, у исполнителя нет новой гипотезы.',
46
+ },
47
+ review: {
48
+ action: 'retry',
49
+ repeats: 2,
50
+ explain: 'Независимое ревью отклонило результат. Повторы получают замечания адресно; одно и то же замечание трижды означает, что исполнитель его не понимает.',
51
+ },
52
+ 'review-protocol': {
53
+ action: 'stop',
54
+ repeats: 0,
55
+ explain: 'Ответ reviewer нарушил протокол ревью (схема или переходы находок), и разрешённые повторы reviewer исчерпаны. Это не замечание к коду: новая реализация writer ничего не исправит. Причина и путь поля — в результате; продолжение — решение человека.',
56
+ },
57
+ merge: {
58
+ action: 'retry',
59
+ repeats: 1,
60
+ explain: 'Слияние с веткой интеграции не сошлось. Повтор ответвляется от нового состояния базы; второй такой же конфликт разбирает человек.',
61
+ },
62
+ budget: {
63
+ action: 'stop',
64
+ repeats: 0,
65
+ explain: 'Бюджет расходов или времени исчерпан либо не определён (есть вызовы с неизвестной стоимостью). Повтор потратил бы ещё; продолжить можно, только осознанно подняв предел в конфигурации или задав политику для неизвестной цены.',
66
+ },
67
+ cancelled: {
68
+ action: 'stop',
69
+ repeats: 0,
70
+ explain: 'Работа остановлена человеком. Отмена не превращается в повтор.',
71
+ },
72
+ unknown: {
73
+ action: 'stop',
74
+ repeats: 0,
75
+ explain: 'Класс отказа не определён. Автоматическое восстановление вслепую дороже и опаснее остановки.',
76
+ },
77
+ };