For maintainers and contributors — symptom → cause → fix records from
incidents that actually cost fleet debugging time. User-facing symptoms
are covered in Troubleshooting.
Conformance tests report README/LICENSE/CHANGELOG drift in repos that were not touched — across several repos at once, right after adding a beads install step to CI
Cause
tar -xzf bd.tgz run in the repo root: the beads release archive ships its own README, LICENSE, CHANGELOG, which overwrote the checkout’s files. Root-caused with a temporary eprintln probe pushed to CI
Fix
Extract into a temp dir and copy only the bd binary member
ddl migrate --undo silently finds nothing to undo; re-running ddl migrate fails with Not a directory; single-file configs (e.g. .pretender.toml) became directory symlinks
Cause
Symlink targets persisted as relative paths while later discovery compared absolute paths (unnormalized), so detection saw nothing; migrate_tool() had no already-migrated guard; single-file configs were linked as directories
Fix
Normalize symlink targets before comparing (migrated_tools()); guard with is_symlink(legacy_path) and skip; separate single-file link creation/restoration (shipped as DDL-0yp, DDL-el9, DDL-cbp, DDL-40e)