packages/zig/src/log.zig implements a real logger: LogConfig (:33-40) with output_file, json_output, min_level, filter_pattern, a mutex, and file-handle lifecycle. Nothing uses it — grepping src for log.init(/output_file outside log.zig returns no callers, and there's no --log-file flag in cli.zig.
Separately, craft.log.* (the page-facing namespace, bridge_log.zig) is a macOS-only std.debug.print — on Linux/Windows it parses the payload and discards it (:49), and the os_log handle created at init (:27) is never used (the file's comment calls it a placeholder).
Ask: wire log.zig behind a --log-file <path> (+ --log-json, --log-level) so a long-running or headless craft app leaves a diagnosable trail. Downstream (stacksjs/harness) currently learns nothing about the host process once it's detached; a log file is the missing half of the --headless story from #48.
🤖 Generated with Claude Code