Files
AetherForge/docs/TEST_RESULTS.md
drjones df81eb7744 Add fleet ops dashboard, Calibrate enforcement, and dead-code cleanup.
Ship live alerts, pool status, AI monitor, remote agent commands, build manager, and uninstall flow; wire Calibrate settings (WS ping, pool traffic log, retention limits) at runtime and exclude server/data from git.
2026-05-27 09:16:04 -07:00

191 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 02 — 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-01AI-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-10AI-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-01D-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-01A-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-01F-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-01S-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-01M-10)
| ID | Status | Method |
|----|--------|--------|
| M-01M-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-01B-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 |
| 26. 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-01M-10 live deploy, F-11F-19 runtime on burner, Ollama AI-09AI-13.
**Not implemented (low priority):** WebSocket ping interval from config, `log_pool_traffic` deep stratum logging, earnings USD quote.