# Phase-Level Acceptance Criteria

## Phase 1: Core Proxy (COMPLETE)

- [x] `pip install llmhosts && llmhosts serve` works
- [x] OpenAI + Anthropic API proxy functional
- [x] Ollama auto-discovery
- [x] BYOK key management
- [x] Rule-based router
- [x] Cost tracking
- [x] Exact hash cache
- [x] TUI + Web dashboard
- [x] Hardware detection

## Phase 2: Remote Access + Smart Routing (COMPLETE)

- [x] `llmhosts tunnel` auto-detects providers
- [x] kNN router (Tier 1) + ModernBERT (Tier 2)
- [x] vCache semantic caching
- [x] Entity namespace cache
- [x] Multi-device mesh
- [x] Cloud cost dashboard
- [x] Honest savings display

## Phase 3: Hive Mode + GPU Pooling (COMPLETE)

- [x] Hive create/join commands
- [x] Karma-weighted GPU routing
- [x] Privacy routing (IslandRun)
- [x] Team dashboards

## Phase 4: "Just Works" UX (COMPLETE — PR #415, Session 050)

- [x] `llmhosts up` 5-phase autopilot
- [x] ProgressReporter for visual feedback
- [x] PreflightChecker for system validation
- [x] HTTP streaming model pulls
- [x] Multi-GPU VRAM fix (max not sum)
- [x] Apple Silicon 4GB offset
- [x] Windows service + driver checks
- [x] SSE device updates + enhanced heartbeat
- [x] `llmhosts pull` command
- [x] Graceful degradation (proxy always starts)
- [x] 4 new doctor checks

## Phase 5: Marketplace (COMPLETE — Session 049-052)

### Phase 5A — Load Test (issue #307)
- [x] Under 100 concurrent marketplace requests, all complete
- [x] Billing receives one event per successful request
- [x] Verification: `pytest tests/test_marketplace_load.py -v`

### Phase 5B — Probes + Reputation (issue #308)
- [x] Synthetic probes every 5 min
- [x] 30d uptime computed from probe success
- [x] Reputation tiers: Unverified (<50), Standard (50-79), Verified (80-94), Elite (95-100)
- [x] Auto-removal: nodes with <30% uptime delisted (PR #430)

### Phase 5 Features (All Merged)
- [x] Reputation scoring engine (PR #404)
- [x] Remote device routing + retry (PR #405)
- [x] Stripe Connect billing (PR #406)
- [x] Hybrid documentation (PR #407)
- [x] Marketplace auto-removal (PR #430)

## Phase 6: Self-Hosted Relay (IN PROGRESS — ADR-009)

See [relay-level.md](relay-level.md) for detailed criteria.

- [ ] M1: relay_core skeleton + pyo3 bridge (#439)
- [ ] M2: Noise NK encryption (#440)
- [ ] M3: yamux multiplexing (#441)
- [ ] M4: relay_server binary + deployment (#442)
- [ ] M5: Production hardening + docs cascade (#443)
