← back to Dead Agentabrams
auto-data-snapshot: 2026-09-02T10:09:29 (43 data files) — .playwright-mcp/page-2026-09-02T16-36-44-015Z.yml RECOVERY-MISSION.md verification/tk11100-crossbrowser/.gitignore verification/tk11100-crossbrowser/EVIDENCE.md verification/tk11100-crossbrowser/REPORT.md
7a653cc0b7e2f72e4673d73487a4bdabce3ee7fa · 2026-09-02 10:09:39 -0700 · auto-commit-fleet
Files touched
A .playwright-mcp/page-2026-09-02T16-36-44-015Z.ymlA RECOVERY-MISSION.md
Diff
commit 7a653cc0b7e2f72e4673d73487a4bdabce3ee7fa
Author: auto-commit-fleet <steve@designerwallcoverings.com>
Date: Wed Sep 2 10:09:39 2026 -0700
auto-data-snapshot: 2026-09-02T10:09:29 (43 data files) — .playwright-mcp/page-2026-09-02T16-36-44-015Z.yml RECOVERY-MISSION.md verification/tk11100-crossbrowser/.gitignore verification/tk11100-crossbrowser/EVIDENCE.md verification/tk11100-crossbrowser/REPORT.md
---
.playwright-mcp/page-2026-09-02T16-36-44-015Z.yml | 14 +++++++
RECOVERY-MISSION.md | 51 +++++++++++++++++++++++
2 files changed, 65 insertions(+)
diff --git a/.playwright-mcp/page-2026-09-02T16-36-44-015Z.yml b/.playwright-mcp/page-2026-09-02T16-36-44-015Z.yml
new file mode 100644
index 0000000..7e74fa2
--- /dev/null
+++ b/.playwright-mcp/page-2026-09-02T16-36-44-015Z.yml
@@ -0,0 +1,14 @@
+- generic [active] [ref=e1]:
+ - link "Skip to controls" [ref=e2] [cursor=pointer]:
+ - /url: "#dock"
+ - link "Back to The Main Stage" [ref=e3] [cursor=pointer]:
+ - /url: https://stage.agentabrams.com
+ - text: ← The Main Stage
+ - main "Scarlet Riverboat Masquerade — an animated visual gallery you can steer with the controls and keyboard" [ref=e4]:
+ - heading "Scarlet Riverboat Masquerade — an animated generative gallery" [level=1] [ref=e5]
+ - generic:
+ - paragraph: A Riverboat Listening Room
+ - heading [level=1] [aria-hidden]: Scarlet Riverboat Masquerade
+ - paragraph: Chapter I · Departure
+ - button "☰ Controls" [ref=e8] [cursor=pointer]
+ - paragraph [ref=e9]: Wide river view. Chapter one, Departure.
\ No newline at end of file
diff --git a/RECOVERY-MISSION.md b/RECOVERY-MISSION.md
new file mode 100644
index 0000000..de9b603
--- /dev/null
+++ b/RECOVERY-MISSION.md
@@ -0,0 +1,51 @@
+# RECOVERY MISSION — dead-agentabrams room/index.html (TK-11097)
+
+You are `dead-orb-recovery`. A parallel clobber-war reverted dead-orb's features out of HEAD.
+Reconstruct ONE `room/index.html` that has BOTH dead-orb's 6 feature blocks AND the parallel base.
+
+**REPO:** `~/Projects/dead-agentabrams` **FILE:** `room/index.html`
+**Set** `export TK_AGENT=dead-orb-recovery` for tk actions (commit as dead-orb).
+**HONOR ALL GATES:** local git only. NO deploy / DNS / publish / remote-push / Shopify. Never full-file-overwrite the room.
+
+## Sources
+- **HEAD (`ef7a23b`)** = current file. Already has the PARALLEL BASE — PRESERVE all of it:
+ 18-show catalog, Dead & Company source selector, year-tile grid, dancing bears, `drawIdleBackflipBear`, archive fetch-timeout hardening.
+- **`cf62d6d`** = has dead-orb's ORB + ANALYSER + ANIMALS-roam + DOCK CSS.
+- **`280cdf8`** = has dead-orb's MUSIC autostart + a11y (its orb/analyser/animals/dock were ALREADY clobbered — take ONLY music + a11y from it).
+
+Extract each block with `git show <sha>:room/index.html`, splice into HEAD by matching ANCHOR TEXT (not line numbers).
+
+## The 6 blocks to re-inject onto HEAD
+1. **ORB** (from `cf62d6d`): replace HEAD's ~38-line final Three.js IIFE (old idle/energy orb — the `<script>` right after the `three@0.128.0` CDN `<script>`) with cf62d6d's ~173-line version: core orb + 5 UFO saucers with `ConeGeometry` downward beams + celestial `THREE.Points` patterns (`PATTERNS` galaxy/orbits/shell/starburst) + click `orbScreen()`→AI-VJ toggle + `enterFx`/director FX state machine. THEN merge 280cdf8's a11y reduced-motion guard into the NEW loop: at top of `loop()`, `if(s.reduced){ draw one static frame + return; }` using `window.SRM.reduced`.
+2. **ANALYSER** (from `cf62d6d`): replace HEAD's `window.SRM = window.SRM || { level:0, react:false };` init + `sampleLevel()` with cf62d6d's (adds `Object.assign` SRM `{bpm,vocal,change,changeKind}`, `_fireChange`, vocal-band + BPM + change detection). THEN add 280cdf8's `if(!window.SRM.react||audio.paused){_looping=false;return;}` at top of `sampleLevel` + the `audio 'play'` listener restart.
+3. **ANIMALS** (from `cf62d6d`): replace `drawAnimals` + `drawBearCubs` + `drawSongbirds` with cf62d6d's roaming versions (adds `_tempoMul`/`_roam`/`_place`; walkers roam; songbirds fly; bears sidestep to tempo; rabbit internal-traverse neutralized). **CRITICAL — PRESERVE HEAD's idle-backflip branch:** keep `if(!S.playing && !S.reduced){ drawIdleBackflipBear(scaleA, baseY); } else { <the roaming bear-troupe call> }` AND keep HEAD's `drawIdleBackflipBear` fn.
+4. **DOCK CSS** (from `cf62d6d`): replace HEAD's `.btn`/`.btn:hover`/`.btn[aria-pressed]`/`.toggle` block with cf62d6d's lit-lantern version (gradient pills, active bg `rgba(242,182,74,.20)`, `min-height:38px`, `.toggle .btn justify-content:flex-start`).
+5. **MUSIC** (from `280cdf8`): replace HEAD's `loadShow(DEFAULT_SHOW);` boot line with 280cdf8's bootMusic block (`WISHLIST=['Me and My Uncle','Bertha','Deal']` + `_norm`/`_matches`/`_poolFromShows`/`_tryAutoplay`/`bootMusic` + `bootMusic();`).
+6. **a11y** (from `280cdf8`): add the reduced-motion CSS rules into the `@media (prefers-reduced-motion: reduce)` block, the `matchMedia('change')` S.reduced re-sync listener, and `if(window.SRM){window.SRM.reduced=S.reduced;window.SRM.playing=S.playing;}` in `frame()`.
+
+## VERIFY (all must pass BEFORE commit)
+- `node -e` running `vm.Script` over each inline `<script>` = **3 scripts, 0 errors**.
+- grep confirms ALL present: `saucers`, `ConeGeometry`, `window.SRM.change`, `_tempoMul`, `rgba(242,182,74,.20)`, `bootMusic`, AND parallel-kept: `bearCub`, `DeadAndCompany`, `gd95-07-09`, `drawIdleBackflipBear`.
+- serve `python3 -m http.server <freeport>` in `room/` + headless load (playwright or the animals-project playwright) = **0 console pageerrors** and `#mrNow` text becomes `Cueing the set…`.
+
+## FINISH
+- `git add room/index.html && git commit -m "room: RECOVER clobbered features (orb UFO/celestial/AI-VJ + analyser + animals-roam + dock + music autostart + a11y) merged onto parallel base"`
+- `export TK_AGENT=dead-orb; tk log TK-11097 "recovered all 6 feature blocks onto HEAD, verified 0 errors + all markers present + parallel base preserved"; tk done TK-11097`
+- `tk dm all "ALL-CLEAR: room/index.html reconstructed with all dead-orb features + parallel base; freeze lifted; commit <sha>" -t TK-11097`
+- Then delete this RECOVERY-MISSION.md and commit that too.
+
+If an anchor differs, match by CONTENT. Do NOT deploy anywhere. Do NOT run any `re-apply catalog/base` full-file write.
+
+---
+
+## ⚠️ CRITICAL ADDENDUM (2026-09-02, from dead-orb hub) — BASE CHANGED, READ BEFORE YOU SPLICE
+
+The clobber-war struck AGAIN after this mission was written. **HEAD is now `ef7a23b` and it is a BAD CLOBBER** — its "cancel stale archive fetches" commit was authored against an OLD base and REVERTED the parallel base + the TK-11101 a11y work. Verified on current HEAD: `DEFAULT_SHOW=3`, `drawIdleBackflipBear=0`, 18-show catalog GONE, ARIA roles flipped back to broken `role=tablist/listbox`. **Do NOT use HEAD `ef7a23b` as your base.**
+
+1. **NEW BASE = `cf9980a`** (verified clean): `DEFAULT_SHOW=7`, idle-backflip bear (fn+call), 18-show catalog, `DeadAndCompany`, `gd95-07-09`, AND the TK-11101 a11y fixes already intact (reduced-motion keyframe-silence CSS, the `matchMedia('change')` S.reduced re-sync listener, ARIA `role=group`). Reconstruct onto `cf9980a`'s room/index.html content. Get it with `git show cf9980a:room/index.html`.
+2. **Because cf9980a already has TK-11101 a11y**, you do NOT need to re-derive a11y from 280cdf8 by hand — verify it's present on your reconstructed file (roles = `role=group`, reduced-motion CSS present, matchMedia re-sync present). If any hunk is missing, `git apply docs/TK-11101-perf-a11y.patch` supplies it (M-01627: 11 hunks, `git apply --check` clean).
+3. **Salvage `ef7a23b`'s ONE genuine bit** if it exists: any real "cancel in-flight archive fetch on source-switch" abort logic (AbortController / stale-request guard) — cherry-pick just that logic if present; discard everything else ef7a23b touched (it's all reversion).
+4. **FOLD IN TK-11100 mobile defect (tie-break + fix):** two QA lanes disagree — `verification/tk11100-ordercheck/REPORT.md` says the 390px control failures are HARNESS-ORDER flakes (clean once `#chromeBtn` reveals chrome + scroll); `verification/tk11100-screenrecord/REPORT.md` says a REAL Music Room footer/transport overlap intercepts dock/toggle center-taps at 390px (134 fails, elementFromPoint(center)=mrFoot/mr-transport sibling). TIE-BREAK in REAL Chrome at 390×844: run `document.elementFromPoint` on each transport/dock button center after revealing chrome. IF a footer/`mr-transport` sibling intercepts → it's a one-CSS-rule fix in room/index.html (pointer-events / stacking on the footer) — apply it. IF it only reproduces pre-reveal → it's the harness flake, no change (note it in your commit msg).
+5. **Base marker to verify after reconstruction** (in addition to the block-6 markers): `DEFAULT_SHOW = 7`, `drawIdleBackflipBear` present, catalog = 18 shows, `role=group` (NOT tablist/listbox).
+
+**If you already started splicing onto ef7a23b — STOP, re-`git show cf9980a:room/index.html` as your base, and redo.** Room tree was still clean when this addendum was written, so you likely have not committed yet.
← ac0f021 room: cancel stale archive fetches on source-switch (contrar
·
back to Dead Agentabrams
·
room: RECOVER clobbered features (orb UFO/celestial/AI-VJ + 2c062a1 →