{"owner":"podman-container-tools","repo":"podman","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["AGENTS.md"],"skills":{"AGENTS.md":"# AI Agent Guide for Podman Development\n\n![PODMAN logo](https://raw.githubusercontent.com/containers/common/main/logos/podman-logo-full-vert.png)\n\n## Persona\n\nThis guide is for AI coding assistants (for example Claude, ChatGPT, Copilot). Use it for context on codebase layout, development patterns, testing, pitfalls, and upstream expectations when helping **contributors to [containers/podman](https://github.com/containers/podman)**—people writing patches, tests, and in-tree docs, triaging or fixing issues, and preparing pull requests.\n\nWhen assisting them, align with how upstream describes the project and how contributors are expected to work.\n\n- **Audience**: Assume the user is an **upstream contributor** (or aspiring one), not an end user or downstream packager. Optimize for implementing and reviewing changes in this repository: correct layer (`cmd/` vs `libpod/` vs `pkg/domain/`), tests that match existing frameworks, and merge-ready hygiene. Be direct and technical; skip tutorial and brochure tone unless they are editing tutorials or man pages in-tree.\n- **Product mental model (for patch context)**: Podman is **daemonless**; lifecycle logic lives in **libpod**. When touching behavior, remember **Docker-compatible CLI/API** paths versus **Podman-specific** surfaces (pods, Quadlet, advanced REST, `podman machine`). Many fixes must consider **rootless vs root** and **local vs remote** (`pkg/domain/infra/abi` vs `tunnel`) so both paths stay consistent.\n- **Vendored dependencies**: Most external code Podman depends on (containers/image, containers/storage, containers/buildah, containers/common) is checked into `vendor/`. **Never edit vendored files directly**—use `go get` then `make vendor`. When diagnosing behavior that originates in a vendored library, trace the call but propose fixes in the upstream library repo, not in `vendor/`.\n- **Quality bar**: Backend/libpod development expects **Linux**; macOS/Windows instructions apply to **clients** and `podman machine`, not the Linux engine. Use the **Makefile** (`make help`, `make binaries`, `make validatepr`); match the **Go** version in `go.mod`. **Security** issues use the private process linked from CONTRIBUTING, not public GitHub. AI-assisted contributions must follow **[LLM_POLICY.md](LLM_POLICY.md)**. For issues they file upstream, insist on reproducers and full `podman info`; discourage noise (\"+1\" without new data).\n\n## Project Overview\n\n**Podman** is a daemonless container engine with Docker-compatible CLI, rootless support, native pod management, and systemd integration via Quadlet.\n\n## Quick Start\n\n```bash\n# Build and test\nmake binaries           # Build all binaries\nmake validatepr         # Format, lint, and validate (required for PRs)\nmake localintegration   # Run integration tests\nmake localsystem        # Run system tests\n\n# Development tools\nmake install.tools      # Install linters and dev tools\n```\n\n## Codebase Structure\n\n```text\npodman/\n├── cmd/podman/               # CLI commands (Cobra framework)\n├── cmd/quadlet/              # Quadlet systemd unit generator\n├── libpod/                   # Core container/pod management (Linux only)\n├── pkg/\n│   ├── api/                  # REST API server\n│   ├── bindings/             # HTTP client (stable API)\n│   ├── domain/               # Business logic layer\n│   │   ├── entities/         # Interfaces and data structures\n│   │   ├── infra/abi/        # Local implementation\n│   │   └── infra/tunnel/     # Remote implementation\n│   └── specgen/              # Container/pod specifications\n├── test/e2e/                 # Integration tests (Ginkgo)\n├── test/system/              # System tests (BATS)\n├── docs/source/markdown/     # Man pages\n└── vendor/                   # Vendored dependencies (DO NOT EDIT)\n```\n\n## Development Patterns\n\n### CLI Command Pattern\n\n```go\n// cmd/podman/command.go\nvar commandCmd = &cobra.Command{\n    Use:   \"command [options] args\",\n    RunE:  commandRun,\n}\n\nfunc commandRun(cmd *cobra.Command, args []string) error {\n    return registry.ContainerEngine().Command(registry.GetContext(), options)\n}\n```\n\n### Domain Layer Pattern\n\n```go\n// pkg/domain/infra/abi/command.go (local)\nfunc (ic *ContainerEngine) Command(ctx context.Context, options entities.CommandOptions) error {\n    return ic.Libpod.Command(options)  // Direct libpod call\n}\n\n// pkg/domain/infra/tunnel/command.go (remote)\nfunc (ic *ContainerEngine) Command(ctx context.Context, options entities.CommandOptions) error {\n    return bindings.Command(ic.ClientCtx, options)  // HTTP API call\n}\n```\n\n## Testing\n\n### Integration Tests ([Ginkgo](https://github.com/onsi/ginkgo))\n\n**Integration Tests** (`test/e2e/`): Test Podman CLI commands end-to-end, using actual binaries and real containers. Use for testing user-facing functionality and CLI behavior.\n\n```go\nIt(\"should work correctly\", func() {\n    session := podmanTest.Podman([]string{\"command\", \"args\"})\n    session.WaitWithDefaultTimeout()\n    Expect(session).Should(Exit(0))\n})\n```\n\n### System Tests ([BATS](https://github.com/bats-core/bats-core))\n\n**System Tests** (`test/system/`): Test Podman in realistic environments with shell scripts. Use for testing complex scenarios, multi-command workflows, and system integration.\n\n```bash\n@test \"podman command functionality\" {\n    run_podman command --option value\n    is \"$output\" \"expected output\" \"description\"\n}\n```\n\n## Code Standards\n\n**Official Documentation**: [CONTRIBUTING.md](CONTRIBUTING.md)\n\n- **Formatter**: `gofumpt` (via `golangci-lint`, configured in `.golangci.yml`)\n- **Validation**: All PRs must pass `make validatepr`\n- **Commits**: Must be signed (`git commit -s`) and follow [DCO](CONTRIBUTING.md#sign-your-prs)\n- **Reviews**: Two approvals required for merge\n\n## Key Libraries\n\n- **[aardvark-dns](https://github.com/containers/aardvark-dns)**: Container DNS server\n- **[Cobra](https://github.com/spf13/cobra)**: CLI framework used for cmd/podman commands\n- **[containers/buildah](https://github.com/containers/buildah)**: Image building\n- **[containers/container-libs](https://github.com/containers/container-libs)**: Shared utilities\n- **[crun](https://github.com/containers/crun)**: Fast, low-memory container runtime\n- **[Go](https://golang.org)**: Programming language\n- **[gorilla/mux](https://github.com/gorilla/mux)**: HTTP router and URL matcher for REST API\n- **[gorilla/schema](https://github.com/gorilla/schema)**: Form data to struct conversion\n- **[netavark](https://github.com/containers/netavark)**: Network management\n- **[runc](https://github.com/opencontainers/runc)**: OCI-compliant container runtime\n\n## Common Pitfalls for AI Agents\n\n1. **Platform awareness** - Consider Linux/Windows/macOS differences\n2. **Rootless vs root** - Many behaviors differ between modes\n3. **Remote vs local** - Different code paths (`abi` vs `tunnel`)\n4. **Test cleanup** - Always clean up test artifacts\n\n## Essential Commands\n\n```bash\n# Analysis\ngo list -tags \"$BUILDTAGS\" -f '{{.Deps}}' ./cmd/podman  # Dependencies\ngrep -r \"pattern\" --include=\"*.go\" .                    # Find patterns\n\n# Testing\nmake localintegration FOCUS_FILE=your_test.go           # Single test file\nmake localintegration FOCUS=\"test description\"          # Single test\nPODMAN_TEST_SKIP_CLEANUP=1 make localintegration        # Debug mode\n\n# Validation\nmake validatepr                                         # Full validation\nmake lint                                               # Linting only\n```\n\n## Documentation\n\n- **[CONTRIBUTING.md](CONTRIBUTING.md)**: Development guidelines\n- **[DISTRO_PACKAGE.md](DISTRO_PACKAGE.md)**: Packaging guidelines for distributors\n- **[docs/CODE_STRUCTURE.md](docs/CODE_STRUCTURE.md)**: Detailed codebase structure\n- **[docs/tutorials/](docs/tutorials/)**: Step-by-step guides and tutorials\n- **[GOVERNANCE.md](GOVERNANCE.md)**: Project organization and contributor roles\n- **[LICENSE](LICENSE)**: Apache 2.0 license terms\n- **[README.md](README.md)**: Project overview\n- **[RELEASE_PROCESS.md](RELEASE_PROCESS.md)**: Release workflow (maintainers only)\n- **[rootless.md](rootless.md)**: Rootless limitations and troubleshooting\n- **[test/README.md](test/README.md)**: Testing framework details\n\nFor comprehensive information, refer to the official documentation and recent commits in the [Podman repository](https://github.com/containers/podman).\n"},"files":{"AGENTS.md":"# AI Agent Guide for Podman Development\n\n![PODMAN logo](https://raw.githubusercontent.com/containers/common/main/logos/podman-logo-full-vert.png)\n\n## Persona\n\nThis guide is for AI coding assistants (for example Claude, ChatGPT, Copilot). Use it for context on codebase layout, development patterns, testing, pitfalls, and upstream expectations when helping **contributors to [containers/podman](https://github.com/containers/podman)**—people writing patches, tests, and in-tree docs, triaging or fixing issues, and preparing pull requests.\n\nWhen assisting them, align with how upstream describes the project and how contributors are expected to work.\n\n- **Audience**: Assume the user is an **upstream contributor** (or aspiring one), not an end user or downstream packager. Optimize for implementing and reviewing changes in this repository: correct layer (`cmd/` vs `libpod/` vs `pkg/domain/`), tests that match existing frameworks, and merge-ready hygiene. Be direct and technical; skip tutorial and brochure tone unless they are editing tutorials or man pages in-tree.\n- **Product mental model (for patch context)**: Podman is **daemonless**; lifecycle logic lives in **libpod**. When touching behavior, remember **Docker-compatible CLI/API** paths versus **Podman-specific** surfaces (pods, Quadlet, advanced REST, `podman machine`). Many fixes must consider **rootless vs root** and **local vs remote** (`pkg/domain/infra/abi` vs `tunnel`) so both paths stay consistent.\n- **Vendored dependencies**: Most external code Podman depends on (containers/image, containers/storage, containers/buildah, containers/common) is checked into `vendor/`. **Never edit vendored files directly**—use `go get` then `make vendor`. When diagnosing behavior that originates in a vendored library, trace the call but propose fixes in the upstream library repo, not in `vendor/`.\n- **Quality bar**: Backend/libpod development expects **Linux**; macOS/Windows instructions apply to **clients** and `podman machine`, not the Linux engine. Use the **Makefile** (`make help`, `make binaries`, `make validatepr`); match the **Go** version in `go.mod`. **Security** issues use the private process linked from CONTRIBUTING, not public GitHub. AI-assisted contributions must follow **[LLM_POLICY.md](LLM_POLICY.md)**. For issues they file upstream, insist on reproducers and full `podman info`; discourage noise (\"+1\" without new data).\n\n## Project Overview\n\n**Podman** is a daemonless container engine with Docker-compatible CLI, rootless support, native pod management, and systemd integration via Quadlet.\n\n## Quick Start\n\n```bash\n# Build and test\nmake binaries           # Build all binaries\nmake validatepr         # Format, lint, and validate (required for PRs)\nmake localintegration   # Run integration tests\nmake localsystem        # Run system tests\n\n# Development tools\nmake install.tools      # Install linters and dev tools\n```\n\n## Codebase Structure\n\n```text\npodman/\n├── cmd/podman/               # CLI commands (Cobra framework)\n├── cmd/quadlet/              # Quadlet systemd unit generator\n├── libpod/                   # Core container/pod management (Linux only)\n├── pkg/\n│   ├── api/                  # REST API server\n│   ├── bindings/             # HTTP client (stable API)\n│   ├── domain/               # Business logic layer\n│   │   ├── entities/         # Interfaces and data structures\n│   │   ├── infra/abi/        # Local implementation\n│   │   └── infra/tunnel/     # Remote implementation\n│   └── specgen/              # Container/pod specifications\n├── test/e2e/                 # Integration tests (Ginkgo)\n├── test/system/              # System tests (BATS)\n├── docs/source/markdown/     # Man pages\n└── vendor/                   # Vendored dependencies (DO NOT EDIT)\n```\n\n## Development Patterns\n\n### CLI Command Pattern\n\n```go\n// cmd/podman/command.go\nvar commandCmd = &cobra.Command{\n    Use:   \"command [options] args\",\n    RunE:  commandRun,\n}\n\nfunc commandRun(cmd *cobra.Command, args []string) error {\n    return registry.ContainerEngine().Command(registry.GetContext(), options)\n}\n```\n\n### Domain Layer Pattern\n\n```go\n// pkg/domain/infra/abi/command.go (local)\nfunc (ic *ContainerEngine) Command(ctx context.Context, options entities.CommandOptions) error {\n    return ic.Libpod.Command(options)  // Direct libpod call\n}\n\n// pkg/domain/infra/tunnel/command.go (remote)\nfunc (ic *ContainerEngine) Command(ctx context.Context, options entities.CommandOptions) error {\n    return bindings.Command(ic.ClientCtx, options)  // HTTP API call\n}\n```\n\n## Testing\n\n### Integration Tests ([Ginkgo](https://github.com/onsi/ginkgo))\n\n**Integration Tests** (`test/e2e/`): Test Podman CLI commands end-to-end, using actual binaries and real containers. Use for testing user-facing functionality and CLI behavior.\n\n```go\nIt(\"should work correctly\", func() {\n    session := podmanTest.Podman([]string{\"command\", \"args\"})\n    session.WaitWithDefaultTimeout()\n    Expect(session).Should(Exit(0))\n})\n```\n\n### System Tests ([BATS](https://github.com/bats-core/bats-core))\n\n**System Tests** (`test/system/`): Test Podman in realistic environments with shell scripts. Use for testing complex scenarios, multi-command workflows, and system integration.\n\n```bash\n@test \"podman command functionality\" {\n    run_podman command --option value\n    is \"$output\" \"expected output\" \"description\"\n}\n```\n\n## Code Standards\n\n**Official Documentation**: [CONTRIBUTING.md](CONTRIBUTING.md)\n\n- **Formatter**: `gofumpt` (via `golangci-lint`, configured in `.golangci.yml`)\n- **Validation**: All PRs must pass `make validatepr`\n- **Commits**: Must be signed (`git commit -s`) and follow [DCO](CONTRIBUTING.md#sign-your-prs)\n- **Reviews**: Two approvals required for merge\n\n## Key Libraries\n\n- **[aardvark-dns](https://github.com/containers/aardvark-dns)**: Container DNS server\n- **[Cobra](https://github.com/spf13/cobra)**: CLI framework used for cmd/podman commands\n- **[containers/buildah](https://github.com/containers/buildah)**: Image building\n- **[containers/container-libs](https://github.com/containers/container-libs)**: Shared utilities\n- **[crun](https://github.com/containers/crun)**: Fast, low-memory container runtime\n- **[Go](https://golang.org)**: Programming language\n- **[gorilla/mux](https://github.com/gorilla/mux)**: HTTP router and URL matcher for REST API\n- **[gorilla/schema](https://github.com/gorilla/schema)**: Form data to struct conversion\n- **[netavark](https://github.com/containers/netavark)**: Network management\n- **[runc](https://github.com/opencontainers/runc)**: OCI-compliant container runtime\n\n## Common Pitfalls for AI Agents\n\n1. **Platform awareness** - Consider Linux/Windows/macOS differences\n2. **Rootless vs root** - Many behaviors differ between modes\n3. **Remote vs local** - Different code paths (`abi` vs `tunnel`)\n4. **Test cleanup** - Always clean up test artifacts\n\n## Essential Commands\n\n```bash\n# Analysis\ngo list -tags \"$BUILDTAGS\" -f '{{.Deps}}' ./cmd/podman  # Dependencies\ngrep -r \"pattern\" --include=\"*.go\" .                    # Find patterns\n\n# Testing\nmake localintegration FOCUS_FILE=your_test.go           # Single test file\nmake localintegration FOCUS=\"test description\"          # Single test\nPODMAN_TEST_SKIP_CLEANUP=1 make localintegration        # Debug mode\n\n# Validation\nmake validatepr                                         # Full validation\nmake lint                                               # Linting only\n```\n\n## Documentation\n\n- **[CONTRIBUTING.md](CONTRIBUTING.md)**: Development guidelines\n- **[DISTRO_PACKAGE.md](DISTRO_PACKAGE.md)**: Packaging guidelines for distributors\n- **[docs/CODE_STRUCTURE.md](docs/CODE_STRUCTURE.md)**: Detailed codebase structure\n- **[docs/tutorials/](docs/tutorials/)**: Step-by-step guides and tutorials\n- **[GOVERNANCE.md](GOVERNANCE.md)**: Project organization and contributor roles\n- **[LICENSE](LICENSE)**: Apache 2.0 license terms\n- **[README.md](README.md)**: Project overview\n- **[RELEASE_PROCESS.md](RELEASE_PROCESS.md)**: Release workflow (maintainers only)\n- **[rootless.md](rootless.md)**: Rootless limitations and troubleshooting\n- **[test/README.md](test/README.md)**: Testing framework details\n\nFor comprehensive information, refer to the official documentation and recent commits in the [Podman repository](https://github.com/containers/podman).\n"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","title":"AGENTS.md","content":"# AI Agent Guide for Podman Development\n\n![PODMAN logo](https://raw.githubusercontent.com/containers/common/main/logos/podman-logo-full-vert.png)\n\n## Persona\n\nThis guide is for AI coding assistants (for example Claude, ChatGPT, Copilot). Use it for context on codebase layout, development patterns, testing, pitfalls, and upstream expectations when helping **contributors to [containers/podman](https://github.com/containers/podman)**—people writing patches, tests, and in-tree docs, triaging or fixing issues, and preparing pull requests.\n\nWhen assisting them, align with how upstream describes the project and how contributors are expected to work.\n\n- **Audience**: Assume the user is an **upstream contributor** (or aspiring one), not an end user or downstream packager. Optimize for implementing and reviewing changes in this repository: correct layer (`cmd/` vs `libpod/` vs `pkg/domain/`), tests that match existing frameworks, and merge-ready hygiene. Be direct and technical; skip tutorial and brochure tone unless they are editing tutorials or man pages in-tree.\n- **Product mental model (for patch context)**: Podman is **daemonless**; lifecycle logic lives in **libpod**. When touching behavior, remember **Docker-compatible CLI/API** paths versus **Podman-specific** surfaces (pods, Quadlet, advanced REST, `podman machine`). Many fixes must consider **rootless vs root** and **local vs remote** (`pkg/domain/infra/abi` vs `tunnel`) so both paths stay consistent.\n- **Vendored dependencies**: Most external code Podman depends on (containers/image, containers/storage, containers/buildah, containers/common) is checked into `vendor/`. **Never edit vendored files directly**—use `go get` then `make vendor`. When diagnosing behavior that originates in a vendored library, trace the call but propose fixes in the upstream library repo, not in `vendor/`.\n- **Quality bar**: Backend/libpod development expects **Linux**; macOS/Windows instructions apply to **clients** and `podman machine`, not the Linux engine. Use the **Makefile** (`make help`, `make binaries`, `make validatepr`); match the **Go** version in `go.mod`. **Security** issues use the private process linked from CONTRIBUTING, not public GitHub. AI-assisted contributions must follow **[LLM_POLICY.md](LLM_POLICY.md)**. For issues they file upstream, insist on reproducers and full `podman info`; discourage noise (\"+1\" without new data).\n\n## Project Overview\n\n**Podman** is a daemonless container engine with Docker-compatible CLI, rootless support, native pod management, and systemd integration via Quadlet.\n\n## Quick Start\n\n```bash\n# Build and test\nmake binaries           # Build all binaries\nmake validatepr         # Format, lint, and validate (required for PRs)\nmake localintegration   # Run integration tests\nmake localsystem        # Run system tests\n\n# Development tools\nmake install.tools      # Install linters and dev tools\n```\n\n## Codebase Structure\n\n```text\npodman/\n├── cmd/podman/               # CLI commands (Cobra framework)\n├── cmd/quadlet/              # Quadlet systemd unit generator\n├── libpod/                   # Core container/pod management (Linux only)\n├── pkg/\n│   ├── api/                  # REST API server\n│   ├── bindings/             # HTTP client (stable API)\n│   ├── domain/               # Business logic layer\n│   │   ├── entities/         # Interfaces and data structures\n│   │   ├── infra/abi/        # Local implementation\n│   │   └── infra/tunnel/     # Remote implementation\n│   └── specgen/              # Container/pod specifications\n├── test/e2e/                 # Integration tests (Ginkgo)\n├── test/system/              # System tests (BATS)\n├── docs/source/markdown/     # Man pages\n└── vendor/                   # Vendored dependencies (DO NOT EDIT)\n```\n\n## Development Patterns\n\n### CLI Command Pattern\n\n```go\n// cmd/podman/command.go\nvar commandCmd = &cobra.Command{\n    Use:   \"command [options] args\",\n    RunE:  commandRun,\n}\n\nfunc commandRun(cmd *cobra.Command, args []string) error {\n    return registry.ContainerEngine().Command(registry.GetContext(), options)\n}\n```\n\n### Domain Layer Pattern\n\n```go\n// pkg/domain/infra/abi/command.go (local)\nfunc (ic *ContainerEngine) Command(ctx context.Context, options entities.CommandOptions) error {\n    return ic.Libpod.Command(options)  // Direct libpod call\n}\n\n// pkg/domain/infra/tunnel/command.go (remote)\nfunc (ic *ContainerEngine) Command(ctx context.Context, options entities.CommandOptions) error {\n    return bindings.Command(ic.ClientCtx, options)  // HTTP API call\n}\n```\n\n## Testing\n\n### Integration Tests ([Ginkgo](https://github.com/onsi/ginkgo))\n\n**Integration Tests** (`test/e2e/`): Test Podman CLI commands end-to-end, using actual binaries and real containers. Use for testing user-facing functionality and CLI behavior.\n\n```go\nIt(\"should work correctly\", func() {\n    session := podmanTest.Podman([]string{\"command\", \"args\"})\n    session.WaitWithDefaultTimeout()\n    Expect(session).Should(Exit(0))\n})\n```\n\n### System Tests ([BATS](https://github.com/bats-core/bats-core))\n\n**System Tests** (`test/system/`): Test Podman in realistic environments with shell scripts. Use for testing complex scenarios, multi-command workflows, and system integration.\n\n```bash\n@test \"podman command functionality\" {\n    run_podman command --option value\n    is \"$output\" \"expected output\" \"description\"\n}\n```\n\n## Code Standards\n\n**Official Documentation**: [CONTRIBUTING.md](CONTRIBUTING.md)\n\n- **Formatter**: `gofumpt` (via `golangci-lint`, configured in `.golangci.yml`)\n- **Validation**: All PRs must pass `make validatepr`\n- **Commits**: Must be signed (`git commit -s`) and follow [DCO](CONTRIBUTING.md#sign-your-prs)\n- **Reviews**: Two approvals required for merge\n\n## Key Libraries\n\n- **[aardvark-dns](https://github.com/containers/aardvark-dns)**: Container DNS server\n- **[Cobra](https://github.com/spf13/cobra)**: CLI framework used for cmd/podman commands\n- **[containers/buildah](https://github.com/containers/buildah)**: Image building\n- **[containers/container-libs](https://github.com/containers/container-libs)**: Shared utilities\n- **[crun](https://github.com/containers/crun)**: Fast, low-memory container runtime\n- **[Go](https://golang.org)**: Programming language\n- **[gorilla/mux](https://github.com/gorilla/mux)**: HTTP router and URL matcher for REST API\n- **[gorilla/schema](https://github.com/gorilla/schema)**: Form data to struct conversion\n- **[netavark](https://github.com/containers/netavark)**: Network management\n- **[runc](https://github.com/opencontainers/runc)**: OCI-compliant container runtime\n\n## Common Pitfalls for AI Agents\n\n1. **Platform awareness** - Consider Linux/Windows/macOS differences\n2. **Rootless vs root** - Many behaviors differ between modes\n3. **Remote vs local** - Different code paths (`abi` vs `tunnel`)\n4. **Test cleanup** - Always clean up test artifacts\n\n## Essential Commands\n\n```bash\n# Analysis\ngo list -tags \"$BUILDTAGS\" -f '{{.Deps}}' ./cmd/podman  # Dependencies\ngrep -r \"pattern\" --include=\"*.go\" .                    # Find patterns\n\n# Testing\nmake localintegration FOCUS_FILE=your_test.go           # Single test file\nmake localintegration FOCUS=\"test description\"          # Single test\nPODMAN_TEST_SKIP_CLEANUP=1 make localintegration        # Debug mode\n\n# Validation\nmake validatepr                                         # Full validation\nmake lint                                               # Linting only\n```\n\n## Documentation\n\n- **[CONTRIBUTING.md](CONTRIBUTING.md)**: Development guidelines\n- **[DISTRO_PACKAGE.md](DISTRO_PACKAGE.md)**: Packaging guidelines for distributors\n- **[docs/CODE_STRUCTURE.md](docs/CODE_STRUCTURE.md)**: Detailed codebase structure\n- **[docs/tutorials/](docs/tutorials/)**: Step-by-step guides and tutorials\n- **[GOVERNANCE.md](GOVERNANCE.md)**: Project organization and contributor roles\n- **[LICENSE](LICENSE)**: Apache 2.0 license terms\n- **[README.md](README.md)**: Project overview\n- **[RELEASE_PROCESS.md](RELEASE_PROCESS.md)**: Release workflow (maintainers only)\n- **[rootless.md](rootless.md)**: Rootless limitations and troubleshooting\n- **[test/README.md](test/README.md)**: Testing framework details\n\nFor comprehensive information, refer to the official documentation and recent commits in the [Podman repository](https://github.com/containers/podman).\n","category":"root","tokens":2088}]}