fleet operations: cast diff/apply --all over the project registry #26
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#26
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Problem
Every cast verb is single-project. "Do this to the whole instance" is a shell
loop the operator writes from memory:
That is fine at one project. It stops being fine the moment a box hosts several
— which is precisely where this fleet is heading (the box being drained in the
current migration hosts three).
Proposal
Depends on the
projects:registry (see the registry issue).must mean every project was actually read, not that the ones cast happened
to look at were fine.
A silently skipped project reads exactly like a clean one — the same class of
lie as #12/#18/#22, at fleet scale.
Not urgent
One project per server today. This is the ergonomics that the registry unlocks,
not a reason to build the registry.
Grounded now: #28 gives this a place to iterate from.
environments.<env>.projects.<org>/<repo>exists.cast smokealready takes an optional<org>/<repo>, so the per-project entry point is established.Two constraints this must respect, both sharpened by #28:
projects:is optional, so iterating it today iterates the projects that happened to need per-project state — not the projects that exist. A project cast cannot see is not a project that is clean.--allmust not ship until absence means "does not exist".And one thing
--allgets for free from #28 that is worth naming: split-placement detection.diffalready flags a project whose live resources sit on different destinations. Run fleet-wide, that becomes a real audit — the kind of thing nobody would ever run by hand, one project at a time.