--- id: "bug-1615" status: "fixed" status_updated: "2026-09-24" status_note: "" component: "build" severity: "unknown" timestamp: "2026-08-21T09:37:18Z" last_seen: "2026-09-19T09:00:00Z" occurrences: 1 files: ["src/tools/test-dirty-fingerprint-distinguishability.sh"] tags: ["bash", "set-u", "local", "unbound-variable", "dirty-content-fingerprint", "task-6.1", "src/tools"] related: [] legacy: true --- # bug-1615: src/tools/test-dirty-fingerprint-distinguishability.sh: line 344: iso_src: unbound variable ## Description src/tools/test-dirty-fingerprint-distinguishability.sh: line 344: iso_src: unbound variable ## Environment _Not recorded (migrated from buglog.json)._ ## Reproduction _Not recorded (migrated from buglog.json)._ ## Root cause capture_version()'s `local iso_src="$1" binary="$iso_src/$BUILD_DIR_NAME/scheduler/xce_scheduler"` put two assignments in ONE `local` statement where the second referenced the first. Bash expands every word of a single `local` command before ANY of that command's assignments take effect, so `$iso_src` in the second word's value expanded against the OLD (not-yet-declared) `iso_src`, which under `set -u` is an unbound-variable error rather than silently empty. ## Fix Split into two separate `local` statements (`local iso_src="$1"` then `local binary="$iso_src/..."` on its own line) so the second statement's expansion happens after the first has already taken effect. Confirmed via `bash -n` plus two full real end-to-end script runs (both exit 0, byte-identical fingerprints reproduced across runs) after the fix. ## Verification _Not recorded (migrated from buglog.json)._ ## References _Not recorded (migrated from buglog.json)._