9206eb9d73
Move allow_shell from message[0] (static system prompt) to the per-turn <runtime_prompt> tag alongside mode and approval. This preserves the DeepSeek prefix cache across shell-access toggles and mode switches, which previously forced YOLO entry/exit to rebuild the entire prompt. Changes: - Delete remove_shell_tool_guidance and 3 other dead functions (~60 lines) - Remove allow_shell field from PromptSessionContext and StaticPromptCtx - Remove shell_tools_available dead parameter from compose functions - Add Shell Policy section to Runtime Policy Reference (static text) - Extend <runtime_prompt> tag with allow_shell="true|false" attribute - Update tests: omits→always_keeps, 83/83 prompts tests pass - Drop dead compose_mode_prompt_with_approval_and_model Net: message[0] bytes are now stable regardless of shell-access state. Mode/approval/shell flags all use the same per-turn tag pattern.