Repository navigation
Round and align score means in the run summary, and show elapsed time - #32
Merged
Merged
Conversation
The human summary printed raw floats such as mean=0.976207729468599 in ragged "task.metric: mean=... count=..." lines. Score lines now follow the summary's labelled-column style as an aligned "Score" table with means rounded to three decimals (exponent form for values that would round to zero or are very large, n/a when nothing was scored), and the CLI adds an "Elapsed" line measured around the run. Requirement lines keep the exact actual value so a rounded mean can never appear to contradict PASS/FAIL. run.json and --json are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 23, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Executive summary
The human summary from
mic runis now easier to read. Score means are rounded to three decimals in an alignedScoretable, and a newElapsedline shows wall-clock time. Nothing else in the summary changes, andrun.jsonand--jsonstay exact.Before:
After:
Why
These summaries were hard to scan. Full float precision was shown, the metric lines were the only ones that didn't follow the labelled-column layout, and there was no indication of how long the run took. This is the third PR in the streaming-output work, agreed during the design discussion.
Design and implementation
Score,Requirement,Source). Metric names and means are padded to their widest value so the columns line up.console._mean):0.000or are 1e6 or larger, e.g.4.000e-04, so small and large values aren't flattened;n/awhen a metric has no recorded scores.actualvalue. Rounding there could printmean 0.900next toFAIL …>=0.9. The test uses that exact case.format_summary(manifest, elapsed=...). It reuses the progress display's duration format (4.2s,3:02). The manifest gets no new field, so there's no schema change. Python callers offormat_summarywithoutelapsedget noElapsedline.docs/cli.mdnow describes the human summary, its rounding and the exact requirement values. The README run example is updated.Verification and confidence
tests/reporting/test_console.pycovers:0.976,0.667,0.000);n/afor empty metrics;Elapsedplacement and format, and its absence when no time is passed;actualnext to a rounded mean.test_htmland the CLI acceptance test, including an end-to-end check of theScoreline and theElapsedline.--require, a metric with no scores, and two sources all render as expected.scripts/verify.py: 782 tests, 0 failures. Typing, lint, format and the coverage gates all pass. The Node report checks can't run locally (no Node); they passed in CI's full verification job, along with the Linux, macOS, Windows and distribution jobs.Compatibility and risks
task.metric: mean=X count=NtoScore task.metric mean X count N, and anElapsedline is added afterStatus. Scripts that parse the human summary instead of--jsonwould need updating;--jsonis the documented machine interface and is unchanged.format_summarygains an optional keyword-only argument.Relationships and tracking
Builds on #30 (engine observer hooks) and #31 (live progress display), both merged; this PR targets
main. It completes the planned stack.Unverified or follow-up work
None.
🤖 Generated with Claude Code