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 ```diff - 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`.