Release & Updates
Module Artifact Contract
Per-module Native, NeoForge, Standalone, sources, and descriptor file expectations.
Module Artifact Contract
Every first-party module in knoxhack/ECHO-Modules is released as a set of runtime-specific files. The launcher and Ashfall editions do not treat a module as one vague blob; they resolve the exact artifact family required by the selected edition.
Required Files Per Module
For module <module> at version <version>, release generation produces:
| File | Consumer |
| --- | --- |
| <module>-<version>-neoforge.jar | Ashfall NeoForge Edition |
| <module>-<version>.echo-addon | Ashfall Native Edition |
| <module>-<version>-standalone.jar | Ashfall Standalone Edition |
| <module>-<version>-sources.jar | Developers, traceability, debugging |
| <module>-<version>-content-graph.json | Launcher, runtimes, review tools (Release-Index content-graph artifact role) |
| content-graph-evidence.json | Release Index, Website, Mobile Studio, runtime QA gates (Release-Index content-graph-evidence artifact role) |
| META-INF/echo.mod.json | All runtime artifacts |
| META-INF/neoforge.mods.toml | NeoForge artifacts when applicable |
| echo-addon-package.json | .echo-addon packages when applicable |
| .echo/content-graph/* | Embedded in every runtime archive; mirrors the content-graph sidecar |
Source Ownership
ECHO-Modules/addons/<module> owns the source, README.md, docs/artifacts.md, and descriptor files. The website module catalog is generated from src/main/resources/META-INF/echo.mod.json, so the public catalog changes only when module source metadata changes.
Launcher Ownership
The launcher does not need a full pack archive when an individual changed module asset can be resolved. It reads the selected pack manifest, expands moduleRequirements, chooses the correct artifact family, compares installed files by version/size/hash, then downloads only missing or changed module files.
Release Index Ownership
The Release Index is the public catalog layer. It maps each Ashfall edition to its pack metadata, release assets, checksums, and module artifact family so the launcher and website can agree on the same download surface.
When available, it also exposes the release-root content-graph-evidence.json artifact so public surfaces can show the same graph, module, node, edge, feature, export-plan, and Hytale blocker counts without parsing every module sidecar.