{
  "slug": "patchgroup",
  "term": "Patchgroup",
  "aliases": [
    "Featherstitch patchgroup"
  ],
  "definition": "A patchgroup is Featherstitch's application-visible collection of filesystem changes used to express persistence dependencies between operations.",
  "note": "In the research API, pg_depend(Q, P) orders P before Q and seals P against further engagement. P cannot be engaged again once Q depends on it, so the system has its complete change set rather than an indefinitely extendable predecessor. pg_sync requests persistence; pg_close releases the identifier. [featherstitch2007]\n\nA dependency does not make the whole application update atomic. See the existing metadata-ordering analysis for the distinction. [hesela-soft]",
  "status": "research",
  "advantages": [],
  "limitations": [
    {
      "text": "The patch abstraction itself does not provide atomic block writes.",
      "citationIds": [
        "featherstitch2007"
      ]
    }
  ],
  "related": [
    "metadata-update-dependency",
    "soft-updates",
    "persistence-ordering",
    "crash-consistency"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "citations": [
    {
      "id": "featherstitch2007",
      "title": "Frost et al. Generalized File System Dependencies. SOSP 2007, sections 3, 5 and 8; figure 11.",
      "url": "https://read.seas.harvard.edu/~kohler/pubs/frost07generalized.pdf",
      "accessed": "2026-10-24"
    },
    {
      "id": "hesela-soft",
      "title": "Hesela: Soft updates and metadata ordering",
      "url": "https://hesela.com/analyses/soft-updates-metadata-ordering/#patchgroups",
      "accessed": "2026-10-24"
    }
  ],
  "updated": "2026-10-24",
  "provenance": [
    "Source review, not a reproduction of the historical implementation. The publication year is not asserted as an invention date."
  ]
}
