Skip to content

docs: record the divergences kept from the reference CLI - #65

Merged
aledbf merged 1 commit into
mainfrom
document-divergences
Nov 13, 2026
Merged

aledbf merged 1 commit into
mainfrom
document-divergences

Conversation

@aledbf

@aledbf aledbf commented Nov 12, 2026

Copy link
Copy Markdown
Member

AGENTS.md asks for every intentional divergence from the official CLI to be documented, with a test and a reason. These were only in code comments (most removed in #59) or nowhere. We compared them against v0.90.0 and decided to keep them.

Upstream bugs this CLI fixes (still present in v0.90.0), under "Deliberate divergences", each with TS behavior, Go behavior, reason and pinning test:

  • GPU detection also asks nvidia-container-cli (#319)
  • build [path] uses the positional path (chore(deps): bump the actions group across 1 directory with 2 updates #8)
  • a Dockerfile's own .dockerignore applies to the generated build (#969)
  • a stage's LABEL devcontainer.metadata is kept (#1225)
  • build --label on Docker Compose (#930)
  • generate-docs on a single item folder (#876)
  • host variables resolved in a Feature's ENV lines (#308)
  • secretservice as the Linux credential helper
  • a 15s timeout on credential helpers
  • --remove-existing-container before initializeCommand (#844)
  • the updateUID chown of a missing home (#109)

Unavoidable differences, under "Accepted limitations" / "Self-containment stance":

  • Mermaid node ids
  • the Run: log pairs for operations done through the Engine SDK
  • a reference whose digest fails validation is refused (the ref.json golden notes now point at the entry)

New tests (behavior no test pinned)

  • TestGenerateDocs_SkipsMetadataThatIsNotValidJSONC.
  • TestCredentialHelperThatHangsTimesOut: uses the real 15s timeout, so it adds about 15s to the oci package.

Wording fix: a relative auth realm fails in both CLIs, in both modes; only the text differs. The test is renamed to TestHardeningRefusesARelativeRealmAsUnparsable and no longer calls it a divergence.

Not in this PR: the drift we're aligning to TS instead (Feature shorthand mapping, ENV/option order, raw ${localEnv} in the metadata label, the single combined Dockerfile build), each in its own PR.

Validation: task lint and the affected oci/cli tests pass.

🤖 Generated with Claude Code

docs/DIVERGENCES.md now records, each with what TS does, what this CLI
does, why, and the test that pins it, the upstream bugs still present
in the reference that this CLI fixes: GPU detection through
nvidia-container-cli (#319), `build [path]` (#8), a Dockerfile's own
.dockerignore (#969), a stage's devcontainer.metadata label (#1225),
compose `build --label` (#930), generate-docs on a single item (#876),
host variables in Feature ENV lines (#308), the secretservice
credential helper, the 15s credential-helper timeout,
--remove-existing-container before initializeCommand (#844) and the
updateUID chown of a missing home (#109).

It also records the differences that can't be avoided: Mermaid node
ids, the "Run:" log pairs for engine operations done through the SDK,
and a digest that fails validation being refused.

Two tests pin behavior no test held: generate-docs skipping metadata
that is not valid JSONC, and a credential helper that hangs timing out.
A relative auth realm fails in both CLIs, so its test name no longer
calls it a hardening-only divergence.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@aledbf
aledbf merged commit 6806c35 into main Nov 13, 2026
13 checks passed
@aledbf
aledbf deleted the document-divergences branch November 13, 2026 00:10
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