fix(decoder): mount the disassembly database, which it had lost
`SYLPHEED_DB=/xenia-rs/sylpheed.db` named a path that no longer exists. The xenia-rs repo was retired by the consolidation, its local clone was deleted, and the `/xenia-rs` mount that served the database was removed in #61 because it pointed at nothing. The env var stayed. So the decoder had NO database: `zq.py` and `/sylph-dis` -- most of what a static-RE brief asks for -- could not run. Mounted read-only at the container's repo root instead, which is where `zq.py` looks when `$SYLPHEED_DB` is unset, so there is no variable left to drift out of step with the mount. That drift is the whole bug: a path in an env var and a path in a mount, maintained separately. Read-only is deliberate. The host owns the file, DuckDB takes an exclusive lock to write, and two agents plus the human sharing one database would corrupt it. Regenerating means writing elsewhere and pointing $SYLPHEED_DB at it. Missing-file cases now say so and print the command that builds one, rather than starting an agent that discovers it mid-iteration. Verified in the real agent image: DB mounted, no env var set, `zq.py fn 0x824609C8` -> `Pak_FindEntryByName`, `zq.py classes` lists RTTI. The brief's tooling table also claimed the old path, and said nothing about the oracle binary; both corrected. It now records that the built Canary carries RE-INPUT/RE-DRAW but NOT the audit_61 branch probe -- measured with `strings` on both built binaries, zero hits; it is on two other branches (fork issue #1). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -123,7 +123,16 @@ docker_args() {
|
||||
# emulator and scrape /dev/shm to get at it. An earlier belief that this
|
||||
# file was STALE was tested and refuted -- it is current.
|
||||
-v "${SYLPH_PE:-$PROJECT/Project Sylpheed - Arc of Deception (USA, Europe) (En,Ja).pe}:/image/sylpheed.pe:ro"
|
||||
-e "SYLPHEED_DB=/xenia-rs/sylpheed.db"
|
||||
# 🔴 THE DISASSEMBLY DATABASE. This used to be read from the xenia-rs clone
|
||||
# (`SYLPHEED_DB=/xenia-rs/sylpheed.db`). That repo is retired, its directory
|
||||
# is gone, and the mount that served it was removed -- so the variable named
|
||||
# a path that did not exist and `zq.py` had nothing to open. The database now
|
||||
# lives beside the repo as a build artefact; mounted at the container's repo
|
||||
# root, which is where `zq.py` looks when `$SYLPHEED_DB` is unset.
|
||||
#
|
||||
# Read-only on purpose: the host owns it, DuckDB takes an exclusive lock to
|
||||
# write, and two agents plus the human sharing one file would corrupt it.
|
||||
# Regenerating means writing elsewhere and pointing `$SYLPHEED_DB` at it.
|
||||
-e "SYLPHEED_PE=/image/sylpheed.pe"
|
||||
-e "SYLPHEED_IMAGE_BASE=0x82000000"
|
||||
# 🔴 EVIDENCE IS SHARED, NOT COMMITTED (issue #49). Each agent works in its
|
||||
@@ -276,6 +285,20 @@ docker_args() {
|
||||
echo "==> NOTE: no ISO at $_iso -- Canary has nothing to boot." >&2
|
||||
fi
|
||||
|
||||
# The disassembly database. `zq.py` looks at the repo root when $SYLPHEED_DB
|
||||
# is unset, so mounting it there needs no environment variable at all -- which
|
||||
# is what the dead `/xenia-rs/sylpheed.db` variable taught: a path in an env
|
||||
# var and a path in a mount drift apart silently.
|
||||
_db="${SYLPH_DB:-$PROJECT/Sylpheed/sylpheed.db}"
|
||||
if [ -f "$_db" ]; then
|
||||
_out+=(-v "$_db:/work/sylpheed.db:ro")
|
||||
else
|
||||
echo "==> NOTE: no sylpheed.db at $_db -- /sylph-dis and zq.py cannot run." >&2
|
||||
echo " build one: cargo run --release -p sylpheed-xexdb --bin sylph-xexdb -- \\" >&2
|
||||
echo " dis \"\$SYLPH_ISO\" --db sylpheed.db --analyze sql --quiet" >&2
|
||||
echo " then re-apply the RE names with tools/apply_re_symbols.sql" >&2
|
||||
fi
|
||||
|
||||
# ── GPU ──
|
||||
# Three distinct cases, and conflating them is how you end up believing you
|
||||
# have hardware Vulkan while actually running llvmpipe:
|
||||
|
||||
Reference in New Issue
Block a user