Why: User overrides of a subagent profile need a place on the shared contract, and empty fields must stay omitted so older modules keep their meaning. Evidence: go test ./... passed, including the new prompt_module_subagent golden. Impact: Existing modules serialize the same. Frontend and UI contracts still need a copy of the type. Refs: feature/agent-harness-p3b Co-authored-by: Cursor <cursoragent@cursor.com>