{"id":6043,"date":"2026-10-26T08:54:50","date_gmt":"2026-10-26T08:54:50","guid":{"rendered":"https:\/\/www.aviator.co\/blog\/?p=6043"},"modified":"2026-10-26T08:54:51","modified_gmt":"2026-10-26T08:54:51","slug":"stop-repeating-ai-mistakes-code-review","status":"publish","type":"post","link":"https:\/\/www.aviator.co\/blog\/stop-repeating-ai-mistakes-code-review\/","title":{"rendered":"How to Stop Catching the Same AI Mistakes in Every Code Review"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Adding comments such as \u201cplease do not write to the <code>x<\/code> table directly\u201d is a PITA most of the time. If it happens occasionally, fine. But recurring comments? You\u2019d better prepare another liter of coffee. And when this happens a few times a month, you\u2019ve basically got yourself a very expensive cron job.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here\u2019s how to stop it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A comment left more than twice is an unwritten policy. To fix it, mine your code review history for recurring feedback, then route each pattern to the cheapest layer that can enforce it. Formatting and simple syntax patterns belong in formatters and linters. Rules that require understanding what a change actually <em>does<\/em> belong in a semantic check, such as an invariant in <a target=\"_blank\" rel=\"noopener\" href=\"https:\/\/verify.aviator.co\">Aviator Verify<\/a>. Judgment calls are left to humans.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>TL;DR:<\/strong> AI slop is often code that ignores your team\u2019s conventions, and senior engineers keep catching it by hand. Turn each recurring review comment into a rule: filter for rules that apply across authors, send syntax issues to linters and semantic rules to invariants, write each rule as a single verifiable sentence, test it in draft mode, then promote it.<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Why THAT Same Old Review Comment, Again?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Coding agents start every session from zero.<\/strong> Cursor, Claude Code, Copilot and their pals start new sessions without the feedback your team has accumulated across hundreds of review threads. So the agent repeats the same mistake, and since agents write code fast, those mistakes pile up at a much higher volume. Yikes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Review knowledge is stored in a reviewer\u2019s memory.<\/strong> The senior engineer who remembers last quarter&#8217;s partial-write bug only catches it on the PRs she reviews. Her comment fixes one PR, but the underlying rule never becomes part of the codebase\u2019s checks.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You could try stuffing every rule into the prompt. <a target=\"_blank\" rel=\"noopener\" href=\"https:\/\/docs.aviator.co\/verify\/concepts\/verification-layers\">Aviator&#8217;s docs on verification layers<\/a> explain why that is the wrong approach. The agent would need to remember the team&#8217;s full ruleset on every submission. One bad submission could slip through if a rule gets overlooked, and every ruleset change would mean re-instructing the agent. Files like <code>CONTRIBUTING.md<\/code> do help, but they are just guidance an agent may or may not follow. They don\u2019t block a merge.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How Do You Turn a Review Thread Into an Invariant?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">First, a quick definition. In Verify, an <strong>invariant<\/strong> is a team-defined rule applied to every matching change. Acceptance criteria describe what <em>this<\/em> change should do; invariants describe what <em>every<\/em> change should respect (<a target=\"_blank\" rel=\"noopener\" href=\"https:\/\/docs.aviator.co\/verify\/concepts\/invariants\">Aviator docs<\/a>).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Think of your invariant catalog as an anti-slop registry that contains mistakes your team has already caught and corrected.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Mine the Code Review History<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Scan the last quarter of PRs for recurring comments. Aviator&#8217;s docs note that many useful invariants start as review comments left more than twice. If you\u2019d rather not grep through threads by hand, Verify can do the mining for you. The <strong>AI from PR comments<\/strong> source analyzes your PR history and drafts invariants based on recurring feedback. According to the docs, it\u2019s often the highest-yield option. <strong>AI from docs<\/strong> works similarly by extracting rules from <code>CONTRIBUTING.md<\/code>, <code>LLM.md<\/code>, or similar files.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Keep Only the Rules That Apply Across Authors<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Filter hard. Aviator&#8217;s recurrence test is a good one: if you\u2019d write the same criterion on the next ten submissions, it should be an invariant. Personal preferences, like \u201cI would have named this differently,\u201d belong in human review.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Route Each Pattern to the Cheapest Layer<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Not every recurring comment needs an LLM-backed check. Send each one to the cheapest layer that can reliably enforce it:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>What the recurring comment looks like&#8230;<\/th><th>Cheapest layer<\/th><th>Why<\/th><\/tr><tr><td>&#8220;Fix the indentation&#8221; \/ &#8220;Sort these imports&#8221;<\/td><td>Formatter<\/td><td>Fully mechanical, auto-fixable<\/td><\/tr><tr><td>&#8220;Use camelCase here&#8221; \/ &#8220;No <code>console.log<\/code>&#8220;<\/td><td>Linter<\/td><td>Simple pattern, deterministic and fast<\/td><\/tr><tr><td>&#8220;This should not be <code>any<\/code>&#8220;<\/td><td>Type checker<\/td><td>The compiler already knows<\/td><\/tr><tr><td>&#8220;Go through the repository, not raw SQL&#8221; \/ &#8220;Handlers must authenticate first&#8221;<\/td><td>Verify invariant<\/td><td>Needs an understanding of what the change does<\/td><\/tr><tr><td>&#8220;Is this the right abstraction?&#8221;<\/td><td>Human reviewer<\/td><td>Judgment, not a rule<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">4. Rewrite Each One as a Checkable Statement<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">An invariant has to stand on its own, without the PR context.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2026\/10\/image-1024x576.png\" alt=\"Aviator Verify's Invariants in action\n\" class=\"wp-image-6047\" srcset=\"https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2026\/10\/image-1024x576.png 1024w, https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2026\/10\/image-300x169.png 300w, https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2026\/10\/image-768x432.png 768w, https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2026\/10\/image-1536x864.png 1536w, https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2026\/10\/image.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"has-text-align-center wp-block-paragraph\">                                                                   <em>Aviator Verify&#8217;s Invariants in action<br><\/em>Aviator&#8217;s <a href=\"https:\/\/docs.aviator.co\/verify\/concepts\/invariants\" target=\"_blank\" rel=\"noopener\">guidance on writing invariants<\/a> comes down to a few rules:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Be specific about the assertion and vague about the implementation.<\/strong> Name the rule, not the file path or function, so that it survives renames.<\/li>\n\n\n\n<li><strong>Make it verifiable in isolation.<\/strong> Stick to rules that can be checked from the diff or a single runtime probe.<\/li>\n\n\n\n<li><strong>Do not write the fix.<\/strong> The verifier explains what\u2019s wrong, and the author decides how to fix it.<\/li>\n\n\n\n<li><strong>One rule per invariant.<\/strong> Put scope in conditions.<\/li>\n\n\n\n<li><strong>Allow for exceptions.<\/strong> An invariant can be waived, too.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>Original review comment<\/th><th>Checkable invariant<\/th><\/tr><tr><td>&#8220;Do not write to <code>users<\/code> directly, use <code>UserRepository.UpdateProfile<\/code>.&#8221;<\/td><td>Writes to the users table must go through UserRepository. Direct INSERT, UPDATE, or DELETE statements against the users table are not allowed outside the repository package.<\/td><\/tr><tr><td>&#8220;Migrations should be reversible.&#8221;<\/td><td>All migrations must declare a <code>down<\/code> block.<\/td><\/tr><tr><td>&#8220;Error messages should not be in first person.&#8221;<\/td><td>User-facing error messages must not use first-person pronouns.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Where Do Linters Belong?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Wherever they already are. \ud83d\udc4d Formatting, naming conventions, and simple code patterns belong in your formatter and linter (ESLint, Ruff, golangci-lint, and friends). They are deterministic, run in milliseconds on a developer&#8217;s laptop, and can often auto-fix issues.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th><\/th><th>Formatter \/ Linter<\/th><th>Verify invariant<\/th><th>Human reviewer<\/th><\/tr><tr><td><strong>Best for<\/strong><\/td><td>Formatting, naming, banned patterns<\/td><td>Cross-cutting semantic rules (layering, auth, data access)<\/td><td>Design, trade-offs, &#8220;should we build this at all?&#8221;<\/td><\/tr><tr><td><strong>Deterministic<\/strong><\/td><td>Yes<\/td><td>Partly (code analysis where possible, labeled LLM fallback otherwise)<\/td><td>No<\/td><\/tr><tr><td><strong>Knows the change&#8217;s intent<\/strong><\/td><td>No<\/td><td>Yes, from the submitted intent and criteria<\/td><td>Yes<\/td><\/tr><tr><td><strong>Where it runs<\/strong><\/td><td>Editor, pre-commit, CI<\/td><td>On the PR&#8217;s verification run<\/td><td>Whenever someone has time<\/td><\/tr><tr><td><strong>Limitations<\/strong><\/td><td>Cannot express &#8220;what the code means&#8221;<\/td><td>Needs a well-written body; selector can skip it<\/td><td>Does not scale with agent output<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Next Steps<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Here\u2019s the loop, one last time: mine the comments, keep the rules that apply across authors, route syntax to linters and semantics to invariants, write each rule as one checkable sentence, then trial, promote, and prune.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You can do most of that on a whiteboard and still end up with a better <code>CONTRIBUTING.md<\/code>. But if you\u2019d rather skip the manual mining and have those rules checked on every PR (including the ones your agents open at 2 a.m.), <a target=\"_blank\" rel=\"noopener\" href=\"https:\/\/verify.aviator.co\">Aviator Verify<\/a> is built for exactly that. The <a target=\"_blank\" rel=\"noopener\" href=\"https:\/\/docs.aviator.co\/verify\">setup docs<\/a> can get you to your first invariant in about ten minutes. (\uff61\u2022\u0300\u1d17-)\u2727<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">FAQ<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">What is AI slop in code?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">AI slop is AI-generated code that works but ignores how your team builds things, such as skipping a data-access layer or an authentication step. It usually passes tests and looks fine in a diff, which is why it tends to get caught only by experienced reviewers.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What\u2019s an invariant in code review?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">An invariant is a team-defined rule that every matching change must respect, such as &#8220;HTTP handlers must call authentication middleware before business logic&#8221;. In Aviator Verify, invariants are stored in an account-level catalog and are applied automatically to every eligible PR.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Should I use a linter or an invariant?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Use a linter when the rule concerns syntax or a simple code pattern (such as formatting, naming, banned calls). Use an invariant when checking the rule requires understanding what the change does, like data-access layering or authentication order.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Can Aviator Verify find recurring review comments for me?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Yes. The <strong>AI from PR comments<\/strong> source analyzes your PR history and drafts invariants from recurring feedback. Drafts do not produce verdicts until an admin promotes them.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><\/h3>\n","protected":false},"excerpt":{"rendered":"<p>Tired of catching the same AI-generated coding mistakes in every PR? Learn how to turn recurring code review comments into automated checks, enforce team conventions and spend less time repeating feedback.<\/p>\n","protected":false},"author":33,"featured_media":6045,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[90,221,218,59,220],"class_list":["post-6043","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-ai-coding","tag-ai-coding-agents","tag-code-quality","tag-code-reviews","tag-linters"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Stop Catching the Same AI Mistakes in Code Reviews<\/title>\n<meta name=\"description\" content=\"Turn recurring AI code review comments into automated checks to catch mistakes early and improve code quality.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.aviator.co\/blog\/stop-repeating-ai-mistakes-code-review\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Stop Catching the Same AI Mistakes in Code Reviews\" \/>\n<meta property=\"og:description\" content=\"Turn recurring AI code review comments into automated checks to catch mistakes early and improve code quality.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.aviator.co\/blog\/stop-repeating-ai-mistakes-code-review\/\" \/>\n<meta property=\"og:site_name\" content=\"Aviator Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-26T08:54:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-26T08:54:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2026\/10\/0c69c407-1be6-422a-875d-be77165a8b12-Stop-Catching-the-Same-AI-Mistakes.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1320\" \/>\n\t<meta property=\"og:image:height\" content=\"690\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Dejan Luki\u0107\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dejan Luki\u0107\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Stop Catching the Same AI Mistakes in Code Reviews","description":"Turn recurring AI code review comments into automated checks to catch mistakes early and improve code quality.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.aviator.co\/blog\/stop-repeating-ai-mistakes-code-review\/","og_locale":"en_US","og_type":"article","og_title":"Stop Catching the Same AI Mistakes in Code Reviews","og_description":"Turn recurring AI code review comments into automated checks to catch mistakes early and improve code quality.","og_url":"https:\/\/www.aviator.co\/blog\/stop-repeating-ai-mistakes-code-review\/","og_site_name":"Aviator Blog","article_published_time":"2026-10-26T08:54:50+00:00","article_modified_time":"2026-10-26T08:54:51+00:00","og_image":[{"width":1320,"height":690,"url":"https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2026\/10\/0c69c407-1be6-422a-875d-be77165a8b12-Stop-Catching-the-Same-AI-Mistakes.png","type":"image\/png"}],"author":"Dejan Luki\u0107","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Dejan Luki\u0107","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.aviator.co\/blog\/stop-repeating-ai-mistakes-code-review\/#article","isPartOf":{"@id":"https:\/\/www.aviator.co\/blog\/stop-repeating-ai-mistakes-code-review\/"},"author":{"name":"Dejan Luki\u0107","@id":"https:\/\/www.aviator.co\/blog\/#\/schema\/person\/4c59a330638ee7ba7971e02c7923a7f6"},"headline":"How to Stop Catching the Same AI Mistakes in Every Code Review","datePublished":"2026-10-26T08:54:50+00:00","dateModified":"2026-10-26T08:54:51+00:00","mainEntityOfPage":{"@id":"https:\/\/www.aviator.co\/blog\/stop-repeating-ai-mistakes-code-review\/"},"wordCount":1278,"image":{"@id":"https:\/\/www.aviator.co\/blog\/stop-repeating-ai-mistakes-code-review\/#primaryimage"},"thumbnailUrl":"https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2026\/10\/0c69c407-1be6-422a-875d-be77165a8b12-Stop-Catching-the-Same-AI-Mistakes.png","keywords":["AI coding","ai coding agents","code quality","code reviews","linters"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.aviator.co\/blog\/stop-repeating-ai-mistakes-code-review\/","url":"https:\/\/www.aviator.co\/blog\/stop-repeating-ai-mistakes-code-review\/","name":"Stop Catching the Same AI Mistakes in Code Reviews","isPartOf":{"@id":"https:\/\/www.aviator.co\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.aviator.co\/blog\/stop-repeating-ai-mistakes-code-review\/#primaryimage"},"image":{"@id":"https:\/\/www.aviator.co\/blog\/stop-repeating-ai-mistakes-code-review\/#primaryimage"},"thumbnailUrl":"https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2026\/10\/0c69c407-1be6-422a-875d-be77165a8b12-Stop-Catching-the-Same-AI-Mistakes.png","datePublished":"2026-10-26T08:54:50+00:00","dateModified":"2026-10-26T08:54:51+00:00","author":{"@id":"https:\/\/www.aviator.co\/blog\/#\/schema\/person\/4c59a330638ee7ba7971e02c7923a7f6"},"description":"Turn recurring AI code review comments into automated checks to catch mistakes early and improve code quality.","breadcrumb":{"@id":"https:\/\/www.aviator.co\/blog\/stop-repeating-ai-mistakes-code-review\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.aviator.co\/blog\/stop-repeating-ai-mistakes-code-review\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.aviator.co\/blog\/stop-repeating-ai-mistakes-code-review\/#primaryimage","url":"https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2026\/10\/0c69c407-1be6-422a-875d-be77165a8b12-Stop-Catching-the-Same-AI-Mistakes.png","contentUrl":"https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2026\/10\/0c69c407-1be6-422a-875d-be77165a8b12-Stop-Catching-the-Same-AI-Mistakes.png","width":1320,"height":690},{"@type":"BreadcrumbList","@id":"https:\/\/www.aviator.co\/blog\/stop-repeating-ai-mistakes-code-review\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.aviator.co\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Stop Catching the Same AI Mistakes in Every Code Review"}]},{"@type":"WebSite","@id":"https:\/\/www.aviator.co\/blog\/#website","url":"https:\/\/www.aviator.co\/blog\/","name":"Aviator Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.aviator.co\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.aviator.co\/blog\/#\/schema\/person\/4c59a330638ee7ba7971e02c7923a7f6","name":"Dejan Luki\u0107","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2026\/08\/cropped-1-150x150.jpg","url":"https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2026\/08\/cropped-1-150x150.jpg","contentUrl":"https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2026\/08\/cropped-1-150x150.jpg","caption":"Dejan Luki\u0107"},"url":"https:\/\/www.aviator.co\/blog\/author\/dejan\/"}]}},"_links":{"self":[{"href":"https:\/\/www.aviator.co\/blog\/wp-json\/wp\/v2\/posts\/6043","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.aviator.co\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.aviator.co\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.aviator.co\/blog\/wp-json\/wp\/v2\/users\/33"}],"replies":[{"embeddable":true,"href":"https:\/\/www.aviator.co\/blog\/wp-json\/wp\/v2\/comments?post=6043"}],"version-history":[{"count":3,"href":"https:\/\/www.aviator.co\/blog\/wp-json\/wp\/v2\/posts\/6043\/revisions"}],"predecessor-version":[{"id":6051,"href":"https:\/\/www.aviator.co\/blog\/wp-json\/wp\/v2\/posts\/6043\/revisions\/6051"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.aviator.co\/blog\/wp-json\/wp\/v2\/media\/6045"}],"wp:attachment":[{"href":"https:\/\/www.aviator.co\/blog\/wp-json\/wp\/v2\/media?parent=6043"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.aviator.co\/blog\/wp-json\/wp\/v2\/categories?post=6043"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.aviator.co\/blog\/wp-json\/wp\/v2\/tags?post=6043"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}