domains / orchestration / apple/container
API Versioning And Semantics
Define and document your public API contract with two guarantees: (1) versioning/compatibility rules, and (2) unambiguous parameter semantics (source of truth and precedence).
Define and document your public API contract with two guarantees: (1) versioning/compatibility rules, and (2) unambiguous parameter semantics (source of truth and precedence).
Apply this when publishing Swift/XPC interfaces and when documenting client-facing parameters/options (including convenience aliases).
Versioning/compatibility
- Follow SemVer rules for major/minor/patch releases or explicitly document the deviations.
- State the compatibility boundary per API surface (e.g., “XPC API compatibility is guaranteed within the same major version so older and newer clients can interoperate”).
- Define what each component of the version number means (e.g., monthly minor releases, patch releases for hotfixes).
Parameter semantics
- If you expose both a convenience flag and a driver/core option (e.g.,
-sand--opt size=...), clearly document:- why both exist (convenience vs underlying capability)
- what the canonical parameter is
- precedence when both are provided (which one “wins”).
Example rule for precedence
- “
-s <s>is a convenience alias for thesizedriver option; if both-sand--opt size=...are specified,-stakes precedence.”
Practical checklist
- For each public API: publish compatibility scope per major/minor/patch.
- For each user/client input: document the source-of-truth and override/precedence behavior when duplicates are possible.