docs: compact the supported-subset page#54
Merged
Conversation
Merge the near-duplicate Secrets and Configs sections into one Stores section (a four-row diff table plus the shared rules stated once), and replace the Service keys section's one-bullet-per-key prose with tables for the declarative registry keys and the legacy resource-limit keys. Reduces the page from 765 to 587 lines with no rule dropped; along the way, adds several gate rules the page never documented (store-name and environment-source-name patterns, uid/gid/mode shape checks, the top-level `volumes` warning, startup_order's closure-time raises) and drops a stale `_MAP_FLAGS` citation.
7954cfb to
3d9175d
Compare
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.
Stacked on #53 (it rewrites the same file). Design:
planning/changes/2026-07-14.01-compact-supported-subset.md. Spawned by the audit in #52.architecture/supported-subset.mdis the accept/ignore/reject truth for the whole tool, and it is the page you read to answer "is this key supported, and what does it do?". It had reached 765 lines, much of it duplication and prose restating what a table row says.765 → 592 lines, with no rule lost.
What changed
Xis a list, emitted as repeated--x" became two tables (registry keys, resource keys). Prose survives only where a table genuinely can't carry the behavior:entrypoint's shell-vs-exec semantics,hostname/container_nameresolving via the pod-wide--add-hostset, and why each ignored key is inert._MAP_FLAGS, a symbol that no longer exists.The headline is not the line count
8 gate rules that the old page never documented are now on it, found by working from the code rather than from the page: the store-name and env-var-name regexes, the
uid/gid/modeshape checks, the top-levelvolumeswarning,startup_order's three closure-time raises, anddeploy.resources' unrecognized-key rejection. Two more added in review: the healthcheckinterval1-second floor (so"500ms"is accepted but polls once a second — the script's polling loop has no sub-second resolution) and the store-reference list shape.So the reformat saved more than the 173-line delta suggests; part of the budget went to content that should always have been there.
How "no rule lost" was verified
Not by reading the old page against the new one — that's exactly the process that let it drift. The review AST-walked
compose2pod/*.pyfor all 102raise UnsupportedComposeErrorsites, resolved each to its message, enumerated the 5warnings.appendsites and the accepted-shape sources (SERVICE_KEYS,STRUCTURAL_KEYS,PULL_POLICY_MAP,StoreKind, the sweep chain), and confirmed each rule still appears on the page. It also reproduced every non-obvious table cell against the real code to check for overclaims, and found none.Doc-only: no code, no tests, no behavior. 549 tests still green at 100%.
🤖 Generated with Claude Code