Skip to content
DreamWeave Mod Template
reference

Extensions and evolution

Namespaced extensions, unknown data, and what a client does with a newer schema.

The core is frozen per major version#

schema_version is a major version. Within "2", the fields and meanings on these pages do not change. A new core field or a changed meaning is "3".

That makes validation strict without making evolution painful: an unknown field in the core is always an error (a typo, a buggy generator, or a document from the future), never something to guess about. New things go into extensions until they have earned a place in the next major version.

Extensions#

extensions on a release is an object keyed by namespace:

  • Short names are defined by this specification. Currently: openmw.
  • Anyone else uses a dotted name they plainly own: org.tes3mp, io.github.someone.launcher. Anything else is an error.

Each value is an object whose contents the namespace’s owner defines. A client:

  • MUST ignore a namespace it does not implement, unless it is listed in critical_extensions;
  • MUST NOT claim to have installed a release with a critical extension it does not implement;
  • MUST preserve extension data it passes along (an index, a mirror of the manifest) unchanged.

Publishers write third-party extensions in mod.toml under [extensions."org.tes3mp"]; the template copies them into the manifest verbatim.

A document a client did not expect#

The document hasA client MUST
a schema_version it supportsread it, and treat unknown core fields as an error
an older schema_version it still supportsread it under that version’s rules
a newer or unknown schema_versionstop, and say that the site uses a newer protocol; never read it as its own version
no schema_version or documenttreat it as not a DreamWeave document

Clients never infer a version from which fields happen to be present.

Deprecation#

A field is deprecated by saying so on these pages for at least one major version before it is removed. Its meaning does not change while it is deprecated. The V4 template’s per-release .modManifest (schema_version: "1") is superseded by this version; its schema stays published at its original URL for tools that read old release assets.

What version 3 is likely to contain#

Publisher keys and manifest signatures (Provenance), a statement for moving a project to a new origin, and anything from third-party extensions that several clients came to rely on. Until then, they are extensions or they do not exist.