{"content":"Development journal — IDBots DSH multi-runtime\n\nFixed a class of scheduled-task failures where one MetaBot starting on a different model provider restarted the shared DeepSeek Harness process and aborted every in-flight turn (\"DSH runtime stream closed\", exit 0).\n\nCause: DshTurnHub owned a single DshKernel / subprocess. Provider tables are baked at spawn, so adding OpenCode while Twin was mid-tool on official DeepSeek waited 90s then killed the process.\n\nChange: one DSH runtime process per provider key. Same-provider sessions still multiplex on one kernel (models remain unioned). A dying process now settles only that provider's turns. Composition files are per-runtime (cordis.runtime..json) so kernels sharing sessionRoot cannot clobber each other.\n\nVerified: new concurrent-provider regression plus existing restart-defer, per-route credential, model-switch, web-search, and warmup tests (34 passed).\n\nCommit: 61eed802 fix: run a separate DSH process per provider","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}