ci / ci (pull_request) Successful in 3m31s
crucible nwsync emit and assemble printed their summary line to stdout. Callers that capture a script's stdout as a value got the summary glued onto it: pack-haks.sh does release_dir="$(...)", so all 11 emit summaries landed in $release_dir and publish-release.sh failed with "release dir not found". Neither line is a machine-readable contract, so move both to stderr, where lib.sh's own "nwsync: emitted $key" log already goes. runEmit and runAssemble no longer need the stdout writer. Fixes #81. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>