Artifact f1210787f12a2ca9a62bcaea967a55967dc25f54df3f8f4871e8349f33058f94:
- File projects/fossil/briefs/artifact.md — part of check-in [3ba2975e8e] at 2026-07-07 14:05:17 on branch trunk — Split RFC workflow into neutral core and Fossil project pack (user: dmestas, size: 4535) [annotate] [blame] [check-ins using]
Artifact RFC Brief
Mission
Draft the foundational Fossil artifact document:
The Fossil Distributed Version Control System: Artifact Format
This document owns the artifact model and the core terminology the other suite documents depend on.
Front matter
- Use the title above.
- Intended status is Proposed Standard.
- The abstract must begin with the mandated transformation/ratification sentence captured in
../draft-metadata.md. - After that sentence, the abstract should state that Fossil stores global state as a content-addressed set of artifacts and that this document specifies artifact naming, card syntax, structural artifact types, and checksum computations.
Required sections
1. Introduction
Cover:
- global state as an unordered set of artifacts,
- local repository state as outside the artifact model,
- content addressing by SHA-1 or SHA3-256,
- grow-only-set / convergence framing.
2. Terminology
Own these terms for the suite:
- artifact
- content artifact
- structural artifact
- card
- manifest
- baseline manifest
- delta manifest
- cluster
- control artifact
- phantom
- projectcode
3. Naming
Specify:
- hash of raw artifact content with no prefix or suffix,
- SHA-1 as 40 lowercase hexadecimal characters,
- SHA3-256 as 64 lowercase hexadecimal characters,
- the hashed byte sequence as the artifact exactly as stored, including any PGP or SSH clearsign wrapper.
4. Card syntax
Specify:
- UTF-8 line-oriented text,
- one
0x0anewline between cards, - card structure as a type character plus space-separated arguments,
- no surplus whitespace,
- lexicographic card ordering, including the documented technote relaxation when confirmed by source,
- no duplicate cards,
- argument escaping for space, tab, newline, carriage return, formfeed, vertical tab, NUL, and backslash,
- W-card body framing by decimal byte count, with the body following the card newline and a further newline preceding the next card.
5. Structural artifact types
Provide one subsection per type, with ABNF, card multiplicities, and constraints for:
- manifest
- cluster
- control
- wiki
- ticket
- attachment
- technote
- forum
Include the card summary table and its footnotes.
6. Checksums
Specify both checksum surfaces:
- Z card: MD5 over all prior bytes up to and including the newline before
Z, excluding any clearsign prefix. - R card: MD5 over each file as sorted path, space, decimal size, newline, and content.
Include examples for both.
7. Hash policy
Specify:
- SHA-1 and SHA3-256 selection,
- hash-policy configuration,
- exact hashed byte sequence,
- the continued readability of existing SHA-1 artifacts.
8. Delta manifest reconstruction
This section is mandatory and must be procedural. It must tell a reader how to rebuild the full file set of a delta manifest from a baseline manifest and a set of sorted F cards.
State each merge case explicitly:
- baseline file sorts before next delta file → keep baseline file,
- delta file sorts before next baseline file → add delta file,
- same name and delta
Fcard has a hash → replace baseline file, - same name and delta
Fcard has no hash → delete the file; output nothing for that name.
Also state:
- an
Fcard with no hash means delete, not empty content, - the rebuilt file set is the merge output in filename order,
- the
Bcard must name a baseline manifest, not another delta manifest.
Include one worked example captured from the implementation.
Required appendices
- A. Examples — artifact-name computation, Z card, and R card examples.
- B. ABNF — collected artifact-format grammar.
- C. Anomalous artifacts and behaviours — only for cases that remain true after re-checking source and observed bytes.
Artifact-specific boundaries
- Keep local repository configuration out of scope except where the artifact model must state that it is outside the model.
- Do not re-specify delta byte encoding; cite Delta as needed.
- Do not pull sync wire behavior into this document except for narrow terminology or dependency statements.
High-risk Fossil specifics to preserve
- old SHA-1 artifacts remain valid and readable,
- the card-order relaxation is historical reader behavior, not a license to reorder arbitrarily,
- W-card bodies are byte-counted opaque content and may contain newlines,
- delta-manifest deletes are represented by
Fcards with no hash, - anomaly handling must prefer the reader rule over accidental writer quirks.