Blame
|
1 | # Engineering Standards |
||||||
| 2 | ||||||||
| 3 | This page establishes baseline expectations for Soatrix-maintained software. Individual products may impose stronger requirements. |
|||||||
| 4 | ||||||||
| 5 | ## Design |
|||||||
| 6 | ||||||||
| 7 | - Prefer explicit interfaces and dependency direction over cross-module reach-through. |
|||||||
| 8 | - Keep stable identity separate from presentation/rendering identifiers. |
|||||||
| 9 | - Validate external or authored input at the boundary before it enters runtime state. |
|||||||
| 10 | - Prefer immutable published state where practical; publish replacements atomically rather than mutating a live registry piecemeal. |
|||||||
| 11 | - Make compatibility claims explicit and testable. A version range is not equivalent to a validated exact-version matrix. |
|||||||
| 12 | ||||||||
| 13 | ## Changes |
|||||||
| 14 | ||||||||
| 15 | 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. |
|||||||
| 16 | ||||||||
| 17 | ## Failures |
|||||||
| 18 | ||||||||
| 19 | - Fail startup when continuing would publish corrupt or unsupported state. |
|||||||
| 20 | - For reloadable systems, build and validate candidate state before replacing known-good state. |
|||||||
| 21 | - Error messages should identify the invalid input or dependency chain rather than masking it with a generic failure. |
|||||||
| 22 | ||||||||
| 23 | ## Dependencies |
|||||||
| 24 | ||||||||
| 25 | - Pin or constrain dependencies deliberately. |
|||||||
| 26 | - Isolate platform/version-specific APIs behind adapters when multiple runtime generations are supported. |
|||||||
| 27 | - Avoid leaking implementation-specific APIs into common modules unless the common contract genuinely depends on them. |
|||||||
| 28 | ||||||||
| 29 | ## Testing |
|||||||
| 30 | ||||||||
| 31 | 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. |
|||||||