ruvnet / ruvnet/RuView

Tier 1 (Q3 2026): Ship the 4-item plan-antennas / pose-PABS / cog-count v0.0.3 / ADR-029 amendment

Open
#749 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Rust
Stars
94.4k
Forks
12.5k
Avg merge
21h 27m
Merged PRs (30d)
43

Description

What this issue is about (plain-language intro)

This is the Q3 2026 implementation issue spun out of the #748. The research loop ran on 2026-05-22 and produced four high-leverage Tier 1 items that can ship in the next quarter for a total of ~490 LOC, 3-4 person-weeks of engineering.

Each Tier 1 item delivers a measurable user-visible improvement and unblocks the higher-tier work. After this issue is closed, RuView customers will have:

  • Sensing coverage that is 93x better than the current "stick the antennas anywhere" recipe
  • Intruder / fall detection at 9.36x lift over the previous baseline
  • ADR-029 multistatic spec is no longer open-ended on placement

Tier 1 items (in priority order)

1.1 — wifi-densepose plan-antennas CLI tool

Source: R6.2 family (9 sub-ticks), ADR-113 4-axis decision matrix

What it does: Given a room geometry + target zones + cog name, recommend Tx/Rx anchor placement that maximises Fresnel-envelope coverage. Outputs a placement diagram.

LOC: ~360
Effort: ~1 week
Reference code: examples/research-sota/02-placement/ (all 7 scripts)
Architectural decision: docs/adr/ADR-113-multistatic-placement-strategy.md

CLI shape:

wifi-densepose plan-antennas \
  --room 5 5 [Z] \
  --target NAME X Y W H [DX DY DZ] \
  --target-mode {body, chest} \
  --cog COG_NAME \
  --freq-ghz 2.4 \
  --n-anchors N

Expected impact: 93x sensing-coverage lift on the 5x5 m bedroom benchmark. Existing customers can re-mount their seeds today and get 10-100x better sensing without firmware/model changes.

Acceptance criteria:

  • CLI runs from repo root in <2 seconds for a 5x5 m room
  • Reproduces the headline numbers from R6.2.5 (100% coverage @ N=5 for 4-occupant chest-centric)
  • --cog flag auto-selects target-mode + N from ADR-113 matrix
  • Output includes placement diagram (ASCII or SVG)
  • Documented in user guide
1.2 — R12.1 pose-PABS in vital_signs cog

Source: R12 arc (3 ticks) — R12 NEGATIVE -> R12 PABS POSITIVE -> R12.1 CLOSED LOOP

What it does: Per-frame structural-anomaly detection (intruder, fallen person, new furniture). Couples the pose tracker (ADR-079/101) with R6.1 multi-scatterer forward operator. Subject motion is absorbed into the prediction; only unexplained residuals trigger structure events.

LOC: ~80
Effort: ~3 days
Reference code: examples/research-sota/06-structure-detection/r12_1_pose_pabs_loop.py
Architectural decision: ADR-029 multistatic should reference PABS

Production Rust glue (~80 LOC):

let pose = pose_tracker.estimate(csi_window)?;          // ADR-079 / ADR-101
let expected_scene = body_model.from_pose(pose) + room_walls;
let y_predicted = fresnel_forward.simulate(expected_scene);
let pabs = (csi_window - y_predicted).norm_sq() / csi_window.norm_sq();
if pabs > threshold {
    emit_structure_event();
}

Expected impact: 9.36x intruder detection lift in dynamic scenes (subject walking). False-alarm problem from naive PABS resolved.

Acceptance criteria:

  • Slots into existing vital_signs cog per-frame inference path
  • Reproduces 9.36x lift on synthetic walking-subject + intruder benchmark
  • Configurable threshold + per-frame plausibility window
  • Emits structured event when threshold crossed
1.3 — cog-person-count v0.0.3 with chest-centric placement

