ModMetadata and ModVersionMetadata validate spec_version only at the bottom: both throw below 1 and accept anything above.
The storage mappers additionally reject 0 as the pre-model shape.
Nothing compares the value to a ceiling, so a document stamped spec_version = 7 constructs cleanly and flows through search, storage and CompositeModRepository as if fully understood.
RFC 0031: "Metadata a client cannot interpret, including a spec_version newer than it implements, renders as an entry in an unknown state; it is never silently dropped."
Related: #31 adds spec_version to ModPackMetadata, which carries none today. Whichever lands second consumes the same constant.
ModMetadataandModVersionMetadatavalidatespec_versiononly at the bottom: both throw below 1 and accept anything above.The storage mappers additionally reject 0 as the pre-model shape.
Nothing compares the value to a ceiling, so a document stamped
spec_version = 7constructs cleanly and flows through search, storage andCompositeModRepositoryas if fully understood.RFC 0031: "Metadata a client cannot interpret, including a
spec_versionnewer than it implements, renders as an entry in an unknown state; it is never silently dropped."Borea.Corenaming the highest spec version Borea implements, which is 1.MetadataEnumMapper, where every parse falls through to anUnknownmember rather than throwing. Do not followModMetadataMapper.FromDto, which throws for the missing-spec-version case and is the opposite of what is wanted here.specVersion: 1literals inSpaceDockModRepositorywith the constant.Related: #31 adds
spec_versiontoModPackMetadata, which carries none today. Whichever lands second consumes the same constant.