status (Success/Partial/Empty/Error), created_at, total_time_taken_ms, google_url, warning, drift_evidence (KV key of saved raw HTML when status is Empty/Partial), partial_recovered (true when organics were recovered by re-fetch), citations_missing (true when Google served the AI Overview text without its citations and they could not be recovered — such rows are status Partial and are NOT charged), parse_suspect (true when Google's AI Overview markers were in the response but no answer text could be extracted — probable Google markup change; such rows are status Partial and are NOT charged), ai_mode_detected (true only when the answer was served from the AI Mode surface, i.e. not inside an AI Overview block; classic AI Overview answers never set it), ai_mode_excluded (true when excludeAiMode dropped an AI Mode answer: ai_overview is null, status Success, charged), thin_recovered (true when the AI Overview was thin — ended in a dangling heading or under 600 characters — and one fresh SERP fetch returned a richer answer, which replaced it), thin_recovery_attempted (true when the AI Overview was thin, one fresh fetch was made, and the original answer was kept because the fresh one was not richer or was AI Mode), modules_present (which modules actually parsed: organic_results, ai_overview, people_also_ask, knowledge_graph, top_stories, local_results, discussions_and_forums). truncation_detected (true when any AI Overview list item or paragraph lost words — cut at an inline entity link, on an unclosed bracket, a trailing comma or a joining word; a missing full stop alone does NOT set it), truncation_evidence ([{tail: last 80 chars of the cut text, reason: truncation_reason}, max 10]), folsrch_evidence (KV key of the saved answer HTML when captureFlaggedFolsrch is on and the row ended truncated — the raw folsrch fragment when resolved_by is folsrch, else the shell), drift_evidence_folsrch (KV key of saved folsrch-fragment HTML on citation-missing rows when the fragment is a different surface than the shell).