Port Docker option completeness to current upstream#15
Open
shaninja wants to merge 3 commits into
Open
Conversation
Port the phase 11 Docker option completeness work onto the current lavie/runlike upstream base instead of continuing from the stale fork baseline. This keeps upstream's modern packaging, release workflows, Dockerfile, and project metadata while adding the completeness machinery needed for an upstream-ready review branch. The port adds the generated Docker option manifest, per-option dictionary, normalized inspect model, dictionary-backed renderer, unsupported-option warning engine, generated support matrix, probe result ledger, and Docker round-trip probe fixtures. These files make the supported/partial/unsupported option state explicit and reproducible instead of maintaining manual tables. Update the Makefile and GitHub Actions CI to install and verify the pinned Docker 25.0.5 / API 1.44 target, check generated artifacts, validate the manifest source, and run the option probe suite. This mirrors the local target used to produce the artifacts and prevents CI from drifting with the runner's preinstalled Docker version. Replace the README's manual supported-option tables with links to the generated support matrix. Include the option dictionary JSON files in the package so the renderer has the same metadata when installed from a wheel or sdist. The old live fixture inspection tests are retained as skipped legacy coverage while the probe-driven suite validates current behavior through real Docker round trips. This is a deliberate testing strategy change that should be called out in PR review.
The upstream build-and-test workflow still logged into DockerHub on every push. That is not needed for this CI job and it fails in forks or review branches when `DOCKERHUB_TOKEN` is not configured, even after all tests and Docker option probes have already passed. Remove the DockerHub login step from `ci.yaml`; publishing remains handled by the release/publish workflows. Also remove the legacy `inspect_fixtures.sh` failure hook from this job because the old live fixture suite is now skipped and probe-based checks are the active Docker coverage, so the hook can mask the real failure with unrelated missing-fixture errors. Move the CI workflow to `actions/checkout@v6` and `actions/setup-python@v6`, which use Node 24, to avoid the current GitHub Actions Node 20 deprecation warning on this PR. Add regression tests around the workflow so build/test CI stays independent of DockerHub credentials, avoids legacy fixture dumps, and uses Node 24 action versions.
Address review-loop findings from the upstream-based PR by tightening renderer behavior around inherited values, entrypoints, published and exposed ports, healthcheck timing, volumes, and IPv6 publish bindings. Add focused regression coverage for those rendering edge cases plus probe-timeout and manifest/generated-file validation failures. Refresh generated probe results so support artifacts stay current. Also replace deprecated pipes.quote usage with shlex.quote while preserving direct-execution import fallbacks.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Context
Our fork's
masteris still based on an old fork lineage, while current upstreamlavie/runlike/masteris at91e74d3. This PR is therefore intentionally opened inside our fork against the review base branchupstream-master-91e74d3, which points at current upstream. That keeps the diff focused on the ported completeness work instead of mixing in the 167 upstream commits that our fork had not previously synced.This is a review PR for our repo so we can inspect the upstream-based port before deciding how to shape the eventual PR to
lavie/runlike.What Changed
ubuntu-22.04, install the pinned Docker target, setDOCKER_API_VERSION=1.44, and run the generated-file, manifest-source, and option-probe gates.actions/checkout@v6andactions/setup-python@v6, which use Node 24.DOCKERHUB_TOKENon every branch push.inspect_fixtures.shfailure hook from build/test CI because the old live fixture suite is skipped and the probe suite is now the active Docker coverage.spec/option-dictionary/*.jsonin the Python package so installed wheels/sdists have the renderer metadata available.Important Review Notes
upstream-master-91e74d3, not our stalemaster, so the diff should represent the actual upstream port.CI Failure Fixed
The first push run failed after all tests and probes had passed because the inherited build/test workflow tried to log into DockerHub on every push. Our fork/review branch does not provide
DOCKERHUB_TOKEN, sodocker/login-actionfailed withPassword required. The follow-up commit removes DockerHub login from build/test CI and leaves publishing responsibility in the release/publish workflows.The same failed run also invoked
inspect_fixtures.sh, which then failed with missing legacy fixture containers and masked the real failure. That hook has been removed from build/test CI because probe-based Docker checks are now the active coverage.Verification
Initial port verification, run locally in the upstream-based worktree with
/home/shani/.docker25-envsourced for Docker checks:Follow-up CI fix verification:
GitHub Actions after the CI fix commit
b8de13f:Also checked the staged diff before the initial port commit for accidental
.env/.dbfiles, obvious secret patterns, and debugger statements; none were found.