Skip to content
zit Artifact [1bea75dc6f]
Login

Artifact [1bea75dc6f]

Artifact 1bea75dc6f6fb9727deebd5e1b780b21d0f9bc20e287dea49ac8bf70be289f77:


# Erratum — draft-fossil-submanifests-00 §6.3

| | |
|---|---|
| **Document** | `draft-fossil-submanifests-00` |
| **Section** | 6.3 — Parameter Selection and Pinning (the "current check-in" the analysis reads) |
| **Type** | Technical (the term is undefined for a repository with no checkout) |
| **Status** | Applied in `draft-fossil-submanifests-00` (2026-10-19) |
| **Reported** | 2026-10-18 |
| **Submitter** | Dan Mestas |
| **Found via** | Implementing repository-level enable in go-libfossil, which has no checkout to read |

## 1. Summary

§6.3 analyzes "the canonical file-entry list of the repository's current
check-in -- the parent of the next commit". A server, or a library caller
enabling at repository level, has no checkout and so no parent of a next
commit. The draft gives such a caller nothing to analyze, and "if no
current check-in exists, automatic selection has no result" would refuse
every repository-level enable. go-libfossil analyzes the tip of the main
branch; the draft should define the term that way.

## 2. The text in error

§6.3: "To select k automatically, the implementation analyzes the
canonical file-entry list of the repository's current check-in -- the
parent of the next commit -- resolved once at the start of the analysis.
If no current check-in exists, automatic selection has no result."

## 3. What the implementations do

zit enables from a checkout and analyzes the check-in the checkout is on
(`submanifestNamesFromCheckout` in `src/cmd/checkout.zig`); it has no
repository-level enable. go-libfossil's repository-level enable analyzes
the tip of the main branch.

## 4. Corrected text

Replace the two sentences with:

> To select k automatically, the implementation analyzes the canonical
> file-entry list of the repository's current check-in, resolved once at
> the start of the analysis. In a checkout, the current check-in is the
> one the checkout is on, the parent of the next commit. With no
> checkout, it is the newest leaf of the main branch, by the leaf rule of
> [FossilRepoState]. If the repository has no check-in, automatic
> selection has no result.

## 5. Observable consequence of the uncorrected text

Two implementations enabling the same repository without a checkout
analyze different check-ins, or one refuses, and the pinned values can
differ.

## 6. Implementations

zit's behaviour is the checkout case and is unchanged. go-libfossil
already analyzes the main-branch tip.