<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Kerbwell changelog</title>
    <link>/changelog/</link>
    <description>One entry per shipped release, describing visible behaviour.</description>
    <language>en-AU</language>
    <item>
      <title>A status page that works when the product does not, and published response times</title>
      <link>/changelog/2026-08-18-status-page-and-severities/</link>
      <guid isPermaLink="false">changelog-2026-08-18-status-page-and-severities</guid>
      <pubDate>Mon, 17 Aug 2026 14:00:00 GMT</pubDate>
      <description>The status page is served from a separate host with no scripts and no requests back to the platform, and every support item now carries the first-response target it was given at the moment it was raised.</description>
    </item>
    <item>
      <title>Every message now carries its own delivery evidence</title>
      <link>/changelog/2026-08-17-outbound-ledger/</link>
      <guid isPermaLink="false">changelog-2026-08-17-outbound-ledger</guid>
      <pubDate>Sun, 16 Aug 2026 14:00:00 GMT</pubDate>
      <description>The outbound ledger records one row per message with the response that put it in its state, and a message still queued reads as queued rather than resolving into a tick.</description>
    </item>
    <item>
      <title>Import runs reconcile their own counts</title>
      <link>/changelog/2026-08-16-import-reconciliation/</link>
      <guid isPermaLink="false">changelog-2026-08-16-import-reconciliation</guid>
      <pubDate>Sat, 15 Aug 2026 14:00:00 GMT</pubDate>
      <description>An import now finishes with a count reconciliation per record type, and every difference between the file and the platform carries a named reason.</description>
    </item>
  </channel>
</rss>
