@b00dea/cockpit 0.0.0-stage → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (426) hide show
  1. package/CHANGELOG.md +474 -0
  2. package/LICENSE +21 -0
  3. package/README.md +25 -2
  4. package/bin/cockpit.mjs +33 -0
  5. package/cockpit.schema.json +2644 -0
  6. package/dist/autonomy.d.ts +45 -0
  7. package/dist/autonomy.js +173 -0
  8. package/dist/bounded-read.d.ts +14 -0
  9. package/dist/bounded-read.js +42 -0
  10. package/dist/browser/commands.d.ts +117 -0
  11. package/dist/browser/commands.js +453 -0
  12. package/dist/browser/package-paths.d.ts +1 -0
  13. package/dist/browser/package-paths.js +6 -0
  14. package/dist/browser/proxy.d.ts +22 -0
  15. package/dist/browser/proxy.js +37 -0
  16. package/dist/browser/runtime.d.ts +118 -0
  17. package/dist/browser/runtime.js +186 -0
  18. package/dist/browser/surfaces.d.ts +141 -0
  19. package/dist/browser/surfaces.js +561 -0
  20. package/dist/browser/ui-gate.d.ts +15 -0
  21. package/dist/browser/ui-gate.js +18 -0
  22. package/dist/canonical-json.d.ts +2 -0
  23. package/dist/canonical-json.js +5 -0
  24. package/dist/cli-guard.d.ts +5 -0
  25. package/dist/cli-guard.js +71 -0
  26. package/dist/cli-main.d.ts +176 -0
  27. package/dist/cli-main.js +1584 -0
  28. package/dist/cli.d.ts +3 -0
  29. package/dist/cli.js +16 -0
  30. package/dist/command-table.d.ts +121 -0
  31. package/dist/command-table.js +664 -0
  32. package/dist/config/load.d.ts +183 -0
  33. package/dist/config/load.js +367 -0
  34. package/dist/config/sibling-toml.d.ts +48 -0
  35. package/dist/config/sibling-toml.js +160 -0
  36. package/dist/config/surface-tools-toml.d.ts +9 -0
  37. package/dist/config/surface-tools-toml.js +37 -0
  38. package/dist/config/unconfirmed-toml.d.ts +9 -0
  39. package/dist/config/unconfirmed-toml.js +29 -0
  40. package/dist/config/verified-write.d.ts +43 -0
  41. package/dist/config/verified-write.js +89 -0
  42. package/dist/diagnostics.d.ts +26 -0
  43. package/dist/diagnostics.js +344 -0
  44. package/dist/docs/check.d.ts +16 -0
  45. package/dist/docs/check.js +197 -0
  46. package/dist/docs/decision-record.d.ts +34 -0
  47. package/dist/docs/decision-record.js +135 -0
  48. package/dist/docs/decisions.d.ts +16 -0
  49. package/dist/docs/decisions.js +103 -0
  50. package/dist/docs/markdown.d.ts +36 -0
  51. package/dist/docs/markdown.js +88 -0
  52. package/dist/docs/references.d.ts +32 -0
  53. package/dist/docs/references.js +148 -0
  54. package/dist/emit.d.ts +22 -0
  55. package/dist/emit.js +43 -0
  56. package/dist/entrypoint-kinds.d.ts +3 -0
  57. package/dist/entrypoint-kinds.js +11 -0
  58. package/dist/environment/application/confirm.d.ts +35 -0
  59. package/dist/environment/application/confirm.js +122 -0
  60. package/dist/environment/application/destructive.d.ts +6 -0
  61. package/dist/environment/application/destructive.js +429 -0
  62. package/dist/environment/application/doctor.d.ts +94 -0
  63. package/dist/environment/application/doctor.js +247 -0
  64. package/dist/environment/application/guard.d.ts +49 -0
  65. package/dist/environment/application/guard.js +677 -0
  66. package/dist/environment/application/health.d.ts +143 -0
  67. package/dist/environment/application/health.js +385 -0
  68. package/dist/environment/application/lifecycle-context.d.ts +235 -0
  69. package/dist/environment/application/lifecycle-context.js +154 -0
  70. package/dist/environment/application/lifecycle-state.d.ts +25 -0
  71. package/dist/environment/application/lifecycle-state.js +202 -0
  72. package/dist/environment/application/lifecycle.d.ts +18 -0
  73. package/dist/environment/application/lifecycle.js +737 -0
  74. package/dist/environment/application/logs.d.ts +45 -0
  75. package/dist/environment/application/logs.js +127 -0
  76. package/dist/environment/application/services.d.ts +60 -0
  77. package/dist/environment/application/services.js +89 -0
  78. package/dist/environment/application/setup.d.ts +129 -0
  79. package/dist/environment/application/setup.js +741 -0
  80. package/dist/environment/application/shared.d.ts +11 -0
  81. package/dist/environment/application/shared.js +61 -0
  82. package/dist/environment/application/siblings.d.ts +43 -0
  83. package/dist/environment/application/siblings.js +269 -0
  84. package/dist/environment/claims.d.ts +389 -0
  85. package/dist/environment/claims.js +1701 -0
  86. package/dist/environment/codex-hook-trust.d.ts +11 -0
  87. package/dist/environment/codex-hook-trust.js +185 -0
  88. package/dist/environment/compose-environment.d.ts +1 -0
  89. package/dist/environment/compose-environment.js +6 -0
  90. package/dist/environment/compose-ownership.d.ts +21 -0
  91. package/dist/environment/compose-ownership.js +117 -0
  92. package/dist/environment/compose-topology.d.ts +125 -0
  93. package/dist/environment/compose-topology.js +490 -0
  94. package/dist/environment/contract.d.ts +522 -0
  95. package/dist/environment/contract.js +794 -0
  96. package/dist/environment/declaration.d.ts +14 -0
  97. package/dist/environment/declaration.js +39 -0
  98. package/dist/environment/destructive-composition.d.ts +29 -0
  99. package/dist/environment/destructive-composition.js +333 -0
  100. package/dist/environment/docker-daemon.d.ts +30 -0
  101. package/dist/environment/docker-daemon.js +78 -0
  102. package/dist/environment/docker-endpoint.d.ts +10 -0
  103. package/dist/environment/docker-endpoint.js +19 -0
  104. package/dist/environment/env-schema-observation.d.ts +46 -0
  105. package/dist/environment/env-schema-observation.js +241 -0
  106. package/dist/environment/evidence.d.ts +136 -0
  107. package/dist/environment/evidence.js +437 -0
  108. package/dist/environment/executable.d.ts +38 -0
  109. package/dist/environment/executable.js +190 -0
  110. package/dist/environment/generated-application/authorities.d.ts +5 -0
  111. package/dist/environment/generated-application/authorities.js +61 -0
  112. package/dist/environment/generated-application/bootstrap-skill.d.ts +16 -0
  113. package/dist/environment/generated-application/bootstrap-skill.js +328 -0
  114. package/dist/environment/generated-application/check.d.ts +13 -0
  115. package/dist/environment/generated-application/check.js +191 -0
  116. package/dist/environment/generated-application/custom-surface.d.ts +26 -0
  117. package/dist/environment/generated-application/custom-surface.js +289 -0
  118. package/dist/environment/generated-application/prepare.d.ts +29 -0
  119. package/dist/environment/generated-application/prepare.js +278 -0
  120. package/dist/environment/generated-application/publication.d.ts +33 -0
  121. package/dist/environment/generated-application/publication.js +547 -0
  122. package/dist/environment/generated-application/shared.d.ts +492 -0
  123. package/dist/environment/generated-application/shared.js +354 -0
  124. package/dist/environment/generated-application/surface-observation.d.ts +4 -0
  125. package/dist/environment/generated-application/surface-observation.js +69 -0
  126. package/dist/environment/generated-application/surface-outputs.d.ts +71 -0
  127. package/dist/environment/generated-application/surface-outputs.js +400 -0
  128. package/dist/environment/generated-application/surfaces.d.ts +3 -0
  129. package/dist/environment/generated-application/surfaces.js +704 -0
  130. package/dist/environment/generated-application/sync.d.ts +6 -0
  131. package/dist/environment/generated-application/sync.js +124 -0
  132. package/dist/environment/git-observation.d.ts +202 -0
  133. package/dist/environment/git-observation.js +553 -0
  134. package/dist/environment/health-composition.d.ts +12 -0
  135. package/dist/environment/health-composition.js +645 -0
  136. package/dist/environment/host-observation.d.ts +56 -0
  137. package/dist/environment/host-observation.js +52 -0
  138. package/dist/environment/identity.d.ts +48 -0
  139. package/dist/environment/identity.js +85 -0
  140. package/dist/environment/init-application.d.ts +333 -0
  141. package/dist/environment/init-application.js +726 -0
  142. package/dist/environment/install-policy-observation.d.ts +71 -0
  143. package/dist/environment/install-policy-observation.js +284 -0
  144. package/dist/environment/install-policy.d.ts +48 -0
  145. package/dist/environment/install-policy.js +96 -0
  146. package/dist/environment/instance.d.ts +33 -0
  147. package/dist/environment/instance.js +122 -0
  148. package/dist/environment/instruction-pointer.d.ts +19 -0
  149. package/dist/environment/instruction-pointer.js +144 -0
  150. package/dist/environment/lifecycle-composition.d.ts +31 -0
  151. package/dist/environment/lifecycle-composition.js +742 -0
  152. package/dist/environment/lifecycle-stage.d.ts +120 -0
  153. package/dist/environment/lifecycle-stage.js +408 -0
  154. package/dist/environment/lifecycle.d.ts +75 -0
  155. package/dist/environment/lifecycle.js +354 -0
  156. package/dist/environment/logs.d.ts +132 -0
  157. package/dist/environment/logs.js +519 -0
  158. package/dist/environment/map-limit.d.ts +2 -0
  159. package/dist/environment/map-limit.js +13 -0
  160. package/dist/environment/mcp-observation.d.ts +9 -0
  161. package/dist/environment/mcp-observation.js +46 -0
  162. package/dist/environment/observations.d.ts +46 -0
  163. package/dist/environment/observations.js +346 -0
  164. package/dist/environment/operator-application.d.ts +79 -0
  165. package/dist/environment/operator-application.js +197 -0
  166. package/dist/environment/ports.d.ts +182 -0
  167. package/dist/environment/ports.js +1205 -0
  168. package/dist/environment/posture-observation.d.ts +68 -0
  169. package/dist/environment/posture-observation.js +253 -0
  170. package/dist/environment/presence.d.ts +4 -0
  171. package/dist/environment/presence.js +26 -0
  172. package/dist/environment/read-composition.d.ts +32 -0
  173. package/dist/environment/read-composition.js +397 -0
  174. package/dist/environment/readiness-composition.d.ts +57 -0
  175. package/dist/environment/readiness-composition.js +151 -0
  176. package/dist/environment/reclaim.d.ts +370 -0
  177. package/dist/environment/reclaim.js +1940 -0
  178. package/dist/environment/repository-identity.d.ts +13 -0
  179. package/dist/environment/repository-identity.js +108 -0
  180. package/dist/environment/runtime-measurement-record.d.ts +38 -0
  181. package/dist/environment/runtime-measurement-record.js +111 -0
  182. package/dist/environment/runtime-measurement.d.ts +27 -0
  183. package/dist/environment/runtime-measurement.js +224 -0
  184. package/dist/environment/runtime-probe-residue.d.ts +43 -0
  185. package/dist/environment/runtime-probe-residue.js +148 -0
  186. package/dist/environment/runtime-probe.d.ts +72 -0
  187. package/dist/environment/runtime-probe.js +725 -0
  188. package/dist/environment/runtime.d.ts +551 -0
  189. package/dist/environment/runtime.js +2405 -0
  190. package/dist/environment/seed.d.ts +16 -0
  191. package/dist/environment/seed.js +43 -0
  192. package/dist/environment/selftest-application.d.ts +86 -0
  193. package/dist/environment/selftest-application.js +713 -0
  194. package/dist/environment/sensitive.d.ts +3 -0
  195. package/dist/environment/sensitive.js +48 -0
  196. package/dist/environment/served-checkout-grants.d.ts +53 -0
  197. package/dist/environment/served-checkout-grants.js +182 -0
  198. package/dist/environment/setup-observation.d.ts +62 -0
  199. package/dist/environment/setup-observation.js +1473 -0
  200. package/dist/environment/setup.d.ts +43 -0
  201. package/dist/environment/setup.js +176 -0
  202. package/dist/environment/sibling-checkouts.d.ts +119 -0
  203. package/dist/environment/sibling-checkouts.js +254 -0
  204. package/dist/environment/sibling-instructions.d.ts +33 -0
  205. package/dist/environment/sibling-instructions.js +224 -0
  206. package/dist/environment/sibling-observation.d.ts +27 -0
  207. package/dist/environment/sibling-observation.js +45 -0
  208. package/dist/environment/sibling-pull.d.ts +23 -0
  209. package/dist/environment/sibling-pull.js +95 -0
  210. package/dist/environment/sibling-registration.d.ts +45 -0
  211. package/dist/environment/sibling-registration.js +538 -0
  212. package/dist/environment/stack-inputs.d.ts +18 -0
  213. package/dist/environment/stack-inputs.js +210 -0
  214. package/dist/environment/stack-inventory-prune.d.ts +31 -0
  215. package/dist/environment/stack-inventory-prune.js +129 -0
  216. package/dist/environment/stack-inventory-report.d.ts +44 -0
  217. package/dist/environment/stack-inventory-report.js +78 -0
  218. package/dist/environment/stack-inventory.d.ts +94 -0
  219. package/dist/environment/stack-inventory.js +418 -0
  220. package/dist/environment/state.d.ts +410 -0
  221. package/dist/environment/state.js +2153 -0
  222. package/dist/environment/templates.d.ts +140 -0
  223. package/dist/environment/templates.js +685 -0
  224. package/dist/environment/tool-registration.d.ts +9 -0
  225. package/dist/environment/tool-registration.js +92 -0
  226. package/dist/environment/upgrade-application.d.ts +19 -0
  227. package/dist/environment/upgrade-application.js +175 -0
  228. package/dist/environment-exec/execute.d.ts +105 -0
  229. package/dist/environment-exec/execute.js +1179 -0
  230. package/dist/environment-exec/libexec-program.d.ts +6 -0
  231. package/dist/environment-exec/libexec-program.js +22 -0
  232. package/dist/environment-exec/verified-digest.d.ts +4 -0
  233. package/dist/environment-exec/verified-digest.js +16 -0
  234. package/dist/exact-keys.d.ts +7 -0
  235. package/dist/exact-keys.js +15 -0
  236. package/dist/fix-catalogue.d.ts +32 -0
  237. package/dist/fix-catalogue.js +60 -0
  238. package/dist/freshness.d.ts +29 -0
  239. package/dist/freshness.js +75 -0
  240. package/dist/generated-environment/adopt.d.ts +16 -0
  241. package/dist/generated-environment/adopt.js +271 -0
  242. package/dist/generated-environment/command.d.ts +47 -0
  243. package/dist/generated-environment/command.js +75 -0
  244. package/dist/generated-environment/transaction.d.ts +186 -0
  245. package/dist/generated-environment/transaction.js +1770 -0
  246. package/dist/grading/evaluate.d.ts +71 -0
  247. package/dist/grading/evaluate.js +403 -0
  248. package/dist/grading/grade.d.ts +33 -0
  249. package/dist/grading/grade.js +57 -0
  250. package/dist/guards/answer-confirmation.d.ts +41 -0
  251. package/dist/guards/answer-confirmation.js +109 -0
  252. package/dist/guards/evaluator.d.ts +130 -0
  253. package/dist/guards/evaluator.js +1258 -0
  254. package/dist/guards/harness-adapter.d.ts +17 -0
  255. package/dist/guards/harness-adapter.js +57 -0
  256. package/dist/guards/host.d.ts +8 -0
  257. package/dist/guards/host.js +10 -0
  258. package/dist/guards/invocation-parser.d.ts +66 -0
  259. package/dist/guards/invocation-parser.js +595 -0
  260. package/dist/guards/local-identity.d.ts +44 -0
  261. package/dist/guards/local-identity.js +129 -0
  262. package/dist/guards/policy-change.d.ts +43 -0
  263. package/dist/guards/policy-change.js +159 -0
  264. package/dist/guards/policy-pin.d.ts +13 -0
  265. package/dist/guards/policy-pin.js +177 -0
  266. package/dist/guards/protected-locations.d.ts +62 -0
  267. package/dist/guards/protected-locations.js +461 -0
  268. package/dist/guards/read-only.d.ts +37 -0
  269. package/dist/guards/read-only.js +315 -0
  270. package/dist/init/command.d.ts +41 -0
  271. package/dist/init/command.js +330 -0
  272. package/dist/init/derive.d.ts +53 -0
  273. package/dist/init/derive.js +819 -0
  274. package/dist/init/draft.d.ts +140 -0
  275. package/dist/init/draft.js +1228 -0
  276. package/dist/init/render.d.ts +47 -0
  277. package/dist/init/render.js +104 -0
  278. package/dist/init/scaffold.d.ts +53 -0
  279. package/dist/init/scaffold.js +121 -0
  280. package/dist/invocation.d.ts +13 -0
  281. package/dist/invocation.js +20 -0
  282. package/dist/package-metadata.d.ts +9 -0
  283. package/dist/package-metadata.js +19 -0
  284. package/dist/readiness.d.ts +53 -0
  285. package/dist/readiness.js +88 -0
  286. package/dist/references/named.d.ts +24 -0
  287. package/dist/references/named.js +27 -0
  288. package/dist/refusal.d.ts +15 -0
  289. package/dist/refusal.js +7 -0
  290. package/dist/registry-derivation.d.ts +31 -0
  291. package/dist/registry-derivation.js +32 -0
  292. package/dist/registry-resolve/command.d.ts +47 -0
  293. package/dist/registry-resolve/command.js +226 -0
  294. package/dist/registry-resolve/registry.d.ts +68 -0
  295. package/dist/registry-resolve/registry.js +292 -0
  296. package/dist/registry-resolve/render-shell.d.ts +18 -0
  297. package/dist/registry-resolve/render-shell.js +36 -0
  298. package/dist/repair.d.ts +29 -0
  299. package/dist/repair.js +8 -0
  300. package/dist/repository-path.d.ts +9 -0
  301. package/dist/repository-path.js +16 -0
  302. package/dist/schema-json.d.ts +1 -0
  303. package/dist/schema-json.js +177 -0
  304. package/dist/schema.d.ts +1289 -0
  305. package/dist/schema.js +985 -0
  306. package/dist/setup/command.d.ts +4 -0
  307. package/dist/setup/command.js +4 -0
  308. package/dist/sha256.d.ts +1 -0
  309. package/dist/sha256.js +4 -0
  310. package/dist/surfaces/adoption.d.ts +41 -0
  311. package/dist/surfaces/adoption.js +217 -0
  312. package/dist/surfaces/consumer-instructions.d.ts +20 -0
  313. package/dist/surfaces/consumer-instructions.js +43 -0
  314. package/dist/surfaces/contract.d.ts +42 -0
  315. package/dist/surfaces/contract.js +169 -0
  316. package/dist/surfaces/core-declarations.d.ts +24 -0
  317. package/dist/surfaces/core-declarations.js +79 -0
  318. package/dist/surfaces/development-markers.d.ts +1 -0
  319. package/dist/surfaces/development-markers.js +18 -0
  320. package/dist/surfaces/generator-adapter.d.ts +71 -0
  321. package/dist/surfaces/generator-adapter.js +809 -0
  322. package/dist/surfaces/harness-registry.d.ts +260 -0
  323. package/dist/surfaces/harness-registry.js +146 -0
  324. package/dist/surfaces/mcp.d.ts +145 -0
  325. package/dist/surfaces/mcp.js +349 -0
  326. package/dist/surfaces/merge.d.ts +30 -0
  327. package/dist/surfaces/merge.js +105 -0
  328. package/dist/surfaces/ownership.d.ts +190 -0
  329. package/dist/surfaces/ownership.js +795 -0
  330. package/dist/surfaces/projection.d.ts +136 -0
  331. package/dist/surfaces/projection.js +716 -0
  332. package/dist/surfaces/render.d.ts +79 -0
  333. package/dist/surfaces/render.js +636 -0
  334. package/dist/surfaces/restrictions.d.ts +130 -0
  335. package/dist/surfaces/restrictions.js +447 -0
  336. package/dist/surfaces/selftest.d.ts +162 -0
  337. package/dist/surfaces/selftest.js +393 -0
  338. package/dist/surfaces/skill-contract.d.ts +85 -0
  339. package/dist/surfaces/skill-contract.js +449 -0
  340. package/dist/surfaces/sync.d.ts +57 -0
  341. package/dist/surfaces/sync.js +164 -0
  342. package/dist/team-metadata.d.ts +41 -0
  343. package/dist/team-metadata.js +513 -0
  344. package/dist/testing/gates.d.ts +91 -0
  345. package/dist/testing/gates.js +182 -0
  346. package/dist/testing/hooks.d.ts +59 -0
  347. package/dist/testing/hooks.js +139 -0
  348. package/dist/testing/test-protection.d.ts +34 -0
  349. package/dist/testing/test-protection.js +137 -0
  350. package/dist/testing/verdict.d.ts +29 -0
  351. package/dist/testing/verdict.js +62 -0
  352. package/dist/testing/weakening.d.ts +15 -0
  353. package/dist/testing/weakening.js +30 -0
  354. package/dist/work-orders/application-closure.d.ts +7 -0
  355. package/dist/work-orders/application-closure.js +76 -0
  356. package/dist/work-orders/application-context.d.ts +162 -0
  357. package/dist/work-orders/application-context.js +137 -0
  358. package/dist/work-orders/application-decisions.d.ts +27 -0
  359. package/dist/work-orders/application-decisions.js +121 -0
  360. package/dist/work-orders/application-grading.d.ts +11 -0
  361. package/dist/work-orders/application-grading.js +212 -0
  362. package/dist/work-orders/application.d.ts +6 -0
  363. package/dist/work-orders/application.js +223 -0
  364. package/dist/work-orders/composition.d.ts +101 -0
  365. package/dist/work-orders/composition.js +1202 -0
  366. package/dist/work-orders/contract.d.ts +77 -0
  367. package/dist/work-orders/contract.js +140 -0
  368. package/dist/work-orders/decisions.d.ts +23 -0
  369. package/dist/work-orders/decisions.js +55 -0
  370. package/dist/work-orders/store.d.ts +207 -0
  371. package/dist/work-orders/store.js +291 -0
  372. package/docs/README.md +68 -0
  373. package/docs/architecture.md +136 -0
  374. package/docs/capability-matrix.md +58 -0
  375. package/docs/cli-reference.md +807 -0
  376. package/docs/command-list.md +62 -0
  377. package/docs/compose-patterns.md +99 -0
  378. package/docs/concepts.md +173 -0
  379. package/docs/configuration-essentials.md +177 -0
  380. package/docs/configuration-reference.md +636 -0
  381. package/docs/docs-check.md +76 -0
  382. package/docs/environment.md +948 -0
  383. package/docs/extending.md +43 -0
  384. package/docs/faq.md +113 -0
  385. package/docs/getting-started.md +692 -0
  386. package/docs/harness-surfaces.md +500 -0
  387. package/docs/joining-a-team.md +76 -0
  388. package/docs/release-policy.md +49 -0
  389. package/docs/safety-and-autonomy.md +463 -0
  390. package/docs/troubleshooting.md +382 -0
  391. package/docs/tutorial.md +171 -0
  392. package/docs/work-and-browser.md +420 -0
  393. package/libexec/browser-operation.cjs +270 -0
  394. package/libexec/fence-marker.cjs +101 -0
  395. package/libexec/fence-marker.d.cts +24 -0
  396. package/libexec/fenced-group-runner.cjs +77 -0
  397. package/libexec/fenced-supervisor.cjs +137 -0
  398. package/libexec/generated-filesystem.cjs +731 -0
  399. package/libexec/install-filesystem.cjs +225 -0
  400. package/libexec/rulesync-generator.NOTICE.md +1112 -0
  401. package/libexec/rulesync-generator.cjs +743 -0
  402. package/libexec/surface-generator-worker.cjs +266 -0
  403. package/libexec/surface-output-reader.cjs +99 -0
  404. package/libexec/surface-scratch-cleanup.cjs +14 -0
  405. package/libexec/validate-harness-evidence.d.mts +183 -0
  406. package/libexec/validate-harness-evidence.mjs +1312 -0
  407. package/package.json +74 -4
  408. package/surfaces/README.md +33 -0
  409. package/surfaces/agents/evaluator.agent.md +76 -0
  410. package/surfaces/guards/bash-guard.sh +48 -0
  411. package/surfaces/guards/claude.adapter.json +25 -0
  412. package/surfaces/guards/codex.adapter.json +24 -0
  413. package/surfaces/guards/opencode.adapter.json +25 -0
  414. package/surfaces/references/browser.md +63 -0
  415. package/surfaces/references/test-data-and-personas.md +84 -0
  416. package/surfaces/references/testing-tiers.md +11 -0
  417. package/surfaces/skills/cockpit-browser.skill.md +59 -0
  418. package/surfaces/skills/cockpit-explain.skill.md +32 -0
  419. package/surfaces/skills/cockpit-fix.skill.md +37 -0
  420. package/surfaces/skills/cockpit-setup.skill.md +39 -0
  421. package/surfaces/skills/cockpit-work.skill.md +34 -0
  422. package/surfaces/skills/collection.json +5 -0
  423. package/surfaces/skills/procedures/explain.md +66 -0
  424. package/surfaces/skills/procedures/fix.md +95 -0
  425. package/surfaces/skills/procedures/setup.md +452 -0
  426. package/surfaces/skills/procedures/work.md +134 -0
@@ -0,0 +1,62 @@
1
+ # Command list
2
+
3
+ <!-- Generated by `npm run references`; edit its sources, not this file. -->
4
+
5
+ This generated index is for users choosing the command that owns their next operation. The command table supplies this list.
6
+
7
+ ## Set up
8
+
9
+ - `cockpit init`: Preview, then accept, a first cockpit setup for one or more agent tools.
10
+ - `cockpit setup`: Clone or locate the declared sibling repositories and link them.
11
+ - `cockpit use`: Serve a sibling from another of its checkouts, such as a worktree.
12
+ - `cockpit pull`: Fast-forward the cockpit and its siblings to their upstreams.
13
+ - `cockpit sibling`: Add or remove a repository in cockpit.toml (sibling add, sibling remove).
14
+ - `cockpit tool`: Add or remove an agent tool in cockpit.toml (tool add, tool remove).
15
+ - `cockpit confirm`: Confirm an init answer no person stated by running the observation that verifies it.
16
+ - `cockpit registry-resolve`: Turn a validated shell registry into data shell scripts can source.
17
+ - `cockpit upgrade`: Move the exact cockpit pin to a newer version and re-run sync.
18
+
19
+ ## Generate and verify
20
+
21
+ - `cockpit sync`: Write the Compose ownership override and agent files from cockpit.toml.
22
+ - `cockpit check`: Report generated files that no longer match cockpit.toml.
23
+ - `cockpit selftest`: Test whether agent tools enforce the generated controls.
24
+
25
+ ## Run the stack
26
+
27
+ - `cockpit runtime`: Measure the local container runtime (runtime measure) and record the result for this machine.
28
+ - `cockpit up`: Start or resume the declared environment.
29
+ - `cockpit preflight`: Check that the environment is healthy and ready for work.
30
+ - `cockpit session`: Keep the environment available for one command, then release it.
31
+ - `cockpit logs`: Show recent logs for one declared service.
32
+ - `cockpit ps`: Show the state and health of each service in this checkout's stack.
33
+ - `cockpit restart`: Restart one service of this checkout's stack and wait until it is healthy.
34
+ - `cockpit rebuild`: Rebuild one service's image, replace its container and wait until it is healthy.
35
+ - `cockpit exec`: Run a command inside one service's container of this checkout's stack.
36
+ - `cockpit sleep`: Release this checkout and stop the stack if no other holder remains.
37
+ - `cockpit down`: Stop and remove the stack (on the active local Docker context).
38
+ - `cockpit reset`: Preview a reset, then approve it interactively or apply it as [autonomy] reset allows (on the active local Docker context).
39
+ - `cockpit stacks`: List every stack on this machine, or preview and remove those whose checkout is gone (stacks prune).
40
+
41
+ ## Diagnose
42
+
43
+ - `cockpit doctor`: Report environment problems without changing anything.
44
+
45
+ ## Test and grade
46
+
47
+ - `cockpit test-run`: Run a declared product test gate and report which tests it selected.
48
+ - `cockpit work status`: Report each work order, its state and how it closed.
49
+ - `cockpit work accept`: Accept a work order, or a change to an accepted one, as [work.gates] allows.
50
+ - `cockpit work check`: Run every criterion's check and the order's gates.
51
+ - `cockpit work note`: Record a note on an order, an open question with --ask, or a decision with --decision.
52
+ - `cockpit work decide`: Resolve a recorded decision: write or cite its decision record, or say it is not lasting.
53
+ - `cockpit work answer`: Answer an open question on an order, as [work.gates] allows.
54
+ - `cockpit work acknowledge`: Acknowledge that an order weakened tests, as [work.gates] allows.
55
+ - `cockpit work grade`: Grade an accepted order the way [work] grading says.
56
+ - `cockpit work signoff`: Close a graded order as done, or any open one as partial or abandoned.
57
+ - `cockpit work recover`: Inspect or remove a crashed command's work-order lock.
58
+ - `cockpit work verify`: Check every record against its order; in CI, pass the steps gated on ci.
59
+ - `cockpit grade`: Independently grade uncommitted work against a criteria file, with no work order.
60
+ - `cockpit browser drive`: Drive the declared application browser surfaces.
61
+ - `cockpit browser screenshot`: Capture the declared application surfaces.
62
+ - `cockpit docs check`: Report removed paths and make targets living docs still cite, and broken decision records.
@@ -0,0 +1,99 @@
1
+ # Compose patterns
2
+
3
+ cockpit runs your Compose files as written, so a stub vendor, a TLS front end or a data restore is
4
+ a few lines of plain Compose rather than a cockpit setting. Each pattern below keeps to what
5
+ [`check`](environment.md#compose-first-stacks) expects of a Compose file: published ports come from
6
+ a `[ports.bases]` variable and bind `127.0.0.1`, and a container gets only the bind mounts
7
+ `cockpit.toml` declares. `check` also warns about a service with no healthcheck and an image pinned
8
+ by tag rather than digest; pin the tags below before you rely on them. A build context is not a
9
+ bind mount, so the patterns copy their files in with a small Dockerfile instead of mounting them.
10
+
11
+ ## Stub a vendor
12
+
13
+ Run a local stand-in for a third-party API and point the app at it by service name:
14
+
15
+ ```yaml
16
+ services:
17
+ api:
18
+ build: ${API_DIR:-./api}
19
+ environment:
20
+ PAYMENTS_URL: http://payments-stub:8080
21
+ depends_on:
22
+ payments-stub:
23
+ condition: service_healthy
24
+ payments-stub:
25
+ build: ./stubs/payments
26
+ healthcheck:
27
+ test: ["CMD", "wget", "-q", "-O", "/dev/null", "http://localhost:8080/health"]
28
+ interval: 5s
29
+ ```
30
+
31
+ `./stubs/payments` holds the stub's Dockerfile and the responses it serves. The stub publishes no
32
+ host port, because only the app calls it. Keep the real vendor's address out of the stack, and list
33
+ its host under `[guards] vendor_endpoint_hosts` in `cockpit.toml` so the guards keep agents away
34
+ from it too.
35
+
36
+ ## Serve TLS
37
+
38
+ Put a reverse proxy in front of the app when the product must run on `https`. This one uses Caddy's
39
+ internal certificate authority, so no private key leaves the container:
40
+
41
+ ```yaml
42
+ services:
43
+ tls:
44
+ image: caddy:2-alpine # pin this by digest
45
+ command: ["caddy", "reverse-proxy", "--from", "https://app.sample.localhost", "--to", "api:3000", "--internal-certs"]
46
+ ports: ["127.0.0.1:${APP_HOST_PORT:-8443}:443"]
47
+ volumes: ["caddy-data:/data"]
48
+ healthcheck:
49
+ test: ["CMD", "wget", "-q", "-O", "/dev/null", "http://localhost:2019/config/"]
50
+ interval: 5s
51
+ volumes:
52
+ caddy-data: {}
53
+ ```
54
+
55
+ Declare the matching [named local URL](environment.md#named-local-urls) with
56
+ `hostname = "app.sample.localhost"` and `scheme = "https"` on `APP_HOST_PORT`. Each client that
57
+ connects must trust the proxy's root certificate, which Caddy keeps in the `caddy-data` volume
58
+ under `/data/caddy/pki/authorities/local/`; copy it out with `docker compose cp` and trust only
59
+ that public certificate. Leave `caddy-data` out of
60
+ `resettable_volumes`, so a reset does not issue a new root that every client must trust again.
61
+
62
+ ## Seed or restore data
63
+
64
+ For a seed that talks to the running stack, declare
65
+ [`environment.seed`](environment.md#demo-data-test-users-and-roles): `up` runs it on the host once
66
+ the stack is healthy and again after the data volume is recreated, with the leased ports in its
67
+ environment. A restore is the same declaration with a script that loads a dump:
68
+
69
+ ```toml
70
+ [environment]
71
+ compose_files = ["compose.yml"]
72
+ resettable_volumes = ["postgres-data"]
73
+ seed = { argv = ["sh", "scripts/restore.sh"], timeout_seconds = 900 }
74
+ ```
75
+
76
+ `scripts/restore.sh` connects to `127.0.0.1:$POSTGRES_HOST_PORT`, which cockpit sets from the lease,
77
+ and loads the dump with the product's own tools. Print every table or object it could not restore
78
+ before it exits, because a silent gap looks like a complete copy.
79
+
80
+ To load data without a host command, let the database image do it on an empty volume. The official
81
+ Postgres image runs the scripts in `/docker-entrypoint-initdb.d` only when its data directory is
82
+ empty, which is the state `reset` leaves a resettable volume in:
83
+
84
+ ```yaml
85
+ services:
86
+ postgres:
87
+ build: ./db # FROM postgres:17-alpine, then COPY init/ /docker-entrypoint-initdb.d/
88
+ environment:
89
+ POSTGRES_PASSWORD: postgres
90
+ volumes: ["postgres-data:/var/lib/postgresql/data"]
91
+ healthcheck:
92
+ test: ["CMD", "pg_isready", "-U", "postgres"]
93
+ interval: 5s
94
+ volumes:
95
+ postgres-data: {}
96
+ ```
97
+
98
+ Keep dumps and fixtures out of tracked files when they hold real data; build them into the image
99
+ from an ignored directory, or have the seed command fetch them.
@@ -0,0 +1,173 @@
1
+ # Concepts
2
+
3
+ This page defines the words cockpit's commands, configuration and diagnostics use. Each term has
4
+ one meaning across the documentation, and other pages link here instead of redefining it.
5
+
6
+ ## Cockpit glossary
7
+
8
+ Everyday terms, in plain language.
9
+
10
+ ### Agent harness
11
+
12
+ The AI coding tool an agent runs in, such as Claude Code, Codex CLI or OpenCode. cockpit installs
13
+ its guard hook for those; for Cursor and Grok Build, once `[surfaces] tools` lists them, it writes
14
+ files but installs no guard, and nobody has confirmed those tools load them. The
15
+ [capability matrix](capability-matrix.md) lists the target identifiers and what is confirmed for
16
+ each feature; see also [Capability states](harness-surfaces.md#capability-states).
17
+
18
+ ### Sibling repository
19
+
20
+ One of the product's Git repositories, declared in a `[[sibling]]` table. Siblings sit side by
21
+ side under one directory, the siblings root. Each says how the stack uses the checkout (`mount`)
22
+ and how the checkout gets onto disk (`acquire`), two deliberately independent settings
23
+ ([Architecture](architecture.md#two-axes-mount-and-acquire)).
24
+
25
+ ### Stack
26
+
27
+ The running product: the Docker Compose project cockpit generates from the declared services,
28
+ volumes and ports, started against the sibling checkouts on your disk.
29
+
30
+ ### Surface
31
+
32
+ A file cockpit generates for an agent harness: the shared instructions in AGENTS.md, the Claude
33
+ import in CLAUDE.md, skills, subagents, hooks, MCP server entries and permissions. `cockpit sync`
34
+ renders them from templates shipped in the package.
35
+
36
+ ### Overlay
37
+
38
+ A product-specific addition to the generated surfaces, such as an extra rule or skill; see
39
+ [Cockpit surface overlay](#cockpit-surface-overlay).
40
+
41
+ ### Guard
42
+
43
+ A check that runs before an agent's tool call and can deny it, for example a push to a protected
44
+ branch, an edit to a declared environment or secret file, or a command aimed at a declared hosted
45
+ database or vendor host. The same policy is installed as a hook in each harness that supports one.
46
+
47
+ ### Drift
48
+
49
+ A difference between a generated file on disk and what the current configuration would generate.
50
+ `cockpit check` reports it without changing anything. `cockpit sync` rewrites a changed generated
51
+ artifact such as `compose.cockpit.yml`, but refuses a changed surface (a skill, agent settings or
52
+ a cockpit-owned region) with `SURFACE_STATE_CONFLICT`, because it can no longer prove it wrote
53
+ those bytes.
54
+
55
+ ### Holder
56
+
57
+ A record that one checkout is using the stack. `up` adds one and `sleep` removes it; the stack stops
58
+ only when none remain, so one agent cannot stop another's environment.
59
+
60
+ ### Work order
61
+
62
+ A file, `workorders/<id>.md`, whose YAML front-matter is the contract for one piece of agent work: its
63
+ objective, the paths it may change, acceptance criteria with the checks that show them, and what it
64
+ leaves alone. cockpit records who accepted it, runs its checks, grades the result against it and
65
+ records how it closed; the [work-order contract](https://github.com/b0dea/cockpit/blob/main/packages/cockpit/src/work-orders/contract.ts)
66
+ holds its schema and limits.
67
+
68
+ ### Evaluator
69
+
70
+ The grader for a finished work order under the default `independent` grading. It grades each
71
+ acceptance criterion, and the standing criteria cockpit adds (changes outside scope, flagged test
72
+ changes, the agent's amendments), against the checks cockpit ran and the change since the order was
73
+ accepted, in a fresh read-only run that never sees the session that did the work, in another listed
74
+ agent tool when one is available, otherwise the same tool in a new run. It never edits code. A cockpit
75
+ can instead let the checks alone decide, or let the agent report its own verdict; the record says
76
+ which.
77
+
78
+ ### Enforced, instructed, generated and unavailable
79
+
80
+ The four states of a harness feature. See
81
+ [Cockpit harness capability state](#cockpit-harness-capability-state).
82
+
83
+ ## Cockpit checkout root
84
+
85
+ The directory that holds <!-- cockpit:ref consumer=cockpit.toml --> `cockpit.toml`; it identifies one cockpit instance. Generated
86
+ paths, `cockpit.siblings_root` and lifecycle commands resolve from here, even when the
87
+ configuration sits inside a larger Git checkout, so sibling discovery and Compose paths follow
88
+ the configuration you select with `--config`.
89
+
90
+ The cockpit's runtime identity comes from the main Git checkout and the checkout identity from the
91
+ current one, so linked worktrees share one cockpit but stay distinct checkouts. A standalone
92
+ directory can `sync` before Git exists; `setup` and lifecycle commands need a Git checkout.
93
+
94
+ ## Where the cockpit lives
95
+
96
+ The cockpit root is the directory that holds `cockpit.toml`, the generated instructions, the guard
97
+ and the harness settings. There are two layouts, and `init` does not ask which to use for a single
98
+ repository:
99
+
100
+ - **In-repo** is the default for one product repository. The repository itself is the cockpit root
101
+ (`siblings_root = "."`, the repository is the sibling with `dir = "."`), so the cockpit files are
102
+ committed with the product.
103
+ - **Dedicated** is the layout for a product made of several repositories. The root is a folder or
104
+ repository of its own beside them, such as `shop-cockpit`, with `siblings_root = ".."`:
105
+
106
+ ```text
107
+ work/
108
+ shop/ product repository, first sibling (dir = "shop")
109
+ shop-cockpit/ cockpit root: cockpit.toml, AGENTS.md, guards, harness settings
110
+ ```
111
+
112
+ A dedicated root keeps cockpit files out of the product repositories and lets one cockpit own several
113
+ neutrally; an in-repo cockpit cannot. Pick it by answering `cockpit.root = "dedicated"` to `init` run
114
+ from the product repository: `init` creates `../<repo>-cockpit` as a local Git repository (the one
115
+ directory it writes outside the folder it ran in; an existing destination must be empty or a local
116
+ Git repository with a plain `.git` directory) and declares the product repository as its first
117
+ sibling. An empty folder or a folder of documents is itself the cockpit: `init` declares it as its
118
+ own first sibling (`dir = "."`), and repositories are added later with
119
+ `cockpit sibling add <slug> --create`.
120
+
121
+ There is no command to move an in-repo cockpit. Do not delete the ownership manifest or the paths it
122
+ lists by hand; create a new dedicated cockpit as a separate adoption, and remove the old one only
123
+ once a command can preview and check that cleanup. To create one, follow
124
+ [Getting started](getting-started.md).
125
+
126
+ ## Cockpit sibling declaration
127
+
128
+ The `[[sibling]]` entry for one product repository: its stable slug, directory, acquisition and
129
+ mount modes, toolchain and generated guidance. It names a repository; `setup` and `preflight`
130
+ check that the checkout exists and matches it.
131
+
132
+ ## Cockpit product registry
133
+
134
+ An optional, validated description of an existing product's repositories, environment, surfaces,
135
+ guards, grading and adoption state, used as input when adopting an established setup. The
136
+ <!-- cockpit:ref consumer=cockpit.toml --> `cockpit.toml` draft it produces still needs your review.
137
+
138
+ ## Cockpit lifecycle record
139
+
140
+ The state cockpit keeps for one checkout and its shared runtime: which setup and bring-up stages
141
+ completed. Later commands use it to resume safely and to tell the current state from an earlier
142
+ attempt.
143
+
144
+ ## Cockpit generated ownership
145
+
146
+ The record of every file and delimited region of a shared file that cockpit wrote, with
147
+ the bytes it expects. It lets `check` detect drift and `sync` replace its own output without
148
+ touching anything else.
149
+
150
+ ## Cockpit harness capability state
151
+
152
+ The confirmed status of one feature for one agent harness:
153
+
154
+ - `enforced`: a mechanism refuses the prohibited operation, and a dated check shows it doing so.
155
+ - `instructed`: cockpit emits the guidance or setting, but enforcement has not been confirmed.
156
+ - `generated`: cockpit emits the file for a harness with no guard adapter or loading test, so
157
+ nobody has verified that the tool even loads it.
158
+ - `unavailable`: the harness offers no mechanism, so cockpit emits nothing and records why.
159
+
160
+ Generating a file never promotes a feature to `enforced`; only a probe of the real tool does.
161
+
162
+ ## Cockpit surface overlay
163
+
164
+ A product-specific rule, subagent, skill or hook added through `[surfaces].overlays`. It may
165
+ replace a built-in item only with an explicit `replaces` entry naming that item's SHA-256, so a
166
+ later change to the item is reported instead of silently overridden. It cannot replace core
167
+ permissions or MCP approval.
168
+
169
+ ## Cockpit evidence boundary
170
+
171
+ The line between what cockpit has checked itself and what still needs confirmation elsewhere: a
172
+ running harness, a person, a vendor or a live runtime. A repository test proves cockpit's own
173
+ behaviour, not that a harness loaded a generated file.
@@ -0,0 +1,177 @@
1
+ # Configuration essentials
2
+
3
+ This page is for people writing or reviewing their first `cockpit.toml`. It covers the tables a
4
+ typical cockpit sets, the ones `init` asks about and the bundled examples declare, each with a
5
+ minimal snippet and a link to its full entry in the generated
6
+ [configuration reference](configuration-reference.md). Everything else is optional and listed by
7
+ area at the end.
8
+
9
+ ## `[cockpit]`
10
+
11
+ The cockpit's name and where the product's repositories live. The name scopes the cockpit's
12
+ Compose projects, state and generated files, so renaming it later means bringing the stack down
13
+ and syncing again. `siblings_root` is relative to the cockpit directory and defaults to `..`.
14
+ Full entry: [`[cockpit]`](configuration-reference.md#cockpit).
15
+
16
+ ```toml
17
+ [cockpit]
18
+ name = "shop"
19
+ siblings_root = ".."
20
+ ```
21
+
22
+ ## `[[sibling]]`
23
+
24
+ One table per product repository. `mount` says how the stack uses the checkout: `always`
25
+ bind-mounts it, `profile:<name>` mounts it only while that Compose profile is active
26
+ ([Compose profiles](environment.md#compose-profiles)), `none` leaves it read
27
+ but never mounted, and `host` runs it outside the stack for the reason given in `host_reason`.
28
+ `acquire` says how it reaches disk: `auto` clones `remote` during `setup`, `manual` expects a
29
+ person to clone it, and `none` never clones it, so it must already be there. The two are
30
+ [independent](architecture.md#two-axes-mount-and-acquire). `var` carries the checkout's path and
31
+ `toolchain` picks the install policy. `cockpit sibling add` writes these tables for you. Full
32
+ entries: [`[[sibling]]`](configuration-reference.md#sibling) and
33
+ [`[[sibling.environment_files]]`](configuration-reference.md#siblingenvironment_files).
34
+
35
+ ```toml
36
+ [[sibling]]
37
+ slug = "api"
38
+ dir = "api"
39
+ mount = "always"
40
+ acquire = "auto"
41
+ remote = "git@example.com:team/api.git"
42
+ var = "API_DIR"
43
+ toolchain = "node"
44
+ purpose = "HTTP API for orders"
45
+
46
+ [[sibling.environment_files]]
47
+ template = ".env.example" # tracked in the sibling
48
+ instance = ".env" # created from it by setup
49
+ ```
50
+
51
+ ## `[ports]`
52
+
53
+ The base host port of every published port, by variable name. Each parallel stack publishes the
54
+ bases plus a multiple of `step`, as
55
+ [Local URLs and port families](environment.md#local-urls-and-port-families) explains. An empty
56
+ `[ports.bases]` table records that nothing is published. Full entry:
57
+ [`[ports]`](configuration-reference.md#ports).
58
+
59
+ ```toml
60
+ [ports.bases]
61
+ API_HOST_PORT = 4100
62
+ ```
63
+
64
+ ## `[environment]`: posture and machine floor
65
+
66
+ How the product is reached and signed in to locally, and the least the container runtime must
67
+ offer. `preflight` refuses a runtime until the posture is declared, and runtime commands refuse to
68
+ start on a machine below the floor;
69
+ [Declare environment postures](environment.md#declare-environment-postures) covers the tags. Full
70
+ entries: [`[environment]`](configuration-reference.md#environment),
71
+ [`[[environment.posture_requirements]]`](configuration-reference.md#environmentposture_requirements)
72
+ and [`[environment.machine]`](configuration-reference.md#environmentmachine).
73
+
74
+ ```toml
75
+ [environment]
76
+ addressing = "port"
77
+ authentication = "none"
78
+ posture_requirements = [{ requirement = "leased-localhost-ports", addressing = "port" }]
79
+
80
+ [environment.machine]
81
+ runtime_memory_mb = 512
82
+ runtime_cpus = 1
83
+ free_disk_mb = 1024
84
+ cold_start_seconds = 60
85
+ ```
86
+
87
+ ## The stack: `compose_files`
88
+
89
+ A product that runs as a stack lists its Compose files under `[environment]`, and cockpit runs them
90
+ as written ([Compose-first stacks](environment.md#compose-first-stacks)). A small app with no
91
+ Compose file gets a starting one from `cockpit init --scaffold-compose`
92
+ ([Scaffold a Compose file](environment.md#scaffold-a-compose-file)). `resettable_volumes` names the
93
+ Compose volumes `reset` may delete, and `seed` the command `up` runs to fill them
94
+ ([Demo data, test users and roles](environment.md#demo-data-test-users-and-roles)). `profiles`
95
+ names the Compose profiles every `up` activates; `up --profile <name>` adds one for a run
96
+ ([Compose profiles](environment.md#compose-profiles)). Full entry:
97
+ [`[environment]`](configuration-reference.md#environment).
98
+
99
+ ```toml
100
+ [environment]
101
+ compose_files = ["compose.yml"]
102
+ profiles = ["workers"]
103
+ resettable_volumes = ["postgres-data"]
104
+ seed = { argv = ["npm", "run", "db:seed"], timeout_seconds = 300 }
105
+ ```
106
+
107
+ ## `[[environment.install_policies]]`
108
+
109
+ The project build and test commands for one toolchain, selected by the lockfile a sibling
110
+ checkout holds. `setup` needs exactly one matching row for each sibling whose `toolchain` is not
111
+ `none`, and the guard allows the declared `build` and `test` argument vectors in that checkout.
112
+ Full entry: the [`install_policies` shape](configuration-reference.md#environmentinstall_policies).
113
+
114
+ ```toml
115
+ [[environment.install_policies]]
116
+ toolchain = "node"
117
+ lockfile = "package-lock.json"
118
+ build = ["npm", "run", "build"]
119
+ test = ["npm", "test"]
120
+ ```
121
+
122
+ ## `[testing]`
123
+
124
+ The product's test commands as stages, grouped into a targeted gate agents run while iterating and
125
+ a full gate they run before handing back shared changes. A stage command is an argument list run
126
+ without a shell; [Choose the proving test tier](work-and-browser.md#choose-the-proving-test-tier)
127
+ explains the tiers. Full entries: [`[testing]`](configuration-reference.md#testing),
128
+ [`[[testing.stages]]`](configuration-reference.md#testingstages) and
129
+ [`[[testing.gates]]`](configuration-reference.md#testinggates).
130
+
131
+ ```toml
132
+ [testing]
133
+ stages = [
134
+ { id = "changed", command = ["npx", "vitest", "run", "--changed", "origin/main"], requires_stack = false },
135
+ { id = "all", command = ["npx", "vitest", "run"], requires_stack = false },
136
+ ]
137
+ gates = [
138
+ { id = "changed", tier = "targeted", stages = ["changed"], changes = "Isolated behaviour" },
139
+ { id = "all", tier = "full", stages = ["all"], changes = "Shared or cross-project behaviour" },
140
+ ]
141
+ ```
142
+
143
+ ## `[guards]`
144
+
145
+ The database and live vendor API hosts of every non-local environment; the guard denies agent
146
+ commands that reach them ([Safety and autonomy](safety-and-autonomy.md)). Empty lists record that
147
+ none exists. Full entry: [`[guards]`](configuration-reference.md#guards).
148
+
149
+ ```toml
150
+ [guards]
151
+ hosted_db_hosts = ["db.prod.example.com"]
152
+ vendor_endpoint_hosts = ["api.payments.example.com"]
153
+ ```
154
+
155
+ ## `unconfirmed`
156
+
157
+ `init` lists each answer no person stated in `unconfirmed`, at the top of the file, and `doctor`
158
+ warns until a person confirms each value and deletes its entry. Full entry:
159
+ [Top-level keys](configuration-reference.md#top-level-keys).
160
+
161
+ ## Everything else
162
+
163
+ Each optional area links to its tables in the reference and to the guide that explains it. The
164
+ reference also lists the [defaults](configuration-reference.md#defaults) and the
165
+ [checks beyond the schema](configuration-reference.md#checks-beyond-the-schema).
166
+
167
+ | Area | Tables | Guide |
168
+ |---|---|---|
169
+ | Vendor stubs, TLS, restores | your Compose files | [Compose patterns](compose-patterns.md) |
170
+ | Browser checks | [`[browser]`](configuration-reference.md#browser) | [Browser evidence](work-and-browser.md#browser-evidence) |
171
+ | Work orders | [`[work]`](configuration-reference.md#work) | [Work and browser workflows](work-and-browser.md) |
172
+ | Who decides | [`[autonomy]`](configuration-reference.md#autonomy) | [Who decides](safety-and-autonomy.md#who-decides) |
173
+ | Guard rules | [`[[guards.allow]]`](configuration-reference.md#guardsallow), the `deny` row of [`[guards]`](configuration-reference.md#guards) | [Safety and autonomy](safety-and-autonomy.md) |
174
+ | MCP approvals | [`[mcp]`](configuration-reference.md#mcp) | [MCP servers and restrictions](harness-surfaces.md#mcp-servers-and-restrictions) |
175
+ | Surface overlays | [`[[surfaces.overlays]]`](configuration-reference.md#surfacesoverlays) | [Ownership and extension](harness-surfaces.md#ownership-and-extension) |
176
+ | Custom harnesses | [`[[surfaces.harnesses]]`](configuration-reference.md#surfacesharnesses) | [Custom harnesses](harness-surfaces.md#custom-harnesses) |
177
+ | Living documents and decision records | [`[docs]`](configuration-reference.md#docs) | [Check living documents and decision records](docs-check.md) |