Artifact 1bea75dc6f6fb9727deebd5e1b780b21d0f9bc20e287dea49ac8bf70be289f77:
- File docs/rfcs/erratum/submanifests-00-s6.3-current-checkin-without-checkout.md — part of check-in [131950fe84] at 2026-10-19 17:11:31 on branch trunk — submanifests §6.3: the current check-in is the checkout's, or the newest main-branch leaf when there is no checkout (user: dmestas, size: 2460) [annotate] [blame] [check-ins using]
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.