Clarify and strengthen state invariant tests
This commit is contained in:
17
docs/product/data-consistency-regressions.md
Normal file
17
docs/product/data-consistency-regressions.md
Normal file
@@ -0,0 +1,17 @@
|
||||
# Data consistency regression suite
|
||||
|
||||
`npm test` is the required fast regression gate. It uses generated fixtures, temporary directories, loopback HTTP servers and a fake sing-box executable; it does not require internet, root or an installed sing-box.
|
||||
|
||||
The protected invariants are:
|
||||
|
||||
| Invariant | Regression coverage |
|
||||
|---|---|
|
||||
| One backend canonical snapshot owns servers and desired/applied selection | `test/data-consistency-regression.test.js`, `test/server/state-contract.test.js` |
|
||||
| Revisions increase and an older response cannot replace newer state | `test/server/state-contract.test.js`, `test/web/harbor-state.test.js` |
|
||||
| Provider failure, parser failure and runtime failure do not partially commit subscription state | `test/server/state-contract.test.js` |
|
||||
| Atomic write failure preserves the last file and corrupt JSON preserves its original bytes | `test/server/state-store.test.js` |
|
||||
| Legacy state migrates with an explicit result for ambiguous selection | `test/server/state-store.test.js` |
|
||||
| Stable IDs survive reorder and duplicate labels for 1, 30 and 300 servers | `test/data-consistency-regression.test.js`, `test/server/subscription.test.js` |
|
||||
| Initial control outage does not invent domain state; repeated failures retain and mark the last snapshot stale | `test/web/harbor-state.test.js` |
|
||||
|
||||
Fixtures are generated in test code to keep the suite small and deterministic. Packet-level networking, browser screenshots and accessibility automation are intentionally deferred to their dedicated roadmap tasks.
|
||||
Reference in New Issue
Block a user