<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Frost Labs · Writing</title>
    <link>https://ai-frost.com/writing/</link>
    <atom:link href="https://ai-frost.com/writing/rss.xml" rel="self" type="application/rss+xml" />
    <description>Technical notes from David Frost on Odoo, multi-marketplace e-commerce, AI-augmented engineering, and the bugs you don't know are silently costing you revenue.</description>
    <language>en-US</language>
    <lastBuildDate>Sun, 31 May 2026 12:00:00 GMT</lastBuildDate>
    <generator>Hand-rolled · Frost Labs</generator>
    <copyright>© 2026 Frost Labs LLC</copyright>
    <managingEditor>david@ai-frost.com (David H. Frost)</managingEditor>
    <webMaster>david@ai-frost.com (David H. Frost)</webMaster>

    <item>
      <title>The test suite as AI safety net</title>
      <link>https://ai-frost.com/writing/test-suite-as-ai-safety-net/</link>
      <guid isPermaLink="true">https://ai-frost.com/writing/test-suite-as-ai-safety-net/</guid>
      <pubDate>Sun, 31 May 2026 12:00:00 GMT</pubDate>
      <author>david@ai-frost.com (David H. Frost)</author>
      <description><![CDATA[When AI generates the code, the test suite stops being a quality check and becomes a confidence floor: the thing that lets you ship work generated overnight without re-reading every line. The shift from function-level tests to business-invariant tests, the speed and determinism rules that make the inner loop work, and the human/agent division of labor that makes a 143-test Odoo suite worth what it costs to maintain.]]></description>
    </item>

    <item>
      <title>The hidden write-cascade in marketplace_base.product_template.write()</title>
      <link>https://ai-frost.com/writing/odoo-product-template-write-cascade/</link>
      <guid isPermaLink="true">https://ai-frost.com/writing/odoo-product-template-write-cascade/</guid>
      <pubDate>Sun, 24 May 2026 12:00:00 GMT</pubDate>
      <author>david@ai-frost.com (David H. Frost)</author>
      <description><![CDATA[Multi-marketplace Odoo connectors live or die by what they do inside product.template.write(). Override it naively (fire a re-sync to every connected channel on every write) and a normal product-page save takes 45 seconds and leaves half-applied marketplace state. The change-aware-write pattern with field filtering, async dispatch, and per-channel sync state turns the same save into 80ms.]]></description>
    </item>

    <item>
      <title>A watchdog snapshot/diff system for Odoo production</title>
      <link>https://ai-frost.com/writing/odoo-watchdog-snapshot-diff-system/</link>
      <guid isPermaLink="true">https://ai-frost.com/writing/odoo-watchdog-snapshot-diff-system/</guid>
      <pubDate>Sun, 17 May 2026 12:00:00 GMT</pubDate>
      <author>david@ai-frost.com (David H. Frost)</author>
      <description><![CDATA[The change-confidence problem on a live Odoo production system: you push a fix, something else regresses, you don't notice for three days. The watchdog pattern: snapshot the relevant state before the change, snapshot after, diff. The discipline that lets a one-person shop touch a live production system without breaking it.]]></description>
    </item>

    <item>
      <title>Migrating Odoo staging to production without XML-RPC</title>
      <link>https://ai-frost.com/writing/odoo-staging-to-production-without-xmlrpc/</link>
      <guid isPermaLink="true">https://ai-frost.com/writing/odoo-staging-to-production-without-xmlrpc/</guid>
      <pubDate>Sun, 10 May 2026 12:00:00 GMT</pubDate>
      <author>david@ai-frost.com (David H. Frost)</author>
      <description><![CDATA[XML-RPC is the documented Odoo external API, but it's the wrong tool for a staging-to-production migration. Why pg_dump + selective table copies + module-version-pinning beats record-by-record XML-RPC replay, with the migration plan that actually preserves IDs, attachments, and ir_model_data references on a 47,000-record catalog.]]></description>
    </item>

    <item>
      <title>Made-to-order on Odoo + Amazon: why qty=999 is intentional and product.free_qty is the wrong field</title>
      <link>https://ai-frost.com/writing/mto-odoo-amazon-qty-pattern/</link>
      <guid isPermaLink="true">https://ai-frost.com/writing/mto-odoo-amazon-qty-pattern/</guid>
      <pubDate>Sun, 03 May 2026 12:00:00 GMT</pubDate>
      <author>david@ai-frost.com (David H. Frost)</author>
      <description><![CDATA[Made-to-order businesses on Odoo have an inventory pattern that breaks naive marketplace connectors: qty=999 on the marketplace listing, free_qty=0 on the product master. Most connectors read product.free_qty as the source of truth and push the wrong number to Amazon. The result: every MTO listing goes out-of-stock on Amazon within hours of a publish cycle. The fix is reading a different field.]]></description>
    </item>

    <item>
      <title>Reconciling Amazon variation families at scale</title>
      <link>https://ai-frost.com/writing/amazon-variation-family-reconciliation/</link>
      <guid isPermaLink="true">https://ai-frost.com/writing/amazon-variation-family-reconciliation/</guid>
      <pubDate>Sun, 26 Apr 2026 12:00:00 GMT</pubDate>
      <author>david@ai-frost.com (David H. Frost)</author>
      <description><![CDATA[Amazon variation families silently drift between what Odoo thinks the parent-child set is and what Amazon shows on the product page. The SQL that surfaces drift in <15 minutes, the reconciliation pattern that handled 703/703 variation families on a 7-month engagement, and the SP-API quirks that cause the drift in the first place.]]></description>
    </item>

    <item>
      <title>Diagnosing eBay [21916735] errors on multi-variation listings</title>
      <link>https://ai-frost.com/writing/ebay-21916735-variation-listings/</link>
      <guid isPermaLink="true">https://ai-frost.com/writing/ebay-21916735-variation-listings/</guid>
      <pubDate>Sun, 19 Apr 2026 12:00:00 GMT</pubDate>
      <author>david@ai-frost.com (David H. Frost)</author>
      <description><![CDATA["Variation specifics do not match the listing's variation specifics" is eBay's most opaque error code. What [21916735] actually means, why it fires on relisted-but-edited variation parents, and the reorder-Variation-then-AddFixedPriceItem pattern that fixes it without burning the listing history.]]></description>
    </item>

    <item>
      <title>AI-augmented Odoo engineering: the practice stack that makes 3-day audits economical</title>
      <link>https://ai-frost.com/writing/ai-augmented-odoo-engineering-practice/</link>
      <guid isPermaLink="true">https://ai-frost.com/writing/ai-augmented-odoo-engineering-practice/</guid>
      <pubDate>Sun, 12 Apr 2026 12:00:00 GMT</pubDate>
      <author>david@ai-frost.com (David H. Frost)</author>
      <description><![CDATA[The actual production stack behind AI-augmented engineering work on Odoo platforms. Knowledge vault, persistent memory across sessions, module-lock hooks, watchdog snapshots before risky changes, 28 hard rules tied to real incidents, and a 143-method test suite. Each one earns its keep. The combination is what makes a 3-day audit economical and what compresses traditional 18-24-month consulting engagements to 7 months.]]></description>
    </item>

    <item>
      <title>Walmart's /v3/items pagination is broken. Here's the workaround.</title>
      <link>https://ai-frost.com/writing/walmart-v3-items-pagination-bug/</link>
      <guid isPermaLink="true">https://ai-frost.com/writing/walmart-v3-items-pagination-bug/</guid>
      <pubDate>Sun, 05 Apr 2026 12:00:00 GMT</pubDate>
      <author>david@ai-frost.com (David H. Frost)</author>
      <description><![CDATA[Roughly 30% of pages returned by Walmart Marketplace API's documented item-listing endpoint come back as duplicates. The /v3/reports?reportType=ITEM&reportVersion=v4 async endpoint works correctly. If you're syncing prices, status, or inventory against /v3/items, your catalog is systematically wrong against ground truth.]]></description>
    </item>

    <item>
      <title>Amazon productType is sticky. PATCH doesn't change it.</title>
      <link>https://ai-frost.com/writing/amazon-producttype-stickiness/</link>
      <guid isPermaLink="true">https://ai-frost.com/writing/amazon-producttype-stickiness/</guid>
      <pubDate>Sun, 29 Mar 2026 12:00:00 GMT</pubDate>
      <author>david@ai-frost.com (David H. Frost)</author>
      <description><![CDATA[Once a listing is created with a given productType classification on Amazon, you cannot change it via SP-API. Only DELETE+CREATE or a Seller Central reclassification request actually changes the underlying category. If your catalog ended up in AUTO_PART because of a sloppy initial upload, your rejection rates and Buy Box performance are quietly worse than reality suggests.]]></description>
    </item>

    <item>
      <title>Recovering 32,500 Odoo image derivatives after an ORM cascade</title>
      <link>https://ai-frost.com/writing/odoo-image-derivative-cascade-recovery/</link>
      <guid isPermaLink="true">https://ai-frost.com/writing/odoo-image-derivative-cascade-recovery/</guid>
      <pubDate>Sun, 22 Mar 2026 12:00:00 GMT</pubDate>
      <author>david@ai-frost.com (David H. Frost)</author>
      <description><![CDATA[Converted 8,623 master images to PNG-RGB to satisfy Amazon's catalog. The conversion cascade-deleted 34,488 derivative attachments. The obvious ORM-based recovery processed at 11 minutes per thousand records. The right fix was a PIL-based bulk-insert that wrote directly to ir_attachment while still triggering the derivative-compute chain in the same transaction.]]></description>
    </item>

    <item>
      <title>The Odoo + Amazon lead-time-to-ship wipe bug across FBM listings</title>
      <link>https://ai-frost.com/writing/odoo-amazon-lead-time-wipe-bug/</link>
      <guid isPermaLink="true">https://ai-frost.com/writing/odoo-amazon-lead-time-wipe-bug/</guid>
      <pubDate>Sun, 15 Mar 2026 12:00:00 GMT</pubDate>
      <author>david@ai-frost.com (David H. Frost)</author>
      <description><![CDATA[A recurring bug: every fulfillment-side PATCH to a listing silently wipes the lead-time-to-ship shipping window, dropping it to Amazon's default. Discovered across 6,838 active FBM listings on a 7-month engagement. For MTO businesses, this drives Late Shipment Rate up and Buy Box down. Diagnostic walkthrough + re-push pattern.]]></description>
    </item>

  </channel>
</rss>
