docs: add semantics.md — the apply contract and Coolify 4.1.2 limits #2
No reviewers
Labels
No labels
blocked
blocker:ci-red
blocker:conflict
blocker:drill-pending
blocker:unrequested
bug
claimed
documentation
enhancement
epic
merge-next
needs-triage
ready
release
scope:apply
scope:capture
scope:coolify-api
scope:fleet
scope:manifest
scope:secrets
stale
state:addressing
state:bots-reviewing
state:building
state:needs-human
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: heavy-duty/cast#2
Loading…
Reference in a new issue
No description provided.
Delete branch "docs/semantics"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fixes a gap I introduced in #1.
docs/semantics.mdwas written after that PR's commit was already pushed, so it never landed — whileheavy-duty/infra#2removed the same content from that repo's README on the assumption it had. Between the two merges, these notes survived only in git history.They're the expensive part of the executor, and the part that is genuinely hard to reconstruct:
applyguarantees — never deletes; never recreates a database; fails loudly naming the field rather than recreating on un-updatable drift; always ends a mutated resource with a redeploy (API writes land in Coolify's DB, not in running containers); one-way, manifest → Coolify.dockercomposebuild pack —service_domainsmap vocabulary, the wire translation to{name, domain}, and why a compose app's create must setconnect_to_docker_network.domainscannot be set via the 4.1.2 API; the redis default image tag is an unverified extrapolation.Each Coolify claim is cited against
coollabsio/coolifyv4.1.2 source and the vendored OpenAPI inreference/— because the published OpenAPI is wrong or silent in exactly the places that matter (it documentsdocker_compose_domainsas a nullable string on read but an array on write, and describes the bulk-env endpoint in a way that would makeapply's never-delete rule unsafe if believed).Linked from the README so it's found before someone changes
apply.