# PROBLEMS.md Open issues only. Fixed items removed. Last sweep: 2026-06-07. ## No open code issues Automatable gaps are closed; remaining items below are by-design limits, architecture deferrals, manual/live P2, or test noise. Regression tables and counts live in `tests/README.md`. ## By design / safety | Issue | Notes | |-------|-------| | **`bof_execute` disabled** | Agent returns explicit error; in-memory BOF execution disabled (`client.go`). | | **Process hollowing AMSI/ETW** | Relocation done; Defender/ETW ~50% failure; bypass not implemented (`hollow_windows.go`). | | **Cloudflared in-process (non-Windows server)** | Stub on Linux/macOS; use external connector (`AF_TUNNEL_EXTERNAL`) or add launcher. | | **macOS camera / GPU miner** | Stubs or partial; Linux has V4L2 + nvidia-smi path. | | **KEV heuristics** | Non-Windows agents return `Status: n/a` (Windows-only CVE matching). | | **Mesh P2P without `-tags p2p`** | Default build reports 0 peers (`mesh_p2p_stub.go`). | | **Linux/macOS GPU RVN mining** | `detectGPU()` may find NVIDIA but miners download Windows `.exe` only. | ## Scale limits (hundreds of subnets / 500+ agents) | Area | Notes | |------|-------| | **Subnet grouping** | Derived from `agents.ip` /24 prefix at query time; no `agents.subnet` column — hundreds of subnets OK via `LIKE` filter + dropdown (not chips). | | **Per-agent subnet scan** | Capped at 128 hosts (`MaxSubnetScanHosts`); syscheck uses 20 (`SyscheckSubnetScanCap`); spread sem=16 (`SpreadConcurrencyCap`). Fleet discovery is incremental (ARP + capped sweep), not full /16. | | **`stats_batch` WS** | Server coalesces stats every 250ms (`StatsBatchCoalesceInterval`) into one frame; client applies in single `setAgents` pass with `agentStatsUnchanged` skip. | | **Hashrate samples** | One `INSERT` per agent stats tick — dominant DB write at scale. Automated purge via `StartRetentionJobs` (default 168h, `stats_retention_hours`). | | **Stale-agent sweep** | Every 45s (`StaleAgentSweepInterval`) queries `status='online' AND last_seen < cutoff` (`ListStaleOnlineAgents`, composite index) — not a full-table scan. Still O(stale-online) broadcasts per sweep. | ## Container Mining | Topic | Notes | |-------|-------| | **Fallback chain** | `agent/miner/fallback_chain.go` orchestrates container → in-process → GPU (parallel) → Stratum overlay. Failures in `failed_methods[]` on stats WS (tested). 30s cooldown between full re-passes (`DefaultChainCooldown`, `RestartChain` clears). | | **Default execution** | Forge default is `auto` (full chain). `inprocess`/`container`/`subprocess` limit which steps run. Forge shows worker-image build hint when auto/container selected. | | **AV limits (honest)** | Containers are **not** invisible — AV still sees `docker.exe`, image pulls, and container filesystem scans. Legitimate benefit is **isolated workload** and fewer host subprocess spawns (GPU T-Rex/TRM). In-process RandomX has no external CPU miner exe. | | **GPU in container** | Linux `--gpus all` stub only; Windows Docker Desktop GPU passthrough is operator-dependent. Host subprocess GPU path remains fallback. | | **Worker image** | `aetherforge/agent-worker:latest` (override `AETHERFORGE_MINER_IMAGE`). Build from `docker/Dockerfile.agent`; Forge live notice + `FieldHint` on Miner Execution. | | **Container hashrate** | Host relays container worker H/s via `MINER_STATS_FILE` + `ProbeHashrate()` when `hostMiningDisabled` (dashboard no longer stuck at 0). | | **Deferred** | Auto-build/push worker image in forge; Podman rootless on Windows. | ## Architecture deferred (large) | Area | Notes | |------|-------| | **`tunnel_stream`** | Server-side TCP reverse relay documented as future (`README.md`). | | **Path Tracer sessions** | `TraceSession` in handler RAM; restart loses state; no DB persistence or startup sweep. | | **Non-Windows Path Tracer parity** | `pathtracer_stub.go` errors on `wg_setup`; chains are Windows-agent focused. | | **NAT / symmetric UDP** | UPnP + DB IP fallback; no STUN/TURN or post-config connectivity probe. | | **Fixed WireGuard port 51820** | Same UDP port all hops; multi-agent behind one NAT may conflict. | | **Agent display name vs hostname** | WS `UpsertAgent` preserves operator rename when `name != hostname`; reconnect with hostname only keeps DB label. | | **WireGuard auto-download (Windows)** | `ensureWGExe()` on first Path Tracer use; heavy, may need admin; pre-install recommended. | | **Monolithic WebSocket context** | All `useWebSocket()` consumers re-render on any WS change; split contexts/selectors deferred. | | **`CruciblePage` size (~2k lines)** | Terminal + fleet + tabs in one component; section split/memo deferred. | | **WS `init` ships full fleet** | Dashboard connect still loads all agents in one JSON blob; pagination is REST-only (`?limit=&offset=`). | | **SQLite single-writer ceiling** | `SetMaxOpenConns(1)` + WAL; sustained 1000+ agents with per-tick DB writes may SQLITE_BUSY; consider Postgres or write batching at 1000+. | | **In-memory WS agent state** | Hub maps (`agentCapabilities`, `agentLogs`, DNS cache) grow O(agents); no eviction on disconnect beyond log trim. | | **Fleet topology 3D cap** | `FleetTopologyMap` renders at most 200 nodes; larger fleets need subnet-grouped view or server-side aggregation. | | **Crucible roster pagination** | Roster paginates 80 cards/page; bulk select-all still operates on filtered set in memory. | | **No CI HTTP forge** | `e2e-validate.ps1 -ForgeAgent` manual; live compile needs `LIVE_FORGE=1` + `-tags liveforge`. | | **Non-Windows forge host** | PE disguise / osslsigncode signing platform-limited by design. | | **Mac PathForge runtime** | `.command` curl `/api/download/agent-mac`; needs reachable `server_url` + binary on server. | | **Terminal virtualization** | 400-line DOM cap only; full virtual scrollback deferred. | | **Vite chunk weight** | `three` + vendor warnings; FleetTopologyMap lazy but heavy first open. | ## Test gaps / noise | Item | Notes | |------|-------| | **Automated coverage** | P1 hardening, fleet evolution, and P2 mocks/E2E — master tables in `tests/README.md` (Fleet evolution checklist, P2 completion, Priority tests). | | **Erasure multi-lane (foundation)** | RS 4+2 shard API + deploy-plan `erasure_plan` + agent reassembly fallback. **Not shipped:** live parallel lane orchestration or erasure-first spread E2E. | | **P2 remaining (manual only)** | Live Docker/Podman on operator host; real WinRM/GPO/systemd/crontab on remote owned hosts; live BITS/curl against non-mock C2; live multi-hop discover→spread without Playwright stub. | | Path Tracer / WS manual | Full `wg_setup` on real hosts; live TLS/mesh beacon. | | Poll duplication | Path Tracer 2s REST poll; Emberwake 15s poll + 30s broadcast; `SystemStatusBar` 15s `listAgents` vs WS fleet. | | Vitest noise | Happy-dom ECONNREFUSED stderr on some failure tests; separate `vi.fn()` per `api/download` export to avoid flakes. | ## Scrubbed 2026-06-07 (prod garbage removed) | Item | Action | |------|--------| | `agent/config/builtin.go` XMR/RVN wallets | Cleared — dev builtin no longer ships third-party addresses | | `server/config.go` builtin Cloudflare token | Removed — connector requires env/config/`cloudflared-token.txt` | | `data-e2e/`, `music/`, `scratch/` in repo | Untracked + `.gitignore` (E2E wallet stays in `docker/` + `e2e-validate.ps1` only) | | Mission Deck forge bar | Replaced client-side stage timer with server `GET /builder/progress/{token}` poll | ## Do not commit - `data/login-credentials.json`, `data/users.json`, and other local secrets.