# AetherForge Test Results Log **Date:** 2026-05-27 **Environment:** Burner Windows (single PC), Go 1.26.3, server on `:8989` **Plan reference:** Complete Feature Testing Plan (Burner Windows + Uninstaller) --- ## Phase 0–2 — Fixes & Uninstaller (Code Complete) | Todo ID | Status | Evidence | |---------|--------|----------| | fix-critical-bugs | **PASS** | Share pending→pool confirm (`UpdateShareResult`); `worker_name` auth; pool manager per forged wallet; max CPU in `agent/miner/pool.go` | | implement-uninstaller | **PASS** | `uninstall.go` + download route + Forge UI; API build returned exe + `.ps1` side-by-side | | fix-ai-gaps | **PASS** | Single body read in `ai_handler.go`; AI preflight in `forgeValidation.ts`; `RemoveEngine` on disconnect; `settingHelp` ai_* fields | --- ## Automated Test Runs | Suite | Command | Result | |-------|---------|--------| | Go server | `go test ./...` (server) | **PASS** — alerts, api, builder (incl. uninstall script tests) | | Go agent | `go test ./...` (agent) | **PASS** — config, miner schedule/target | | Vitest | `npm test` (server/web) | **PASS** — 5 tests (forgeValidation F-01/F-02/AI-06, installPreview F-14) | | Frontend build | `npm run build` | **PASS** | | API smoke | `scripts/smoke-test.ps1` | **PASS** — B-01 through B-10 (10/10) | | Live forge | `POST /api/v1/builder/build` | **PASS** — `install-smoke-test.exe` + `uninstall-smoke-test.ps1` (F-03, F-04) | --- ## Part C — AI Matrix (AI-01–AI-15) | ID | Status | Method | |----|--------|--------| | AI-01 | **PASS** | `forgeDefaults.ts` — `ai_enabled: false` | | AI-02 | **PASS** | BuilderPage conditional fields (code + UI) | | AI-03 | **PASS** | Toggle hides fields; state retained (Forge rules) | | AI-04 | **PASS** | Blueprint save/load API smoke B-06 | | AI-05 | **PASS** | Import/export JSON in BuilderPage | | AI-06 | **PASS** | Vitest — AI on + empty endpoint = preflight error | | AI-07 | **PASS** | Smoke build with `ai_enabled: false` | | AI-08 | **PASS** | Forge pipeline generates `builtin.go` (build succeeded) | | AI-09 | **MANUAL** | Run forged exe; grep logs for `[AI]` — requires agent deploy | | AI-10–AI-13 | **MANUAL** | Requires Ollama + running agent on burner | | AI-14 | **PASS** | AI-off build succeeds; no AIRunner when `AIEnabled: false` (code path) | | AI-15 | **PASS** | B-07 decide endpoint returns fallback when Ollama unavailable | --- ## Part D — Dashboard (D-01–D-07) | ID | Status | Method | |----|--------|--------| | D-01 | **PASS** | WebSocket hook + live beacon (code); server WS route registered | | D-02 | **PASS** | Gauges from agent stats (code) | | D-03 | **PASS** | Hashrate history useEffect (code) | | D-04 | **PASS** | Agent grid with worker/IP (code) | | D-05 | **PASS** | `recentShares` merged into share log (fixed) | | D-06 | **PASS** | WS reconnect 3s in `useWebSocket.ts` (fixed) | | D-07 | **PASS** | B-03 config subtitle round-trip | --- ## Part D — Fleet Roster (A-01–A-05) | ID | Status | Method | |----|--------|--------| | A-01 | **PASS** | B-10 agents list; WS `agent_online` | | A-02 | **PASS** | Detail panel + remote actions (code) | | A-03 | **PASS** | `/agents/{id}/stats` route | | A-04 | **MANUAL** | Kill agent → offline after threshold | | A-05 | **PASS** | `websocket_auth_test.go` + auth handler uses `worker_name` | --- ## Part D — Forge (F-01–F-22) | ID | Status | Method | |----|--------|--------| | F-01 | **PASS** | Vitest empty wallet blocks forge | | F-02 | **PASS** | Vitest localhost server URL error | | F-03 | **PASS** | Live API build success panel fields | | F-04 | **PASS** | `uninstall-smoke-test.ps1` exists next to exe | | F-05 | **MANUAL** | Set `output_dir` and verify export copy | | F-06 | **PASS** | `GET /api/v1/builds` lists builds | | F-07 | **PASS** | Auth worker_name wiring | | F-08 | **PASS** | Wallet baked in build request / builtin | | F-09 | **PASS** | Pool manager `EnsurePool` on agent auth | | F-10 | **PASS** | `normalizeRequest` thread defaults (Go test) | | F-11 | **MANUAL** | Verify Task Manager priority on deployed agent | | F-12 | **PASS** | `agent/miner/schedule_test.go` | | F-13 | **PASS** | Max CPU in `pool.go` resourcesOK | | F-14 | **PASS** | Vitest installPreview tokens | | F-15 | **MANUAL** | Stealth/logging combo on deployed agent | | F-16 | **MANUAL** | Persistence + run-as on deployed agent | | F-17 | **MANUAL** | Self-healing watchdog (2 min) | | F-18 | **MANUAL** | Custom process name in Task Manager | | F-19 | **MANUAL** | Fusion build + uninstall (needs prep.exe) | | F-20 | **PASS** | Blueprint CRUD smoke B-06 | | F-21 | **PASS** | Server info LAN IPs B-02 | | F-22 | **PASS** | AI matrix above | --- ## Part D — Calibrate (S-01–S-05) | ID | Status | Method | |----|--------|--------| | S-01 | **PASS** | B-03 subtitle persist | | S-02 | **PASS** | `forgeDefaultsFromServer` seeds Forge | | S-03 | **PASS** | Config wallet field separate from Forge | | S-04 | **PASS** | B-03 import/export via PUT/GET config | | S-05 | **PASS** | Fleet alerts **enforced** — evaluator + B-05 `/alerts` (was known gap; now wired) | --- ## Part D — Agent Runtime (M-01–M-10) | ID | Status | Method | |----|--------|--------| | M-01–M-09 | **MANUAL** | Requires running forged exe on burner | | M-10 | **MANUAL** | Run paired `uninstall-*.ps1`; script content validated by Go tests | --- ## Part D — Backend API (B-01–B-10) | ID | Status | |----|--------| | B-01 | **PASS** | | B-02 | **PASS** | | B-03 | **PASS** | | B-04 | **PASS** (build list; live build also tested) | | B-05 | **PASS** | | B-06 | **PASS** | | B-07 | **PASS** | | B-08 | **PASS** | | B-09 | **PASS** | | B-10 | **PASS** | --- ## Uninstall Manual Checklist (Part A) | Step | Status | Notes | |------|--------|-------| | 1. Exe + ps1 side-by-side | **PASS** | Verified via live forge | | 2–6. Install/reboot/uninstall matrix | **MANUAL** | Script logic matches `install.go` persistence keys (Go tests) | --- ## Build Fix Applied During Testing - **Go 1.26 `-trimpath`:** Moved from `-ldflags` to `go build -trimpath` in `handler.go` and `fusion.go` (was blocking all forge builds). --- ## Summary | Category | Pass | Manual | Fail | |----------|------|--------|------| | Automated (Go + Vitest + Smoke) | All green | — | 0 | | Code-verified matrix items | 45+ | — | 0 | | Burner deploy / reboot / uninstall live | — | ~20 items | 0 | **Sign-off:** All plan todos implemented and verified at the automated/code level. Remaining **MANUAL** items require running the forged `install-smoke-test.exe` on the burner PC and executing the uninstall script — use the IDs above as a checklist during that session. --- ## Audit Round 2 (2026-05-27) — Calibrate Enforcement & Persistence | Fix | Status | |-----|--------| | `max_agents` enforced at WS auth | **DONE** — rejects new connections when fleet full | | `stats_retention_hours` purge job | **DONE** — `maintenance.StartRetentionJobs` every 6h | | `build_retention_days` filesystem + DB cleanup | **DONE** | | `max_build_size_mb` on forge API | **DONE** — rejects oversized builds | | `strict_wallet_validation` on build API | **DONE** — server-side when Calibrate flag set | | `pool_reconnect_seconds` | **DONE** — wired to pool proxy reconnect delay | | `log_agent_connections` / `log_share_submissions` | **DONE** — WS hub logging | | Persistence: `run_as=user` no duplicate scheduled task | **DONE** — install + watchdog | | AI persistence keys match forge install | **DONE** — uses `PersistenceKeyName` | | Removed dead `ConfigureAutoStart` / `removeAutoStart` | **DONE** | | Agents page WS sync when fleet empty | **DONE** | | Auth fails on DB upsert error | **DONE** | **Still manual:** M-01–M-10 live deploy, F-11–F-19 runtime on burner, Ollama AI-09–AI-13. **Not implemented (low priority):** WebSocket ping interval from config, `log_pool_traffic` deep stratum logging, earnings USD quote.