<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>transaction on SOW</title>
    <link>https://sow.pgsty.com/tags/transaction/</link>
    <description>Recent content in transaction on SOW</description>
    <generator>Hugo</generator>
    <language>en</language>
    
    
    
      <lastBuildDate>Fri, 28 Aug 2026 18:32:04 +0800</lastBuildDate>
    
    
      <atom:link href="https://sow.pgsty.com/tags/transaction/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
        <title>SOW v0.3.0</title>
        <link>https://sow.pgsty.com/blog/release/sow-v0.3.0/</link>
        <pubDate>Mon, 10 Aug 2026 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/blog/release/sow-v0.3.0/</guid>
        <description>&lt;p&gt;SOW 0.3.0 is a performance, durability, and product-focus release. Plain repository&#xA;generation completes with one package-content pass. Managed repositories avoid&#xA;per-object membership queries, reuse authenticated package facts, and promote payloads&#xA;in bounded group commits. The shipping binary and its release pipeline are also&#xA;consolidated around the repository workflows that SOW supports.&lt;/p&gt;&#xA;&lt;h2 id=&#34;plain-one-package-content-pass&#34;&gt;Plain: one package-content pass&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The default unsigned &lt;code&gt;sow create&lt;/code&gt; path hashes and parses each RPM or DEB once, with&#xA;parallelism controlled by &lt;code&gt;--jobs&lt;/code&gt;. Metadata is rendered from the retained inspection&#xA;result. Before publication, SOW performs one final package-set and file-&lt;code&gt;stat&lt;/code&gt; snapshot&#xA;check, catching concurrent input changes without reading and hashing every package again.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Coordinated Publication Decision</title>
        <link>https://sow.pgsty.com/blog/design/coordinated-publication/</link>
        <pubDate>Fri, 14 Aug 2026 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/blog/design/coordinated-publication/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--important&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-circle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Decision finalized for SOW 0.4.0&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;An earlier version of this record proposed an rclone executor, &lt;code&gt;publish --dry-run&lt;/code&gt;, and a&#xA;separate &lt;code&gt;sow audit&lt;/code&gt; command. None of those surfaces shipped in 0.4.0. SOW has no&#xA;rclone dependency, &lt;code&gt;publish&lt;/code&gt; has no &lt;code&gt;--dry-run&lt;/code&gt;, and &lt;code&gt;sow audit&lt;/code&gt; is not a command.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;This page preserves the decision boundary so a historical proposal cannot be mistaken for the&#xA;current product. The normative behavior is documented in&#xA;&lt;a href=&#34;https://sow.pgsty.com/docs/command/publish/&#34;&gt;&lt;code&gt;sow publish&lt;/code&gt;&lt;/a&gt; and&#xA;&lt;a href=&#34;https://sow.pgsty.com/blog/design/publication/&#34;&gt;Publication &amp;amp; Recovery&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Design Records</title>
        <link>https://sow.pgsty.com/blog/design/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/blog/design/</guid>
        <description>&lt;p&gt;Design records explain why SOW adopted a contract, what it rejected, and which evidence&#xA;boundary applies. They are ordered by &lt;code&gt;date&lt;/code&gt;, which records when the rationale first took&#xA;its maintained form; &lt;code&gt;lastmod&lt;/code&gt; records later editorial or implementation-alignment&#xA;updates. Release notes and source tags remain authoritative for when behavior actually&#xA;shipped.&lt;/p&gt;&#xA;&lt;h2 id=&#34;authority-and-evidence&#34;&gt;Authority and evidence&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;This column is the maintained authority for design rationale and decision history. Current&#xA;commands, configuration, and operator behavior remain in &lt;a href=&#34;https://sow.pgsty.com/docs/&#34;&gt;SOW Docs&lt;/a&gt;; exact behavior&#xA;of a historical release remains attached to that release&amp;rsquo;s source tag and&#xA;&lt;a href=&#34;https://sow.pgsty.com/blog/release/&#34;&gt;release note&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Publication &amp; Recovery</title>
        <link>https://sow.pgsty.com/blog/design/publication/</link>
        <pubDate>Sat, 08 Aug 2026 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/blog/design/publication/</guid>
        <description>&lt;p&gt;Building and publishing are separate state transitions. A build produces a target-neutral&#xA;Generation. Publication applies that Generation to one provider prefix and records enough&#xA;evidence to recover without guessing.&lt;/p&gt;&#xA;&lt;h2 id=&#34;ownership-split&#34;&gt;Ownership split&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Repository-scoped&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Target-prefix-scoped&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Package Object&lt;/td&gt;&#xA;      &lt;td&gt;Publication Attempt&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Desired and Built state&lt;/td&gt;&#xA;      &lt;td&gt;Applied Checkpoint&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Generation and Changeset&lt;/td&gt;&#xA;      &lt;td&gt;Remote inventory&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Retained payload/metadata references&lt;/td&gt;&#xA;      &lt;td&gt;Grace and deletion evidence&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;The split prevents a successful filesystem publication from being treated as proof about&#xA;R2, and prevents one target&amp;rsquo;s partial attempt from contaminating another target.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Transactions &amp; Recovery</title>
        <link>https://sow.pgsty.com/docs/feature/transactions/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/docs/feature/transactions/</guid>
        <description>&lt;p&gt;This page explains how Managed mode prevents a live pointer from naming missing content&#xA;and how it coordinates SQLite state with filesystem changes.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-invariant&#34;&gt;The invariant&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;On a supported local POSIX filesystem, a client following a Managed protocol pointer&#xA;reads a complete old view or a complete new view, including after interruption.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Everything below exists to hold that line: metadata is fully staged and verified before anything public moves, the pointer swap is the commit decision, and every operation records enough durable evidence that the next command can finish it or undo it without guessing.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Observability &amp; Audit</title>
        <link>https://sow.pgsty.com/docs/feature/audit/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/docs/feature/audit/</guid>
        <description>&lt;p&gt;Each read surface answers a different question.&lt;/p&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Command&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Question&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: right&#34;&gt;Writes?&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;status&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;What state is the Repository in?&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: right&#34;&gt;no&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;check&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Does the selected Repository satisfy the complete delivery contract?&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: right&#34;&gt;no&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;changes&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;What physical files differ between Built Generations?&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: right&#34;&gt;no&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;log&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Which operations and dispositions were recorded?&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: right&#34;&gt;no&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;retain ls&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Which Generations are explicit local GC roots?&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: right&#34;&gt;no&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h2 id=&#34;status-cheap-state&#34;&gt;&lt;code&gt;status&lt;/code&gt;: cheap state&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-e24b4625-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-e24b4625-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sow status -r local&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;It reports the Desired revision, Built Generation, dirty Dists, pending payload counts,&#xA;lock state, and &lt;code&gt;ready_to_copy&lt;/code&gt;. It does not hash the public tree, recover an operation, or&#xA;build.&lt;/p&gt;</description>
      </item>
    
  </channel>
</rss>
