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.

copynew usersbasicstable2026-05-30

Typical signals

  • the repo's real compose lane is podman compose, not docker 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 -p flags 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.

ota.yamlyaml
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.