action posthog_review_hog_reviews_retrieve { label: "Retrieve one review's detail" description: "One completed ReviewHog review on this project, with the latest turn's validated findings, the findings the validator dismissed (and why), and the review body published to GitHub. Project-wide, so reviews listed under `scope=everyone` can be opened too." provider: posthog method: GET path: "/api/projects/{project_id}/review_hog/reviews/{id}/" encoding: json input: { type: "object" properties: { id: { type: "string" format: "uuid" } } required: ["id"] additionalProperties: false } output: { type: "object" required: ["additions", "blind_spot_issue_count", "candidate_count", "changed_files", "chunk_count", "consider_count", "deletions", "dismissed_count", "dismissed_findings", "files_reviewed", "findings", "github_url", "head_branch", "head_sha", "id", "in_progress", "last_run_at", "must_fix_count", "perspective_count", "perspective_issue_count", "perspective_selection", "pr_author", "pr_number", "pr_title", "progress", "published", "report_markdown", "repository", "run_count", "run_urgency_threshold", "should_fix_count"] properties: { additions: { type: ["integer", "null"] description: "Lines added by the PR; null if unknown." } blind_spot_issue_count: { type: ["integer", "null"] description: "Raw issues the blind-spot sweep added in the latest turn, before dedupe; null if unknown." } candidate_count: { type: "integer" description: "All findings the latest turn raised after dedupe, before validation." } changed_files: { type: ["integer", "null"] description: "Files the PR changes; null if unknown." } chunk_count: { type: ["integer", "null"] description: "Reviewable chunks the latest turn split the PR into; null if unknown." } consider_count: { type: "integer" description: "The latest turn's valid findings at consider effective priority." } deletions: { type: ["integer", "null"] description: "Lines deleted by the PR; null if unknown." } dismissed_count: { type: "integer" description: "The latest turn's findings the validator dismissed as not worth publishing." } dismissed_findings: { type: "array" description: "The latest turn's findings the validator dismissed, with its reasoning." items: { type: "object" required: ["body", "effective_priority", "file", "lines", "reviewer_priority", "source_perspective", "suggestion", "title", "validator_category", "validator_note"] properties: { body: { type: "string" description: "Description of the problem." } effective_priority: { description: "The priority that gates publishing: the validator's override when set, else the reviewer's.\n\n* `must_fix` - must_fix\n* `should_fix` - should_fix\n* `consider` - consider" type: "object" } file: { type: "string" description: "Repository-relative path of the affected file." } lines: { type: "array" description: "Affected line ranges within the file." items: { type: "object" required: ["end", "start"] properties: { end: { type: ["integer", "null"] description: "Last affected line; null for a single line." } start: { type: "integer" description: "First affected line." } } } } reviewer_priority: { description: "The reviewer's original priority, before any validator override.\n\n* `must_fix` - must_fix\n* `should_fix` - should_fix\n* `consider` - consider" type: "object" } source_perspective: { type: ["string", "null"] description: "The review skill that produced the finding (perspective or blind-spot sweep)." } suggestion: { type: "string" description: "The specific fix or improvement the reviewer proposes." } title: { type: "string" description: "One-line summary of the finding." } validator_category: { description: "The validator's category for the finding; null when it didn't set one.\n\n* `bug` - bug\n* `security` - security\n* `performance` - performance\n* `code_quality` - code_quality\n* `best_practice` - best_practice\n* `documentation` - documentation\n* `testing` - testing\n* `accessibility` - accessibility\n* `compatibility` - compatibility" type: "object" } validator_note: { type: "string" description: "The validator's argumentation for keeping or dismissing the finding." } } } } files_reviewed: { type: ["integer", "null"] description: "Meaningful files the latest turn actually read, after skipping generated/lock/snapshot files; null if unknown." } findings: { type: "array" description: "The latest turn's validated findings, most urgent first." items: { type: "object" additionalProperties: true } } github_url: { type: "string" description: "Where to see the review on GitHub: the pull request when its URL is known, otherwise the head branch." } head_branch: { type: "string" description: "The pull request's head branch." } head_sha: { type: ["string", "null"] description: "The PR head commit the latest turn reviewed — anchors GitHub links to the exact code." } id: { type: "string" format: "uuid" description: "The review report's id, for fetching the review's detail." } in_progress: { type: "boolean" description: "Whether a review turn is running on this report right now (activity within the last 30 minutes)." } last_run_at: { type: ["string", "null"] format: "date-time" description: "When the latest review turn completed; null while the first is in flight." } must_fix_count: { type: "integer" description: "The latest turn's valid findings at must_fix effective priority." } perspective_count: { type: ["integer", "null"] description: "Review perspectives that read each chunk in the latest turn; null if unknown." } perspective_issue_count: { type: ["integer", "null"] description: "Raw issues the perspectives raised in the latest turn, before dedupe; null if unknown." } perspective_selection: { description: "The selector's per-chunk perspective plan for the latest turn; null when the turn ran without a selection (selector unavailable, failed, or the run predates it)." type: "object" } pr_author: { type: ["string", "null"] description: "The pull request author's GitHub login; null if unknown." } pr_number: { type: ["integer", "null"] description: "The reviewed pull request's number; null for a branch target with no PR yet." } pr_title: { type: ["string", "null"] description: "The pull request's title, from the latest reviewed snapshot; null if unknown." } progress: { description: "The in-flight turn's stage and counters; null unless `in_progress`." type: "object" } published: { type: "boolean" description: "Whether a review has been published back to GitHub." } report_markdown: { type: "string" description: "The rendered review body published to GitHub, as markdown." } repository: { type: "string" description: "The reviewed repository, as `owner/repo`." } run_count: { type: "integer" description: "How many review turns have completed on this report." } run_urgency_threshold: { description: "The urgency threshold the completed turn's publishing gated on (stamped at finalize from the run's own resolve snapshot); null for turns that predate its recording — readers fall back to the viewer's current setting as an approximation.\n\n* `must_fix` - must_fix\n* `should_fix` - should_fix\n* `consider` - consider" type: "object" } should_fix_count: { type: "integer" description: "The latest turn's valid findings at should_fix effective priority." } } } }