--- model: openai/gpt-5.6-sol service: opencode timestamp: 2026-08-18T19:30:02Z git_ref: bf06b4f8 diff_cmd: git diff HEAD~1..HEAD --- Repeated teardown sites reconstruct the `Actor._contexts` registry key from a portal channel and context ID before popping it. Add an idempotent actor-owned helper deriving the key from the context itself, then route caller and callee context teardown through that helper. > `git diff HEAD~1..HEAD -- tractor/runtime/_runtime.py tractor/runtime/_rpc.py tractor/_context.py` Keep receive-channel closure and cancellation shielding in each lifecycle owner so the helper centralizes registry machinery without changing their teardown ordering.