be launched as a BARE name (argv0="be", no /) resolves via PATH in
dog/HOME.c (the bare branch of HOMEResolveSibling, ~l.1054-1084) but looks
for the sibling helper (sniff) beside the PATH entry (entry_c), never
realpath-ing the found executable. When that be is a symlink into the real
bin dir, sniff isn't beside the symlink → home_try_sibling fails → the
fallback feeds bare sniff → FILESpawn/execvp fails ENOENT (BEDOGEXIT).
The rel/abs branch already realpaths argv0 first (SUBS-022 453c55c2); the
bare branch is the residual. Method Issues.
ctest --test-dir beagle/build -R '^be-post-relpath$'
--output-on-failure (test be-post-relpath.sh, the SUBS-022 repro).[bare] arm fails:
FILESpawn: exec 'sniff' failed: errno=2 → Error: BEDOGEXIT.dog/HOME.c:1080 calls home_try_sibling(out, entry_c, name)
on the raw PATH directory entry; the matching exe (be) is not realpath'd,
so a symlinked/relinked be loses the real bin dir that holds sniff.[bare] arm of be-post-relpath passes; the sibling helper is found
beside the REAL binary, not the PATH symlink.dog/HOME.c fix mirroring the rel/abs realpath path; ABC path
discipline — PATHu8bReal + PATHu8sDir, path8b, NO pointer arithmetic
(CLAUDE.md §1/§10).[bare] arm is already a failing repro;
keep rel/abs + full ctest green after the fix.home_is_exe($path(exe)) (HOME.c:1079) realpath
exe (PATHu8bReal) → dirname (PATHu8sDir) → home_try_sibling on the
REAL dir; fall back to entry_c if realpath fails. Mirror l.1043-1045.break (l.1081) before the realpath'd dir is tried — let the real
dir get its home_try_sibling chance, then break.[bare] arm fails today (done — exec 'sniff' ENOENT).ctest -R '^be-post-relpath$' green incl. [bare]; full suite no regress.6df16caa (dog/HOME.c: realpath the PATH-resolved exe in the bare-name branch
before the sibling lookup) + 5efa0966 (the deterministic be-sniff-bare-name
repro + registration) — landed. be-post-relpath + the new test green; ctest no
new regressions.