Requirements
- .NET 8 SDK. The repository’s
global.jsonaccepts 8.0.100 or a later .NET 8 feature band. - A Celeste/Everest install for live verification.
- Access to this repository checkout.
- Celeste references available through the normal Everest mod layout or an explicit
CelestePrefix.
Build
CelestePrefix if the mod is not inside a normal Everest Mods/Akron/Source layout or if references live elsewhere.
Run tests
Use the focused test for the change when possible:Formatting
Format changed C# project files before opening a pull request:CI reference archive
GitHub Actions does not commitlib-stripped/ into the repository. CI build and test jobs need the AKRON_CELESTE_REFS_URL secret in the release-build environment to point at a zip or tar.gz archive containing a complete lib-stripped reference directory. The AKRON_CELESTE_REFS_SHA256 variable in that environment must contain the archive’s lowercase SHA-256 digest.
Set the optional AKRON_CELESTE_REFS_TOKEN secret in the same environment only when the archive URL requires bearer-token auth.
CI fails when either the URL secret or SHA-256 variable is missing. Release packaging uses the same verified archive and fails fast when its configuration is incomplete.
Safety
- Do not commit personal Celeste paths, local captures,
.envfiles, or tokens. - Use fixtures and focused tests before reaching for live host state.
- When live verification is required, record the map, visible policy/status state, setup state, command or interaction, and what the evidence proves.
First contribution loop
1
Read the relevant public docs
Start with the user-facing page for the behavior you are changing.
2
Find the source layer
Identify whether the change touches policy, overlay rows, settings, runtime behavior, persisted setup state,
.akr archives, archive contracts, or tests.3
Add or update tests
Add focused tests for classification, defaults, clamps, archive shape, or non-trivial behavior.
4
Build and verify
Run formatting checks, targeted tests, build, and live verification when the behavior is visual, timing-sensitive, input-driven, or map-dependent.
5
Update docs
Update user-facing docs and contributor architecture notes when behavior, policy, or contracts change. Add a
CHANGELOG.md entry when the change is notable and user-facing.