Source: R5 saliency + R8 RSSI + R6.2.3 chest-centric + ADR-113

What it does: Update existing cog-person-count (ADR-103) to use chest-centric target zones from ADR-113 matrix. Re-train with placement-aware data augmentation.

LOC: ~50 (placement-aware training config + per-cog default --target-mode=body)
Effort: ~3 days (plus retrain time on RTX 5080)
Reference code: examples/research-sota/04-rssi/r8_rssi_only_count.py
Depends on: 1.1 CLI tool (validates placement against matrix)

Expected impact: v0.0.2 + chest-centric placement should improve class-1 accuracy from 34.3% to ~50%+ by removing limb-confound (R6.1 4.7 dB penalty).

Acceptance criteria:

  • Trained model checkpoint at v2/crates/cog-person-count/cog/artifacts/count_v0_0_3.safetensors
  • Manifest signed per ADR-100 (Ed25519 today; dual-sig per ADR-109 when Phase 1 ships)
  • Bench-validated on Cognitum-cluster Pi cluster
  • Performance numbers logged for federation roadmap
1.4 — ADR-029 amendment with ADR-113 placement matrix

Source: ADR-113

What it does: Update docs/adr/ADR-029-*.md (RuvSense multistatic) to reference the ADR-113 4-axis decision matrix. Closes the open question that ADR-029 left around anchor placement.

LOC: 0 (ADR-authoring time only)
Effort: ~1 day
Architectural decision: Already in ADR-113; just needs the cross-reference

Acceptance criteria:

  • ADR-029 status updated from "Proposed" to "Proposed + amended"
  • Cross-reference table to ADR-113 added
  • Anchor-count recommendation per cog category included

Critical path

1.1 plan-antennas CLI ────┬──> 1.3 cog-person-count v0.0.3
                          │
1.2 R12.1 vital_signs ────┘
                          
1.4 ADR-029 amendment (independent)

1.1 + 1.2 can run in parallel. 1.3 depends on 1.1 (validation). 1.4 is independent.

What is NOT in this issue

  • Tier 2-5 work (federation, PQC, cross-room re-ID, vertical cogs)
  • Bench validation (Tier 2.3, separate)
  • Regulatory pathway for healthcare cogs (Tier 6.3, separate)
  • Real NV-diamond hardware integration (Tier 4+, ADR-114 follow-up)

How to claim a Tier 1 item

  1. Comment on this issue with the item number (e.g. "claiming 1.1")
  2. Open a feature branch
  3. Implement per the acceptance criteria
  4. PR-then-auto-merge per the loop's pattern
  5. Update the checklist on this issue

Estimated total Tier 1 budget

Item LOC Days Priority
1.1 CLI tool 360 5 HIGH
1.2 R12.1 in vital_signs 80 3 HIGH
1.3 cog-person-count v0.0.3 50 3 (+ retrain time) HIGH
1.4 ADR-029 amendment 0 1 HIGH
Tier 1 total ~490 LOC ~12 person-days

References

  • Entry-point issue: linked above
  • Full production roadmap: docs/research/sota-2026-05-22/PRODUCTION-ROADMAP.md
  • Loop final summary: docs/research/sota-2026-05-22/00-summary.md
  • Architectural decisions: docs/adr/ADR-105 through ADR-114
  • Reference numpy implementations: examples/research-sota/

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Choose one of the four independently listed Tier 1 items before starting. For antenna planning, read docs/adr/ADR-113-multistatic-placement-strategy.md and examples/research-sota/02-placement/; for pose-PABS, start with examples/research-sota/06-structure-detection/r12_1_pose_pabs_loop.py and the existing vital_signs path. Done means the selected item meets its checklist, including the named benchmark, artifact, event behavior, or ADR documentation outcome.

Written by the indexing model from the issue text.

Assessment

Tech stack
numpy, python, rust
Domain
cli, documentation, embedded-iot, machine-learning
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.