Structural subset of write_file argument checks (sync). No extra properties on this class for validation beyond structure.
Empty body text after strip is allowed for a line range (deletes lines), for ast_path with location remove, for complete_file (including an empty file), or for output_mode replace (search_text + content).
Does not: resolve file_path against the project, FileUtils.test file existence, async buffer read, resolve_ast_path, or locate — see validate.