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>
3.9 KiB
3.9 KiB
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 inneode-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 (
1ac08a3eprompt) + 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-accessanchor 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.