- Work milestone-first: implement only the scoped behavior for the current milestone.
- Keep pull requests focused; avoid speculative feature branches folded into one PR.
- Prefer small, mergeable increments over broad framework design.
-
Behavior changes require tests.
-
Run .NET build/test checks locally before opening a PR.
-
Prefer the automation-friendly repo entrypoint:
export PATH="$HOME/.dotnet:$PATH" ./scripts/test-all.sh
-
The default script currently runs the full Firmament and Server suites plus
Aetheris.Kernel.Core.TestswithCategory!=SlowCorpusin a deterministic order. Use directdotnet test ...csprojcommands when you need broader or more targeted coverage. -
If you need a narrower repro, run the individual test projects directly:
export PATH="$HOME/.dotnet:$PATH" dotnet test Aetheris.Kernel.Firmament.Tests/Aetheris.Kernel.Firmament.Tests.csproj --logger "console;verbosity=minimal" dotnet test Aetheris.Server.Tests/Aetheris.Server.Tests.csproj --logger "console;verbosity=minimal" dotnet test Aetheris.Kernel.Core.Tests/Aetheris.Kernel.Core.Tests.csproj --logger "console;verbosity=minimal"
-
Use
Aetheris.slnxas the canonical solution file. Default automation targetsnet10.0only. Legacy Firmament V1 and FrictionLab tests are opt-in withAETHERIS_RUN_LEGACY_TESTS=1or./scripts/test-legacy.sh; seedocs/build-test-policy-net10-and-legacy-v1.md.
Frontend/display PRs must state whether they change:
- STEP import/export semantics;
- BRep topology;
- Firmament V2 lowering;
- AIR lowering;
- CIR authority;
- DisplayIR server authority;
- frontend rendering only.
- Do not introduce ad hoc epsilon constants; use
ToleranceContext+ToleranceMathand followdocs/numerics-policy.md. - Favor diagnostic/result-oriented kernel operations over exceptions for expected operation outcomes (future-facing rule).