diff --git a/jcstress-core/src/main/java/org/openjdk/jcstress/infra/grading/ConsoleReportPrinter.java b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/grading/ConsoleReportPrinter.java
index 66bfed7d..563d93b4 100644
--- a/jcstress-core/src/main/java/org/openjdk/jcstress/infra/grading/ConsoleReportPrinter.java
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/grading/ConsoleReportPrinter.java
@@ -149,7 +149,7 @@ private void printResult(TestResult r) {
             if (!progressInteractive) {
                 output.println();
             }
-            ReportUtils.printResult(output, r, true);
+            ReportUtils.printResult(output, r, false);
         }
 
         if (shouldPrintStatusLine) {
diff --git a/jcstress-core/src/main/java/org/openjdk/jcstress/infra/grading/ReportUtils.java b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/grading/ReportUtils.java
index e62e67c3..97af58ca 100644
--- a/jcstress-core/src/main/java/org/openjdk/jcstress/infra/grading/ReportUtils.java
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/grading/ReportUtils.java
@@ -110,20 +110,22 @@ private static TestResult merged(TestConfig config, Collection<TestResult> merge
         return root;
     }
 
-    public static void printResult(PrintWriter pw, TestResult r, boolean inProgress) {
+    public static void printResult(PrintWriter pw, TestResult r, boolean finalResults) {
         TestConfig config = r.getConfig();
 
         String label = StringUtils.leftPadDash("[" + ReportUtils.statusToLabel(r) + "]", 15);
         String testName = StringUtils.chunkName(r.getName());
         pw.printf("%15s %s%n", label, testName);
         pw.println();
-        pw.format("  Scheduling class:%n");
-        pw.println(SchedulingClass.description(config.getSchedulingClass(), config.actorNames));
-        pw.format("  CPU allocation:%n");
-        pw.println(CPUMap.description(config.cpuMap, config.actorNames));
-        pw.format("  Compilation: %s%n", CompileMode.description(config.getCompileMode(), config.actorNames));
-        pw.format("  JVM args: %s%n", config.jvmArgs);
-        if (inProgress) {
+        if (finalResults) {
+            pw.println("  Results across all configurations:");
+        } else {
+            pw.format("  Scheduling class:%n");
+            pw.println(SchedulingClass.description(config.getSchedulingClass(), config.actorNames));
+            pw.format("  CPU allocation:%n");
+            pw.println(CPUMap.description(config.cpuMap, config.actorNames));
+            pw.format("  Compilation: %s%n", CompileMode.description(config.getCompileMode(), config.actorNames));
+            pw.format("  JVM args: %s%n", config.jvmArgs);
             pw.format("  Fork: #%d%n", config.forkId + 1);
         }
         pw.println();
diff --git a/jcstress-core/src/main/java/org/openjdk/jcstress/infra/grading/TextReportPrinter.java b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/grading/TextReportPrinter.java
index 21399ad8..ebb76220 100644
--- a/jcstress-core/src/main/java/org/openjdk/jcstress/infra/grading/TextReportPrinter.java
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/grading/TextReportPrinter.java
@@ -58,32 +58,30 @@ public TextReportPrinter(Options opts, InProcessCollector collector) {
     public void work() {
         emittedTests.clear();
 
-        List<TestResult> byConfig = ReportUtils.mergedByConfig(collector.getTestResults());
-        Collections.sort(byConfig, Comparator
-                .comparing(TestResult::getName)
-                .thenComparing(t -> t.getConfig().jvmArgs.toString()));
+        List<TestResult> byName = ReportUtils.mergedByName(collector.getTestResults());
+        Collections.sort(byName, Comparator.comparing(TestResult::getName));
 
         pw.println("RUN RESULTS:");
 
-        printXTests(byConfig,
+        printXTests(byName,
                 "Interesting tests",
                 r -> r.status() == Status.NORMAL && r.grading().hasInteresting,
-                verbosity.printAllTests()
+                true
         );
 
-        printXTests(byConfig,
+        printXTests(byName,
                 "Failed tests",
                 r -> r.status() == Status.NORMAL && !r.grading().isPassed,
-                verbosity.printAllTests()
+                true
         );
 
-        printXTests(byConfig,
+        printXTests(byName,
                 "Error tests",
                 r -> r.status() != Status.NORMAL && r.status() != Status.API_MISMATCH,
-                verbosity.printAllTests()
+                true
         );
 
-        printXTests(byConfig,
+        printXTests(byName,
                 "All remaining tests",
                 r -> !emittedTests.contains(r),
                 verbosity.printAllTests());
@@ -116,7 +114,7 @@ private void printXTests(List<TestResult> list,
 
     public void emitTest(TestResult result) {
         emittedTests.add(result);
-        ReportUtils.printResult(pw, result, false);
+        ReportUtils.printResult(pw, result, true);
     }
 
 }