4d45e8154a
- resolveOwnerScopedSessionKey's getOwners in the Python and JS executors only read live sessions, so a subagent reset issued while the shared kernel was still starting resolved to the base key, awaited the parent's startup, and shut its brand-new kernel down. - Python and JS starting sessions are now owner-bearing records like Ruby/Julia's: owners attach synchronously before startup resolves, getOwners and per-owner disposal consult them, and the final sessions.set is identity-guarded so a disposed starting record cannot resurrect its kernel. - Regression: deferred PythonKernel.start proves a concurrent subagent reset forks immediately and never reaps the parent's starting kernel (fails with the previous getOwners).