Artifact 74f367f9dc2db4c5c877ec03738b2036b17c4a4fee68f3f1adae7183c9e1cb06:
- File docs/rfcs/erratum/submanifests-00-s8.2-provisional-phase-retired.md — part of check-in [09171dd2f0] at 2026-10-19 20:09:52 on branch trunk — submanifests §1.3, §8, §10: the provisional phase retires; the flag-day rule moves to §8.1 and §8.2 is removed (user: dmestas, size: 3756) [annotate] [blame] [check-ins using] [more...]
Erratum — draft-fossil-submanifests-00 §1.3 / §8 / §8.2 / §10
| Document | draft-fossil-submanifests-00 |
| Section | 1.3 — Status of This Specification; 8 — Deployment; 8.1 — Emission Gate; 8.2 — Provisional-Phase Rules; 10 — Security Considerations |
| Type | Technical (the provisional phase is over; its rules retire, and the one permanent rule among them moves to §8.1) |
| Status | Applied in draft-fossil-submanifests-00 (2026-10-19) |
| Reported | 2026-09-22 |
| Submitter | Dan Mestas |
| Found via | Sub-manifests shipped in zit and go-libfossil while the draft and the CLI still told operators the format was provisional |
1. Summary
§8.2 declared every repository holding an S-bearing artifact a disposable test fixture, forbade syncing one with anything that was not, and told implementers to expect any element of the format to change without migration. That was the cost of an unstable format. Two implementations now write, read and exchange sub-manifests, and the errata of this document record the format settling rather than changing. The blanket rules retire. One of them is not provisional at all: because the card alphabet is closed, a reader that does not announce sub-manifest support sees its history stop at the first tree manifest, so the setting must not be enabled on a repository such a reader serves. That rule moves to §8.1 as a permanent deployment fact. §1.3's forward reference to a -01 revision of [FossilArtifact], §8's "three layers" and §10's closing paragraph all leaned on §8.2 and are reworded.
2. The text in error
§1.3: "This document folds into a -01 revision of [FossilArtifact] only after further implementation experience; until then [FossilArtifact] remains authoritative for deployed behavior, and the provisional-phase rules of Section 8.2 apply to every repository containing an S-bearing artifact."
§8: "Deployment is therefore gated at three layers: emission (Section 8.1), transfer (Section 7.2), and, during the provisional phase, an outright prohibition on synchronization (Section 8.2)."
§8.2, the whole section.
§10: "during the provisional phase the prohibition of Section 8.2 removes the exposure entirely."
3. Corrected text
§1.3, in place of the quoted sentence:
This document is authoritative for sub-manifests and the S card; [FossilArtifact] remains authoritative for everything this document does not amend. The two fold into one text when [FossilArtifact] is next revised.
§8: "Deployment is therefore gated at two layers: emission (Section 8.1) and transfer (Section 7.2)."
§8.1, appended:
The setting MUST NOT be enabled on a repository that any implementation not announcing sub-manifest support (Section 7.2) serves. The card alphabet is closed, so such a reader rejects the first tree manifest as structural and its view of the history stops there, visibly; the gates of Section 7.2 refuse it the artifact but cannot give it the check-in. Enabling is therefore a decision for every reader of a repository at once, not for one writer.
§8.2 is deleted, and its entry leaves the table of contents. §8.1's "pre-S client" becomes "a client that does not read sub-manifests".
§10: "The gates of Section 7.2 and Section 8 keep readers that do not announce sub-manifest support from encountering S-bearing artifacts in normal operation."
4. Implementations
zit's help, enable warning and export-git notice repeated §8.2's claims to operators; they change with this erratum. The export-git notice retires, since a Git mirror carries no S card and the only thing the notice warned of was the format changing. go-libfossil carries no provisional-phase text.