"Overlapping active presets share ownership of a Tinker-hidden process; only releasing the final owner restores it." — Tinker architecture, hide invariant 5
The Overlap Problem
Presets overlap naturally. The editing preset hides Claude; a broadcast preset, set up later for a live stream, hides Claude too. Suppose Dad starts editing, then starts a broadcast while still editing, then finishes editing. Should Claude come back? Clearly not — the broadcast is still running and wants Claude hidden. But Tinker hid Claude only once, during editing, so there is only one receipt. Whose is it?
A Receipt Has a Set of Owners
Tinker's answer is to make ownership a set. Each ChangeReceipt carries owners, a set of strings such as preset/edit and preset/broadcast. When broadcast is applied, prepare emits a plan for Claude with needsApply: false (it is already hidden). Before checking that flag, the engine checks the journal: a receipt with the same key already exists, belongs to the same capability, and is in the applied phase. So instead of skipping Claude, the engine adds preset/broadcast to that receipt's owners. No second hide happens and no second receipt is written.
Releasing One Owner
Restoring a preset walks the receipts it owns. If a receipt has more than one owner, restore just removes this owner from the set and moves on — no undo. Only when a receipt's last owner releases it does the capability's undo run. It is reference counting, with the references named instead of counted, which is what lets the Access & Recovery tab show which presets are holding each app.
The Uncertain Exception
There is one case where sharing is refused. If the existing receipt for that key is still prepared — an uncertain change from an earlier interrupted action — or belongs to a different capability, the engine will not add a new owner to it. It throws "An unresolved change already owns …" and the new preset rolls back what it had confirmed so far. Joining an uncertain record would give a second preset a stake in a change nobody can vouch for; better to stop and let Dad resolve it in Recovery.