Files
Sylpheed/tools/re-capture/focus_persistence_session.sh
sylph-decoder 12c9f04ff8 re: the main menu remembers its cursor across menu -> title -> menu
F1 TUTORIAL, two delivery-confirmed DOWNs to EXTRAS, B to the title, A back:
F3 is EXTRAS. Re-entry restores the item you left.

Reframes the initial-focus disagreement rather than settling it: if focus
persists, any 'initial focus' reading not taken on a fresh boot's first menu entry
measures history. It still says nothing about what the menu opens on -- this run's
F1 was itself carried over from a prior probe's press.

Reached on the plate-pulse gate, not boot_menu.sh, whose stillness test cannot fire
on this title -- TITLE at 422.7 s on a boot skip_intro could not gate at all.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wuu56cE8vJGTBtn1ppsk8v
2026-08-30 21:29:01 +00:00

37 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
# Boot, then run focus_persistence.py. NO skip_intro -- the probe finds the title
# itself by the plate pulse, which is the gate that works on a screen whose sweep
# leaves never stop (harness-title-gate-assumes-a-static-title.md).
set -u
export HOME=/sylph-home/re SDL_AUDIODRIVER=dummy DISPLAY=:98
SD="$(cd "$(dirname "$0")" && pwd)"
OUT="${OUT:-/sylph-home/re/focuspersist}"; mkdir -p "$OUT"
LOG="$OUT/canary.stdout"
bash "$SD/ensure_single_emulator.sh"
if ! xdpyinfo -display "$DISPLAY" >/dev/null 2>&1; then
rm -f "/tmp/.X${DISPLAY#:}-lock" 2>/dev/null || true
nohup bash -c 'Xvfb "$0" -screen 0 1280x720x24 -ac -nolisten tcp \
+extension GLX +extension RANDR >/tmp/xvfb98.log 2>&1' "$DISPLAY" </dev/null >/dev/null 2>&1 &
for _ in $(seq 1 50); do xdpyinfo -display "$DISPLAY" >/dev/null 2>&1 && break; done
nohup env DISPLAY="$DISPLAY" HOME=/sylph-home openbox </dev/null >/tmp/openbox98.log 2>&1 &
fi
xdpyinfo -display "$DISPLAY" >/dev/null 2>&1 || { echo "DISPLAY UNAVAILABLE"; exit 1; }
# The profile is NOT optional: naming a XUID with no profile opens a sign-in
# dialog, and IsUIActive() then swallows every keystroke for the rest of the run.
XUID="${SYLPH_XUID:-$(ls "${XENIA_CONTENT:-$HOME/.local/share/Xenia/content}" 2>/dev/null | head -1)}"
[ -n "$XUID" ] || { echo "NO PROFILE"; exit 2; }
echo "── EFFECTIVE CONFIG ──────────────────────────────"
echo " out dir = $OUT"
echo " profile = $XUID"
echo " title gate= plate pulse (NOT skip_intro's stillness test)"
echo " log = $LOG [RE-INPUT] delivery confirmation reads this"
cd /sylph-home/re
nohup run-canary --apu=sdl --log_mask=13 --log_level=2 \
--logged_profile_slot_0_xuid="$XUID" </dev/null >"$LOG" 2>&1 &
python3 "$SD/focus_persistence.py" "$LOG" "$OUT" "${WAIT:-900}"