Two gaps found launching the launcher for the LA11 gate.
1. acdream-bake was co-deployed only AfterTargets=Publish with a RID, so a
plain `dotnet build` left the launcher with no bake tool beside it while
App.OnFrameworkInitializationCompleted resolves it at
AppContext.BaseDirectory/acdream-bake[.exe]. A developer-built launcher
therefore reached the first-run wizard with an installer it could never
run. CoDeployBakeToolToBuildOutput does for Build what the publish target
does for Publish: still NO Launcher -> Bake project reference, still a
self-contained single file so exactly one file lands beside the launcher
rather than scattering Content/Chorizite assemblies into its output.
Staged through obj/ because publishing straight into the launcher output
makes the inner publish delete what the outer build just wrote.
Inputs/Outputs keep it incremental - verified: 79.6 MB bake exe present,
--help exits 0, and a second build skips the republish in ~1 s.
2. #398: the top-level guard printed only ex.Message, so the crash that
preceded this commit surfaced with no file, line, or frame. The full
exception now goes to a crash-reports file under the resolved data root
and stderr names the path. The first implementation wrote to the machine
real data root when option parsing itself failed, which broke LA11 process
local roots during an isolated run; the reporter now reads --data-dir
positionally for that fallback. Verified: report lands inside the isolated
root and the real root stays empty.
The redaction comment states exactly what is guaranteed - args/environment
are never serialized, while exception text may quote an option name or path,
which is safe only because credentials never enter launcher state.
Launcher.Core 317/317 green.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>