| Document | draft-fossil-submanifests-00 |
| Section | 7.2 — Peer Capability Gate (where the server places the avoid-submanifests pragma) |
| Type | Technical (the placement is given by reference to a pragma whose own placement is unspecified) |
| Status | Applied in draft-fossil-submanifests-00 (2026-10-19) |
| Reported | 2026-10-17 |
| Submitter | Dan Mestas |
| Found via | Implementing the pragma in go-libfossil from the draft text and comparing with zit's replies |
1. Summary
§7.2 places avoid-submanifests "in the same reply positions as avoid-delta-manifests". [FossilSync] gives avoid-delta-manifests a production but no position in the reply, and Fossil sends it on some replies only. Two readings follow: every reply, or only the replies on which Fossil would send avoid-delta-manifests. zit chose the first; an implementation following the second produces different replies from the same sentence. The text must fix one position.
2. The text in error
§7.2, last paragraph:
A server whose enable-submanifests setting (Section 8.1) is false sends the pragma avoid-submanifests, in the same reply positions as avoid-delta-manifests; a client receiving it MUST NOT emit S cards in commits created during the session.
3. What the implementations do
zit's server sends the pragma on every reply, normal and clone, in the
leading pragma run immediately after server-version where that is
emitted (appendAvoidSubmanifests in src/sync.zig). Its own comment
records that the draft fixes no ordinal. go-libfossil followed the
draft's wording and recorded it as requirement SM-7.2-2, to be aligned
with whatever the draft settles.
4. Corrected text
Replace the paragraph with:
A server whose enable-submanifests setting (Section 8.1) is false sends the flag pragma avoid-submanifests in every reply, in the leading pragma run, after server-version when that is emitted, on a clone reply as on any other. A client receiving it MUST NOT emit S cards in commits created during the session (Section 8.1). A peer that does not implement this specification ignores it ([FossilSync], Section 3.5).
5. Observable consequence of the uncorrected text
A client of an implementation that sends the pragma only where Fossil sends avoid-delta-manifests can complete a session with a server whose setting is false without ever receiving the pragma, and commits S cards against it. The corrected text makes the pragma present on the first reply of every session.
6. Implementations
zit already does this; no change. go-libfossil will follow the corrected text.