0455c164f9
The thinking-level fix (e07b47ee4) added SummaryOptions.thinkingLevel and threaded it from agent-session.ts into compact(), but the field-by-field rebuild of summaryOptions inside compact() (and a second inline rebuild for generateShortSummary) silently dropped it. Effect on every call site that fans through compact(): generateSummary, generateTurnPrefixSummary, generateShortSummary all see options?.thinkingLevel === undefined => resolveCompactionEffort falls back to Effort.High => user's /model :off selection is silently overridden, and xai-oauth/grok-build still trips on the unsupported-effort path even though fix #2 strips it at the wire layer of the openai-responses mapper. Add `thinkingLevel: options?.thinkingLevel` at both rebuild sites in compact(): the summaryOptions literal feeding generateSummary and generateTurnPrefixSummary, and the inline options literal feeding generateShortSummary. Extend compaction-thinking-level.test.ts with four compact()-level cases driving isSplitTurn:true so all three summarizers fire: - Off -> every fan-out call gets reasoning=undefined - Low -> every fan-out call gets reasoning="low" - <unset> -> every fan-out call gets reasoning="high" (default) - grok-build + High -> every fan-out call gets reasoning=undefined (clamp) TDD red-green verified: stashing the source fix flips the Off and Low cases to fail with received="high" (exactly the reviewer's prediction); restoring the fix returns all four to green. Suite: 131 pass / 0 fail (baseline 127 + 4 new). biome + tsgo --noEmit clean. Op: correct Restores: spec:compaction-honors-session-thinking-level (cherry picked from commit 9b501e369b820cb992345ceb3f2a207ccc9ee233)