Record self-mocking design: services mock themselves, no separate stubs
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013kj58Jugkic783b8ZrtTVZ
This commit is contained in:
@@ -55,3 +55,27 @@ to be a separate process, that becomes a refactor rather than a rewrite.
|
|||||||
| Downstream to app | simplex push stream, lossy-tolerant | app connects |
|
| Downstream to app | simplex push stream, lossy-tolerant | app connects |
|
||||||
| Upstream from app | simplex request/response, acknowledged | app |
|
| Upstream from app | simplex request/response, acknowledged | app |
|
||||||
| Route requests onward | request/response, HTTP | this service |
|
| Route requests onward | request/response, HTTP | this service |
|
||||||
|
|
||||||
|
## Self-mocking
|
||||||
|
|
||||||
|
The input side sits behind an interface. The real implementation subscribes to the
|
||||||
|
bus; the mock synthesises vehicle state. Everything from aggregation outward — the
|
||||||
|
boundary protocol, serialisation, per-client queues, reconnection — is identical in
|
||||||
|
both, so there is no second implementation of the contract to drift.
|
||||||
|
|
||||||
|
Same shape as `svc-nav`'s routing provider. A service that can produce its own
|
||||||
|
inputs needs no external stub, and `tool-mock` deliberately does not contain one.
|
||||||
|
|
||||||
|
This is what makes `app-flutter` developable against a single binary with no
|
||||||
|
broker, no fixtures and no Jetson.
|
||||||
|
|
||||||
|
Two rules constrain it:
|
||||||
|
|
||||||
|
- **The mock must degrade.** Missing, stale and implausible signals are the normal
|
||||||
|
state in a car. A mock that always emits a complete, fresh, plausible dataset
|
||||||
|
trains the app to assume something false, and the assumption breaks on the first
|
||||||
|
real drive.
|
||||||
|
- **Mock data must be visibly mock downstream.** Synthetic vehicle readings
|
||||||
|
indistinguishable from real ones, on a display in a moving car, is a safety
|
||||||
|
problem rather than a tidiness one. The mode is off by default and flagged in the
|
||||||
|
stream, not merely in a log line at startup.
|
||||||
|
|||||||
Reference in New Issue
Block a user