Files
archy/.planning/phases/13-aiui-functional-conversational-node-control-and-content-surf/13-UAT.md
T
archipelagoandClaude 494400df29 docs(13): fill 13-VALIDATION map + write 13-UAT on-device acceptance record
13-15's two artifacts. The map names plan/wave/threat-ref per row with
today's measured results (Rust assistant suite 130/130; adapter 37; broker
25; toolConfirm, audioPlayer 11, appsConfig 13; AIUI 353/356 with the three
documented pre-existing fixture failures). Four close-out rows added
(S-invariants, evals, egress, mock-free-bundle grep). Manual-only table
discharged except the physical-handset pass, which 13-UAT records as owed
(the AIUI-06 flagged assumption wants both, and only devtools-mobile is on
record). Open questions 1/2/4 resolved with plan cites; Routstr stays
honestly open.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-07 17:52:22 -04:00

3.9 KiB
Raw Blame History

13-UAT — On-Device Acceptance Record

Date: 2026-08-07 · Device: archi-dev-box (this node; LAN 192.168.63.240) · Build under test: branch gsd/phase-13-… @ 482c4e30 (daemon binary deployed to /usr/local/bin/archipelago, frontends rsynced to /opt/archipelago/web-ui/).

Method note (per the plan's second trap): deploys were verified against fetched artifacts — live bundle hashes resolved through index.html and diffed against the tree's dist/, never by grepping the never-pruned assets/ graveyard on disk.

Environment

  • Real embedded iframe (/dashboard/chat/aiui/), headless Chromium driving the genuine login → chat → composer path (Playwright drivers in neode-ui/*tmp.mjs).
  • Desktop viewport 1600×950 and 1280×760 and narrow 1100×620 during the day.
  • Real-handheld pass: NOT done. The plan's flagged assumption asks for a physical phone pass for touch/keyboard/audio. Recorded here as the remaining gap; the narrow-viewport runs cover layout only.

What was exercised and the results

# Flow Result Evidence
1 Login → chat renders embedded PASS Every driver run; headings resolved
2 Read tool in a turn ("show me my own shared content") PASS content_list scope own surfaced 18 items; heading "13 Images"; locked: 0 after c25fd8b6
3 Owner never pays for own content PASS 3 paid own items GET /content/<id> → 200 with real mimes (were 402)
4 Purchased item serves from local cache w/ Range PASS (code+unit level; live 402s on re-fetch eliminated by proxy cache arm) c25fd8b6
5 Recommendation turn renders rich preview cards PASS "recommend me 10 scifi films" → Films tab, "10 Films", per-card title/year/director + "not in library" badges (1ac08a3e + 7d57e2c3)
6 Disabled-category request offers Settings PASS revoke media → ask → banner "The assistant needed access to Media Libraries, which is switched off." (6815a7d1); grant restored after
7 Confirm gate on a chat write PASS "install bitcoin knots" → assistant.pending carried node-authored app_install description; decline resolved with nothing executed (7686a486)
8 Cmd/Ctrl+K → "Talk to AIUI about it" carries the query PASS composer prefill exact-match
9 Grants persist across refresh PASS node-side grants identical before/after reload
10 CSP boundary (13-09) PASS operator-confirmed earlier: CSP blocks in frame, 200 at top
11 Share video + document PASS operator-confirmed earlier
12 Music library (D-13, non-blocking) DEFERRED-RECORDED own songs surface (2 tracks, real /content/ URLs); in-app playback now node-first (c2e71bc7) — full music-track pass remains on its own track

Defects found during UAT and fixed same-day

  • Content surface closed when the reply inferred no tabs (f0d2cdb7).
  • Global archy latch suppressed all extracted previews after mount (7d57e2c3).
  • Owner-locked own items (c25fd8b6). Peer/purchased cards with empty URLs (same commit).
  • Recommendation turns never called the tools (1ac08a3e prompt) + films/apps shape bugs (a91bc55d).
  • Permission banner structurally unreachable (D-16 hid tools → no refusal → no banner); fixed by listing disabled tools as callable-but-refused (6815a7d1).
  • #ai-data-access anchor missing (eaf0f073). strfry icon 404 (2787a9bb).
  • Prod bundle shipped mock hosts — tree-shake defeated by an impure module-level export; mocks dir declared side-effect-free (8329b826).
  • Backdrop 1052K→478K (e36f36ee). S6 cloud legs no longer strip prior user turns (7686a486).

Known-open at acceptance

  • A real handheld pass (above) is still owed.
  • The three pre-existing AIUI fixture failures (seed 10-vs-6, webSearch flag) predate this phase's close work; recorded in W1.7 of the assessment fix plan.
  • Console noise items (wavlake/itunes CSP on enrichment, sw.js SSL on self-signed) tracked in the open task list.