Examples
Podman compose adapter ownership without shell env/file drift
A focused contract that keeps Podman compose engine, adapter root, env-file, file-stack, profile, and project truth on first-class compose surfaces.
Typical signals
- the repo's real compose lane is
podman compose, notdocker compose - the adapter root, compose interpolation files, file stack, or project naming are part of the real operating model
- shell
cd,--env-file,-f, or-pflags are obscuring Podman compose truth that should stay reviewable
Why it matters
- it turns a repo pattern into something humans, CI, and agents can read the same way
- it makes the next command obvious instead of implied by README drift
- it keeps readiness, setup, and execution explainable in receipts and diagnostics
Example contract
Use this when the repo really runs through podman compose and ota should own that choice directly instead of treating Podman as shell-only compose drift.
The example keeps engine selection on service ownership, task execution on podman, and workflow overlays on first-class compose adapter inputs.
version: 1project: name: podman-compose-adapter-inputs description: Focused example for Podman compose adapter ownership type: applicationexecution: default_context: host contexts: host: backend: native requirements: tools: podman: "*"env: vars: DATABASE_URL: required: true profiles: runtime: sources: - kind: dotenv path: .env.local render: dotenv: path: .env.compose template: .env.example include: - DATABASE_URLservices: api: manager: kind: compose engine: podman name: local file: compose/compose.yml service: apitasks: compose:up: adapter_inputs: compose: cwd: compose env_files: - compose/.env.task launch: kind: command exe: podman args: - compose - upworkflows: default: runtime runtime: adapter_inputs: compose: cwd: compose files: - compose/compose.override.yml profiles: - runtime project_name: podman-compose-adapter-inputs env: profile: runtime compose_env_file_services: - api run: task: compose:upmetadata: ota: minimum_version: "1.6.21"Task notes
Use services.<name>.manager.engine: podman when the repo's compose manager truth is Podman rather than Docker.
Keep command.exe: podman or launch.exe: podman aligned with that service-manager truth so tasks do not bury engine selection in shell wrappers.
Keep adapter root, env-file, file-stack, profiles, and project naming on adapter_inputs.overlays.compose.* instead of shell cd, --env-file, -f, or -p flags.