grid-rows: 2 grid-gap: 40 test_run: { label: "Test run" grid-rows: 2 grid-gap: 100 go_binary: sanderling (Go) { direction: right bundler: Bundler\nesbuild verifier: Verifier\ngoja + LTL runner: Runner driver: Driver trace: Trace writer\nJSONL + PNG bundler -> verifier verifier <-> runner runner -> driver runner -> trace } platform: { label: "" direction: right style.stroke-width: 0 style.fill: transparent device: Emulator / device { sdk: sanderling-sdk\npause / state\ncoverage / logs } sidecar: Maestro sidecar (JVM) { maestro: maestro-client } sidecar.maestro -> device.sdk: UIAutomator } go_binary.driver -> platform.sidecar.maestro: gRPC go_binary.runner -> platform.device.sdk: Unix socket } viewer: { label: "Inspect" grid-columns: 4 grid-gap: 40 left_pad: "" { style.stroke-width: 0 style.fill: transparent style.opacity: 0 } web: Web UI (React) inspect: sanderling inspect\nHTTP + SSE runs: runs/ { shape: cylinder } runs -> inspect inspect -> web } test_run.go_binary.trace -> viewer.runs