c22b60c2b0
Addresses chatgpt-codex review: the previous full serde_json::to_string included internal-only fields (allowed_callers, defer_loading, input_examples, cache_control) that are never sent to the chat API. This caused spurious drift detection when those fields changed. - New tool_to_api_json() helper mirrors tool_to_chat() serialization: only type, name, description, parameters, strict - Doc comment fixed: 'sorted by name' → 'sorted lexicographically by JSON text' (greptile review)