fix(tools): every sylpheed.db reader honours $SYLPHEED_DB, and none needs a retired checkout #41
Reference in New Issue
Block a user
Delete Branch "fix/sylpheed-db-contract"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Unblocks deleting the retired
xenia-rsandsylpheed-reborncheckouts. It also fixes twoscripts that have been silently broken for a while.
The database contract existed but nothing honoured it
SYLPHEED_DBis the documented way to locatesylpheed.db.docker/decoder/sylph-decodersetsit, and
CONTAINER-NOTES.mdanddecoder-loop.mdlist it. No reader used it:tools/re-capture/isl_cmdtab.py/work/xenia-rs/sylpheed.db— exists nowhere since/workbecame a clone$SYLPHEED_DB→$SYLPH_XEXDB→<repo>/sylpheed.db→ exit 1tools/re-capture/name_block_bases.pytools/zq.py$SYLPH_XEXDB— a name I invented in #39 without checking$SYLPHEED_DBfirst; the old name stays as an aliasgrab_tutorial.shwas running a known-broken helperIts helpers were hardcoded into the retired
sylpheed-reborncheckout. That copy'sskip_intro.shstill calls the removedvgamepadand exits 0 having pressed nothing, whichis exactly what this repo's copy was rewritten to make loud. The script now resolves its helpers
from its own directory. Nothing exists only in reborn's copy (0 files).
Verified — output byte-identical to the originals
Run against the same database and compared with the original scripts:
isl_cmdtabname_block_bases$SYLPHEED_DB$SYLPH_XEXDBisl_cmdtab's output also matches the body of the committedisl-command-table.txtexactly.⚠️ Two things this deliberately does not do
name-block-bases.txtis not reproducible from this machine's database. 2,609 lines differ,starting with
strings: 7366vs7140. The committed artefact came from the agent box's older586 MB database. Two different
sylpheed.dbfiles are in circulation. I haven't regeneratedanything.
name_block_bases.py:197globs/work/sylph_extract/**/*.pak, another dead path, so thatsection of its report is silently empty. It should read
$SYLPHEED_DISC. That's a separate bug,so it isn't mixed in here.
Agent box, not changed here:
sylph-decodermounts$PROJECT/xenia-rsto find the database.It keeps working until that machine retires its
xenia-rscheckout, and then needs pointing atthe database's new home.
🤖 Generated with Claude Code
`SYLPHEED_DB` is the documented contract for the static-analysis database — `docker/decoder/sylph-decoder` sets it, and `docs/agents/CONTAINER-NOTES.md` and `decoder-loop.md` list it — but no reader honoured it: isl_cmdtab.py, name_block_bases.py hardcoded `/work/xenia-rs/sylpheed.db`, a path that has not existed anywhere since `/work` became a clone. Both failed on every machine, before and after the database moved. zq.py used `$SYLPH_XEXDB`, a name invented in #39 without grepping for the existing one. All three now resolve `$SYLPHEED_DB`, then `$SYLPH_XEXDB` (kept as an alias so nothing already written against it breaks), then `<repo root>/sylpheed.db`, and refuse with exit 1 naming both variables and the build command otherwise. `grab_tutorial.sh` hardcoded its helpers into the retired `sylpheed-reborn` checkout. That copy's `skip_intro.sh` still calls the removed `vgamepad` and exits 0 having pressed nothing — the failure this repository's own copy was rewritten to make loud. So the script was already running a silently broken helper; it now resolves its helpers from its own directory. Nothing exists only in reborn's `tools/re-capture` (checked: 0 reborn-only files). Verified against the same database, output compared byte for byte with the ORIGINAL scripts (path-substituted copies, sibling imports resolvable): resolution path isl_cmdtab name_block_bases default (root) identical identical $SYLPHEED_DB identical identical $SYLPH_XEXDB identical identical bad path exit 1 exit 1 (zq.py: exit 1 too) and `isl_cmdtab`'s output is byte-identical to the body of the committed `docs/re/data/isl-command-table.txt`. ⚠️ `name_block_bases`'s output does NOT reproduce the committed `docs/re/data/name-block-bases.txt` (2,609 lines differ, `strings in the image: 7366` vs `7140`). That is the database, not this change: the artefact was generated from the agent box's older 586 MB database, and this machine's is the current generator's. Two databases are in circulation. Not regenerated here. ⚠️ Also not fixed, because it is a different bug: `name_block_bases.py` globs `/work/sylph_extract/**/*.pak`, another path that exists nowhere now; that part of its report is silently empty. It should read `$SYLPHEED_DISC`. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>