From 5e71f256e4ff90f1b1fa57362fd60bf4d030a5ed Mon Sep 17 00:00:00 2001 From: archipelago Date: Fri, 7 Aug 2026 11:49:46 -0400 Subject: [PATCH] =?UTF-8?q?docs:=20resume=20artifact=20=E2=80=94=20session?= =?UTF-8?q?=202=20state=20(banner=20fix=20in=20flight,=20ISO=20cut)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .planning/RESUME-2026-08-07-evening.md | 64 ++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 .planning/RESUME-2026-08-07-evening.md diff --git a/.planning/RESUME-2026-08-07-evening.md b/.planning/RESUME-2026-08-07-evening.md new file mode 100644 index 00000000..1c774f2f --- /dev/null +++ b/.planning/RESUME-2026-08-07-evening.md @@ -0,0 +1,64 @@ +# RESUME — 2026-08-07 (session 2, evening). Banner fix, ISO, content truth. + +**Read first if a newer session needs this branch's state.** Supersedes +`RESUME-2026-08-07-aiui-surfaces.md` for what shipped TODAY; that doc's traps +list and deploy loop still apply verbatim. + +Branch `gsd/phase-13-aiui-functional-conversational-node-control-and-content-surf`. + +## Shipped this session (all committed + pushed to gitea-ai, deployed to archi-dev-box) + +| Commit | What | +|---|---| +| `c25fd8b6` | Owner never pays for own files (`serve_content` owner_session) + purchased items serve from local cache w/ Range + own never locked + per-onion peers/purchased normalization | +| `3f22e437` | strict-TS fix for the per-onion grouping (vue-tsc gate; vitest strips types) | +| `1ac08a3e` | Prompt: recommendations check catalogue/peers FIRST + `[[film_ext:…]]` etc. tag vocabulary for knowledge picks; bans the "would you like me to check?" stall | +| `a91bc55d` | W1.1 shapes: IndeeHub films carry `video/mp4` mime hint; `apps_list` wraps `{items:[…]}` at the tool boundary | +| `7d57e2c3` | Panel: per-bucket `archySupplied` replaces the global latch — recommendation previews render in empty buckets, node truth wins filled buckets, 'Nothing found' sticky | +| `c2e71bc7` | W1.2 playback: `usePlayer` plays node `sources[]` first (Wavlake fallback); `FilmDetail` prefers node sources over YouTube | +| `f15e2b50` | First banner fix attempt: `[[needs:]]` marker — **SUPERSEDED, see below** | + +## Live-verified this session (browser/RPC on archi-dev-box) + +- Own paid items: `GET /content/` with session cookie → **200** (were 402). +- "recommend me 10 scifi films" → Films tab + 10 preview cards ("10 Films" heading, "not in library" badges). +- Own shared content turn → `locked: 0`, playable `/content/` URLs. +- Cmd+K → "Talk to AIUI about it" → query lands in the AIUI composer (PREFILL-OK). +- Grants persist across refresh (node-side grants identical before/after reload). + +## IN FLIGHT when this was written + +**#6 banner** (ungranted-permission Settings offer). The 9abc1623 banner never fired +(D-16 hides ungranted tools → model never calls → `refused_categories` always empty). +The marker fix (`f15e2b50`) also failed live: the local model wrote a workaround +narrative, never emitted `[[needs:media]]`. **Final fix (uncommitted at writing):** +disabled tools are LISTED in the prompt under a DISABLED section and stay in the +schema — the model's call hits the execution gate, which records the refusal → +banner fires deterministically, model-independent. The prompt split is UX shaping; +the boundary remains the server-side grant re-check. Tests updated +(`ungranted_tool_only_ever_in_disabled_section`, `disabled_tools_are_listed_as_callable_but_refused`). +**Next steps: tests green → commit → rebuild release binary → deploy → re-run +`neode-ui/verify-banner.tmp.mjs` (revoke media → ask for content → banner → button +lands on #ai-data-access → restore grant).** + +## ISO + +`image-recipe/results/archipelago-installer-1.7.125-alpha-unbundled-x86_64_RC1.iso` +(2.6 GB) + `.sha256`, built 2026-08-07 ~11:16 via `UNBUNDLED=1 bash +image-recipe/build-debian-iso.sh`. First run wedged on transient deb.debian.org +download failures; the retry used the cached rootfs. **Frontend verification inside +the ISO is still owed** (RESUME rule): extract `web-ui/` from the ISO and compare +content-hashed asset filenames against `web/dist/neode-ui/` and +`aiui/packages/app/dist/` — both were built today (08:45 / 09:21) and are what the +builder copies in. NOTE: the ISO predates the DISABLED-section fix; if the demo +needs the banner to fire, re-cut after that binary lands. + +## Verification drivers (uncommitted, in `neode-ui/`) + +- `shot.tmp.mjs` — original chat probe (bucket counts via chat:response). +- `verify-owner.tmp.mjs` — own-content locked-count probe. +- `verify-reco.tmp.mjs` — the "recommend me 10 scifi films" turn. +- `verify-banner.tmp.mjs` — revoke media → chat → `.chat-permission-offer` → click → settings. +- `verify-cmdk.tmp.mjs` — spotlight → AIUI prefill. +- `verify-grants.tmp.mjs` — grants across reload. +All use `https://192.168.63.240`, password `ThisIsWeb54321@`, and run from `neode-ui/`.