Artifact 43f021a207faf61787e21d37520f0030defef810163aaf75c93b67436fdd8bb0:
- File
conformance/rfcs/erratum/repo-state-01-s6.2-cancel-cards-from-parent.md
— part of check-in
[8cc3d7c5e4]
at
2026-10-13 02:23:50
on branch test/conformance-01-drafts
— test(conformance): check the -01 drafts of artifact, repo-state and sync
Re-pin the conformance suite to draft-fossil-artifact-format-01, draft-fossil-repo-state-01 and draft-fossil-sync-protocol-01, copied byte for byte from zit check-in 100351e26c. The delta format has no -01 and stays on -00. The -00 errata are folded into -01 and are no longer pinned; the six -01 errata are pinned for the fossil 2.28 behavior they record. conformance/rfcs/README.md records where each copy came from.
The requirement tables are re-read against -01, and new cases cover the date tag's event time (repo-state §4.2 step 6), the Julian-day grammar, a delta manifest naming a delta, dropped reserved F cards, the trailing-punctuation retry, truncated payloads, errors N, a file card after a refused push, the end of a request after a failed login, and the answer to a gimme for private content.
No library behavior changes. Where -01 departs from fossil 2.28 and go-libfossil follows fossil (a cancelled, unparsable or 0 date tag), the cases are marked as deviations. The non-conformances the re-pin exposes are marked as gaps, tracked in #370, #371, #372, #373, #374 and #375. (user: [email protected], size: 3148) [annotate] [blame] [check-ins using] [more...]
Erratum — draft-fossil-repo-state-01 §6.2
| Document | draft-fossil-repo-state-01 |
| Section | 6.2 — Branch creation (the cancel cards) |
| Type | Technical (the normative sentence names the wrong check-in) |
| Status | Applied in draft-fossil-repo-state-01 (2026-10-12) |
| Reported | 2026-10-12 |
| Submitter | Dan Mestas |
| Found via | A reader implementing §6.2 from the text alone |
1. Summary
The normative paragraph says branch creation "MUST also cancel every pre-existing active sym-* tag on the branch-root check-in". The branch-root check-in is the one being written, so it has no pre-existing tags; the tags to cancel are the ones it would inherit from its parent. The informative paragraph added in -01 says Fossil computes the cards from the parent, but the normative sentence still points at the root, and a reader cannot tell whether the new branch's own sym-* tag is among the tags to cancel.
2. Location
§6.2, second paragraph.
3. The reference behavior
Verified against Fossil 2.28. commit --branch (src/checkin.c:2100-2112)
emits T -sym-NAME * for each propagating sym-* tag of the parent
check-in other than the new branch's own. branch new (src/branch.c:
170-183) emits one for every active sym-* tag of the parent, singletons
included. In both, the source is the parent, never the root.
4. Impact
Observable in corner cases only: an implementation that reads "on the branch-root check-in" literally emits no cancel cards, and the root then inherits the parent's symbolic names, which §6.2 says it must not.
5. Correction
- Branch creation MUST also cancel every pre-existing active sym-* tag
- on the branch-root check-in by emitting corresponding - (cancel)
- cards, because symbolic tags are otherwise inherited from a check-
- in's parent. This ensures a newly created branch does not carry
- forward the parent branch's symbolic names alongside its own.
+ Branch creation MUST also cancel every sym-* tag the branch-root
+ check-in would otherwise inherit from its parent, that is, every
+ propagating sym-* tag active on the parent other than the new
+ branch's own, by emitting a corresponding - (cancel) card on the
+ root. This ensures a newly created branch does not carry forward
+ the parent branch's symbolic names alongside its own. Cancel cards
+ for tags the root would not inherit are permitted and have no
+ effect.
Also, in the informative paragraph after "the extra cards cancel nothing on the root.":
If the parent itself carries a propagating sym-* tag of the new
branch's own name, branch new emits both the propagating card and a
cancel card for that name; this document does not define their
combined effect.
6. Rationale
Names the check-in whose tags are read, excludes the new branch's own tag
(cancelling it would undo the creation), and keeps branch new's extra
cards conformant, as the informative paragraph already describes them.
7. Verification
- Source: Fossil 2.28
src/checkin.c:2100-2112,src/branch.c:170-183.