7.0 KiB
7.0 KiB
Claude Code Configuration — WiFi-DensePose
Project: wifi-densepose
WiFi-based human pose estimation from Channel State Information (CSI).
Dual codebase: Python v1 (archive/v1/) and Rust port (v2/).
See CHECKLIST.md for current implementation status
(50 Done / 0 Open in-scope; ADR-100..120 are this operational session).
Detailed handbooks (extracted to keep this file ≤200 lines)
| File | Covers |
|---|---|
docs/dev-handbook.md |
Rust crate map (15 crates), RuvSense modules (14), Cross-Viewpoint fusion (5), Architecture Decisions list, supported hardware, build & test commands, ESP32 firmware build + provision, release process, crate publishing order, witness verification (ADR-028) |
docs/claude-swarm.md |
V3 CLI commands, available agents (60+ types), memory commands reference, Claude Code vs CLI tools |
docs/architecture.md |
End-to-end pipeline diagram from CSI capture to pose / vital signs / room fingerprint |
docs/use-cases.md |
Full deployment-tier catalogue (Everyday / Specialized / Robotics / Extreme) + all 60 ADR-041 edge modules + self-learning system (ADR-024) |
docs/adr/ |
All 120 ADRs (ADR-111 intentionally absent); session-specific records ADR-100..120 |
Behavioral Rules (Always Enforced)
- Do what has been asked; nothing more, nothing less
- NEVER create files unless absolutely necessary for the goal
- ALWAYS prefer editing an existing file to creating a new one
- NEVER proactively create documentation files (*.md) or README files unless explicitly requested
- NEVER save working files, tests or markdown to the root folder
- ALWAYS read a file before editing it
- NEVER commit secrets, credentials, or .env files
- Never continuously check status after spawning a swarm — wait for results
- README.md and CLAUDE.md must each stay ≤ 200 lines; move detail to
docs/and link
File Organization
- NEVER save to root folder — use the directories below
docs/adr/— Architecture Decision Records (currently 120, ADR-111 absent)docs/ddd/— Domain-Driven Design modelsv2/crates/— Rust workspace crates (15+ crates)v2/crates/wifi-densepose-signal/src/ruvsense/— RuvSense multistatic modulesv2/crates/wifi-densepose-ruvector/src/viewpoint/— Cross-viewpoint fusionv2/crates/wifi-densepose-hardware/src/esp32/— ESP32 TDM protocolfirmware/esp32-csi-node/main/— ESP32 C firmware (CSI capture, NVS config, OTA, channel hopping)archive/v1/src/— Python source (core, hardware, services, api)archive/v1/data/proof/— Deterministic CSI proof bundles.claude-flow/— Claude Flow coordination state (committed for team sharing).claude/— Claude Code settings, agents, memory (committed for team sharing)
Project Architecture
- Follow Domain-Driven Design with bounded contexts
- Keep files under 500 lines; ADRs ≤ 200 lines; README.md and CLAUDE.md ≤ 200 lines
- Use typed interfaces for all public APIs
- Prefer TDD London School (mock-first) for new code
- Use event sourcing for state changes
- Ensure input validation at system boundaries
Project Config
- Topology: hierarchical-mesh
- Max Agents: 15
- Memory: hybrid
- HNSW: Enabled
- Neural: Enabled
Pre-Merge Checklist
Before merging any PR, verify each item applies and is addressed:
- Rust tests pass —
cargo test --workspace --no-default-features - Python proof passes —
python archive/v1/data/proof/verify.py(VERDICT: PASS) - README.md — Update if scope changed; verify ≤ 200 lines
- CLAUDE.md — Update if scope changed; verify ≤ 200 lines; move detail into
docs/ - CHANGELOG.md — Add entry under
[Unreleased] - User guide (
docs/user-guide.md) — Update if new data sources, CLI flags, or setup steps - ADR index — Update ADR count + range in CHECKLIST and reference tables when a new ADR is created
- Witness bundle — Regenerate if tests or proof hash changed:
bash scripts/generate-witness-bundle.sh - Docker Hub image — Rebuild only if Dockerfile / dependencies / runtime behavior changed
- Crate publishing — Only needed if a crate is published to crates.io and its public API changed
.gitignore— Add any new build artifacts or large deployment-specific data files- Security audit — Run a security review for new modules touching hardware/network boundaries
Build & Test
# Rust — full workspace tests
cargo test --workspace --no-default-features
# Python — deterministic proof
python archive/v1/data/proof/verify.py
- ALWAYS run tests after code changes
- ALWAYS verify build succeeds before committing
Full per-crate commands and firmware flash recipe: docs/dev-handbook.md.
Security Rules
- NEVER hardcode API keys, secrets, or credentials in source files
- NEVER commit
.envfiles or any file containing secrets - Always validate user input at system boundaries
- Always sanitize file paths to prevent directory traversal
- Run
npx @claude-flow/cli@latest security scanafter security-related changes
Concurrency: 1 MESSAGE = ALL RELATED OPERATIONS
- All operations MUST be concurrent/parallel in a single message
- Use Claude Code's Task tool for spawning agents, not just MCP
- ALWAYS batch ALL todos in ONE TodoWrite call (5-10+ minimum)
- ALWAYS spawn ALL agents in ONE message with full instructions via Task tool
- ALWAYS batch ALL file reads/writes/edits in ONE message
- ALWAYS batch ALL Bash commands in ONE message
Swarm Orchestration
- MUST initialize the swarm using CLI tools when starting complex tasks
- MUST spawn concurrent agents using Claude Code's Task tool
- Never use CLI tools alone for execution — Task-tool agents do the actual work
- MUST call CLI tools AND Task tool in ONE message for complex work
Full CLI command reference, agent type catalogue, memory operations and
3-tier model routing: docs/claude-swarm.md.
Swarm Execution Rules
- Spawn in background — use
run_in_background: truefor all agent Task calls - Spawn all at once — put ALL agent Task calls in ONE message for parallel execution
- Tell the user — after spawning, list what each agent is doing
- Stop and wait — after spawning, STOP; do NOT add more tool calls or check status
- No polling — never poll TaskOutput or swarm status; trust agents to return
- Synthesize — when agent results arrive, review ALL before proceeding
- No confirmation — don't ask "should I check?"; just wait for results
Branch
Default branch: main.
Current operator branch (this session series): feat/ota-rssi-mobile —
PR #596 on the upstream fork.
Support
- GitHub Issues: https://github.com/ruvnet/RuView/issues
- ADR index:
docs/adr/ - Implementation status:
CHECKLIST.md - Detailed dev handbook:
docs/dev-handbook.md