Engineering Standards
This page establishes baseline expectations for Soatrix-maintained software. Individual products may impose stronger requirements.
Design
- Prefer explicit interfaces and dependency direction over cross-module reach-through.
- Keep stable identity separate from presentation/rendering identifiers.
- Validate external or authored input at the boundary before it enters runtime state.
- Prefer immutable published state where practical; publish replacements atomically rather than mutating a live registry piecemeal.
- Make compatibility claims explicit and testable. A version range is not equivalent to a validated exact-version matrix.
Changes
A change is ready to merge when its behavioural contract is understood, relevant tests are added or updated, and operations/documentation are changed where needed. Compatibility changes should include regression coverage at the boundary they introduce.
Failures
- Fail startup when continuing would publish corrupt or unsupported state.
- For reloadable systems, build and validate candidate state before replacing known-good state.
- Error messages should identify the invalid input or dependency chain rather than masking it with a generic failure.
Dependencies
- Pin or constrain dependencies deliberately.
- Isolate platform/version-specific APIs behind adapters when multiple runtime generations are supported.
- Avoid leaking implementation-specific APIs into common modules unless the common contract genuinely depends on them.
Testing
Use multiple layers where appropriate: unit tests for rules, integration tests for component boundaries, and real-runtime smoke tests for compatibility claims that mocks cannot establish.