diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index 9f50c51..4e8e3e9 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -109,9 +109,9 @@ Plans: **Plans**: 3 plans Plans: -- [ ] 05-01-PLAN.md — Tester driver package: TesterDriver interface, TestResult/LiveReading types, mock USB/DP/HDMI/FNB58 drivers, VID:PID registry entries -- [ ] 05-02-PLAN.md — Backend: CreateCable on NetBox client, TestHandler (POST /api/test/cable, GET /api/test/events SSE, GET /api/test/recent), router + main.go wiring -- [ ] 05-03-PLAN.md — Frontend: Cable Test Station page at /test (three-panel layout, Print & Next workflow, SSE live readout, mobile-responsive) +- [x] 05-01-PLAN.md — Tester driver package: TesterDriver interface, TestResult/LiveReading types, mock USB/DP/HDMI/FNB58 drivers, VID:PID registry entries +- [x] 05-02-PLAN.md — Backend: CreateCable on NetBox client, TestHandler (POST /api/test/cable, GET /api/test/events SSE, GET /api/test/recent), router + main.go wiring +- [x] 05-03-PLAN.md — Frontend: Cable Test Station page at /test (three-panel layout, Print & Next workflow, SSE live readout, mobile-responsive) ### Phase 6: Lab Advisor **Goal**: Users can ask strategic homelab questions and receive streaming answers from Claude Opus with full inventory context, with conversation history persisted across sessions diff --git a/.planning/phases/05-cable-test-integration/05-HUMAN-UAT.md b/.planning/phases/05-cable-test-integration/05-HUMAN-UAT.md new file mode 100644 index 0000000..e91cdcb --- /dev/null +++ b/.planning/phases/05-cable-test-integration/05-HUMAN-UAT.md @@ -0,0 +1,38 @@ +--- +status: partial +phase: 05-cable-test-integration +source: [05-VERIFICATION.md] +started: 2026-04-10 +updated: 2026-04-10 +--- + +## Tests + +### 1. Treedix USB tester driver +expected: Real Treedix USB cable tester returns USB version, speed, eMarker, PD, resistance +result: [pending — hardware not yet arrived] + +### 2. Treedix DP tester driver +expected: Real DP tester returns pin continuity + DP version +result: [pending — hardware not yet arrived] + +### 3. Treedix HDMI tester driver +expected: Real HDMI tester returns continuity + HDMI version +result: [pending — hardware not yet arrived] + +### 4. FNIRSI FNB58 driver +expected: Live voltage/current/PD streaming. Reference: github.com/baryluk/fnirsi-usb-power-data-logger +result: [pending — hardware not yet arrived] + +### 5. End-to-end cable test workflow +expected: Plug cable → test data appears → click Print & Next → cable record in NetBox + label printed +result: [pending — hardware not yet arrived] + +## Summary + +total: 5 +blocked: 5 + +## Gaps + +All blocked on Treedix testers + FNIRSI FNB58 hardware arrival 2026-04-13. diff --git a/.planning/phases/05-cable-test-integration/05-VERIFICATION.md b/.planning/phases/05-cable-test-integration/05-VERIFICATION.md new file mode 100644 index 0000000..a7ee31e --- /dev/null +++ b/.planning/phases/05-cable-test-integration/05-VERIFICATION.md @@ -0,0 +1,40 @@ +--- +phase: 05-cable-test-integration +verified: 2026-04-10 +status: human_needed +score: 4/4 (code) — hardware validation pending +overrides_applied: 0 +--- + +# Phase 5 Verification + +## Goal +Any cable can be tested, its results written to NetBox, and a label printed in a rapid test-verify-print workflow without leaving the Cable Test Station view. + +## Code-Level Verification (Complete) + +| # | Success Criterion | Status | Evidence | +|---|------|--------|----------| +| 1 | Treedix tester auto-detected by VID/PID | ✓ | KnownDevices entries `dead0:0001-0003` (placeholder pending hardware) | +| 2 | USB/DP/HDMI test results written to NetBox cable record | ✓ | `internal/netbox/client.go` CreateCable + test_data JSON field | +| 3 | FNB58 live data streams to UI | ✓ | StreamingTesterDriver + GET /api/test/events SSE | +| 4 | Cable test → label print under 30s | ✓ | Cable Test Station UI with "Print & Next" + auto-print | + +## All 7 Requirements Covered +CBL-01 through CBL-07 — implemented and tested with mock drivers. + +## Test Results +- `go test ./...` — all packages pass including internal/tester (10 tests) +- `cd web && npm run build` — clean + +## Human Verification Required +**Hardware arrives 2026-04-13.** All tester drivers are mocks. Real implementation: + +1. Treedix USB/DP/HDMI protocol reverse engineering +2. FNIRSI FNB58 protocol via baryluk/fnirsi-usb-power-data-logger reference +3. Real VID/PIDs for each tester +4. Live cable test workflow validation +5. End-to-end test → print → NetBox record + +## Status +`human_needed` — code complete, hardware validation deferred to operator after 2026-04-13. diff --git a/web/package-lock.json b/web/package-lock.json index a370e5b..bf5680d 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -4324,7 +4324,6 @@ "integrity": "sha512-9VnGEBosc/ZpwyOsJBCQ/3I5p7Q5ngOY14a9bf5btenAORmZfDse1ZEheMiWcJ3h81+Fv7HmJFdS0szo/waF2w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@asamuzakjp/css-color": "^5.1.5", "@asamuzakjp/dom-selector": "^7.0.6", @@ -6254,6 +6253,7 @@ "integrity": "sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vitest/expect": "4.1.4", "@vitest/mocker": "4.1.4",