You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Move an Application between Projects by declaring it in the new one first #334
Let an Application move between Projects with no pairing field (chapter 40): while two Projects declare one Id, the declaration outside the active Instance's namespace is the target and a Move is derived. The old Project removing it while the Move is open is E_MOVE_OPEN, and that Project is isolated with its source still rendered. A declaration left behind after retirement renders nothing, and the next fragment that still declares it is E_DUPLICATE_APPLICATION_ID. A negative fixture covers each order of publication.
Lands in TypeScript only, after emf/ is deleted (#347), with the rendered-tree and diagnostics oracles it affects, in one pull request. The intent, effective and dependencies goldens are dropped (#346), so it adds none.
Behaviour (draft ledger row)
An Application declared by two Projects composes once, as the target of a Move from the Project holding its active Instance, in every order the fragments arrive. The old Project cannot drop it before the Move retires, and cannot keep it after.
Blocked by
#341, the map whose rewrite plan replaces the closed placement ticket #328 (see #350).
Next step: none here. 1.0.0 now waits on #665 and the maintainer (#379).
Blocked by: nothing.
Decisions:
No pairing field. Of an Id exactly two Projects declare, the declaration in the namespace ClusterState records its active Instance in is the one it moves out of (src/check/departures.ts).
The old declaration resolves departing: true, with no routes, Client, alerts, dashboards, migration or Move, and its workloads created once.
E_MOVE_OPEN fires when the old Project stops declaring the Application before the source retires.
After retirement, a leftover declaration renders nothing; it is not refused. Chapter 40 was reworded to match.
Ledger row: REQ-115.
Open, written in the PR for the maintainer:
the Release Gate must keep target and flippedAt on its record after retirement (delivery repo);
a stateless Move has no flip Job yet, because nobody has chosen the image that would run it.
Activity
ExtraToast commentedon Oct 27, 2026
Resume here (updated 2026-10-27)
State: merged as
30bc5414(PR #650).Next step: none here. 1.0.0 now waits on #665 and the maintainer (#379).
Blocked by: nothing.
Decisions:
src/check/departures.ts).departing: true, with no routes, Client, alerts, dashboards, migration or Move, and its workloads created once.E_MOVE_OPENfires when the old Project stops declaring the Application before the source retires.Open, written in the PR for the maintainer:
targetandflippedAton its record after retirement (delivery repo);