Features

How SOW works and why it is built this way: execution paths, pool projection, policy, signing, transactions, and audit.

This section explains the machinery. The Getting Started pages show you which commands to type and the Tutorials walk through complete scenarios; the pages here answer the next question — what is actually happening on disk, and why was it designed that way.

Every page opens with the invariants it protects, then shows the mechanism that enforces them. If you only need syntax, go to the Reference instead.

Which page answers which question

QuestionPage
What can SOW do, and how does it compare to createrepo_c and reprepro?Capability Overview
What exactly does sow create write, and what does it refuse to touch?Plain Flat Repositories
How do Workspace, Repository and Dist relate, and how does SOW find them?Managed Workspaces
Why is the same package byte visible in three places at once?Pool & Architecture Views
Why did my package come back as excluded or limited?Membership Policy
Which key signs what, and what happens when I rotate it?Signing Model
What happens if the machine dies mid-add?Transactions & Recovery
How do I prove the tree is safe to ship?Observability & Audit

Capability Overview

What SOW covers across both execution paths, both package formats, signing, and platforms — and how it compares to createrepo_c and reprepro.

Plain Flat Repositories

How sow create turns a directory of packages into a flat repository: scanning, staging, atomic replacement, deterministic output, and the Pigsty compatibility operation.

Managed Workspaces

The Workspace to Repository to Dist model, the fixed on-disk layout, how sow.yml drives everything, and the discovery and selection rules.

Pool & Architecture Views

One package, one owner, many views: how hardlink projection keeps YUM metadata hrefs safe for reposync, why noarch lands in every view, and why the pool must share a filesystem.

Membership Policy

How exclude and limit decide which packages stay in a Dist: rule fields, glob matching, version ordering, and why loosening a policy never resurrects a removed member.

Signing Model

Two independent trust chains, three ways to reference a key, in-process versus external signing, and what happens to your repository when you rotate a key.

Transactions & Recovery

The three journals, the two-level lock model, the fixed commit order, and what happens when a write command is killed halfway through.

Observability & Audit

One question per command: status for cheap state, check for a full proof, changes for a delivery plan, log for the operation ledger — plus how generation retention works.

Last modified: 2026-08-08: init commit (fe725aa)