VersoManual.manualMain currently writes xref.json from the full TraverseState.domains map via emitXrefsJson, with no way for downstream extensions to distinguish:
- domains that are part of the public cross-reference surface
- domains that are only being used as structured traversal-time storage for local runtime/UI state
This creates two related problems:
-
Traversal domains are treated as public by default.
Extensions may reasonably use domains for internal data, but those domains are still exported into xref.json and therefore become part of the apparent public cross-reference contract.
-
xref.json is emitted pretty-printed rather than minified/compressed.
This increases output size further, but this seems secondary to the export-scope problem above.
I detected this in Verso Blueprints due to xref.json size.
VersoManual.manualMaincurrently writesxref.jsonfrom the fullTraverseState.domainsmap viaemitXrefsJson, with no way for downstream extensions to distinguish:This creates two related problems:
Traversal domains are treated as public by default.
Extensions may reasonably use domains for internal data, but those domains are still exported into
xref.jsonand therefore become part of the apparent public cross-reference contract.xref.jsonis emitted pretty-printed rather than minified/compressed.This increases output size further, but this seems secondary to the export-scope problem above.
I detected this in Verso Blueprints due to xref.json size.