<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>SOW 博客 on SOW</title>
    <link>https://sow.pgsty.com/zh/blog/</link>
    <description>Recent content in SOW 博客 on SOW</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    
    
    
      <lastBuildDate>Tue, 29 Sep 2026 15:14:57 +0800</lastBuildDate>
    
    
      <atom:link href="https://sow.pgsty.com/zh/blog/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
        <title>SOW v0.5.0</title>
        <link>https://sow.pgsty.com/zh/blog/release/sow-v0.5.0/</link>
        <pubDate>Tue, 29 Sep 2026 00:00:00 +0800</pubDate>
        <dc:creator>Vonng</dc:creator>
        <guid>https://sow.pgsty.com/zh/blog/release/sow-v0.5.0/</guid>
        <description>&lt;p&gt;SOW 0.5.0 主要解决已有平面 YUM 仓库接入 SOW 时的兼容问题。核心新增功能是&#xA;&lt;code&gt;sow create --metadata-timestamp SECONDS&lt;/code&gt;：替换原有元数据生成器时，发布者可以保留合法的&#xA;发布时间，兼容已有 EL7 YUM 客户端的缓存。&lt;/p&gt;</description>
      </item>
    <item>
        <title>SOW v0.4.0</title>
        <link>https://sow.pgsty.com/zh/blog/release/sow-v0.4.0/</link>
        <pubDate>Mon, 24 Aug 2026 00:00:00 +0000</pubDate>
        <dc:creator>Vonng</dc:creator>
        <guid>https://sow.pgsty.com/zh/blog/release/sow-v0.4.0/</guid>
        <description>&lt;p&gt;SOW 0.4.0 是一次面向 Managed 仓库的完整性与恢复版本：它明确了深度校验的 I/O 契约，&#xA;禁止跨无关密钥拼装 RPM 信任，提供可审计的发布目标可变配置修正路径，并补齐 v0.3 迁移与&#xA;发布中断恢复的剩余缺口。&lt;/p&gt;</description>
      </item>
    <item>
        <title>SOW v0.3.0</title>
        <link>https://sow.pgsty.com/zh/blog/release/sow-v0.3.0/</link>
        <pubDate>Mon, 10 Aug 2026 00:00:00 +0000</pubDate>
        <dc:creator>Vonng</dc:creator>
        <guid>https://sow.pgsty.com/zh/blog/release/sow-v0.3.0/</guid>
        <description>&lt;p&gt;SOW 0.3.0 围绕性能、持久性与产品边界完成了一次集中改进：Plain 仓库生成只需一遍包体处理；&#xA;Managed 仓库消除了逐对象成员查询，复用经过认证的软件包事实，并用有界组提交提升载荷。正式&#xA;交付的二进制与发布流水线也统一收敛到 SOW 实际支持的仓库工作流。&lt;/p&gt;</description>
      </item>
    <item>
        <title>协同发布决策记录</title>
        <link>https://sow.pgsty.com/zh/blog/design/coordinated-publication/</link>
        <pubDate>Fri, 14 Aug 2026 00:00:00 +0000</pubDate>
        <dc:creator>Vonng</dc:creator>
        <guid>https://sow.pgsty.com/zh/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;SOW 0.4.0 已完成最终决策&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;本记录的早期版本曾提议采用 rclone Executor、&lt;code&gt;publish --dry-run&lt;/code&gt; 与独立&#xA;&lt;code&gt;sow audit&lt;/code&gt; 命令。这些表面均未进入 0.4.0：SOW 不依赖 rclone，&lt;code&gt;publish&lt;/code&gt; 没有&#xA;&lt;code&gt;--dry-run&lt;/code&gt;，&lt;code&gt;sow audit&lt;/code&gt; 也不是有效命令。&lt;/p&gt;</description>
      </item>
    <item>
        <title>SOW v0.2.0</title>
        <link>https://sow.pgsty.com/zh/blog/release/sow-docs-launch/</link>
        <pubDate>Sat, 08 Aug 2026 00:00:00 +0000</pubDate>
        <dc:creator>Vonng</dc:creator>
        <guid>https://sow.pgsty.com/zh/blog/release/sow-docs-launch/</guid>
        <description>&lt;p&gt;SOW 0.2.0 是 &lt;a href=&#34;https://pigsty.cc&#34;&gt;Pigsty&lt;/a&gt; 出品的自包含 RPM/DEB 仓库管理器，Release&#xA;资产以单个 Go 可执行文件覆盖 Linux 与 macOS 构建目标。&lt;/p&gt;&#xA;&lt;h2 id=&#34;两种工作模式&#34;&gt;两种工作模式&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Plain 模式&lt;/strong&gt; 给目录顶层已有的 RPM 与 DEB 文件就地生成索引：&lt;/p&gt;</description>
      </item>
    <item>
        <title>SOW 设计演进：从 Route Graph 收敛到 Repository Core</title>
        <link>https://sow.pgsty.com/zh/blog/design/evolution/</link>
        <pubDate>Mon, 10 Aug 2026 00:00:00 +0000</pubDate>
        <dc:creator>Vonng</dc:creator>
        <guid>https://sow.pgsty.com/zh/blog/design/evolution/</guid>
        <description>&lt;p&gt;本文对应 2026-08-10 围绕 Repository Core 完成的 SOW 收敛决策。它从早期规划、ADR、评审、&#xA;迁移与验证目录中提炼值得维护的结论，但不会把每份过程制品都变成另一套产品文档。&lt;/p&gt;</description>
      </item>
    <item>
        <title>发布与恢复</title>
        <link>https://sow.pgsty.com/zh/blog/design/publication/</link>
        <pubDate>Sat, 08 Aug 2026 00:00:00 +0000</pubDate>
        <dc:creator>Vonng</dc:creator>
        <guid>https://sow.pgsty.com/zh/blog/design/publication/</guid>
        <description>&lt;p&gt;构建与发布是两个独立状态迁移。构建产生与 target 无关的 Generation；发布把该 Generation&#xA;应用到一个供应商前缀，并记录足以在不猜测的前提下恢复的证据。&lt;/p&gt;&#xA;&lt;h2 id=&#34;所有权拆分&#34;&gt;所有权拆分&#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 作用域&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Target prefix 作用域&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 与 Built 状态&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 与 Changeset&lt;/td&gt;&#xA;      &lt;td&gt;远端 inventory&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;retained 包体/元数据引用&lt;/td&gt;&#xA;      &lt;td&gt;grace 与删除证据&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;这项拆分避免把 filesystem 发布成功当成 R2 的证据，也避免一个 target 的半完成尝试污染另一个。&lt;/p&gt;</description>
      </item>
    <item>
        <title>系统模型</title>
        <link>https://sow.pgsty.com/zh/blog/design/model/</link>
        <pubDate>Sat, 08 Aug 2026 00:00:00 +0000</pubDate>
        <dc:creator>Vonng</dc:creator>
        <guid>https://sow.pgsty.com/zh/blog/design/model/</guid>
        <description>&lt;p&gt;SOW 刻意把模型分层：配置表达意图，数据库记录有主状态，公共树是确定性投影。&#xA;任何一层都不能悄悄替代另一层。&lt;/p&gt;&#xA;&lt;h2 id=&#34;对象层级&#34;&gt;对象层级&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-327f10ed-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;text&#34; data-td-line-count=&#34;10&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-327f10ed-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-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Workspace&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── Repository&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── Package Object&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── Dist&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   └── Membership -&amp;gt; Package Object&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── Desired 状态&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── Built Generation&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── Retained Generation 引用&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── Publication Target&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    └── Repository + provider + prefix&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h3 id=&#34;workspace&#34;&gt;Workspace&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Workspace 提供发现、配置与协调，拥有 &lt;code&gt;sow.yml&lt;/code&gt;、私有 &lt;code&gt;.sow/&lt;/code&gt; 目录和稳定锁路径；&#xA;它不是包体去重域。&lt;/p&gt;</description>
      </item>
    <item>
        <title>设计原则</title>
        <link>https://sow.pgsty.com/zh/blog/design/principles/</link>
        <pubDate>Sat, 08 Aug 2026 00:00:00 +0000</pubDate>
        <dc:creator>Vonng</dc:creator>
        <guid>https://sow.pgsty.com/zh/blog/design/principles/</guid>
        <description>&lt;p&gt;SOW 首先不是一个“元数据生成器”，而是一个所有权与状态迁移系统，只是它的输出恰好是&#xA;APT 与 RPM 仓库。下面这些原则让整套系统保持可推理。&lt;/p&gt;&#xA;&lt;h2 id=&#34;每个持久事实只有一个主人&#34;&gt;每个持久事实只有一个主人&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;每类持久事实都只有一个作用域与权威：&lt;/p&gt;</description>
      </item>
    <item>
        <title>为什么 SOW 每个仓库只保留一棵包体树</title>
        <link>https://sow.pgsty.com/zh/blog/design/single-payload/</link>
        <pubDate>Wed, 05 Aug 2026 00:00:00 +0000</pubDate>
        <dc:creator>Vonng</dc:creator>
        <guid>https://sow.pgsty.com/zh/blog/design/single-payload/</guid>
        <description>&lt;p&gt;这项决策起草于 2026-08-05 的 v0.2 发布前设计收敛阶段，并在 2026-08-08 随 SOW v0.2.0&#xA;正式交付，随后延续为 v0.3 与 v0.4 的布局契约。它记录的是架构选择，不是笼统的兼容性&#xA;PASS：协议闭包、普通软件包客户端、镜像工具、静态托管与对象存储始终属于彼此独立的证据层。&lt;/p&gt;</description>
      </item>
    <item>
        <title>v0.2 重置：用 Plain 与 Managed 取代万能控制面</title>
        <link>https://sow.pgsty.com/zh/blog/design/v02-reset/</link>
        <pubDate>Fri, 31 Jul 2026 00:00:00 +0000</pubDate>
        <dc:creator>Vonng</dc:creator>
        <guid>https://sow.pgsty.com/zh/blog/design/v02-reset/</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;开发设计线不等于发布版本&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;归档中的“v0.2”设计线最初使用 C2 View-local RPM Hardlink。这是一条真实实现过的开发线，&#xA;但在最终 v0.2.0 Tag 之前已经被单包体设计替换。正式发布的 v0.2.0 已经使用唯一正典 Pool&#xA;与纯元数据 View。&lt;/p&gt;</description>
      </item>
    <item>
        <title>SOW v0.1 到底证明了什么</title>
        <link>https://sow.pgsty.com/zh/blog/design/v01-evidence/</link>
        <pubDate>Fri, 31 Jul 2026 00:00:00 +0000</pubDate>
        <dc:creator>Vonng</dc:creator>
        <guid>https://sow.pgsty.com/zh/blog/design/v01-evidence/</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;版本绑定的证据&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;本页每项结果都只属于当时记录的 v0.1 源码、布局、Fixture 与环境，不能证明当前 SOW&#xA;的兼容性或发布就绪。&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;v0.1 归档包含 112 份日期化 Evidence Report，覆盖 2026-07-11 至 2026-07-31。把它们全部&#xA;发布成博客只会降低公共站点的可用性：其中很多是窄故障闭包、重复的 Current-source Audit，&#xA;或某个具体实现 Seam 的执行记录。&lt;/p&gt;</description>
      </item>
    <item>
        <title>SOW v0.1 决策账本：哪些被保留，哪些已退役</title>
        <link>https://sow.pgsty.com/zh/blog/design/v01-decisions/</link>
        <pubDate>Sun, 12 Jul 2026 00:00:00 +0000</pubDate>
        <dc:creator>Vonng</dc:creator>
        <guid>https://sow.pgsty.com/zh/blog/design/v01-decisions/</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;历史决策账本&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;v0.1.0 Tag 中现存 44 份 ADR，编号从 0001 到 0045，其中缺少 0006。&#xA;本文保留它们的意义，但不会把每份历史实现契约重新发布成当前指南。&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;即使实现已经退役，ADR 仍有价值：它记录团队拒绝忽略的失败模式、当时选择的边界，以及危险&#xA;操作进入执行前必须取得的证据。&lt;/p&gt;</description>
      </item>
    <item>
        <title>SOW v0.1 原始计划：软件仓库的 Git</title>
        <link>https://sow.pgsty.com/zh/blog/design/v01-program/</link>
        <pubDate>Sat, 11 Jul 2026 00:00:00 +0000</pubDate>
        <dc:creator>Vonng</dc:creator>
        <guid>https://sow.pgsty.com/zh/blog/design/v01-program/</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;历史设计记录&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;本文描述 2026-07-11 启动、并在 2026-07-31 封存为 v0.1.0 源码基线的原始计划。&#xA;Git/CAS/Route/Edge 产品模型已经退役；当前行为以 &lt;a href=&#34;https://sow.pgsty.com/zh/docs/&#34;&gt;SOW 文档&lt;/a&gt;和维护中的&#xA;&lt;a href=&#34;https://sow.pgsty.com/zh/blog/design/model/&#34;&gt;系统模型&lt;/a&gt;为准。&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;SOW 最初并不是一个小型仓库索引器。原始目标是用一个 Go 控制面，替换 Pigsty 中庞大的&#xA;Makefile + rclone 工作流，统一管理 APT、YUM 与静态制品，覆盖本地状态、包生命周期、上游&#xA;同步、Channel、View、Snapshot、双云发布、CDN 行为、商业访问控制、迁移、恢复与验证。&lt;/p&gt;</description>
      </item>
    
  </channel>
</rss>
