"The browser tab is not the operation. Close the tab; the deploy keeps its promise anyway."
Some Operations Outlive the Request
A birth, a deploy, a tree fan-out, a restart, a fetch, a commit, a push — these can take longer than a browser is willing to wait, and they touch the real world. Firelink runs them as durable jobs, not as work bolted to an HTTP request. Each run has an explicit state — planned, running, succeeded, failed, or needs-attention — and its progress and bounded output are persisted as it goes. Close the tab, lose the network, refresh the page: the run doesn't vanish and it doesn't silently restart. It's a durable record you can come back to.
Disconnects Don't Create Mystery Retries
The dangerous moment with any side-effecting operation is uncertainty: did it happen or not? A browser disconnect mid-deploy must never turn into 'I'll just try again' when the first attempt may have already pushed. Firelink handles this with idempotency keys — a double-click or a retry with the same key doesn't run the effect twice — and with locks that serialize conflicting operations by member, adapter, and target, so two deploys of the same thing can't interleave. A retry either resumes the existing run or creates a clearly linked new one; it never silently repeats an external side effect whose outcome is unknown.
'Needs-Attention' Is an Honest Ending
Notice that the states include needs-attention, not just success and failure. Some operations end in genuine ambiguity — a commit succeeded but the push failed, an external step returned something the verifier can't confirm. Collapsing that into 'failed' invites a blind retry that might duplicate the part that already worked; collapsing it into 'succeeded' hides a real problem. needs-attention is the honest terminal state that says 'a human should look before anything else happens here' — the same honesty as 'unknown' in the census, applied to operations.