Skip to content

Compatibility Contract

Assertions

CMP-001 - CPython 3.13 and 3.14 are the complete Python support range

Contract: Package metadata, type-checker configuration, local commands, documentation, dependency resolution, and CI MUST declare and exercise CPython 3.13 and 3.14. Static analysis MUST target the 3.13 minimum, and runtime source MUST parse with its grammar. A different minor MUST fail before installation or testing. Lock generation MAY use the documented 3.14 resolver host, but wheel resolution MUST cover both supported minors.

Evidence:

CMP-002 - Every GitHub-hosted job uses Ubuntu 26.04

Contract: All repository-owned GitHub-hosted jobs MUST use the exact ubuntu-26.04 runner label. The workflow set MUST not mix mutable aliases or older Ubuntu images into the validation and publication chain.

Evidence:

CMP-003 - Import and command construction do not require Linux services

Contract: Importing the package, validating authorities, constructing command vectors, and running the ordinary unit suite MUST not require Linux session services, a live SSH endpoint, or a sibling checkout. This isolation MUST NOT be presented as support for an undeclared non-Linux runtime platform.

Evidence:

CMP-004 - Linux-specific behavior is isolated and accepted with OpenSSH

Contract: Linux session recovery MUST degrade to the inherited environment when its optional probes are unavailable or invalid. Local and CI acceptance MUST test the native host client against the same container-only OpenSSH server. The test image MUST pin its base by digest and server packages through a signed immutable Debian snapshot; it MUST NOT depend on the host distribution's server package or exact client/server version equality. The host MUST provide a working Podman or Docker engine and native OpenSSH client, but MUST NOT need sshd or an engine-injected init binary. The server image MUST supply its own init.

Evidence:

CMP-005 - OpenSSH and remote Python are capability prerequisites

Contract: The runtime MUST remain third-party-dependency-free. Consumers MUST provide a compatible native OpenSSH client; only consumers using OwnedRemoteProcess MUST also provide python3 on the remote target.

Evidence: