The central Presolve question is not “which cloud are we deploying to?” It is “what does this application require, what can this environment provide, and can the two be matched without changing the application release?”
Application needs and environment supply meet at compatibility.
presolve.tomlworkloads · capabilities · resources · network policysha256:…application semantics + workload identitypresolve.env.tomlexecution support · providers · capacityThe plan is symbolic. Compatibility and provider selection do not require concrete Redis clients, database connections, cloud credentials, or runtime implementation objects.
Keep these boundaries separate.
The portable thing being distributed: its requirements, topology, workload identity, and semantic service needs.
A declaration of what one place can execute and provide: resources, workload classes, providers, versions, and features.
The result of matching one application release against one environment at one point in time.
Turning the symbolic plan into concrete runtime/provider implementations plus runtime-only settings such as endpoints and credentials.
What changes—and what must not.
- capability requirements
- workload artifact identity
- minimum resources
- network policy
- application topology
- selected environment ID
- selected provider ID
- cloud credentials or secrets
- service endpoints
- database paths or connection strings
This separation is the invariant exercised by the portability proofs in the repository.
Compatible is a deterministic statement.
A successful result means the environment can satisfy every mandatory application requirement represented by the current semantic model. A rejected result returns structured problems instead of silently weakening the request.
Required workload execution is available, resource minimums fit, capability versions match, and required semantic features are supported.
Examples include unsupported workload classes, insufficient resources, no compatible provider version, or a missing required feature.
presolve check
# Status: compatible
presolve plan
# presolve:sql/database → postgres-sql @ 0.1.0Provider identity connects the plan to an implementation.
provider_id = prv_…prv_… → implementationEndpoint addresses, credentials, file paths, and similar operational settings are supplied only when the selected provider is materialized.
The rules Presolve is trying to preserve.
- Application identity is independent of deployment environment.
- Application, environment, and deployment are separate concepts.
- Applications request capability semantics, not vendors.
- Capability semantics are independent of binding transport.
- Compatibility/planning output remains symbolic until runtime materialization.
- The runtime executes a resolved plan; it does not own environment resolution.
- A
.presolvedrelease never encodes environment-specific provider selection.