@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.
- package/CHANGELOG.md +474 -0
- package/LICENSE +21 -0
- package/README.md +25 -2
- package/bin/cockpit.mjs +33 -0
- package/cockpit.schema.json +2644 -0
- package/dist/autonomy.d.ts +45 -0
- package/dist/autonomy.js +173 -0
- package/dist/bounded-read.d.ts +14 -0
- package/dist/bounded-read.js +42 -0
- package/dist/browser/commands.d.ts +117 -0
- package/dist/browser/commands.js +453 -0
- package/dist/browser/package-paths.d.ts +1 -0
- package/dist/browser/package-paths.js +6 -0
- package/dist/browser/proxy.d.ts +22 -0
- package/dist/browser/proxy.js +37 -0
- package/dist/browser/runtime.d.ts +118 -0
- package/dist/browser/runtime.js +186 -0
- package/dist/browser/surfaces.d.ts +141 -0
- package/dist/browser/surfaces.js +561 -0
- package/dist/browser/ui-gate.d.ts +15 -0
- package/dist/browser/ui-gate.js +18 -0
- package/dist/canonical-json.d.ts +2 -0
- package/dist/canonical-json.js +5 -0
- package/dist/cli-guard.d.ts +5 -0
- package/dist/cli-guard.js +71 -0
- package/dist/cli-main.d.ts +176 -0
- package/dist/cli-main.js +1584 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.js +16 -0
- package/dist/command-table.d.ts +121 -0
- package/dist/command-table.js +664 -0
- package/dist/config/load.d.ts +183 -0
- package/dist/config/load.js +367 -0
- package/dist/config/sibling-toml.d.ts +48 -0
- package/dist/config/sibling-toml.js +160 -0
- package/dist/config/surface-tools-toml.d.ts +9 -0
- package/dist/config/surface-tools-toml.js +37 -0
- package/dist/config/unconfirmed-toml.d.ts +9 -0
- package/dist/config/unconfirmed-toml.js +29 -0
- package/dist/config/verified-write.d.ts +43 -0
- package/dist/config/verified-write.js +89 -0
- package/dist/diagnostics.d.ts +26 -0
- package/dist/diagnostics.js +344 -0
- package/dist/docs/check.d.ts +16 -0
- package/dist/docs/check.js +197 -0
- package/dist/docs/decision-record.d.ts +34 -0
- package/dist/docs/decision-record.js +135 -0
- package/dist/docs/decisions.d.ts +16 -0
- package/dist/docs/decisions.js +103 -0
- package/dist/docs/markdown.d.ts +36 -0
- package/dist/docs/markdown.js +88 -0
- package/dist/docs/references.d.ts +32 -0
- package/dist/docs/references.js +148 -0
- package/dist/emit.d.ts +22 -0
- package/dist/emit.js +43 -0
- package/dist/entrypoint-kinds.d.ts +3 -0
- package/dist/entrypoint-kinds.js +11 -0
- package/dist/environment/application/confirm.d.ts +35 -0
- package/dist/environment/application/confirm.js +122 -0
- package/dist/environment/application/destructive.d.ts +6 -0
- package/dist/environment/application/destructive.js +429 -0
- package/dist/environment/application/doctor.d.ts +94 -0
- package/dist/environment/application/doctor.js +247 -0
- package/dist/environment/application/guard.d.ts +49 -0
- package/dist/environment/application/guard.js +677 -0
- package/dist/environment/application/health.d.ts +143 -0
- package/dist/environment/application/health.js +385 -0
- package/dist/environment/application/lifecycle-context.d.ts +235 -0
- package/dist/environment/application/lifecycle-context.js +154 -0
- package/dist/environment/application/lifecycle-state.d.ts +25 -0
- package/dist/environment/application/lifecycle-state.js +202 -0
- package/dist/environment/application/lifecycle.d.ts +18 -0
- package/dist/environment/application/lifecycle.js +737 -0
- package/dist/environment/application/logs.d.ts +45 -0
- package/dist/environment/application/logs.js +127 -0
- package/dist/environment/application/services.d.ts +60 -0
- package/dist/environment/application/services.js +89 -0
- package/dist/environment/application/setup.d.ts +129 -0
- package/dist/environment/application/setup.js +741 -0
- package/dist/environment/application/shared.d.ts +11 -0
- package/dist/environment/application/shared.js +61 -0
- package/dist/environment/application/siblings.d.ts +43 -0
- package/dist/environment/application/siblings.js +269 -0
- package/dist/environment/claims.d.ts +389 -0
- package/dist/environment/claims.js +1701 -0
- package/dist/environment/codex-hook-trust.d.ts +11 -0
- package/dist/environment/codex-hook-trust.js +185 -0
- package/dist/environment/compose-environment.d.ts +1 -0
- package/dist/environment/compose-environment.js +6 -0
- package/dist/environment/compose-ownership.d.ts +21 -0
- package/dist/environment/compose-ownership.js +117 -0
- package/dist/environment/compose-topology.d.ts +125 -0
- package/dist/environment/compose-topology.js +490 -0
- package/dist/environment/contract.d.ts +522 -0
- package/dist/environment/contract.js +794 -0
- package/dist/environment/declaration.d.ts +14 -0
- package/dist/environment/declaration.js +39 -0
- package/dist/environment/destructive-composition.d.ts +29 -0
- package/dist/environment/destructive-composition.js +333 -0
- package/dist/environment/docker-daemon.d.ts +30 -0
- package/dist/environment/docker-daemon.js +78 -0
- package/dist/environment/docker-endpoint.d.ts +10 -0
- package/dist/environment/docker-endpoint.js +19 -0
- package/dist/environment/env-schema-observation.d.ts +46 -0
- package/dist/environment/env-schema-observation.js +241 -0
- package/dist/environment/evidence.d.ts +136 -0
- package/dist/environment/evidence.js +437 -0
- package/dist/environment/executable.d.ts +38 -0
- package/dist/environment/executable.js +190 -0
- package/dist/environment/generated-application/authorities.d.ts +5 -0
- package/dist/environment/generated-application/authorities.js +61 -0
- package/dist/environment/generated-application/bootstrap-skill.d.ts +16 -0
- package/dist/environment/generated-application/bootstrap-skill.js +328 -0
- package/dist/environment/generated-application/check.d.ts +13 -0
- package/dist/environment/generated-application/check.js +191 -0
- package/dist/environment/generated-application/custom-surface.d.ts +26 -0
- package/dist/environment/generated-application/custom-surface.js +289 -0
- package/dist/environment/generated-application/prepare.d.ts +29 -0
- package/dist/environment/generated-application/prepare.js +278 -0
- package/dist/environment/generated-application/publication.d.ts +33 -0
- package/dist/environment/generated-application/publication.js +547 -0
- package/dist/environment/generated-application/shared.d.ts +492 -0
- package/dist/environment/generated-application/shared.js +354 -0
- package/dist/environment/generated-application/surface-observation.d.ts +4 -0
- package/dist/environment/generated-application/surface-observation.js +69 -0
- package/dist/environment/generated-application/surface-outputs.d.ts +71 -0
- package/dist/environment/generated-application/surface-outputs.js +400 -0
- package/dist/environment/generated-application/surfaces.d.ts +3 -0
- package/dist/environment/generated-application/surfaces.js +704 -0
- package/dist/environment/generated-application/sync.d.ts +6 -0
- package/dist/environment/generated-application/sync.js +124 -0
- package/dist/environment/git-observation.d.ts +202 -0
- package/dist/environment/git-observation.js +553 -0
- package/dist/environment/health-composition.d.ts +12 -0
- package/dist/environment/health-composition.js +645 -0
- package/dist/environment/host-observation.d.ts +56 -0
- package/dist/environment/host-observation.js +52 -0
- package/dist/environment/identity.d.ts +48 -0
- package/dist/environment/identity.js +85 -0
- package/dist/environment/init-application.d.ts +333 -0
- package/dist/environment/init-application.js +726 -0
- package/dist/environment/install-policy-observation.d.ts +71 -0
- package/dist/environment/install-policy-observation.js +284 -0
- package/dist/environment/install-policy.d.ts +48 -0
- package/dist/environment/install-policy.js +96 -0
- package/dist/environment/instance.d.ts +33 -0
- package/dist/environment/instance.js +122 -0
- package/dist/environment/instruction-pointer.d.ts +19 -0
- package/dist/environment/instruction-pointer.js +144 -0
- package/dist/environment/lifecycle-composition.d.ts +31 -0
- package/dist/environment/lifecycle-composition.js +742 -0
- package/dist/environment/lifecycle-stage.d.ts +120 -0
- package/dist/environment/lifecycle-stage.js +408 -0
- package/dist/environment/lifecycle.d.ts +75 -0
- package/dist/environment/lifecycle.js +354 -0
- package/dist/environment/logs.d.ts +132 -0
- package/dist/environment/logs.js +519 -0
- package/dist/environment/map-limit.d.ts +2 -0
- package/dist/environment/map-limit.js +13 -0
- package/dist/environment/mcp-observation.d.ts +9 -0
- package/dist/environment/mcp-observation.js +46 -0
- package/dist/environment/observations.d.ts +46 -0
- package/dist/environment/observations.js +346 -0
- package/dist/environment/operator-application.d.ts +79 -0
- package/dist/environment/operator-application.js +197 -0
- package/dist/environment/ports.d.ts +182 -0
- package/dist/environment/ports.js +1205 -0
- package/dist/environment/posture-observation.d.ts +68 -0
- package/dist/environment/posture-observation.js +253 -0
- package/dist/environment/presence.d.ts +4 -0
- package/dist/environment/presence.js +26 -0
- package/dist/environment/read-composition.d.ts +32 -0
- package/dist/environment/read-composition.js +397 -0
- package/dist/environment/readiness-composition.d.ts +57 -0
- package/dist/environment/readiness-composition.js +151 -0
- package/dist/environment/reclaim.d.ts +370 -0
- package/dist/environment/reclaim.js +1940 -0
- package/dist/environment/repository-identity.d.ts +13 -0
- package/dist/environment/repository-identity.js +108 -0
- package/dist/environment/runtime-measurement-record.d.ts +38 -0
- package/dist/environment/runtime-measurement-record.js +111 -0
- package/dist/environment/runtime-measurement.d.ts +27 -0
- package/dist/environment/runtime-measurement.js +224 -0
- package/dist/environment/runtime-probe-residue.d.ts +43 -0
- package/dist/environment/runtime-probe-residue.js +148 -0
- package/dist/environment/runtime-probe.d.ts +72 -0
- package/dist/environment/runtime-probe.js +725 -0
- package/dist/environment/runtime.d.ts +551 -0
- package/dist/environment/runtime.js +2405 -0
- package/dist/environment/seed.d.ts +16 -0
- package/dist/environment/seed.js +43 -0
- package/dist/environment/selftest-application.d.ts +86 -0
- package/dist/environment/selftest-application.js +713 -0
- package/dist/environment/sensitive.d.ts +3 -0
- package/dist/environment/sensitive.js +48 -0
- package/dist/environment/served-checkout-grants.d.ts +53 -0
- package/dist/environment/served-checkout-grants.js +182 -0
- package/dist/environment/setup-observation.d.ts +62 -0
- package/dist/environment/setup-observation.js +1473 -0
- package/dist/environment/setup.d.ts +43 -0
- package/dist/environment/setup.js +176 -0
- package/dist/environment/sibling-checkouts.d.ts +119 -0
- package/dist/environment/sibling-checkouts.js +254 -0
- package/dist/environment/sibling-instructions.d.ts +33 -0
- package/dist/environment/sibling-instructions.js +224 -0
- package/dist/environment/sibling-observation.d.ts +27 -0
- package/dist/environment/sibling-observation.js +45 -0
- package/dist/environment/sibling-pull.d.ts +23 -0
- package/dist/environment/sibling-pull.js +95 -0
- package/dist/environment/sibling-registration.d.ts +45 -0
- package/dist/environment/sibling-registration.js +538 -0
- package/dist/environment/stack-inputs.d.ts +18 -0
- package/dist/environment/stack-inputs.js +210 -0
- package/dist/environment/stack-inventory-prune.d.ts +31 -0
- package/dist/environment/stack-inventory-prune.js +129 -0
- package/dist/environment/stack-inventory-report.d.ts +44 -0
- package/dist/environment/stack-inventory-report.js +78 -0
- package/dist/environment/stack-inventory.d.ts +94 -0
- package/dist/environment/stack-inventory.js +418 -0
- package/dist/environment/state.d.ts +410 -0
- package/dist/environment/state.js +2153 -0
- package/dist/environment/templates.d.ts +140 -0
- package/dist/environment/templates.js +685 -0
- package/dist/environment/tool-registration.d.ts +9 -0
- package/dist/environment/tool-registration.js +92 -0
- package/dist/environment/upgrade-application.d.ts +19 -0
- package/dist/environment/upgrade-application.js +175 -0
- package/dist/environment-exec/execute.d.ts +105 -0
- package/dist/environment-exec/execute.js +1179 -0
- package/dist/environment-exec/libexec-program.d.ts +6 -0
- package/dist/environment-exec/libexec-program.js +22 -0
- package/dist/environment-exec/verified-digest.d.ts +4 -0
- package/dist/environment-exec/verified-digest.js +16 -0
- package/dist/exact-keys.d.ts +7 -0
- package/dist/exact-keys.js +15 -0
- package/dist/fix-catalogue.d.ts +32 -0
- package/dist/fix-catalogue.js +60 -0
- package/dist/freshness.d.ts +29 -0
- package/dist/freshness.js +75 -0
- package/dist/generated-environment/adopt.d.ts +16 -0
- package/dist/generated-environment/adopt.js +271 -0
- package/dist/generated-environment/command.d.ts +47 -0
- package/dist/generated-environment/command.js +75 -0
- package/dist/generated-environment/transaction.d.ts +186 -0
- package/dist/generated-environment/transaction.js +1770 -0
- package/dist/grading/evaluate.d.ts +71 -0
- package/dist/grading/evaluate.js +403 -0
- package/dist/grading/grade.d.ts +33 -0
- package/dist/grading/grade.js +57 -0
- package/dist/guards/answer-confirmation.d.ts +41 -0
- package/dist/guards/answer-confirmation.js +109 -0
- package/dist/guards/evaluator.d.ts +130 -0
- package/dist/guards/evaluator.js +1258 -0
- package/dist/guards/harness-adapter.d.ts +17 -0
- package/dist/guards/harness-adapter.js +57 -0
- package/dist/guards/host.d.ts +8 -0
- package/dist/guards/host.js +10 -0
- package/dist/guards/invocation-parser.d.ts +66 -0
- package/dist/guards/invocation-parser.js +595 -0
- package/dist/guards/local-identity.d.ts +44 -0
- package/dist/guards/local-identity.js +129 -0
- package/dist/guards/policy-change.d.ts +43 -0
- package/dist/guards/policy-change.js +159 -0
- package/dist/guards/policy-pin.d.ts +13 -0
- package/dist/guards/policy-pin.js +177 -0
- package/dist/guards/protected-locations.d.ts +62 -0
- package/dist/guards/protected-locations.js +461 -0
- package/dist/guards/read-only.d.ts +37 -0
- package/dist/guards/read-only.js +315 -0
- package/dist/init/command.d.ts +41 -0
- package/dist/init/command.js +330 -0
- package/dist/init/derive.d.ts +53 -0
- package/dist/init/derive.js +819 -0
- package/dist/init/draft.d.ts +140 -0
- package/dist/init/draft.js +1228 -0
- package/dist/init/render.d.ts +47 -0
- package/dist/init/render.js +104 -0
- package/dist/init/scaffold.d.ts +53 -0
- package/dist/init/scaffold.js +121 -0
- package/dist/invocation.d.ts +13 -0
- package/dist/invocation.js +20 -0
- package/dist/package-metadata.d.ts +9 -0
- package/dist/package-metadata.js +19 -0
- package/dist/readiness.d.ts +53 -0
- package/dist/readiness.js +88 -0
- package/dist/references/named.d.ts +24 -0
- package/dist/references/named.js +27 -0
- package/dist/refusal.d.ts +15 -0
- package/dist/refusal.js +7 -0
- package/dist/registry-derivation.d.ts +31 -0
- package/dist/registry-derivation.js +32 -0
- package/dist/registry-resolve/command.d.ts +47 -0
- package/dist/registry-resolve/command.js +226 -0
- package/dist/registry-resolve/registry.d.ts +68 -0
- package/dist/registry-resolve/registry.js +292 -0
- package/dist/registry-resolve/render-shell.d.ts +18 -0
- package/dist/registry-resolve/render-shell.js +36 -0
- package/dist/repair.d.ts +29 -0
- package/dist/repair.js +8 -0
- package/dist/repository-path.d.ts +9 -0
- package/dist/repository-path.js +16 -0
- package/dist/schema-json.d.ts +1 -0
- package/dist/schema-json.js +177 -0
- package/dist/schema.d.ts +1289 -0
- package/dist/schema.js +985 -0
- package/dist/setup/command.d.ts +4 -0
- package/dist/setup/command.js +4 -0
- package/dist/sha256.d.ts +1 -0
- package/dist/sha256.js +4 -0
- package/dist/surfaces/adoption.d.ts +41 -0
- package/dist/surfaces/adoption.js +217 -0
- package/dist/surfaces/consumer-instructions.d.ts +20 -0
- package/dist/surfaces/consumer-instructions.js +43 -0
- package/dist/surfaces/contract.d.ts +42 -0
- package/dist/surfaces/contract.js +169 -0
- package/dist/surfaces/core-declarations.d.ts +24 -0
- package/dist/surfaces/core-declarations.js +79 -0
- package/dist/surfaces/development-markers.d.ts +1 -0
- package/dist/surfaces/development-markers.js +18 -0
- package/dist/surfaces/generator-adapter.d.ts +71 -0
- package/dist/surfaces/generator-adapter.js +809 -0
- package/dist/surfaces/harness-registry.d.ts +260 -0
- package/dist/surfaces/harness-registry.js +146 -0
- package/dist/surfaces/mcp.d.ts +145 -0
- package/dist/surfaces/mcp.js +349 -0
- package/dist/surfaces/merge.d.ts +30 -0
- package/dist/surfaces/merge.js +105 -0
- package/dist/surfaces/ownership.d.ts +190 -0
- package/dist/surfaces/ownership.js +795 -0
- package/dist/surfaces/projection.d.ts +136 -0
- package/dist/surfaces/projection.js +716 -0
- package/dist/surfaces/render.d.ts +79 -0
- package/dist/surfaces/render.js +636 -0
- package/dist/surfaces/restrictions.d.ts +130 -0
- package/dist/surfaces/restrictions.js +447 -0
- package/dist/surfaces/selftest.d.ts +162 -0
- package/dist/surfaces/selftest.js +393 -0
- package/dist/surfaces/skill-contract.d.ts +85 -0
- package/dist/surfaces/skill-contract.js +449 -0
- package/dist/surfaces/sync.d.ts +57 -0
- package/dist/surfaces/sync.js +164 -0
- package/dist/team-metadata.d.ts +41 -0
- package/dist/team-metadata.js +513 -0
- package/dist/testing/gates.d.ts +91 -0
- package/dist/testing/gates.js +182 -0
- package/dist/testing/hooks.d.ts +59 -0
- package/dist/testing/hooks.js +139 -0
- package/dist/testing/test-protection.d.ts +34 -0
- package/dist/testing/test-protection.js +137 -0
- package/dist/testing/verdict.d.ts +29 -0
- package/dist/testing/verdict.js +62 -0
- package/dist/testing/weakening.d.ts +15 -0
- package/dist/testing/weakening.js +30 -0
- package/dist/work-orders/application-closure.d.ts +7 -0
- package/dist/work-orders/application-closure.js +76 -0
- package/dist/work-orders/application-context.d.ts +162 -0
- package/dist/work-orders/application-context.js +137 -0
- package/dist/work-orders/application-decisions.d.ts +27 -0
- package/dist/work-orders/application-decisions.js +121 -0
- package/dist/work-orders/application-grading.d.ts +11 -0
- package/dist/work-orders/application-grading.js +212 -0
- package/dist/work-orders/application.d.ts +6 -0
- package/dist/work-orders/application.js +223 -0
- package/dist/work-orders/composition.d.ts +101 -0
- package/dist/work-orders/composition.js +1202 -0
- package/dist/work-orders/contract.d.ts +77 -0
- package/dist/work-orders/contract.js +140 -0
- package/dist/work-orders/decisions.d.ts +23 -0
- package/dist/work-orders/decisions.js +55 -0
- package/dist/work-orders/store.d.ts +207 -0
- package/dist/work-orders/store.js +291 -0
- package/docs/README.md +68 -0
- package/docs/architecture.md +136 -0
- package/docs/capability-matrix.md +58 -0
- package/docs/cli-reference.md +807 -0
- package/docs/command-list.md +62 -0
- package/docs/compose-patterns.md +99 -0
- package/docs/concepts.md +173 -0
- package/docs/configuration-essentials.md +177 -0
- package/docs/configuration-reference.md +636 -0
- package/docs/docs-check.md +76 -0
- package/docs/environment.md +948 -0
- package/docs/extending.md +43 -0
- package/docs/faq.md +113 -0
- package/docs/getting-started.md +692 -0
- package/docs/harness-surfaces.md +500 -0
- package/docs/joining-a-team.md +76 -0
- package/docs/release-policy.md +49 -0
- package/docs/safety-and-autonomy.md +463 -0
- package/docs/troubleshooting.md +382 -0
- package/docs/tutorial.md +171 -0
- package/docs/work-and-browser.md +420 -0
- package/libexec/browser-operation.cjs +270 -0
- package/libexec/fence-marker.cjs +101 -0
- package/libexec/fence-marker.d.cts +24 -0
- package/libexec/fenced-group-runner.cjs +77 -0
- package/libexec/fenced-supervisor.cjs +137 -0
- package/libexec/generated-filesystem.cjs +731 -0
- package/libexec/install-filesystem.cjs +225 -0
- package/libexec/rulesync-generator.NOTICE.md +1112 -0
- package/libexec/rulesync-generator.cjs +743 -0
- package/libexec/surface-generator-worker.cjs +266 -0
- package/libexec/surface-output-reader.cjs +99 -0
- package/libexec/surface-scratch-cleanup.cjs +14 -0
- package/libexec/validate-harness-evidence.d.mts +183 -0
- package/libexec/validate-harness-evidence.mjs +1312 -0
- package/package.json +74 -4
- package/surfaces/README.md +33 -0
- package/surfaces/agents/evaluator.agent.md +76 -0
- package/surfaces/guards/bash-guard.sh +48 -0
- package/surfaces/guards/claude.adapter.json +25 -0
- package/surfaces/guards/codex.adapter.json +24 -0
- package/surfaces/guards/opencode.adapter.json +25 -0
- package/surfaces/references/browser.md +63 -0
- package/surfaces/references/test-data-and-personas.md +84 -0
- package/surfaces/references/testing-tiers.md +11 -0
- package/surfaces/skills/cockpit-browser.skill.md +59 -0
- package/surfaces/skills/cockpit-explain.skill.md +32 -0
- package/surfaces/skills/cockpit-fix.skill.md +37 -0
- package/surfaces/skills/cockpit-setup.skill.md +39 -0
- package/surfaces/skills/cockpit-work.skill.md +34 -0
- package/surfaces/skills/collection.json +5 -0
- package/surfaces/skills/procedures/explain.md +66 -0
- package/surfaces/skills/procedures/fix.md +95 -0
- package/surfaces/skills/procedures/setup.md +452 -0
- 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.
|
package/docs/concepts.md
ADDED
|
@@ -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) |
|