Standard mode prints only steps, one-line results with the time since the line above, a rule
closing each step with its total, warnings (!!) and errors (** ERROR:), and a summary at the
end. Every log line of every module goes to <prefix>_log.txt instead, at debug level and
timestamped, opened with version, build, GPU, threads, command line and the header geometry.
-v puts the whole log back on the terminal.
- RugnuxObserver gains OnStep / OnNote. RunPipeline posts them only on a pass that makes the
result (the observer is held in steps_, nullptr on probe passes and on copies run beside the
main pass); RunAllPasses opens steps for the checks between passes (rotation scale, metric
symmetry, geometry walk) and notes its re-runs. OnPhase is written to the log as a marker.
- RugnuxConsole (CLI only): on a terminal a progress bar and a spinner status line drawn in
place with \r, durations only; not a terminal, plain ASCII with the time of day on every line
and quarter milestones for long passes. isatty/_isatty, no environment variables. A warning
repeated by later merges is shown once more on one line and then counted per step.
- The CLI's former stdout blocks (space-group search, merging statistics, per-image cost,
processing time, tNCS/twinning/anisotropy in --mode scale) go to the log; the calibration
result block stays on the terminal as that mode's summary. The MX summary takes its rows
from the report's own SUMMARY (ReportDocument::summary_rows); WriteResultReport returns the
document it rendered. HDF5's automatic error-stack printing is switched off.
- The banner keeps the "Version X (git abcdef" form battery.py reads off a bare invocation;
battery.py's failure note now reads p_log.txt, whose lines are not wrapped.
Output only: p.mtz is bit-identical on the three in-house reference sets.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SVmAWnzCmRKAXVUCdc4iNi