Spaces:
Running on Zero
Running on Zero
File size: 6,097 Bytes
495b06b f08047d 495b06b f08047d 495b06b f08047d 495b06b f08047d 495b06b f08047d 495b06b f08047d 495b06b f08047d 495b06b f08047d 495b06b f08047d 495b06b f08047d 495b06b f08047d 495b06b f08047d 495b06b f08047d 495b06b f08047d 495b06b f08047d 495b06b f08047d 495b06b f08047d 495b06b f08047d 495b06b f08047d 495b06b f08047d 495b06b f08047d 495b06b f08047d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | # HearthNet — Project Status
*Consolidated June 15, 2026 · Build Small Hackathon · merged from tasks.md*
---
## What Was Built
**489 tests, 0 failures.** All Phase 1 (M01–M13, X01–X04), Phase 2 (M14–M25, X05–X07),
and Phase 3 experimental (M26–M31) modules implemented.
See [ARCHITECTURE.md](docs/ARCHITECTURE.md) for the full module map and data flows.
| Phase | Modules | Status |
|-------|---------|--------|
| Phase 1 | M01 Identity · M02 Discovery · M03 Bus · M04 LLM · M05 RAG · M06 Marketplace · M07 Files · M08 UI · M09 Emergency · M10 Chat · M11 Embedding · M12 CLI · M13 Onboarding · X01–X04 | ✅ Complete |
| Phase 2 | M14 Federation · M15 Relay · M16 Tokens · M17 OCR · M18 Translation · M19 STT/TTS · M20 Vision · M21 Tools · M22 Mobile · M23 E2E Crypto · M24 Rerank · M25 Group Chat · X05–X07 | ✅ Complete |
| Phase 3 | M26 Distributed inference · M27 MoE · M28 Fedlearn · M29 LoRa · M30 Evidence · M31 Civil Defense | ✅ Registered (compute stubs — see Remaining Gaps) |
**Internet mesh (relay hub, P1–P3):** `CompositeTransport` + `RelayHub` + `RelayClient`
with SQLite-backed roster persistence. All-to-all over a real uvicorn relay.
Tests: `tests/test_relay_mesh.py` (all pass).
**Security audit (June 12):** CVE-2025-3000 (PyTorch) and CVE-2025-71176 (pytest) patched.
`florence2.py` trust_remote_code allowlist added. Full report: [SECURITY_AUDIT_ASSESSMENT.md](SECURITY_AUDIT_ASSESSMENT.md).
---
## Bugs Fixed (June 14)
| Fix | File |
|-----|------|
| FIX-1: `node.start()` never set `_started = True` → `stop()` silently no-oped | `hearthnet/node.py` |
| FIX-2: `ChatService.send()` swallowed all exceptions silently | `hearthnet/services/chat/service.py` |
| FIX-3: `UTC = UTC` dead re-assignment (copy-paste artifact) | `chat/service.py`, `marketplace/service.py` |
| FIX-4: `RagService` defaulted `corpora_dir` to cwd instead of `~/.hearthnet/corpora` | `hearthnet/services/rag/service.py` |
| FIX-5: Seed corpus never ingested — `handle_ingest` ignored `{"documents": [...]}` batch format | `service.py`, `app.py` |
| FIX-6: `asyncio.run(_seed_corpus())` raised RuntimeError when loop already running | `app.py` |
| FIX-7: `app.py` created `RagService` without `corpora_dir` → corpus written to cwd | `app.py` |
| FIX-8: `Router._sticky` dict grew unbounded (memory leak) | `hearthnet/bus/router.py` |
**15 additional targeted improvements (June 15):**
RAG SQLite persistence, bus failover for quarantined providers, brace-matching JSON parser
in agent, MoE expert self-registration, schema_hash prefix fix (`sha256:`),
corpus param plumbing, federated_query wiring, silent exception sweep.
See `tests/test_improvements_batch.py` (13 tests, all pass).
---
## Hackathon Prize Status
| # | Action | Status |
|---|--------|--------|
| P1 | Demo video recorded | ✅ Done |
| P2 | Social post on X @zX14_7 | ✅ Done |
| P3 | NVIDIA_API_KEY set in HF Space secrets | ✅ Done |
| P4 | Deploy `app_nemotron.py` as second HF Space | ✅ Done — `feat/nemotron-space` branch → `build-small-hackathon/HearthNet-Nemotron` |
| P5 | MiniCPM3-4B as default model (OpenBMB prize) | ✅ Done — `MODEL_ID` default changed in `app.py` |
| P6 | `modal deploy scripts/modal_deploy.py` | ✅ Done — `scaledown_window` fix applied |
| P7 | GitHub Codex commits | ✅ Done |
**HF Spaces:**
- Main: `https://huggingface.co/spaces/build-small-hackathon/HearthNet` (`app.py`, MiniCPM3-4B default)
- Nemotron: `https://huggingface.co/spaces/build-small-hackathon/HearthNet-Nemotron` (`app_nemotron.py`, SmolLM2 fallback when no API key)
---
## Genuine Remaining Gaps
### Real stubs / not implemented
| Location | Gap | Effort |
|----------|-----|--------|
| `hearthnet/distributed_inference/shard.py:75` | `ShardServer.forward()` raises `NotImplementedError` — needs torch model-slicing | High (M26 roadmap) |
| `hearthnet/distributed_inference/pipeline.py:84` | `PipelineOrchestrator.run()` raises `NotImplementedError` — M26 experimental | High |
| `hearthnet/lora/service.py:96` | `_transmit()` stub — skips silently without pyserial hardware | Medium (M29, hardware-gated) |
| `hearthnet/services/marketplace/service.py:81` | Falls to "demo mode" on any event_log exception — silent degradation | Low |
| M28 | `FedLearnCoordinator` compute path — peft gradient aggregation not wired | High |
| M23 | X3DH / Double Ratchet E2E encryption **implemented but not wired as default** in chat | Medium |
### Healthy degradation (not bugs)
All `backend_unavailable` responses in OCR / STT / TTS / Translation / Image services
are intentional: optional deps absent → clear error message, no silent failure.
`_UnavailableBackend` in LlmService is the correct fallback when no backends are loaded.
### P4 browser–Python bridge (deferred)
Browser mesh (`webagent/src/mesh/browsermesh.js`, PeerJS/WebRTC) and the Python relay
currently run as separate meshes. Bridging them (bidirectional WebRTC↔mailbox
translation, ICE/TURN) is deferred — P1–P3 relay proven first.
---
## Post-Hackathon Roadmap
```
[ ] pip install hearthnet — pyproject.toml ready; not yet on PyPI
[ ] M26 ShardServer.forward() — real torch sharding
[ ] M28 Federated learning — peft gradient aggregation
[ ] M29 LoRa hardware — pyserial serial port integration
[ ] M23 E2E chat encryption — wire X3DH/Double Ratchet as default
[ ] Browser↔Python mesh bridge — P4 internet mesh
[ ] Custom non-Gradio UI — modern HTML/CSS alongside reference UI
[ ] Docker image publish — Dockerfile.slim exists, CI publish pending
```
---
## Deployment Checklist
```
[x] NVIDIA_API_KEY secret → Nemotron backend auto-activates
[x] HEARTHNET_DATA_DIR set → persistent data survives Space restarts
[x] ZeroGPU Space confirmed
[x] Demo video URL in README
[x] Social post URL in README
[ ] MODAL_ENDPOINT secret → set after `modal deploy scripts/modal_deploy.py`
[ ] MINICPM_URL secret → optional vLLM/llama.cpp endpoint for external MiniCPM server
```
|