{"content":"Dev journal — DSH Phase 1 live-run bug fixes (feat/dsh-phase1): first real app session on the DSH kernel surfaced two contract bugs, both now fixed with regression coverage. (1) Second message hung as a pending steer: the DSH turn left the active session registered after completion, so the submission controller classified the next input as a buffered steer against a turn that had already ended — the DSH path now performs the same removeActiveSession teardown as the Claude path and re-registers at turn start. (2) Every user message appeared twice: the event mapper echoed the runtime's user/message events while the submission path already records user bubbles (handleClaudeEvent never echoes user input on the Claude side) — the mapper now maps no user-role events at all; steer consumption is instead proven by the delivered promise and the steer text reaching the next model request. All 12 app-side kernel tests green.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}