Automated release from CI pipeline
Changes:
feat(ruview-mcp): M3+M4 — schema validation + train_count wired (#708)
- Add validate.ts: validateCsiWindow (56×20 shape) + validateSensingLatestResponse
(schema_version 2 pin per ADR-101); returns actionable errors on schema drift - Wire csi-latest.ts: call validateSensingLatestResponse after every sensingGet;
return {ok:false,warn:true,raw_response,...} on mismatch so agents can inspect - Fix csi-latest.ts: subcarriers now reads amplitudes.length (not hardcoded 56)
- Add tests/validate.test.ts: 5+5 = 10 tests covering valid, null, wrong shape,
schema_version 3, missing captured_at, window error propagation - All 16 tests pass (validate × 10 + tools × 6); build clean
Docker Image:
ghcr.io/ruvnet/RuView:2a2f16a380b93552030387677d9f3bfe30af8f4c