docs: add FLE bridge direction pivot and squad-injection test tooling

Adds the app-centric FLE bridge direction (direction.md) replacing the
Blaze-backend route as primary plan, plus a corrected foundational test
procedure and snapshot/diff/apply tooling for reverse-engineering FLE's
Freeze Lineup write mechanism. Also picks up prior untracked research docs
(status-review, fut-integration-options, fifa23-startup-flow, track-c) and
existing capture/export tooling that hadn't been committed yet.
This commit is contained in:
funman300
2026-06-30 13:19:27 -07:00
parent cbb9ea49ab
commit 1fb664710a
15 changed files with 2060 additions and 0 deletions
+112
View File
@@ -0,0 +1,112 @@
#!/usr/bin/env bash
# file-watch-diff/watch.sh
# Snapshots FIFA 23 local file state and diffs it between labelled game phases.
# Usage: watch.sh snapshot <label>
# watch.sh diff <label-a> <label-b>
# watch.sh watch # live tail of changes (requires inotifywait)
#
# Labels: baseline | main-menu | entered-fut | squad-change | post-match
set -euo pipefail
SNAP_DIR="$(cd "$(dirname "$0")" && pwd)/snapshots"
mkdir -p "$SNAP_DIR"
# All directories that FIFA 23 writes to locally under Wine/Proton
WATCH_PATHS=(
"$HOME/.local/share/Steam/steamapps/compatdata/3887260930/pfx/drive_c/users/steamuser/Documents/FIFA 23"
"$HOME/Games/umu/fifa23-tools/pfx/drive_c/users/steamuser/Documents/FIFA 23"
"/mnt/games/FIFA 23/Logs"
"/mnt/games/FIFA 23/Patch"
)
# Build a listing (path + size + mtime) of every file under watched dirs
snapshot() {
local label="$1"
local out="$SNAP_DIR/${label}.txt"
echo "# snapshot: $label $(date -u +%Y-%m-%dT%H:%M:%SZ)" > "$out"
for d in "${WATCH_PATHS[@]}"; do
[ -d "$d" ] || continue
find "$d" -type f -printf '%TY-%Tm-%Td %TH:%TM:%.2TS %7s %p\n' 2>/dev/null
done | sort >> "$out"
echo "Snapshot '$label' written to $out"
wc -l "$out"
}
# Diff two snapshots by path+size+mtime
diff_snapshots() {
local a="$SNAP_DIR/${1}.txt"
local b="$SNAP_DIR/${2}.txt"
[ -f "$a" ] || { echo "Missing snapshot: $1"; exit 1; }
[ -f "$b" ] || { echo "Missing snapshot: $2"; exit 1; }
echo "=== Files added between '$1' → '$2' ==="
comm -13 <(grep -v '^#' "$a" | awk '{print $NF}' | sort) \
<(grep -v '^#' "$b" | awk '{print $NF}' | sort)
echo ""
echo "=== Files removed between '$1' → '$2' ==="
comm -23 <(grep -v '^#' "$a" | awk '{print $NF}' | sort) \
<(grep -v '^#' "$b" | awk '{print $NF}' | sort)
echo ""
echo "=== Files changed (size or mtime) between '$1' → '$2' ==="
# Join on filename, report lines whose mtime/size differs
diff <(grep -v '^#' "$a" | sort -k4) \
<(grep -v '^#' "$b" | sort -k4) \
| grep '^[<>]' \
| awk '{print $NF}' \
| sort | uniq -d
}
# Live watch using /proc/inotify fallback (poll every 2s)
watch_live() {
if command -v inotifywait &>/dev/null; then
inotifywait -r -m -e close_write,create,delete,moved_to \
"${WATCH_PATHS[@]}" 2>/dev/null
else
echo "inotifywait not found. Install inotify-tools for live watching."
echo "Falling back to 2-second poll diff (Ctrl-C to stop)..."
local tmp_a tmp_b
tmp_a=$(mktemp)
tmp_b=$(mktemp)
for d in "${WATCH_PATHS[@]}"; do
[ -d "$d" ] || continue
find "$d" -type f -printf '%TY-%Tm-%Td %TH:%TM:%.2TS %7s %p\n' 2>/dev/null
done | sort > "$tmp_a"
while true; do
sleep 2
for d in "${WATCH_PATHS[@]}"; do
[ -d "$d" ] || continue
find "$d" -type f -printf '%TY-%Tm-%Td %TH:%TM:%.2TS %7s %p\n' 2>/dev/null
done | sort > "$tmp_b"
diff "$tmp_a" "$tmp_b" | grep '^[<>]' | while read -r line; do
echo "$(date +%H:%M:%S) $line"
done
cp "$tmp_b" "$tmp_a"
done
fi
}
case "${1:-}" in
snapshot) snapshot "${2:?Usage: watch.sh snapshot <label>}" ;;
diff) diff_snapshots "${2:?}" "${3:?Usage: watch.sh diff <label-a> <label-b>}" ;;
watch) watch_live ;;
*)
echo "Usage:"
echo " $0 snapshot <label> # take a file state snapshot"
echo " $0 diff <label-a> <label-b> # show what changed between two snapshots"
echo " $0 watch # live monitor (inotifywait or poll)"
echo ""
echo "Suggested workflow:"
echo " $0 snapshot baseline"
echo " # launch FIFA"
echo " $0 snapshot main-menu"
echo " # navigate to FUT"
echo " $0 snapshot entered-fut"
echo " # make squad change"
echo " $0 snapshot squad-change"
echo " $0 diff main-menu entered-fut"
;;
esac