Skip to content

docs(readme): document Docker as the only backend - #122

Open
bilby91 wants to merge 1 commit into
mainfrom
docs/readme-docker-only
Open

docs(readme): document Docker as the only backend#122
bilby91 wants to merge 1 commit into
mainfrom
docs/readme-docker-only

Conversation

@bilby91

@bilby91 bilby91 commented Aug 27, 2026

Copy link
Copy Markdown
Member

Follow-up to #121 (which removed the Apple Containers CI jobs). Strips the applecontainer and podman backend documentation from the README, leaving Docker as the only documented backend.

What changed

  • Backends — dropped the runtime/applecontainer and runtime/podman bullets and the "All three backends" line. Kept the pluggability statement, since the engine, feature pipeline, lifecycle and compose paths are written against runtime.Runtime rather than against Docker directly.
  • Apple-container gotchas — the whole ~40-line section removed.
  • Spec compliance — the compose row no longer claims the native orchestrator "works against both runtime/docker and runtime/applecontainer".
  • Install → Requires — the three-way "a container backend, one of:" list collapsed to a single Docker bullet.
  • Quick start — removed the "swap the backend import" applecontainer snippet.
  • Sub-packages — removed the runtime/applecontainer bullet.
  • Tests — removed the apple integration-test paragraph.
  • Out of scope — "Kubernetes / podman drivers" → "Kubernetes drivers".

Docs only, no code changes. grep -i "apple\|podman\|criu\|checkpoint\|swift\|darwin\|macos" README.md is now empty. 318 → 236 lines.

Deliberately out of scope

design/ is untouched — runtime-applecontainer.md, podman-backend.md and checkpoint-restore.md are design records of decisions that were actually made, and design/README.md still indexes them. No code was removed: runtime/applecontainer/, applecontainer-bridge/ and runtime/podman/ all still ship.

Two things reviewers should know

Podman is not in the same state as applecontainer. Its CI job is still alive — test-integration-podman at .github/workflows/ci.yml:103 runs real Podman + CRIU checkpoint/restore in a privileged quay.io/podman/stable container, and it was untouched by #121. So after this PR the README documents less than CI actually covers. That is intentional per the request, not an oversight.

Checkpoint/restore lost its only README mention. Engine.Checkpoint, Engine.Restore, Engine.CheckpointProject and Engine.RestoreProject (checkpoint.go:66,109, checkpoint_project.go:110,193) are public root-package API, and runtime/podman is the only backend implementing runtime.CheckpointRuntime. The podman bullet was the README's only explanation of what those four methods require; that is now documented only under design/checkpoint-restore.md. A backend-neutral line under API surface ("checkpoint/restore requires a backend implementing runtime.CheckpointRuntime") would close that gap without naming Podman — happy to add it if wanted.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation
    • Updated setup and usage guidance to focus on the Docker backend.
    • Removed Apple-container and Podman backend references and examples.
    • Clarified Docker-specific requirements, API packages, quick-start steps, and integration testing.
    • Updated scope documentation to list Kubernetes drivers as out of scope.

Removes the applecontainer and podman backend documentation from the
README: the backend bullets and the Apple-container gotchas section,
the applecontainer note on the compose spec-compliance row, the
non-Docker entries under Install → Requires, the quick-start
"swap the backend import" snippet, the runtime/applecontainer
sub-package bullet, and the apple integration-test paragraph.

Docker is now the only documented backend; the pluggability of
runtime.Runtime is still stated, since the engine, feature pipeline,
lifecycle and compose paths are written against the interface.

Design records under design/ are untouched.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Aug 27, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 51a3d3c2-e45d-4027-bf33-fc608303193f

📥 Commits

Reviewing files that changed from the base of the PR and between 71e2e09 and 547c072.

📒 Files selected for processing (1)
  • README.md

Included review availability: 0 reviews are currently available. Your included PR review attempts over the past 7 days set your current allowance at 2 reviews per hour.


📝 Walkthrough

Walkthrough

README.md now documents Docker as the supported container backend. It removes Apple-container and Podman references from backend, compose, requirements, quick-start, API, and integration-test sections.

Changes

Docker-only README documentation

Layer / File(s) Summary
Backend scope and requirements
README.md
Backend, compose, compliance, and installation sections now describe Docker and supported runtime abstractions.
Usage and integration documentation
README.md
Quick-start, API, and integration-test documentation no longer describes Apple-container support.

Estimated code review effort: 1 (Trivial) | ~3 minutes

Merge Risk: ⚪ Minimal · up to 547c0

