# Local full-session run outputs follow the session build root

Six full-session controllers no longer default to the old Windows benchmark
scratch directory: C++ local smoke and Java local smoke, runner equivalence,
provider transcript, local TCP diagnostic and live TCP matrix.

Explicit `FIXBENCH_RUN_ROOT` wins; otherwise outputs follow
`LIBHFT_BUILD_ROOT/{cpp,java}-fixbench-runs`. Without either input, the fallback
belongs to the owning worktree/module's `target/fixbench-runs`. Explicit output
CLI options still take precedence. The change concerns run outputs;
engine-source/build-path migration remains separate work.

All **18 explicit/build-root/unset default checks** and **six actual CLI help
entrypoints** pass. No engine compiler, JVM benchmark, connection or timing run
is started. Existing retained evidence and frozen runtime inputs are unchanged.
Readiness selects **712 files (9.6 MB)**, with **244 scrub findings in 71
files**, **94 textual escapes** and **zero dead documentation links**.

[Configuration check receipt](evidence/local-output-roots-20261003/check.json).
