Commit Graph
132 Commits
Author SHA1 Message Date
rUv 9fe3207bb7 feat(evaluation): gate transition behavior 2026-10-13 12:07:04 -07:00
rUv 56b0085b0b fix(training): bind compact parent lineage to validated bytes 2026-10-13 10:57:40 -07:00
rUv 8282a6b21e security: bind inference artifact generations 2026-10-13 10:02:54 -07:00
rUv d3586c9051 security: pin inference artifact directory 2026-10-13 09:01:38 -07:00
rUv 2f6191bd46 security: detect inference artifact mutation 2026-10-13 07:53:05 -07:00
rUv b710fdb29d docs: clarify bounded artifact read 2026-10-13 06:52:50 -07:00
rUv 0d790ef08b security: pin inference artifact descriptors 2026-10-13 06:52:24 -07:00
rUv b47c165cb0 security: cap confirmed CSI snapshots at 200 MB 2026-10-13 05:53:00 -07:00
rUv ac9ea02431 security: snapshot confirmed CSI bundles before decode 2026-10-13 04:56:18 -07:00
rUv 353c3ed062 fix(training): bind confirmed NPZ decode to one descriptor 2026-10-13 03:58:17 -07:00
rUv 8ee99781ce Reject changed manifests before dataset decode 2026-10-13 02:58:08 -07:00
rUv 4a6e76b771 Bind confirmation plans to dataset records 2026-10-13 02:03:13 -07:00
rUv accaf7fcce Exercise confirmation hash mismatch path 2026-10-13 01:03:04 -07:00
rUv 464cc3b59e Enforce hash-pinned confirmation training gate 2026-10-13 01:01:11 -07:00
rUv 93538bead1 Locate CSI coverage minima by frame and native antenna 2026-10-12 22:02:05 -07:00
rUv 34eb522ec8 Add streaming whole-recording CSI quality diagnostics 2026-10-12 19:57:19 -07:00
rUv 47589e00f6 Add bounded Zenodo CSI sample intake and native format diagnostics 2026-10-12 19:05:30 -07:00
rUv 606de9f64f Bind CSI intake checks to file descriptors and enforce actual byte budget 2026-10-12 18:52:41 -07:00
rUv 721a094f09 Add independent confirmation metadata preflight and adversarial tests 2026-10-12 18:44:16 -07:00
rUv 5a97ebe09e Add frozen predictive transfer experiment and record failed utility gate 2026-10-12 18:31:53 -07:00
rUv acddd777a7 Add gated active evidence loop, KGE proposals and predictive CSI experiments
Record ADRs 421 to 423, actual dependency integration, bounded input and evidence authority, duration evaluation, security regressions and measured receipts. Preserve negative predictive and caching results; no model promotion.
2026-10-12 18:19:31 -07:00
rUv e2cff64cb3 feat(inference): validate explicit native ACF reduction runtime 2026-10-12 17:52:37 -07:00
rUv ab25f5466d feat(inference): add validated optional mixed classifier runtime 2026-10-12 17:39:38 -07:00
rUv e652359c5c perf(inference): accelerate retained ACF runtime with verified direct reductions 2026-10-12 17:31:26 -07:00
rUv 46895cc603 test(inference): preserve buffered ACF prototype and failed speed gate 2026-10-12 17:28:06 -07:00
rUv b39a0b2a2c feat(training): compact retained ACF model and record spatial ablation 2026-10-12 17:22:34 -07:00
rUv 4ec8a86f5d Audit activity labels and evaluate native CSI resolution
Preserve native source precision and exact pooled controls under the original
training and development split. Add an 18-configuration resolution ablation,
input provenance and artifact tests, and measured results retaining the
existing ACF model. Document unresolved semantic labels and confirmation limits.
2026-10-12 17:11:10 -07:00
rUv 56e5ae1a6d Explore RuField and WorldGraph with bounded CSI context experiments
Retain the stronger ACF model after an 18-configuration temporal ablation
regresses on development data. Add a pinned actual-library integrity probe,
strict bounded replay inspection, measured synthetic overhead, and CI tests.
Preserve source hashes and separate software integrity from sensing accuracy.
2026-10-12 16:50:20 -07:00
rUv 6e5c72fc93 Retain motion ACF research candidate with worst-room selection and measured gates 2026-10-12 16:29:27 -07:00
rUv b7b76de1f3 feat(csi): freeze source-backed motion ablation and record rejected mean-score candidate 2026-10-12 16:22:53 -07:00
rUv b3937732e5 perf(csi): add verified buffered inference runtime and parity benchmark 2026-10-12 16:11:27 -07:00
rUv d8c4ff9032 perf(training): halve seeded RFF model state with verified float32 inference 2026-10-12 16:00:45 -07:00
rUv 1f3039ef26 perf(training): encode fixed RFF maps by seed and record rejected blend 2026-10-12 15:49:41 -07:00
rUv dd9b74af3a Add frozen nonlinear CSI search and audited SOTA evidence 2026-10-12 15:09:17 -07:00
rUv 1a52823c82 feat(training): improve development macro F1 with isolated spectral model search 2026-10-12 15:00:22 -07:00
rUv 648d180e19 feat(training): public CSI activity optimization with leakage guards and measured inference folding 2026-10-12 14:53:12 -07:00
rUv 2d8d88a1ef feat(training): add reproducible CSI encoder harness and evidence contracts 2026-10-12 14:42:31 -07:00
ruv 2c1222789d Merge remote-tracking branch 'origin/main' into codex/toolkit-release-20261012 2026-10-12 11:49:52 -04:00
ruv 3620abff12 fix(toolkit): integrate capture and device corrections for 0.9.2
Integrate reviewed source PRs #2201-#2223, #2225-#2231, #2235-#2240, #2242 and #2243 (firmware README hunks remain in #2247). Regenerate one package manifest after integration, validate native Windows test execution, bound MTK listener startup, support official C6 release bundles, and retain stronger release metadata gates.
2026-10-12 11:49:52 -04:00
ruv 8a140c1906 fix(docs): harden README visual XML and path validation 2026-10-10 13:41:26 -04:00
rUv 4696804b23 docs: add Cognitum-style animated RuView visual system 2026-10-09 05:45:16 -07:00
ruv a72174c571 fix: review findings and cross-PR integration fixes for aepod release set
- mediatek: cap per-device maps at 64 with oldest-first eviction; clamp --csi-ring
- training: mark live-buffer fallback runs degraded (data_source/degraded) instead of plain "completed"
- multistatic: skip CIR blend when any frame in the cohort has a placeholder phase
- groundtruth: median count baseline; radar labels carry evidence=CLAIMED
- spatial-evidence: default proof CODE; MEASURED requires a reproducer
- scripts: collect-ground-truth guards non-JSON replies and unreadable token files
- docker: entrypoint accepts 1/true/yes/on for RUVIEW_UDP_INSECURE_LAN
- adaptive model: untrack v2/data/adaptive_model.json (#2135)
- docs: ADR-379 evidence tags, RUNBOOK/README OTA wording, NOTICE for vendored MediaTek patch
- tests: fresh timestamps for privacy tests (#2119 staleness), plan_source Result handling,
  drop obsolete qualcomm-binds-nothing test (#2126), ignore slow live-binary test (#2157)

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-10-05 12:08:21 -04:00
ruv 9f0821cf69 Merge PR #2104 (aepod) into release integration 2026-10-05 11:48:25 -04:00
ruv b6c2fb5b7d Merge PR #2116 (aepod) into release integration 2026-10-05 11:46:08 -04:00
ruv b3d31510ee Merge PR #2130 (aepod) into release integration 2026-10-05 11:44:18 -04:00
Mathew Beaneandclaude-flow 7af5477f04 fix(scripts): parse the ADR-018 header layout in the UDP capture scripts
Both capture scripts decoded a header layout the firmware does not send.
csi_collector.c and esp32_parser.rs use: magic u32 @0, node_id @4,
n_antennas @5, n_subcarriers u16 @6, freq_mhz u32 @8, sequence u32 @12,
rssi i8 @16, noise_floor i8 @17, ppdu_type @18, flags @19, then
n_antennas * n_subcarriers int8 I/Q pairs from @20.

- collect-training-data.py read a 16-byte header and int16 I/Q, so its
  length check rejected every real single-antenna frame. It now reads the
  20-byte header and int8 pairs, records freq/channel/seq/ppdu/flags, and
  lets the recorder stamp receive time (the header has no timestamp).
- record-csi-udp.py read rssi from byte 6 and channel from byte 7 (the
  n_subcarriers bytes) and treated bytes 8-19 as I/Q, so a 64-subcarrier
  frame came out as 70 subcarriers with header bytes in the first six
  amplitudes. It now checks the magic, reads the real fields, and writes
  only the I/Q block to iq_hex.
- Add scripts/tests/test_capture_adr018.py, which builds frames with the
  esp32_parser.rs test layout and checks the decoded fields.

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-10-02 22:01:22 -04:00
Mathew Beaneandclaude-flow 84f5e19e9d fix(scripts): run the proof with python3 and report INCOMPLETE when a gate is skipped
prove.sh looked only for `python`, so on macOS (python3 only) it skipped
the deterministic proof and still printed RESULT: PASS with exit 0.

- Pick $PYTHON, then python3, then python.
- Check numpy/scipy import before running verify.py and print the
  lockfile install command when they are missing; warn when installed
  versions differ from archive/v1/requirements-lock.txt.
- Run verify.py single-threaded, as CI does.
- Hard gates that cannot run (no cargo, no Python, missing deps) are
  reported as [NOT RUN] and the run ends INCOMPLETE with exit 2.
  Data/hardware-gated claims are unchanged.
- Tell people to stop any local server on UDP 5005 first (#2086).

Fixes #2095

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-10-02 21:57:49 -04:00
Mathew Beaneandclaude-flow ea6da967d2 docs(mediatek): OpenWrt WN586X3 CSI patch set, router CSI guide, ADR-266 amendment
- firmware/openwrt-wn586x3/: the patch set that made a Wavlink WL-WN586X3
  Rev A (MT7981B + MT7976C) emit CSI on OpenWrt 24.10.8. It contains:
  MediaTek's mt7915 CSI driver patch rebased onto the mt76 revision 24.10.8
  pins (BSD-3-Clause-Clear, MediaTek author line kept); the Rev A board
  patch (GPL-2.0); a buffer-overrun fix for `mt76-vendor dump csi`; and
  an attribute-enum fix for MtkCSIdump. Each patch keeps the licence of
  the code it modifies. There are no images, firmware blobs, or captures.
- docs/mediatek-router-csi.md: an operator guide covering supported
  silicon, the image build route that was tested, arming CSI, the
  bridge, `--source mediatek`, endpoints and provenance labels, what the
  data is not, evidence, and troubleshooting. Every claim is tagged
  MEASURED, CODE-DERIVED, CLAIMED, or SYNTHETIC.
- scripts/mediatek-csi-phase-stability.py: a read-only reproducer for
  the one MEASURED offline result. On one MT7976C radio, the cross-chain
  phase arg(H0*conj(H1)) moves 0.014-0.039 rad (p50) between adjacent
  frames for well-sampled transmitters, against about 1.56 rad for raw
  per-chain phase, which is what random phase gives. It never prints a
  transmitter address. The captures it was run on are not in the tree.
- ADR-266 Amendment 1: vendor CSI exists on MT7981 through MediaTek's
  public feed patch, demonstrated on one board model, and still
  `mediatek:physical-unvalidated`. The hardware gates remain open.
- user-guide.md and the bridge README link to the guide.

Developed in whitsentry, a RuView-based project.

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-10-02 18:32:25 -04:00
Mathew Beaneandclaude-flow 43f5f99108 fix(scripts): send the API token from collect-ground-truth and check the reply
With authentication enabled, collect-ground-truth.py could not start a CSI
recording: it sent no bearer token. It also treated any HTTP 200 as success,
but the recording endpoints answer 200 with {"success": false, "error": ...}
for refusals such as "recording already in progress". Either way it went on
capturing camera keypoints with no paired CSI and only printed a warning.

- Read the token from --token-file, else RUVIEW_API_TOKEN, and send it as
  Authorization: Bearer on start and stop.
- post_json() returns False when the body says success: false.
- Name the CSI recording gt_<timestamp> so it pairs with
  keypoints_<timestamp>.jsonl.
- Exit with an error when the recording cannot start, unless
  --allow-no-csi is given.

Tests: py_compile; scripts/tests (15 passed); a local smoke test against a
stub HTTP server checked the bearer header, the request id, the
success:false refusal, and token precedence (file, then env).

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-10-02 03:11:08 -04:00
ruv 8cd8742d2b Add bounded RTL8721Dx RAC1 CSI ingest to current RuView main 2026-09-15 13:57:01 -04:00