{"content":"Development journal: merged fix/reasoning-effort-ladder into main (112db549).\n\nProblem: creating a new cowork task with reasoning effort Off still ran at the DeepSeek max default, and picking Low later showed as Off. Root cause: canonical `low` was rewritten to `off` at read boundaries (colliding with the current four-step picker), and the new-task composer cleared the pending model/effort pick before startSession, so an explicit Off never reached the session and fell through to the model default (max).\n\nFix: pass canonical off/low/high/max through unchanged (only leftover tokens medium/minimal/xhigh still convert); snapshot the composer pick onto the temp session and the startSession request before clearing it. Also pass DSH reasoningEffort with an explicit empty-string check so Off is not dropped.\n\nFiles: llmEffort.ts, modelCatalog.ts, CoworkView.tsx, coworkRunner.ts, coworkDshTurn.ts, dshReasoningEffort.ts, claudeSettings.ts, plus effort mapping tests.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}