This is a localized documentation-only change and no actionable merge-blocking risk remains after normal checks and review.

Poem

I am a rabbit with Docker in sight
The README now keeps its scope tight
Apple examples hop away
Compose notes follow the same way
Clear paths lead through docs tonight

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: updating the README to document Docker as the only backend.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.)

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/readme-docker-only

Comment @coderabbitai help to get the list of available commands.

@dap-code-review-by-crunchloop dap-code-review-by-crunchloop Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review — head 547c072

Reviewed the checked-out PR head 547c07277022e056ad6b5d537d3d0a5e2185b259 against base 71e2e099f5597c09cf3508d78726ff6b60e17471; the range is one commit changing one file (README.md, 15 additions/97 deletions). Read the base-ref engineering directives and CONTRIBUTING.md, the complete changed README, the Makefile and CI/test sources that consume its integration-test instructions, and the checkpoint/backend sources affected by the removed backend documentation. Findings were recorded for the inaccurate multi-backend integration-test instructions and the loss of checkpoint API/backend requirements. No code or tests were executed. Coverage gap: the directives reference PRD.md, but that file does not exist at the governing base commit, so no PRD claims could be checked. No design file was changed; relevant backend/checkpoint design records were inspected for contract context. Replies typed into inline comment threads will not reach this review; responses should be made in the pull request conversation.

Medium / Low

[MEDIUM] [D12] The integration-test instructions now misidentify a multi-backend target as Docker-only

  • Anchor: README.md:210-219

  • Witness: Makefile:13-15 implements make test-integration as go test -tags=integration ... ./test/integration/..., and the real source includes Linux Podman tests gated by PODMAN_SOCKET (test/integration/podman_checkpoint_restore_test.go:1-18) plus darwin/arm64 Apple-container tests (test/integration/applecontainer_image_source_test.go:1-31). With PODMAN_SOCKET set and no Docker daemon, or on macOS with the Apple daemon running, this target still runs real non-Docker tests; nevertheless the README says the target is “integration tests against real Docker” and that the suite is skipped when a Docker daemon is unavailable (README.md:210-219).

  • Consumer: A contributor following README.md:210-219 and invoking make test-integration receives the target behavior from Makefile:13-15; the command can exercise Podman or Apple-container and can fail or consume resources even when Docker is unavailable, contrary to the stated prerequisite and skip behavior.

  • Fix: Make the README describe the platform/backend gates (Docker tests, Linux Podman tests when PODMAN_SOCKET is set, and darwin/arm64 Apple-container tests when their daemon is available), or change the Make target to explicitly select only the documented Docker suite and retain separate commands for the other backends.

Commented inline

  • [MEDIUM] [D11] Removing the backend section makes the public checkpoint APIs undiscoverable and directs users to an incapable backend — README.md:40

Verdict

ADVISORY — findings worth reading, none of them blocking.

Comment thread README.md
Comment on lines +31 to +40
The container backend is pluggable: anything implementing
`runtime.Runtime` can be wired in at engine construction time. The
documented backend is:

- **`runtime/docker`** — Docker Engine over `moby/moby/client`.
Requires a reachable Docker daemon socket.

The engine, feature pipeline, lifecycle, and compose paths are written
against the `runtime.Runtime` interface rather than against Docker
directly.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[MEDIUM] [D11] Removing the backend section makes the public checkpoint APIs undiscoverable and directs users to an incapable backend

  • Witness: The new README contains no checkpoint, restore, or podman reference (the repository grep over README.md returns no matches), while it presents runtime/docker as the documented backend at README.md:31-36. The public source exposes Engine.Checkpoint and Engine.Restore at checkpoint.go:55-66 and checkpoint.go:93-109, but those methods gate on runtime.CheckpointRuntime; the runtime contract explicitly says only runtime/podman implements it and Docker does not (runtime/runtime.go:88-99), and Docker's Capabilities leaves Checkpoint false (runtime/docker/compose_primitives.go:196-204).
  • Consumer: A user following the README's only backend setup and then looking for the public checkpoint feature is sent to Docker, where Engine.Checkpoint/Restore return ErrCheckpointUnsupported; the README no longer provides even the capability requirement or a path to the implementing backend, despite these APIs being part of the shipped root package.
  • Fix: Keep the Docker-only backend overview if required, but add a backend-neutral note in the API section that Engine.Checkpoint, Restore, CheckpointProject, and RestoreProject require a runtime implementing runtime.CheckpointRuntime (and link the capability/backend documentation), or retain the minimal Podman prerequisite needed to make those public APIs usable.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant