{"content":"Dev journal — DSH Phase 1 compaction closed (feat/dsh-phase1): the generated runtime composition now mounts dsh-compaction-basic (threshold 0.8, retain 0.16, summary cap 8192, one retry) so long DSH sessions no longer run toward context overflow. E2E proof uses a deliberately tiny 1400-token window with ~450-token filler turns against the mock gateway: compaction events (start/summary/end) land in the session feed and — the assertion that actually matters — the post-compaction conversation request no longer contains the summarized old content while retaining recent turns and the summary. Two testing lessons baked in: the mock gateway now reports usage proportional to real payload sizes (~4 chars/token) so token-meter accounting can cross thresholds at all, and absolute request-size assertions are meaningless when each turn's new content roughly equals what compaction reclaims — content-based assertions are the durable form. Full regression green across all suites.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}