cmd/gorelease: change report output format

This CL changes gorelease's output to be similar to 'go vet'.

* Messages for a specific packages are preceded by a heading like
  '# example.com/pkg'.
* Messages about compatible and incompatible changes appear under
  '## compatible changes' and '## incompatible changes' headings.
* Diagnostics are preceded by a '# diagnostics' heading.
* Other messages are printed at the bottom below '# summary'.
* Sections are separated by blank lines.

Tests were updated with 'go test -u'. No other test changes made.

Fixes golang/go#46372

Change-Id: I95062096c9470a05083cff8d728072b10dd04474
Reviewed-on: https://go-review.googlesource.com/c/exp/+/332375
Trust: Jay Conrod <jayconrod@google.com>
Trust: Jean de Klerk <deklerk@google.com>
Run-TryBot: Jay Conrod <jayconrod@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Jean de Klerk <deklerk@google.com>
diff --git a/cmd/gorelease/gorelease.go b/cmd/gorelease/gorelease.go
index 3e9bc76..825bf88 100644
--- a/cmd/gorelease/gorelease.go
+++ b/cmd/gorelease/gorelease.go
@@ -655,7 +655,7 @@
 	}()
 
 	type listVersions struct {
-		Versions []string `json: "Versions"`
+		Versions []string
 	}
 	cmd := exec.CommandContext(ctx, "go", "list", "-json", "-m", "-versions", modPath)
 	cmd.Env = copyEnv(ctx, cmd.Env)
diff --git a/cmd/gorelease/report.go b/cmd/gorelease/report.go
index 5104f1e..fa5d581 100644
--- a/cmd/gorelease/report.go
+++ b/cmd/gorelease/report.go
@@ -61,6 +61,15 @@
 		buf.WriteString(p.String())
 	}
 
+	if len(r.release.diagnostics) > 0 {
+		buf.WriteString("# diagnostics\n")
+		for _, d := range r.release.diagnostics {
+			fmt.Fprintln(buf, d)
+		}
+		buf.WriteByte('\n')
+	}
+
+	buf.WriteString("# summary\n")
 	baseVersion := r.base.version
 	if r.base.modPath != r.release.modPath {
 		baseVersion = r.base.modPath + "@" + baseVersion
@@ -71,11 +80,7 @@
 		fmt.Fprintf(buf, "Base version: %s (%s)\n", baseVersion, r.base.versionQuery)
 	}
 
-	if len(r.release.diagnostics) > 0 {
-		for _, d := range r.release.diagnostics {
-			fmt.Fprintln(buf, d)
-		}
-	} else if r.versionInvalid != nil {
+	if r.versionInvalid != nil {
 		fmt.Fprintln(buf, r.versionInvalid)
 	} else if r.release.versionInferred {
 		if r.release.tagPrefix == "" {
@@ -387,24 +392,41 @@
 		return ""
 	}
 	buf := &strings.Builder{}
-	fmt.Fprintf(buf, "%s\n%s\n", p.path, strings.Repeat("-", len(p.path)))
+	fmt.Fprintf(buf, "# %s\n", p.path)
 	if len(p.baseErrors) > 0 {
-		fmt.Fprintf(buf, "errors in base version:\n")
+		fmt.Fprintf(buf, "## errors in base version:\n")
 		for _, e := range p.baseErrors {
-			fmt.Fprintf(buf, "\t%v\n", e)
+			fmt.Fprintln(buf, e)
 		}
 		buf.WriteByte('\n')
 	}
 	if len(p.releaseErrors) > 0 {
-		fmt.Fprintf(buf, "errors in release version:\n")
+		fmt.Fprintf(buf, "## errors in release version:\n")
 		for _, e := range p.releaseErrors {
-			fmt.Fprintf(buf, "\t%v\n", e)
+			fmt.Fprintln(buf, e)
 		}
 		buf.WriteByte('\n')
 	}
 	if len(p.Changes) > 0 {
-		if err := p.Report.Text(buf); err != nil {
-			panic(fmt.Sprintf("internal error printing apidiff report: %v", err))
+		var compatible, incompatible []apidiff.Change
+		for _, c := range p.Changes {
+			if c.Compatible {
+				compatible = append(compatible, c)
+			} else {
+				incompatible = append(incompatible, c)
+			}
+		}
+		if len(incompatible) > 0 {
+			fmt.Fprintf(buf, "## incompatible changes\n")
+			for _, c := range incompatible {
+				fmt.Fprintln(buf, c.Message)
+			}
+		}
+		if len(compatible) > 0 {
+			fmt.Fprintf(buf, "## compatible changes\n")
+			for _, c := range compatible {
+				fmt.Fprintln(buf, c.Message)
+			}
 		}
 		buf.WriteByte('\n')
 	}
diff --git a/cmd/gorelease/testdata/alreadyexists/alreadyexists_suggest_major.test b/cmd/gorelease/testdata/alreadyexists/alreadyexists_suggest_major.test
index 63cb373..bea8be6 100644
--- a/cmd/gorelease/testdata/alreadyexists/alreadyexists_suggest_major.test
+++ b/cmd/gorelease/testdata/alreadyexists/alreadyexists_suggest_major.test
@@ -4,13 +4,13 @@
 # A() was removed, which is a breaking change: it shouldn't try to suggest a
 # higher version.
 -- want --
-example.com/basic/a
--------------------
-Incompatible changes:
-- A: removed
-Compatible changes:
-- B: added
+# example.com/basic/a
+## incompatible changes
+A: removed
+## compatible changes
+B: added
 
+# summary
 Cannot suggest a release version.
 Incompatible changes were detected.
 -- go.mod --
diff --git a/cmd/gorelease/testdata/alreadyexists/alreadyexists_suggest_minor.test b/cmd/gorelease/testdata/alreadyexists/alreadyexists_suggest_minor.test
index f9d8529..40eda64 100644
--- a/cmd/gorelease/testdata/alreadyexists/alreadyexists_suggest_minor.test
+++ b/cmd/gorelease/testdata/alreadyexists/alreadyexists_suggest_minor.test
@@ -5,11 +5,11 @@
 # later version that already exists: so it should not try to suggest anything at
 # all.
 -- want --
-example.com/basic/a
--------------------
-Compatible changes:
-- B: added
+# example.com/basic/a
+## compatible changes
+B: added
 
+# summary
 Cannot suggest a release version.
 Can only suggest a release version when compared against the most recent version of this major: v0.1.2.
 -- go.mod --
diff --git a/cmd/gorelease/testdata/alreadyexists/alreadyexists_suggest_patch.test b/cmd/gorelease/testdata/alreadyexists/alreadyexists_suggest_patch.test
index 81ed36c..209d9a9 100644
--- a/cmd/gorelease/testdata/alreadyexists/alreadyexists_suggest_patch.test
+++ b/cmd/gorelease/testdata/alreadyexists/alreadyexists_suggest_patch.test
@@ -5,6 +5,7 @@
 # But, there's a later version that already exists: so it should not try to
 # suggest anything at all.
 -- want --
+# summary
 Cannot suggest a release version.
 Can only suggest a release version when compared against the most recent version of this major: v0.1.2.
 -- go.mod --
diff --git a/cmd/gorelease/testdata/alreadyexists/alreadyexists_verify.test b/cmd/gorelease/testdata/alreadyexists/alreadyexists_verify.test
index 969606a..8ba7cfc 100644
--- a/cmd/gorelease/testdata/alreadyexists/alreadyexists_verify.test
+++ b/cmd/gorelease/testdata/alreadyexists/alreadyexists_verify.test
@@ -5,6 +5,7 @@
 # The contents below are a copy of the v0.0.1 contents - nothing has changed.
 # But v0.1.0 already exists, so it should present a diagnostic.
 -- want --
+# summary
 v0.1.0 is not a valid semantic version for this release.
 version v0.1.0 already exists
 -- go.mod --
diff --git a/cmd/gorelease/testdata/basic/v0_compatible_suggest.test b/cmd/gorelease/testdata/basic/v0_compatible_suggest.test
index 014fe08..6560f55 100644
--- a/cmd/gorelease/testdata/basic/v0_compatible_suggest.test
+++ b/cmd/gorelease/testdata/basic/v0_compatible_suggest.test
@@ -3,14 +3,13 @@
 base=v0.0.1
 proxyVersions=example.com/basic@v0.0.1
 -- want --
-example.com/basic/a
--------------------
-Compatible changes:
-- A2: added
+# example.com/basic/a
+## compatible changes
+A2: added
 
-example.com/basic/b
--------------------
-Compatible changes:
-- package added
+# example.com/basic/b
+## compatible changes
+package added
 
+# summary
 Suggested version: v0.1.0
diff --git a/cmd/gorelease/testdata/basic/v0_compatible_verify.test b/cmd/gorelease/testdata/basic/v0_compatible_verify.test
index 5461eea..b5c726d 100644
--- a/cmd/gorelease/testdata/basic/v0_compatible_verify.test
+++ b/cmd/gorelease/testdata/basic/v0_compatible_verify.test
@@ -4,14 +4,13 @@
 release=v0.1.0
 proxyVersions=example.com/basic@v0.0.1
 -- want --
-example.com/basic/a
--------------------
-Compatible changes:
-- A2: added
+# example.com/basic/a
+## compatible changes
+A2: added
 
-example.com/basic/b
--------------------
-Compatible changes:
-- package added
+# example.com/basic/b
+## compatible changes
+package added
 
+# summary
 v0.1.0 is a valid semantic version for this release.
diff --git a/cmd/gorelease/testdata/basic/v0_incompatible_suggest.test b/cmd/gorelease/testdata/basic/v0_incompatible_suggest.test
index 4aa8364..d07a48f 100644
--- a/cmd/gorelease/testdata/basic/v0_incompatible_suggest.test
+++ b/cmd/gorelease/testdata/basic/v0_incompatible_suggest.test
@@ -3,14 +3,13 @@
 base=v0.1.1
 proxyVersions=example.com/basic@v0.1.1
 -- want --
-example.com/basic/a
--------------------
-Incompatible changes:
-- A2: removed
+# example.com/basic/a
+## incompatible changes
+A2: removed
 
-example.com/basic/b
--------------------
-Incompatible changes:
-- package removed
+# example.com/basic/b
+## incompatible changes
+package removed
 
+# summary
 Suggested version: v0.2.0
diff --git a/cmd/gorelease/testdata/basic/v0_incompatible_verify.test b/cmd/gorelease/testdata/basic/v0_incompatible_verify.test
index c6742d3..b8355ea 100644
--- a/cmd/gorelease/testdata/basic/v0_incompatible_verify.test
+++ b/cmd/gorelease/testdata/basic/v0_incompatible_verify.test
@@ -4,14 +4,13 @@
 release=v0.1.2
 proxyVersions=example.com/basic@v0.1.1
 -- want --
-example.com/basic/a
--------------------
-Incompatible changes:
-- A2: removed
+# example.com/basic/a
+## incompatible changes
+A2: removed
 
-example.com/basic/b
--------------------
-Incompatible changes:
-- package removed
+# example.com/basic/b
+## incompatible changes
+package removed
 
+# summary
 v0.1.2 is a valid semantic version for this release.
diff --git a/cmd/gorelease/testdata/basic/v0_nobase_suggest.test b/cmd/gorelease/testdata/basic/v0_nobase_suggest.test
index 8f17473..b059fc0 100644
--- a/cmd/gorelease/testdata/basic/v0_nobase_suggest.test
+++ b/cmd/gorelease/testdata/basic/v0_nobase_suggest.test
@@ -2,4 +2,5 @@
 version=v0.1.1
 base=none
 -- want --
+# summary
 Suggested version: v0.1.0
diff --git a/cmd/gorelease/testdata/basic/v0_patch_suggest.test b/cmd/gorelease/testdata/basic/v0_patch_suggest.test
index a98e6b6..a5f957a 100644
--- a/cmd/gorelease/testdata/basic/v0_patch_suggest.test
+++ b/cmd/gorelease/testdata/basic/v0_patch_suggest.test
@@ -3,4 +3,5 @@
 base=v0.1.0
 proxyVersions=example.com/basic@v0.1.0
 -- want --
+# summary
 Suggested version: v0.1.1
diff --git a/cmd/gorelease/testdata/basic/v0_patch_verify.test b/cmd/gorelease/testdata/basic/v0_patch_verify.test
index b01e475..d26ff70 100644
--- a/cmd/gorelease/testdata/basic/v0_patch_verify.test
+++ b/cmd/gorelease/testdata/basic/v0_patch_verify.test
@@ -4,4 +4,5 @@
 release=v0.1.1
 proxyVersions=example.com/basic@v0.1.0
 -- want --
+# summary
 v0.1.1 is a valid semantic version for this release.
diff --git a/cmd/gorelease/testdata/basic/v0_pre_suggest.test b/cmd/gorelease/testdata/basic/v0_pre_suggest.test
index 169a325..ca45c40 100644
--- a/cmd/gorelease/testdata/basic/v0_pre_suggest.test
+++ b/cmd/gorelease/testdata/basic/v0_pre_suggest.test
@@ -3,14 +3,13 @@
 base=v0.1.1-pre
 proxyVersions=example.com/basic@v0.1.1-pre
 -- want --
-example.com/basic/a
--------------------
-Incompatible changes:
-- A2: removed
+# example.com/basic/a
+## incompatible changes
+A2: removed
 
-example.com/basic/b
--------------------
-Incompatible changes:
-- package removed
+# example.com/basic/b
+## incompatible changes
+package removed
 
+# summary
 Suggested version: v0.1.1
diff --git a/cmd/gorelease/testdata/basic/v0_v1_incompatible_verify.test b/cmd/gorelease/testdata/basic/v0_v1_incompatible_verify.test
index 1eb08c0..7a68306 100644
--- a/cmd/gorelease/testdata/basic/v0_v1_incompatible_verify.test
+++ b/cmd/gorelease/testdata/basic/v0_v1_incompatible_verify.test
@@ -3,14 +3,13 @@
 base=v0.1.1
 release=v1.0.0
 -- want --
-example.com/basic/a
--------------------
-Incompatible changes:
-- A2: removed
+# example.com/basic/a
+## incompatible changes
+A2: removed
 
-example.com/basic/b
--------------------
-Incompatible changes:
-- package removed
+# example.com/basic/b
+## incompatible changes
+package removed
 
+# summary
 v1.0.0 is a valid semantic version for this release.
diff --git a/cmd/gorelease/testdata/basic/v1_autobase_suggest.test b/cmd/gorelease/testdata/basic/v1_autobase_suggest.test
index aafc829..100cc4c 100644
--- a/cmd/gorelease/testdata/basic/v1_autobase_suggest.test
+++ b/cmd/gorelease/testdata/basic/v1_autobase_suggest.test
@@ -1,5 +1,6 @@
 mod=example.com/basic
 version=v0.1.2
 -- want --
+# summary
 Inferred base version: v1.1.2
 Suggested version: v1.1.3
diff --git a/cmd/gorelease/testdata/basic/v1_autobase_verify.test b/cmd/gorelease/testdata/basic/v1_autobase_verify.test
index 58cab03..6df9c6e 100644
--- a/cmd/gorelease/testdata/basic/v1_autobase_verify.test
+++ b/cmd/gorelease/testdata/basic/v1_autobase_verify.test
@@ -2,5 +2,6 @@
 version=v1.0.1
 release=v1.0.2
 -- want --
+# summary
 Inferred base version: v1.0.1
 v1.0.2 is a valid semantic version for this release.
diff --git a/cmd/gorelease/testdata/basic/v1_compatible_suggest.test b/cmd/gorelease/testdata/basic/v1_compatible_suggest.test
index 42b4ddd..fe63e75 100644
--- a/cmd/gorelease/testdata/basic/v1_compatible_suggest.test
+++ b/cmd/gorelease/testdata/basic/v1_compatible_suggest.test
@@ -3,14 +3,13 @@
 base=v1.0.1
 proxyVersions=example.com/basic@v1.0.1
 -- want --
-example.com/basic/a
--------------------
-Compatible changes:
-- A2: added
+# example.com/basic/a
+## compatible changes
+A2: added
 
-example.com/basic/b
--------------------
-Compatible changes:
-- package added
+# example.com/basic/b
+## compatible changes
+package added
 
+# summary
 Suggested version: v1.1.0
diff --git a/cmd/gorelease/testdata/basic/v1_compatible_verify.test b/cmd/gorelease/testdata/basic/v1_compatible_verify.test
index 45822ee..f552aef 100644
--- a/cmd/gorelease/testdata/basic/v1_compatible_verify.test
+++ b/cmd/gorelease/testdata/basic/v1_compatible_verify.test
@@ -4,14 +4,13 @@
 release=v1.1.0
 proxyVersions=example.com/basic@v1.0.1
 -- want --
-example.com/basic/a
--------------------
-Compatible changes:
-- A2: added
+# example.com/basic/a
+## compatible changes
+A2: added
 
-example.com/basic/b
--------------------
-Compatible changes:
-- package added
+# example.com/basic/b
+## compatible changes
+package added
 
+# summary
 v1.1.0 is a valid semantic version for this release.
diff --git a/cmd/gorelease/testdata/basic/v1_fork_base_modpath_version_verify.test b/cmd/gorelease/testdata/basic/v1_fork_base_modpath_version_verify.test
index 47e17ca..80ba542 100644
--- a/cmd/gorelease/testdata/basic/v1_fork_base_modpath_version_verify.test
+++ b/cmd/gorelease/testdata/basic/v1_fork_base_modpath_version_verify.test
@@ -4,9 +4,10 @@
 release=v1.1.2
 proxyVersions=example.com/basic@v1.1.1
 -- want --
-example.com/basic/a
--------------------
-Incompatible changes:
-- A2: removed
-Compatible changes:
-- A3: added
+# example.com/basic/a
+## incompatible changes
+A2: removed
+## compatible changes
+A3: added
+
+# summary
diff --git a/cmd/gorelease/testdata/basic/v1_fork_base_verify.test b/cmd/gorelease/testdata/basic/v1_fork_base_verify.test
index 569b734..650fff4 100644
--- a/cmd/gorelease/testdata/basic/v1_fork_base_verify.test
+++ b/cmd/gorelease/testdata/basic/v1_fork_base_verify.test
@@ -6,12 +6,12 @@
 base=example.com/basicfork@v1.1.2
 release=v1.1.3
 -- want --
-example.com/basicfork/a
------------------------
-Incompatible changes:
-- A3: removed
+# example.com/basicfork/a
+## incompatible changes
+A3: removed
 
-example.com/basicfork/b
------------------------
-Incompatible changes:
-- package removed
+# example.com/basicfork/b
+## incompatible changes
+package removed
+
+# summary
diff --git a/cmd/gorelease/testdata/basic/v1_incompatible_suggest.test b/cmd/gorelease/testdata/basic/v1_incompatible_suggest.test
index 49b5eaa..a955b10 100644
--- a/cmd/gorelease/testdata/basic/v1_incompatible_suggest.test
+++ b/cmd/gorelease/testdata/basic/v1_incompatible_suggest.test
@@ -3,15 +3,14 @@
 base=v1.1.1
 success=false
 -- want --
-example.com/basic/a
--------------------
-Incompatible changes:
-- A2: removed
+# example.com/basic/a
+## incompatible changes
+A2: removed
 
-example.com/basic/b
--------------------
-Incompatible changes:
-- package removed
+# example.com/basic/b
+## incompatible changes
+package removed
 
+# summary
 Cannot suggest a release version.
 Incompatible changes were detected.
diff --git a/cmd/gorelease/testdata/basic/v1_incompatible_verify.test b/cmd/gorelease/testdata/basic/v1_incompatible_verify.test
index 149b849..655ed6a 100644
--- a/cmd/gorelease/testdata/basic/v1_incompatible_verify.test
+++ b/cmd/gorelease/testdata/basic/v1_incompatible_verify.test
@@ -5,15 +5,14 @@
 release=v1.1.2
 proxyVersions=example.com/basic@v1.1.1
 -- want --
-example.com/basic/a
--------------------
-Incompatible changes:
-- A2: removed
+# example.com/basic/a
+## incompatible changes
+A2: removed
 
-example.com/basic/b
--------------------
-Incompatible changes:
-- package removed
+# example.com/basic/b
+## incompatible changes
+package removed
 
+# summary
 v1.1.2 is not a valid semantic version for this release.
 There are incompatible changes.
diff --git a/cmd/gorelease/testdata/basic/v1_patch_suggest.test b/cmd/gorelease/testdata/basic/v1_patch_suggest.test
index a72569d..936f26a 100644
--- a/cmd/gorelease/testdata/basic/v1_patch_suggest.test
+++ b/cmd/gorelease/testdata/basic/v1_patch_suggest.test
@@ -3,4 +3,5 @@
 base=v1.1.0
 proxyVersions=example.com/basic@v1.1.0
 -- want --
+# summary
 Suggested version: v1.1.1
diff --git a/cmd/gorelease/testdata/basic/v1_patch_verify.test b/cmd/gorelease/testdata/basic/v1_patch_verify.test
index a01d5be..f134744 100644
--- a/cmd/gorelease/testdata/basic/v1_patch_verify.test
+++ b/cmd/gorelease/testdata/basic/v1_patch_verify.test
@@ -4,4 +4,5 @@
 release=v1.1.1
 proxyVersions=example.com/basic@v1.1.0
 -- want --
+# summary
 v1.1.1 is a valid semantic version for this release.
diff --git a/cmd/gorelease/testdata/basic/v1_pre_suggest.test b/cmd/gorelease/testdata/basic/v1_pre_suggest.test
index efca8c4..c715603 100644
--- a/cmd/gorelease/testdata/basic/v1_pre_suggest.test
+++ b/cmd/gorelease/testdata/basic/v1_pre_suggest.test
@@ -3,14 +3,13 @@
 base=v1.1.1-pre
 proxyVersions=example.com/basic@v1.1.1-pre
 -- want --
-example.com/basic/a
--------------------
-Incompatible changes:
-- A2: removed
+# example.com/basic/a
+## incompatible changes
+A2: removed
 
-example.com/basic/b
--------------------
-Incompatible changes:
-- package removed
+# example.com/basic/b
+## incompatible changes
+package removed
 
+# summary
 Suggested version: v1.1.1
diff --git a/cmd/gorelease/testdata/basic/v1_querybase_suggest.test b/cmd/gorelease/testdata/basic/v1_querybase_suggest.test
index ec73b41..c1dfb9d 100644
--- a/cmd/gorelease/testdata/basic/v1_querybase_suggest.test
+++ b/cmd/gorelease/testdata/basic/v1_querybase_suggest.test
@@ -3,5 +3,6 @@
 base=version-1.0.1
 proxyVersions=example.com/basic@version-1.0.1,example.com/basic@v1.0.1
 -- want --
+# summary
 Base version: v1.0.1 (version-1.0.1)
 Suggested version: v1.0.2
diff --git a/cmd/gorelease/testdata/basic/v1_querybase_verify.test b/cmd/gorelease/testdata/basic/v1_querybase_verify.test
index f4f6d10..9383c3f 100644
--- a/cmd/gorelease/testdata/basic/v1_querybase_verify.test
+++ b/cmd/gorelease/testdata/basic/v1_querybase_verify.test
@@ -3,5 +3,6 @@
 base=version-1.0.1
 release=v1.0.2
 -- want --
+# summary
 Base version: v1.0.1 (version-1.0.1)
 v1.0.2 is a valid semantic version for this release.
diff --git a/cmd/gorelease/testdata/basic/v1_v2_base_modpath_query_verify.test b/cmd/gorelease/testdata/basic/v1_v2_base_modpath_query_verify.test
index d27a389..ce6b674 100644
--- a/cmd/gorelease/testdata/basic/v1_v2_base_modpath_query_verify.test
+++ b/cmd/gorelease/testdata/basic/v1_v2_base_modpath_query_verify.test
@@ -4,15 +4,14 @@
 release=v2.0.1
 proxyVersions=example.com/basic@v1.1.0
 -- want --
-example.com/basic/a
--------------------
-Incompatible changes:
-- A2: removed
+# example.com/basic/a
+## incompatible changes
+A2: removed
 
-example.com/basic/b
--------------------
-Incompatible changes:
-- package removed
+# example.com/basic/b
+## incompatible changes
+package removed
 
+# summary
 Base version: example.com/basic@v1.1.0 (>=v1.1.0)
 v2.0.1 is a valid semantic version for this release.
diff --git a/cmd/gorelease/testdata/basic/v1_v2_base_modpath_suggest.test b/cmd/gorelease/testdata/basic/v1_v2_base_modpath_suggest.test
index 5f916a9..d70ecc9 100644
--- a/cmd/gorelease/testdata/basic/v1_v2_base_modpath_suggest.test
+++ b/cmd/gorelease/testdata/basic/v1_v2_base_modpath_suggest.test
@@ -3,16 +3,15 @@
 version=v2.1.0
 success=false
 -- want --
-example.com/basic/a
--------------------
-Compatible changes:
-- A2: added
+# example.com/basic/a
+## compatible changes
+A2: added
 
-example.com/basic/v2/b
-----------------------
-Compatible changes:
-- package added
+# example.com/basic/v2/b
+## compatible changes
+package added
 
+# summary
 Inferred base version: example.com/basic@v1.1.2
 Cannot suggest a release version.
 Base module path is different from release.
diff --git a/cmd/gorelease/testdata/basic/v1_v2_base_modpath_verify.test b/cmd/gorelease/testdata/basic/v1_v2_base_modpath_verify.test
index 54fe0db..85f7f86 100644
--- a/cmd/gorelease/testdata/basic/v1_v2_base_modpath_verify.test
+++ b/cmd/gorelease/testdata/basic/v1_v2_base_modpath_verify.test
@@ -4,15 +4,14 @@
 release=v2.1.0
 proxyVersions=example.com/basic@v1.1.2
 -- want --
-example.com/basic/a
--------------------
-Compatible changes:
-- A2: added
+# example.com/basic/a
+## compatible changes
+A2: added
 
-example.com/basic/v2/b
-----------------------
-Compatible changes:
-- package added
+# example.com/basic/v2/b
+## compatible changes
+package added
 
+# summary
 Inferred base version: example.com/basic@v1.1.2
 v2.1.0 is a valid semantic version for this release.
diff --git a/cmd/gorelease/testdata/basic/v1_v2_base_modpath_version_verify.test b/cmd/gorelease/testdata/basic/v1_v2_base_modpath_version_verify.test
index 8edac73..63d3322 100644
--- a/cmd/gorelease/testdata/basic/v1_v2_base_modpath_version_verify.test
+++ b/cmd/gorelease/testdata/basic/v1_v2_base_modpath_version_verify.test
@@ -4,14 +4,13 @@
 release=v2.0.1
 proxyVersions=example.com/basic@v1.1.0
 -- want --
-example.com/basic/a
--------------------
-Incompatible changes:
-- A2: removed
+# example.com/basic/a
+## incompatible changes
+A2: removed
 
-example.com/basic/b
--------------------
-Incompatible changes:
-- package removed
+# example.com/basic/b
+## incompatible changes
+package removed
 
+# summary
 v2.0.1 is a valid semantic version for this release.
diff --git a/cmd/gorelease/testdata/basic/v1_v2_base_version_suggest.test b/cmd/gorelease/testdata/basic/v1_v2_base_version_suggest.test
index cde8731..683bb33 100644
--- a/cmd/gorelease/testdata/basic/v1_v2_base_version_suggest.test
+++ b/cmd/gorelease/testdata/basic/v1_v2_base_version_suggest.test
@@ -3,5 +3,6 @@
 version=v2.1.0
 success=false
 -- want --
+# summary
 Cannot suggest a release version.
 Base module path is different from release.
diff --git a/cmd/gorelease/testdata/basic/v1_v2_base_version_verify.test b/cmd/gorelease/testdata/basic/v1_v2_base_version_verify.test
index 3099cfd..bc8e31a 100644
--- a/cmd/gorelease/testdata/basic/v1_v2_base_version_verify.test
+++ b/cmd/gorelease/testdata/basic/v1_v2_base_version_verify.test
@@ -3,4 +3,5 @@
 version=v2.1.0
 release=v2.1.0
 -- want --
+# summary
 v2.1.0 is a valid semantic version for this release.
diff --git a/cmd/gorelease/testdata/basic/v1_v2_incompatible_verify.test b/cmd/gorelease/testdata/basic/v1_v2_incompatible_verify.test
index 2017c87..07bbde9 100644
--- a/cmd/gorelease/testdata/basic/v1_v2_incompatible_verify.test
+++ b/cmd/gorelease/testdata/basic/v1_v2_incompatible_verify.test
@@ -4,16 +4,15 @@
 release=v2.0.0
 success=false
 -- want --
-example.com/basic/a
--------------------
-Incompatible changes:
-- A2: removed
+# example.com/basic/a
+## incompatible changes
+A2: removed
 
-example.com/basic/b
--------------------
-Incompatible changes:
-- package removed
+# example.com/basic/b
+## incompatible changes
+package removed
 
+# summary
 v2.0.0 is not a valid semantic version for this release.
 The module path does not end with the major version suffix /v2,
 which is required for major versions v2 or greater.
diff --git a/cmd/gorelease/testdata/basic/v2_compatible_suggest.test b/cmd/gorelease/testdata/basic/v2_compatible_suggest.test
index 78740e2..86e60cb 100644
--- a/cmd/gorelease/testdata/basic/v2_compatible_suggest.test
+++ b/cmd/gorelease/testdata/basic/v2_compatible_suggest.test
@@ -3,14 +3,13 @@
 base=v2.0.1
 proxyVersions=example.com/basic/v2@v2.0.1
 -- want --
-example.com/basic/v2/a
-----------------------
-Compatible changes:
-- A2: added
+# example.com/basic/v2/a
+## compatible changes
+A2: added
 
-example.com/basic/v2/b
-----------------------
-Compatible changes:
-- package added
+# example.com/basic/v2/b
+## compatible changes
+package added
 
+# summary
 Suggested version: v2.1.0
diff --git a/cmd/gorelease/testdata/basic/v2_compatible_verify.test b/cmd/gorelease/testdata/basic/v2_compatible_verify.test
index 63307ee..79eca35 100644
--- a/cmd/gorelease/testdata/basic/v2_compatible_verify.test
+++ b/cmd/gorelease/testdata/basic/v2_compatible_verify.test
@@ -4,14 +4,13 @@
 release=v2.1.0
 proxyVersions=example.com/basic/v2@v2.0.1
 -- want --
-example.com/basic/v2/a
-----------------------
-Compatible changes:
-- A2: added
+# example.com/basic/v2/a
+## compatible changes
+A2: added
 
-example.com/basic/v2/b
-----------------------
-Compatible changes:
-- package added
+# example.com/basic/v2/b
+## compatible changes
+package added
 
+# summary
 v2.1.0 is a valid semantic version for this release.
diff --git a/cmd/gorelease/testdata/basic/v2_incompatible_suggest.test b/cmd/gorelease/testdata/basic/v2_incompatible_suggest.test
index 694892c..43aa3fe 100644
--- a/cmd/gorelease/testdata/basic/v2_incompatible_suggest.test
+++ b/cmd/gorelease/testdata/basic/v2_incompatible_suggest.test
@@ -3,15 +3,14 @@
 base=v2.1.1
 success=false
 -- want --
-example.com/basic/v2/a
-----------------------
-Incompatible changes:
-- A2: removed
+# example.com/basic/v2/a
+## incompatible changes
+A2: removed
 
-example.com/basic/v2/b
-----------------------
-Incompatible changes:
-- package removed
+# example.com/basic/v2/b
+## incompatible changes
+package removed
 
+# summary
 Cannot suggest a release version.
 Incompatible changes were detected.
diff --git a/cmd/gorelease/testdata/basic/v2_incompatible_verify.test b/cmd/gorelease/testdata/basic/v2_incompatible_verify.test
index 3948f41..68b7321 100644
--- a/cmd/gorelease/testdata/basic/v2_incompatible_verify.test
+++ b/cmd/gorelease/testdata/basic/v2_incompatible_verify.test
@@ -5,15 +5,14 @@
 release=v2.1.2
 proxyVersions=example.com/basic/v2@v2.1.1
 -- want --
-example.com/basic/v2/a
-----------------------
-Incompatible changes:
-- A2: removed
+# example.com/basic/v2/a
+## incompatible changes
+A2: removed
 
-example.com/basic/v2/b
-----------------------
-Incompatible changes:
-- package removed
+# example.com/basic/v2/b
+## incompatible changes
+package removed
 
+# summary
 v2.1.2 is not a valid semantic version for this release.
 There are incompatible changes.
diff --git a/cmd/gorelease/testdata/basic/v2_nobase_suggest.test b/cmd/gorelease/testdata/basic/v2_nobase_suggest.test
index 957f82d..605edf9 100644
--- a/cmd/gorelease/testdata/basic/v2_nobase_suggest.test
+++ b/cmd/gorelease/testdata/basic/v2_nobase_suggest.test
@@ -2,4 +2,5 @@
 version=v2.1.1
 base=none
 -- want --
+# summary
 Suggested version: v2.0.0
diff --git a/cmd/gorelease/testdata/basic/v2_patch_suggest.test b/cmd/gorelease/testdata/basic/v2_patch_suggest.test
index 991885c..b16a863 100644
--- a/cmd/gorelease/testdata/basic/v2_patch_suggest.test
+++ b/cmd/gorelease/testdata/basic/v2_patch_suggest.test
@@ -3,4 +3,5 @@
 base=v2.1.0
 proxyVersions=example.com/basic/v2@v2.1.0
 -- want --
+# summary
 Suggested version: v2.1.1
diff --git a/cmd/gorelease/testdata/basic/v2_patch_verify.test b/cmd/gorelease/testdata/basic/v2_patch_verify.test
index f5c7f04..35d617a 100644
--- a/cmd/gorelease/testdata/basic/v2_patch_verify.test
+++ b/cmd/gorelease/testdata/basic/v2_patch_verify.test
@@ -4,4 +4,5 @@
 release=v2.1.1
 proxyVersions=example.com/basic/v2@v2.1.0
 -- want --
+# summary
 v2.1.1 is a valid semantic version for this release.
diff --git a/cmd/gorelease/testdata/basic/v2_pre_suggest.test b/cmd/gorelease/testdata/basic/v2_pre_suggest.test
index 94716f4..75d0c39 100644
--- a/cmd/gorelease/testdata/basic/v2_pre_suggest.test
+++ b/cmd/gorelease/testdata/basic/v2_pre_suggest.test
@@ -3,14 +3,13 @@
 base=v2.1.1-pre
 proxyVersions=example.com/basic/v2@v2.1.1-pre
 -- want --
-example.com/basic/v2/a
-----------------------
-Incompatible changes:
-- A2: removed
+# example.com/basic/v2/a
+## incompatible changes
+A2: removed
 
-example.com/basic/v2/b
-----------------------
-Incompatible changes:
-- package removed
+# example.com/basic/v2/b
+## incompatible changes
+package removed
 
+# summary
 Suggested version: v2.1.1
diff --git a/cmd/gorelease/testdata/basic/v3_autobase_suggest.test b/cmd/gorelease/testdata/basic/v3_autobase_suggest.test
index 69fd61f..eda87d2 100644
--- a/cmd/gorelease/testdata/basic/v3_autobase_suggest.test
+++ b/cmd/gorelease/testdata/basic/v3_autobase_suggest.test
@@ -4,5 +4,6 @@
 
 go 1.13
 -- want --
+# summary
 Inferred base version: none
 Suggested version: v3.0.0
diff --git a/cmd/gorelease/testdata/basic/v3_autobase_verify_first.test b/cmd/gorelease/testdata/basic/v3_autobase_verify_first.test
index 830b688..1cae913 100644
--- a/cmd/gorelease/testdata/basic/v3_autobase_verify_first.test
+++ b/cmd/gorelease/testdata/basic/v3_autobase_verify_first.test
@@ -2,5 +2,6 @@
 version=v3.0.0-ignore
 release=v3.0.0
 -- want --
+# summary
 Inferred base version: none
 v3.0.0 is a valid semantic version for this release.
diff --git a/cmd/gorelease/testdata/cgo/cgo.test b/cmd/gorelease/testdata/cgo/cgo.test
index 4152bf5..b6cea21 100644
--- a/cmd/gorelease/testdata/cgo/cgo.test
+++ b/cmd/gorelease/testdata/cgo/cgo.test
@@ -12,4 +12,5 @@
 
 func X() int { return int(C.x) }
 -- want --
+# summary
 v1.0.0 is a valid semantic version for this release.
diff --git a/cmd/gorelease/testdata/cycle/cycle_suggest.test b/cmd/gorelease/testdata/cycle/cycle_suggest.test
index 940897d..fc108d7 100644
--- a/cmd/gorelease/testdata/cycle/cycle_suggest.test
+++ b/cmd/gorelease/testdata/cycle/cycle_suggest.test
@@ -1,5 +1,6 @@
 mod=example.com/cycle/v2
 version=v2.0.0
 -- want --
+# summary
 Inferred base version: v2.0.0
 Suggested version: v2.0.1
diff --git a/cmd/gorelease/testdata/cycle/cycle_suggest_error.test b/cmd/gorelease/testdata/cycle/cycle_suggest_error.test
index 3e8252f..133e4e3 100644
--- a/cmd/gorelease/testdata/cycle/cycle_suggest_error.test
+++ b/cmd/gorelease/testdata/cycle/cycle_suggest_error.test
@@ -3,5 +3,6 @@
 version=v1.0.0
 success=false
 -- want --
+# summary
 Cannot suggest a release version.
-Module indirectly depends on a higher version of itself (v1.5.0) than the base version (v1.0.0).
\ No newline at end of file
+Module indirectly depends on a higher version of itself (v1.5.0) than the base version (v1.0.0).
diff --git a/cmd/gorelease/testdata/cycle/cycle_verify.test b/cmd/gorelease/testdata/cycle/cycle_verify.test
index 64e1fdf..84b4106 100644
--- a/cmd/gorelease/testdata/cycle/cycle_verify.test
+++ b/cmd/gorelease/testdata/cycle/cycle_verify.test
@@ -4,5 +4,6 @@
 release=v1.0.1
 success=false
 -- want --
+# summary
 v1.0.1 is not a valid semantic version for this release.
-Module indirectly depends on a higher version of itself (v1.5.0).
\ No newline at end of file
+Module indirectly depends on a higher version of itself (v1.5.0).
diff --git a/cmd/gorelease/testdata/empty/empty.test b/cmd/gorelease/testdata/empty/empty.test
index cd95565..e9bebb4 100644
--- a/cmd/gorelease/testdata/empty/empty.test
+++ b/cmd/gorelease/testdata/empty/empty.test
@@ -4,4 +4,5 @@
 release=v0.0.2
 proxyVersions=example.com/empty@v0.0.1
 -- want --
+# summary
 v0.0.2 is a valid semantic version for this release.
diff --git a/cmd/gorelease/testdata/errors/errors.test b/cmd/gorelease/testdata/errors/errors.test
index a7b396b..81adeb5 100644
--- a/cmd/gorelease/testdata/errors/errors.test
+++ b/cmd/gorelease/testdata/errors/errors.test
@@ -5,37 +5,34 @@
 success=false
 proxyVersions=example.com/errors@v0.1.0
 -- want --
-example.com/errors/added
-------------------------
-errors in release version:
-	added/added.go:3:15: undeclared name: Missing
+# example.com/errors/added
+## errors in release version:
+added/added.go:3:15: undeclared name: Missing
 
-Compatible changes:
-- package added
+## compatible changes
+package added
 
-example.com/errors/broken
--------------------------
-errors in release version:
-	broken/broken.go:3:15: undeclared name: Missing
+# example.com/errors/broken
+## errors in release version:
+broken/broken.go:3:15: undeclared name: Missing
 
-Incompatible changes:
-- X: value changed from 12 to unknown
+## incompatible changes
+X: value changed from 12 to unknown
 
-example.com/errors/deleted
---------------------------
-errors in base version:
-	deleted/deleted.go:3:15: undeclared name: Missing
+# example.com/errors/deleted
+## errors in base version:
+deleted/deleted.go:3:15: undeclared name: Missing
 
-Incompatible changes:
-- package removed
+## incompatible changes
+package removed
 
-example.com/errors/fixed
-------------------------
-errors in base version:
-	fixed/fixed.go:3:15: undeclared name: Missing
+# example.com/errors/fixed
+## errors in base version:
+fixed/fixed.go:3:15: undeclared name: Missing
 
-Incompatible changes:
-- X: value changed from unknown to 12
+## incompatible changes
+X: value changed from unknown to 12
 
+# summary
 v0.2.0 is not a valid semantic version for this release.
 Errors were found in one or more packages.
diff --git a/cmd/gorelease/testdata/first/v0_0_0.test b/cmd/gorelease/testdata/first/v0_0_0.test
index 8214501..5d473ee 100644
--- a/cmd/gorelease/testdata/first/v0_0_0.test
+++ b/cmd/gorelease/testdata/first/v0_0_0.test
@@ -2,6 +2,7 @@
 base=none
 release=v0.0.0
 -- want --
+# summary
 v0.0.0 is a valid semantic version for this release.
 -- go.mod --
 module example.com/first
diff --git a/cmd/gorelease/testdata/first/v0_0_1.test b/cmd/gorelease/testdata/first/v0_0_1.test
index 79630a1..f32c69e 100644
--- a/cmd/gorelease/testdata/first/v0_0_1.test
+++ b/cmd/gorelease/testdata/first/v0_0_1.test
@@ -2,6 +2,7 @@
 base=none
 release=v0.0.1
 -- want --
+# summary
 v0.0.1 is a valid semantic version for this release.
 -- go.mod --
 module example.com/first
diff --git a/cmd/gorelease/testdata/first/v0_1_0-alpha.1.test b/cmd/gorelease/testdata/first/v0_1_0-alpha.1.test
index 8b17521..90985ee 100644
--- a/cmd/gorelease/testdata/first/v0_1_0-alpha.1.test
+++ b/cmd/gorelease/testdata/first/v0_1_0-alpha.1.test
@@ -2,6 +2,7 @@
 base=none
 release=v0.1.0-alpha.1
 -- want --
+# summary
 v0.1.0-alpha.1 is a valid semantic version for this release.
 -- go.mod --
 module example.com/first
diff --git a/cmd/gorelease/testdata/first/v0_1_0.test b/cmd/gorelease/testdata/first/v0_1_0.test
index 656ba5d..05eef2a 100644
--- a/cmd/gorelease/testdata/first/v0_1_0.test
+++ b/cmd/gorelease/testdata/first/v0_1_0.test
@@ -2,6 +2,7 @@
 base=none
 release=v0.1.0
 -- want --
+# summary
 v0.1.0 is a valid semantic version for this release.
 -- go.mod --
 module example.com/first
diff --git a/cmd/gorelease/testdata/first/v1_0_0.test b/cmd/gorelease/testdata/first/v1_0_0.test
index e1b4f5c..c7400dc 100644
--- a/cmd/gorelease/testdata/first/v1_0_0.test
+++ b/cmd/gorelease/testdata/first/v1_0_0.test
@@ -2,6 +2,7 @@
 base=none
 release=v1.0.0
 -- want --
+# summary
 v1.0.0 is a valid semantic version for this release.
 -- go.mod --
 module example.com/first
diff --git a/cmd/gorelease/testdata/first/v1_2_3_explicit_none_base.test b/cmd/gorelease/testdata/first/v1_2_3_explicit_none_base.test
index ea3e7d1..2e1588f 100644
--- a/cmd/gorelease/testdata/first/v1_2_3_explicit_none_base.test
+++ b/cmd/gorelease/testdata/first/v1_2_3_explicit_none_base.test
@@ -3,10 +3,11 @@
 release=v1.2.3
 proxyVersions=
 -- want --
+# summary
 v1.2.3 is a valid semantic version for this release.
 -- go.mod --
 module example.com/first
 
 go 1.12
 -- p.go --
-package p
\ No newline at end of file
+package p
diff --git a/cmd/gorelease/testdata/first/v2_moderr.test b/cmd/gorelease/testdata/first/v2_moderr.test
index 63bb806..833cfa9 100644
--- a/cmd/gorelease/testdata/first/v2_moderr.test
+++ b/cmd/gorelease/testdata/first/v2_moderr.test
@@ -3,6 +3,7 @@
 release=v2.0.0
 success=false
 -- want --
+# summary
 v2.0.0 is not a valid semantic version for this release.
 The module path does not end with the major version suffix /v2,
 which is required for major versions v2 or greater.
diff --git a/cmd/gorelease/testdata/fix/compatible_other_suggest.test b/cmd/gorelease/testdata/fix/compatible_other_suggest.test
index ed1d3db..d545be8 100644
--- a/cmd/gorelease/testdata/fix/compatible_other_suggest.test
+++ b/cmd/gorelease/testdata/fix/compatible_other_suggest.test
@@ -3,18 +3,17 @@
 version=v1.1.0-compatible-other
 success=false
 -- want --
-example.com/fix/bad
--------------------
-errors in base version:
-	bad/bad.go:3:15: undeclared name: NOTYPE
+# example.com/fix/bad
+## errors in base version:
+bad/bad.go:3:15: undeclared name: NOTYPE
 
-Incompatible changes:
-- Broken: changed from func() invalid type to func() int
+## incompatible changes
+Broken: changed from func() invalid type to func() int
 
-example.com/fix/good
---------------------
-Compatible changes:
-- Better: added
+# example.com/fix/good
+## compatible changes
+Better: added
 
+# summary
 Cannot suggest a release version.
 Errors were found.
diff --git a/cmd/gorelease/testdata/fix/compatible_other_verify.test b/cmd/gorelease/testdata/fix/compatible_other_verify.test
index e0fb5c8..484c2af 100644
--- a/cmd/gorelease/testdata/fix/compatible_other_verify.test
+++ b/cmd/gorelease/testdata/fix/compatible_other_verify.test
@@ -3,18 +3,17 @@
 version=v1.1.0-compatible-other
 release=v1.1.0
 -- want --
-example.com/fix/bad
--------------------
-errors in base version:
-	bad/bad.go:3:15: undeclared name: NOTYPE
+# example.com/fix/bad
+## errors in base version:
+bad/bad.go:3:15: undeclared name: NOTYPE
 
-Incompatible changes:
-- Broken: changed from func() invalid type to func() int
+## incompatible changes
+Broken: changed from func() invalid type to func() int
 
-example.com/fix/good
---------------------
-Compatible changes:
-- Better: added
+# example.com/fix/good
+## compatible changes
+Better: added
 
+# summary
 v1.1.0 is a valid semantic version for this release.
 Errors were found in the base version. Some API changes may be omitted.
diff --git a/cmd/gorelease/testdata/fix/compatible_other_verify_err.test b/cmd/gorelease/testdata/fix/compatible_other_verify_err.test
index afc588b..d8d3a92 100644
--- a/cmd/gorelease/testdata/fix/compatible_other_verify_err.test
+++ b/cmd/gorelease/testdata/fix/compatible_other_verify_err.test
@@ -4,19 +4,18 @@
 release=v1.0.1
 success=false
 -- want --
-example.com/fix/bad
--------------------
-errors in base version:
-	bad/bad.go:3:15: undeclared name: NOTYPE
+# example.com/fix/bad
+## errors in base version:
+bad/bad.go:3:15: undeclared name: NOTYPE
 
-Incompatible changes:
-- Broken: changed from func() invalid type to func() int
+## incompatible changes
+Broken: changed from func() invalid type to func() int
 
-example.com/fix/good
---------------------
-Compatible changes:
-- Better: added
+# example.com/fix/good
+## compatible changes
+Better: added
 
+# summary
 v1.0.1 is not a valid semantic version for this release.
 There are compatible changes, but the minor version is not incremented
 over the base version (v1.0.0).
diff --git a/cmd/gorelease/testdata/fix/compatible_same_suggest.test b/cmd/gorelease/testdata/fix/compatible_same_suggest.test
index b068d77..a57baa2 100644
--- a/cmd/gorelease/testdata/fix/compatible_same_suggest.test
+++ b/cmd/gorelease/testdata/fix/compatible_same_suggest.test
@@ -3,15 +3,15 @@
 version=v1.1.0-compatible-same
 success=false
 -- want --
-example.com/fix/bad
--------------------
-errors in base version:
-	bad/bad.go:3:15: undeclared name: NOTYPE
+# example.com/fix/bad
+## errors in base version:
+bad/bad.go:3:15: undeclared name: NOTYPE
 
-Incompatible changes:
-- Broken: changed from func() invalid type to func() int
-Compatible changes:
-- Worse: added
+## incompatible changes
+Broken: changed from func() invalid type to func() int
+## compatible changes
+Worse: added
 
+# summary
 Cannot suggest a release version.
 Errors were found.
diff --git a/cmd/gorelease/testdata/fix/compatible_same_verify.test b/cmd/gorelease/testdata/fix/compatible_same_verify.test
index 7aec674..6f1c335 100644
--- a/cmd/gorelease/testdata/fix/compatible_same_verify.test
+++ b/cmd/gorelease/testdata/fix/compatible_same_verify.test
@@ -3,15 +3,15 @@
 version=v1.1.0-compatible-same
 release=v1.0.1  # not actually valid, but gorelease can't tell
 -- want --
-example.com/fix/bad
--------------------
-errors in base version:
-	bad/bad.go:3:15: undeclared name: NOTYPE
+# example.com/fix/bad
+## errors in base version:
+bad/bad.go:3:15: undeclared name: NOTYPE
 
-Incompatible changes:
-- Broken: changed from func() invalid type to func() int
-Compatible changes:
-- Worse: added
+## incompatible changes
+Broken: changed from func() invalid type to func() int
+## compatible changes
+Worse: added
 
+# summary
 v1.0.1 is a valid semantic version for this release.
 Errors were found in the base version. Some API changes may be omitted.
diff --git a/cmd/gorelease/testdata/fix/incompatible_other_suggest.test b/cmd/gorelease/testdata/fix/incompatible_other_suggest.test
index 90b0ce7..6432119 100644
--- a/cmd/gorelease/testdata/fix/incompatible_other_suggest.test
+++ b/cmd/gorelease/testdata/fix/incompatible_other_suggest.test
@@ -3,18 +3,17 @@
 version=v1.1.0-incompatible-other
 success=false
 -- want --
-example.com/fix/bad
--------------------
-errors in base version:
-	bad/bad.go:3:15: undeclared name: NOTYPE
+# example.com/fix/bad
+## errors in base version:
+bad/bad.go:3:15: undeclared name: NOTYPE
 
-Incompatible changes:
-- Broken: changed from func() invalid type to func() int
+## incompatible changes
+Broken: changed from func() invalid type to func() int
 
-example.com/fix/good
---------------------
-Incompatible changes:
-- Good: changed from func() int to func() string
+# example.com/fix/good
+## incompatible changes
+Good: changed from func() int to func() string
 
+# summary
 Cannot suggest a release version.
 Errors were found.
diff --git a/cmd/gorelease/testdata/fix/incompatible_other_verify.test b/cmd/gorelease/testdata/fix/incompatible_other_verify.test
index fccdf58..f6fa31c 100644
--- a/cmd/gorelease/testdata/fix/incompatible_other_verify.test
+++ b/cmd/gorelease/testdata/fix/incompatible_other_verify.test
@@ -4,18 +4,17 @@
 release=v1.1.0
 success=false
 -- want --
-example.com/fix/bad
--------------------
-errors in base version:
-	bad/bad.go:3:15: undeclared name: NOTYPE
+# example.com/fix/bad
+## errors in base version:
+bad/bad.go:3:15: undeclared name: NOTYPE
 
-Incompatible changes:
-- Broken: changed from func() invalid type to func() int
+## incompatible changes
+Broken: changed from func() invalid type to func() int
 
-example.com/fix/good
---------------------
-Incompatible changes:
-- Good: changed from func() int to func() string
+# example.com/fix/good
+## incompatible changes
+Good: changed from func() int to func() string
 
+# summary
 v1.1.0 is not a valid semantic version for this release.
 There are incompatible changes.
diff --git a/cmd/gorelease/testdata/fix/incompatible_same_suggest.test b/cmd/gorelease/testdata/fix/incompatible_same_suggest.test
index cb1a11a..6ad492c 100644
--- a/cmd/gorelease/testdata/fix/incompatible_same_suggest.test
+++ b/cmd/gorelease/testdata/fix/incompatible_same_suggest.test
@@ -3,14 +3,14 @@
 version=v1.1.0-incompatible-same
 success=false
 -- want --
-example.com/fix/bad
--------------------
-errors in base version:
-	bad/bad.go:3:15: undeclared name: NOTYPE
+# example.com/fix/bad
+## errors in base version:
+bad/bad.go:3:15: undeclared name: NOTYPE
 
-Incompatible changes:
-- Bad: changed from func() int to func() string
-- Broken: changed from func() invalid type to func() int
+## incompatible changes
+Bad: changed from func() int to func() string
+Broken: changed from func() invalid type to func() int
 
+# summary
 Cannot suggest a release version.
 Errors were found.
diff --git a/cmd/gorelease/testdata/fix/incompatible_same_verify.test b/cmd/gorelease/testdata/fix/incompatible_same_verify.test
index b4c2155..e210aec 100644
--- a/cmd/gorelease/testdata/fix/incompatible_same_verify.test
+++ b/cmd/gorelease/testdata/fix/incompatible_same_verify.test
@@ -3,14 +3,14 @@
 version=v1.1.0-incompatible-same
 release=v1.0.1  # not actually valid, but gorelease can't tell
 -- want --
-example.com/fix/bad
--------------------
-errors in base version:
-	bad/bad.go:3:15: undeclared name: NOTYPE
+# example.com/fix/bad
+## errors in base version:
+bad/bad.go:3:15: undeclared name: NOTYPE
 
-Incompatible changes:
-- Bad: changed from func() int to func() string
-- Broken: changed from func() invalid type to func() int
+## incompatible changes
+Bad: changed from func() int to func() string
+Broken: changed from func() invalid type to func() int
 
+# summary
 v1.0.1 is a valid semantic version for this release.
 Errors were found in the base version. Some API changes may be omitted.
diff --git a/cmd/gorelease/testdata/fix/patch_suggest.test b/cmd/gorelease/testdata/fix/patch_suggest.test
index 3f32b27..20360d6 100644
--- a/cmd/gorelease/testdata/fix/patch_suggest.test
+++ b/cmd/gorelease/testdata/fix/patch_suggest.test
@@ -3,13 +3,13 @@
 version=v1.0.1-patch
 success=false
 -- want --
-example.com/fix/bad
--------------------
-errors in base version:
-	bad/bad.go:3:15: undeclared name: NOTYPE
+# example.com/fix/bad
+## errors in base version:
+bad/bad.go:3:15: undeclared name: NOTYPE
 
-Incompatible changes:
-- Broken: changed from func() invalid type to func() int
+## incompatible changes
+Broken: changed from func() invalid type to func() int
 
+# summary
 Cannot suggest a release version.
 Errors were found.
diff --git a/cmd/gorelease/testdata/fix/patch_verify.test b/cmd/gorelease/testdata/fix/patch_verify.test
index 0546a2a..50b55be 100644
--- a/cmd/gorelease/testdata/fix/patch_verify.test
+++ b/cmd/gorelease/testdata/fix/patch_verify.test
@@ -3,13 +3,13 @@
 version=v1.0.1-patch
 release=v1.0.1
 -- want --
-example.com/fix/bad
--------------------
-errors in base version:
-	bad/bad.go:3:15: undeclared name: NOTYPE
+# example.com/fix/bad
+## errors in base version:
+bad/bad.go:3:15: undeclared name: NOTYPE
 
-Incompatible changes:
-- Broken: changed from func() invalid type to func() int
+## incompatible changes
+Broken: changed from func() invalid type to func() int
 
+# summary
 v1.0.1 is a valid semantic version for this release.
 Errors were found in the base version. Some API changes may be omitted.
diff --git a/cmd/gorelease/testdata/internalcompat/internalcompat.test b/cmd/gorelease/testdata/internalcompat/internalcompat.test
index 9bf59a3..9436bee 100644
--- a/cmd/gorelease/testdata/internalcompat/internalcompat.test
+++ b/cmd/gorelease/testdata/internalcompat/internalcompat.test
@@ -3,3 +3,4 @@
 release=v1.0.1
 base=example.com/internalcompat/a@v1.0.0
 -- want --
+# summary
diff --git a/cmd/gorelease/testdata/main/add.test b/cmd/gorelease/testdata/main/add.test
index 73b2cae..26089ad 100644
--- a/cmd/gorelease/testdata/main/add.test
+++ b/cmd/gorelease/testdata/main/add.test
@@ -1,11 +1,11 @@
 mod=example.com/main
 base=v0.0.1
 -- want --
-example.com/main/b
-------------------
-Compatible changes:
-- package added
+# example.com/main/b
+## compatible changes
+package added
 
+# summary
 Suggested version: v0.1.0
 -- go.mod --
 module example.com/main
diff --git a/cmd/gorelease/testdata/main/change.test b/cmd/gorelease/testdata/main/change.test
index 688839e..6960373 100644
--- a/cmd/gorelease/testdata/main/change.test
+++ b/cmd/gorelease/testdata/main/change.test
@@ -1,6 +1,7 @@
 mod=example.com/main
 base=v0.0.1
 -- want --
+# summary
 Suggested version: v0.0.2
 -- go.mod --
 module example.com/main
diff --git a/cmd/gorelease/testdata/main/remove.test b/cmd/gorelease/testdata/main/remove.test
index 41ac909..702e1d1 100644
--- a/cmd/gorelease/testdata/main/remove.test
+++ b/cmd/gorelease/testdata/main/remove.test
@@ -1,11 +1,11 @@
 mod=example.com/main
 base=v0.0.1
 -- want --
-example.com/main/a
-------------------
-Incompatible changes:
-- package removed
+# example.com/main/a
+## incompatible changes
+package removed
 
+# summary
 Suggested version: v0.1.0
 -- go.mod --
 module example.com/main
diff --git a/cmd/gorelease/testdata/nomod/nomod.test b/cmd/gorelease/testdata/nomod/nomod.test
index 973d393..c307d13 100644
--- a/cmd/gorelease/testdata/nomod/nomod.test
+++ b/cmd/gorelease/testdata/nomod/nomod.test
@@ -4,4 +4,5 @@
 release=v0.0.2
 proxyVersions=example.com/nomod@v0.0.1
 -- want --
+# summary
 v0.0.2 is a valid semantic version for this release.
diff --git a/cmd/gorelease/testdata/patherrors/dup_roots_branch.test b/cmd/gorelease/testdata/patherrors/dup_roots_branch.test
index 7e27b87..695d744 100644
--- a/cmd/gorelease/testdata/patherrors/dup_roots_branch.test
+++ b/cmd/gorelease/testdata/patherrors/dup_roots_branch.test
@@ -12,6 +12,10 @@
 
 go 1.13
 -- want --
+# diagnostics
 module is defined in two locations:
 	dup/go.mod
 	dup/v2/go.mod
+
+# summary
+Suggested version: v2.0.0 (with tag dup/v2.0.0)
diff --git a/cmd/gorelease/testdata/patherrors/dup_roots_dir.test b/cmd/gorelease/testdata/patherrors/dup_roots_dir.test
index 41d6efc..f369704 100644
--- a/cmd/gorelease/testdata/patherrors/dup_roots_dir.test
+++ b/cmd/gorelease/testdata/patherrors/dup_roots_dir.test
@@ -12,6 +12,10 @@
 
 go 1.13
 -- want --
+# diagnostics
 module is defined in two locations:
 	dup/v2/go.mod
 	dup/go.mod
+
+# summary
+Suggested version: v2.0.0 (with tag dup/v2.0.0)
diff --git a/cmd/gorelease/testdata/patherrors/dup_roots_ok.test b/cmd/gorelease/testdata/patherrors/dup_roots_ok.test
index b8716a5..bc71480 100644
--- a/cmd/gorelease/testdata/patherrors/dup_roots_ok.test
+++ b/cmd/gorelease/testdata/patherrors/dup_roots_ok.test
@@ -11,4 +11,5 @@
 
 go 1.13
 -- want --
+# summary
 Suggested version: v2.0.0 (with tag dup/v2.0.0)
diff --git a/cmd/gorelease/testdata/patherrors/gopkginsub.test b/cmd/gorelease/testdata/patherrors/gopkginsub.test
index 659e87d..2cfcdd9 100644
--- a/cmd/gorelease/testdata/patherrors/gopkginsub.test
+++ b/cmd/gorelease/testdata/patherrors/gopkginsub.test
@@ -3,8 +3,12 @@
 dir=yaml
 success=false
 -- want --
+# diagnostics
 go.mod: go directive is missing
 gopkg.in/yaml.v2: module path starts with gopkg.in and must be declared in the root directory of the repository
+
+# summary
+Suggested version: v2.0.0
 -- .mod --
 module example.com/patherrors
 -- .git/HEAD --
diff --git a/cmd/gorelease/testdata/patherrors/pathsub.test b/cmd/gorelease/testdata/patherrors/pathsub.test
index 382fef7..04dbdd6 100644
--- a/cmd/gorelease/testdata/patherrors/pathsub.test
+++ b/cmd/gorelease/testdata/patherrors/pathsub.test
@@ -3,7 +3,11 @@
 base=none
 success=false
 -- want --
+# diagnostics
 example.com/y: module path must end with "x", since it is in subdirectory "x"
+
+# summary
+Suggested version: v0.1.0
 -- .mod --
 module example.com/patherrors
 -- .git/HEAD --
diff --git a/cmd/gorelease/testdata/patherrors/pathsubv2.test b/cmd/gorelease/testdata/patherrors/pathsubv2.test
index a436d1a..76cc284 100644
--- a/cmd/gorelease/testdata/patherrors/pathsubv2.test
+++ b/cmd/gorelease/testdata/patherrors/pathsubv2.test
@@ -3,7 +3,11 @@
 dir=x
 success=false
 -- want --
+# diagnostics
 example.com/y/v2: module path must end with "x" or "x/v2", since it is in subdirectory "x"
+
+# summary
+Suggested version: v2.0.0
 -- .mod --
 module example.com/patherrors
 -- .git/HEAD --
diff --git a/cmd/gorelease/testdata/prerelease/prerelease_2.test b/cmd/gorelease/testdata/prerelease/prerelease_2.test
index b3e83db..0597098 100644
--- a/cmd/gorelease/testdata/prerelease/prerelease_2.test
+++ b/cmd/gorelease/testdata/prerelease/prerelease_2.test
@@ -2,9 +2,15 @@
 release=v0.0.0-2
 success=false
 -- want --
-Inferred base version: none
+# diagnostics
 Version v0.0.0-2 is lower than most pseudo-versions. Consider releasing v0.1.0-0 instead.
+
+# summary
+Inferred base version: none
+v0.0.0-2 is a valid semantic version for this release.
+Note: v0.0.0-2 sorts lower in MVS than pseudo-versions, which may be
+unexpected for users. So, it may be better to choose a different suffix.
 -- go.mod --
 module example.com/prerelease
 
-go 1.12
\ No newline at end of file
+go 1.12
diff --git a/cmd/gorelease/testdata/prerelease/prerelease_3.test b/cmd/gorelease/testdata/prerelease/prerelease_3.test
index e155209..7f6b26f 100644
--- a/cmd/gorelease/testdata/prerelease/prerelease_3.test
+++ b/cmd/gorelease/testdata/prerelease/prerelease_3.test
@@ -2,9 +2,15 @@
 release=v0.0.0-3
 success=false
 -- want --
-Inferred base version: none
+# diagnostics
 Version v0.0.0-3 is lower than most pseudo-versions. Consider releasing v0.1.0-0 instead.
+
+# summary
+Inferred base version: none
+v0.0.0-3 is a valid semantic version for this release.
+Note: v0.0.0-3 sorts lower in MVS than pseudo-versions, which may be
+unexpected for users. So, it may be better to choose a different suffix.
 -- go.mod --
 module example.com/prerelease
 
-go 1.12
\ No newline at end of file
+go 1.12
diff --git a/cmd/gorelease/testdata/prerelease/prerelease_beta2.test b/cmd/gorelease/testdata/prerelease/prerelease_beta2.test
index 766abfc..b265a86 100644
--- a/cmd/gorelease/testdata/prerelease/prerelease_beta2.test
+++ b/cmd/gorelease/testdata/prerelease/prerelease_beta2.test
@@ -1,9 +1,10 @@
 mod=example.com/prerelease
 release=v0.0.0-beta2
 -- want --
+# summary
 Inferred base version: none
 v0.0.0-beta2 is a valid semantic version for this release.
 -- go.mod --
 module example.com/prerelease
 
-go 1.12
\ No newline at end of file
+go 1.12
diff --git a/cmd/gorelease/testdata/prerelease/prerelease_wordsonly.test b/cmd/gorelease/testdata/prerelease/prerelease_wordsonly.test
index b24b76b..a59aa40 100644
--- a/cmd/gorelease/testdata/prerelease/prerelease_wordsonly.test
+++ b/cmd/gorelease/testdata/prerelease/prerelease_wordsonly.test
@@ -1,9 +1,10 @@
 mod=example.com/prerelease
 release=v0.0.0-some-words-only-suffix
 -- want --
+# summary
 Inferred base version: none
 v0.0.0-some-words-only-suffix is a valid semantic version for this release.
 -- go.mod --
 module example.com/prerelease
 
-go 1.12
\ No newline at end of file
+go 1.12
diff --git a/cmd/gorelease/testdata/private/break.test b/cmd/gorelease/testdata/private/break.test
index 14967ab..3e4ec87 100644
--- a/cmd/gorelease/testdata/private/break.test
+++ b/cmd/gorelease/testdata/private/break.test
@@ -3,10 +3,10 @@
 base=v1.0.1
 success=false
 -- want --
-example.com/private/p
----------------------
-Incompatible changes:
-- I.Foo: added
+# example.com/private/p
+## incompatible changes
+I.Foo: added
 
+# summary
 Cannot suggest a release version.
 Incompatible changes were detected.
diff --git a/cmd/gorelease/testdata/private/unreported.test b/cmd/gorelease/testdata/private/unreported.test
index 8ed58fe..20567b6 100644
--- a/cmd/gorelease/testdata/private/unreported.test
+++ b/cmd/gorelease/testdata/private/unreported.test
@@ -3,4 +3,5 @@
 base=v1.0.0
 proxyVersions=example.com/private@v1.0.0
 -- want --
+# summary
 Suggested version: v1.0.1
diff --git a/cmd/gorelease/testdata/regress/issue37756.test b/cmd/gorelease/testdata/regress/issue37756.test
index f95c55d..07b6017 100644
--- a/cmd/gorelease/testdata/regress/issue37756.test
+++ b/cmd/gorelease/testdata/regress/issue37756.test
@@ -5,19 +5,17 @@
 base=v1.0.0
 proxyVersions=example.com/issue37756@v1.0.0
 -- want --
-example.com/issue37756/a
-------------------------
-Compatible changes:
-- A2: added
+# example.com/issue37756/a
+## compatible changes
+A2: added
 
-example.com/issue37756/b
-------------------------
-Compatible changes:
-- B2: added
+# example.com/issue37756/b
+## compatible changes
+B2: added
 
-example.com/issue37756/c
-------------------------
-Compatible changes:
-- C2: added
+# example.com/issue37756/c
+## compatible changes
+C2: added
 
+# summary
 Suggested version: v1.1.0
diff --git a/cmd/gorelease/testdata/require/add_requirement.test b/cmd/gorelease/testdata/require/add_requirement.test
index 7833dd3..59ef3db 100644
--- a/cmd/gorelease/testdata/require/add_requirement.test
+++ b/cmd/gorelease/testdata/require/add_requirement.test
@@ -2,6 +2,7 @@
 base=v0.0.1
 proxyVersions=example.com/require@v0.0.1,example.com/basic@v1.0.1
 -- want --
+# summary
 Suggested version: v0.1.0
 -- go.mod --
 module example.com/require
diff --git a/cmd/gorelease/testdata/require/decrement_go_version.test b/cmd/gorelease/testdata/require/decrement_go_version.test
index 7360f13..ce461d5 100644
--- a/cmd/gorelease/testdata/require/decrement_go_version.test
+++ b/cmd/gorelease/testdata/require/decrement_go_version.test
@@ -2,6 +2,7 @@
 base=v0.0.1
 proxyVersions=example.com/require@v0.0.1
 -- want --
+# summary
 Suggested version: v0.0.2
 -- go.mod --
 module example.com/require
diff --git a/cmd/gorelease/testdata/require/decrement_requirement_minor.test b/cmd/gorelease/testdata/require/decrement_requirement_minor.test
index 02f3683..f64e3e3 100644
--- a/cmd/gorelease/testdata/require/decrement_requirement_minor.test
+++ b/cmd/gorelease/testdata/require/decrement_requirement_minor.test
@@ -1,6 +1,7 @@
 mod=example.com/require
 base=v0.1.1
 -- want --
+# summary
 Suggested version: v0.1.2
 -- go.mod --
 module example.com/require
diff --git a/cmd/gorelease/testdata/require/increment_go_version.test b/cmd/gorelease/testdata/require/increment_go_version.test
index a698bee..802ac6e 100644
--- a/cmd/gorelease/testdata/require/increment_go_version.test
+++ b/cmd/gorelease/testdata/require/increment_go_version.test
@@ -2,6 +2,7 @@
 base=v0.0.1
 proxyVersions=example.com/require@v0.0.1
 -- want --
+# summary
 Suggested version: v0.1.0
 -- go.mod --
 module example.com/require
diff --git a/cmd/gorelease/testdata/require/increment_requirement_minor.test b/cmd/gorelease/testdata/require/increment_requirement_minor.test
index 0d83508..821ff2a 100644
--- a/cmd/gorelease/testdata/require/increment_requirement_minor.test
+++ b/cmd/gorelease/testdata/require/increment_requirement_minor.test
@@ -2,6 +2,7 @@
 base=v0.1.0
 proxyVersions=example.com/require@v0.1.0,example.com/basic@v1.1.0,example.com/basic@v1.0.1
 -- want --
+# summary
 Suggested version: v0.2.0
 -- go.mod --
 module example.com/require
diff --git a/cmd/gorelease/testdata/require/increment_requirement_patch.test b/cmd/gorelease/testdata/require/increment_requirement_patch.test
index 2665fd3..d183300 100644
--- a/cmd/gorelease/testdata/require/increment_requirement_patch.test
+++ b/cmd/gorelease/testdata/require/increment_requirement_patch.test
@@ -2,6 +2,7 @@
 base=v0.1.1
 proxyVersions=example.com/require@v0.1.1,example.com/basic@v1.1.1,example.com/basic@v1.1.0
 -- want --
+# summary
 Suggested version: v0.1.2
 -- go.mod --
 module example.com/require
diff --git a/cmd/gorelease/testdata/require/remove_requirements.test b/cmd/gorelease/testdata/require/remove_requirements.test
index b3f82ed..91a8837 100644
--- a/cmd/gorelease/testdata/require/remove_requirements.test
+++ b/cmd/gorelease/testdata/require/remove_requirements.test
@@ -2,6 +2,7 @@
 base=v0.0.1
 proxyVersions=example.com/require@v0.0.1
 -- want --
+# summary
 Suggested version: v0.0.2
 -- go.mod --
 module example.com/require
diff --git a/cmd/gorelease/testdata/retract/retract_verify_direct_dep.test b/cmd/gorelease/testdata/retract/retract_verify_direct_dep.test
index 7e923c5..7777dff 100644
--- a/cmd/gorelease/testdata/retract/retract_verify_direct_dep.test
+++ b/cmd/gorelease/testdata/retract/retract_verify_direct_dep.test
@@ -2,5 +2,9 @@
 version=v0.0.1
 success=false
 -- want --
-Inferred base version: v0.0.1
+# diagnostics
 required module example.com/retractdep@v1.0.0 retracted by module author: Remote-triggered crash in package foo. See CVE-2021-01234.
+
+# summary
+Inferred base version: v0.0.1
+Suggested version: v0.0.2
diff --git a/cmd/gorelease/testdata/retract/retract_verify_long_msg.test b/cmd/gorelease/testdata/retract/retract_verify_long_msg.test
index a5d9fb7..1f2776f 100644
--- a/cmd/gorelease/testdata/retract/retract_verify_long_msg.test
+++ b/cmd/gorelease/testdata/retract/retract_verify_long_msg.test
@@ -1,8 +1,12 @@
 mod=example.com/retract
 success=false
 -- want --
-Inferred base version: v0.0.1
+# diagnostics
 required module example.com/retractdep/v3@v3.0.0 retracted by module author
+
+# summary
+Inferred base version: v0.0.1
+Suggested version: v0.1.0
 -- go.mod --
 module example.com/retract
 
diff --git a/cmd/gorelease/testdata/retract/retract_verify_no_msg.test b/cmd/gorelease/testdata/retract/retract_verify_no_msg.test
index 9a42760..7a748f7 100644
--- a/cmd/gorelease/testdata/retract/retract_verify_no_msg.test
+++ b/cmd/gorelease/testdata/retract/retract_verify_no_msg.test
@@ -1,8 +1,12 @@
 mod=example.com/retract
 success=false
 -- want --
-Inferred base version: v0.0.1
+# diagnostics
 required module example.com/retractdep/v2@v2.0.0 retracted by module author
+
+# summary
+Inferred base version: v0.0.1
+Suggested version: v0.1.0
 -- go.mod --
 module example.com/retract
 
diff --git a/cmd/gorelease/testdata/retract/retract_verify_transitive_dep.test b/cmd/gorelease/testdata/retract/retract_verify_transitive_dep.test
index 8338e5f..681702a 100644
--- a/cmd/gorelease/testdata/retract/retract_verify_transitive_dep.test
+++ b/cmd/gorelease/testdata/retract/retract_verify_transitive_dep.test
@@ -4,5 +4,9 @@
 version=v0.0.1
 success=false
 -- want --
-Inferred base version: v0.0.1
+# diagnostics
 required module example.com/retractdep@v1.0.0 retracted by module author: Remote-triggered crash in package foo. See CVE-2021-01234.
+
+# summary
+Inferred base version: v0.0.1
+Suggested version: v0.0.2
diff --git a/cmd/gorelease/testdata/sub/nest.test b/cmd/gorelease/testdata/sub/nest.test
index 7557f23..e8a2aae 100644
--- a/cmd/gorelease/testdata/sub/nest.test
+++ b/cmd/gorelease/testdata/sub/nest.test
@@ -2,6 +2,7 @@
 dir=nest
 base=v1.0.0
 -- want --
+# summary
 Suggested version: v1.0.1 (with tag nest/v1.0.1)
 -- .git/HEAD --
 -- nest/go.mod --
diff --git a/cmd/gorelease/testdata/sub/nest_v2.test b/cmd/gorelease/testdata/sub/nest_v2.test
index cc54576..209029e 100644
--- a/cmd/gorelease/testdata/sub/nest_v2.test
+++ b/cmd/gorelease/testdata/sub/nest_v2.test
@@ -2,6 +2,7 @@
 dir=nest
 base=v2.0.0
 -- want --
+# summary
 Suggested version: v2.0.1 (with tag nest/v2.0.1)
 -- .git/HEAD --
 -- nest/go.mod --
diff --git a/cmd/gorelease/testdata/sub/nest_v2_dir.test b/cmd/gorelease/testdata/sub/nest_v2_dir.test
index aea619d..8d549e5 100644
--- a/cmd/gorelease/testdata/sub/nest_v2_dir.test
+++ b/cmd/gorelease/testdata/sub/nest_v2_dir.test
@@ -2,6 +2,7 @@
 dir=nest/v2
 base=v2.0.0
 -- want --
+# summary
 Suggested version: v2.0.1 (with tag nest/v2.0.1)
 -- .git/HEAD --
 -- nest/v2/go.mod --
diff --git a/cmd/gorelease/testdata/sub/v2_dir.test b/cmd/gorelease/testdata/sub/v2_dir.test
index c1a4da7..feb690a 100644
--- a/cmd/gorelease/testdata/sub/v2_dir.test
+++ b/cmd/gorelease/testdata/sub/v2_dir.test
@@ -2,6 +2,7 @@
 dir=v2
 base=v2.0.0
 -- want --
+# summary
 Suggested version: v2.0.1
 -- .git/HEAD --
 -- v2/go.mod --
diff --git a/cmd/gorelease/testdata/sub/v2_root.test b/cmd/gorelease/testdata/sub/v2_root.test
index f53cadd..ce6d68f 100644
--- a/cmd/gorelease/testdata/sub/v2_root.test
+++ b/cmd/gorelease/testdata/sub/v2_root.test
@@ -1,6 +1,7 @@
 mod=example.com/sub/v2
 base=v2.0.0
 -- want --
+# summary
 Suggested version: v2.0.1
 -- .git/HEAD --
 -- go.mod --
diff --git a/cmd/gorelease/testdata/tidy/empty_sum.test b/cmd/gorelease/testdata/tidy/empty_sum.test
index 4aa31d9..69a51fb 100644
--- a/cmd/gorelease/testdata/tidy/empty_sum.test
+++ b/cmd/gorelease/testdata/tidy/empty_sum.test
@@ -2,7 +2,11 @@
 base=v0.0.1
 success=false
 -- want --
+# diagnostics
 go.sum: one or more sums are missing. Run 'go mod tidy' to add missing sums.
+
+# summary
+Suggested version: v0.1.0
 -- go.mod --
 module example.com/tidy
 
diff --git a/cmd/gorelease/testdata/tidy/misleading_req.test b/cmd/gorelease/testdata/tidy/misleading_req.test
index de0d745..b4b2954 100644
--- a/cmd/gorelease/testdata/tidy/misleading_req.test
+++ b/cmd/gorelease/testdata/tidy/misleading_req.test
@@ -22,6 +22,10 @@
 import _ "example.com/tidy/a"
 import _ "example.com/tidy/b"
 -- want --
+# diagnostics
 go.mod: the following requirements are needed
 	example.com/tidy/b@v0.2.0
 Run 'go mod tidy' to add missing requirements.
+
+# summary
+Suggested version: v0.1.0
diff --git a/cmd/gorelease/testdata/tidy/missing_go.test b/cmd/gorelease/testdata/tidy/missing_go.test
index 9ef09d9..99ca05a 100644
--- a/cmd/gorelease/testdata/tidy/missing_go.test
+++ b/cmd/gorelease/testdata/tidy/missing_go.test
@@ -2,7 +2,11 @@
 base=v0.0.1
 success=0
 -- want --
+# diagnostics
 go.mod: go directive is missing
+
+# summary
+Suggested version: v0.0.2
 -- go.mod --
 module example.com/tidy
 -- tidy.go --
diff --git a/cmd/gorelease/testdata/tidy/missing_req_basic.test b/cmd/gorelease/testdata/tidy/missing_req_basic.test
index 9290804..97a95a3 100644
--- a/cmd/gorelease/testdata/tidy/missing_req_basic.test
+++ b/cmd/gorelease/testdata/tidy/missing_req_basic.test
@@ -2,9 +2,13 @@
 base=v0.0.1
 success=false
 -- want --
+# diagnostics
 go.mod: the following requirements are needed
 	example.com/basic@v1.1.2
 Run 'go mod tidy' to add missing requirements.
+
+# summary
+Suggested version: v0.0.2
 -- go.mod --
 module example.com/tidy
 
diff --git a/cmd/gorelease/testdata/tidy/missing_req_nested.test b/cmd/gorelease/testdata/tidy/missing_req_nested.test
index 75ca2bd..1533d6a 100644
--- a/cmd/gorelease/testdata/tidy/missing_req_nested.test
+++ b/cmd/gorelease/testdata/tidy/missing_req_nested.test
@@ -2,14 +2,17 @@
 base=v0.0.1
 success=false
 -- want --
-example.com/tidy/subdir
------------------------
-Compatible changes:
-- package added
+# example.com/tidy/subdir
+## compatible changes
+package added
 
+# diagnostics
 go.mod: the following requirements are needed
 	example.com/basic@v1.1.2
 Run 'go mod tidy' to add missing requirements.
+
+# summary
+Suggested version: v0.1.0
 -- go.mod --
 module example.com/tidy
 
diff --git a/cmd/gorelease/testdata/tidy/missing_req_submodule.test b/cmd/gorelease/testdata/tidy/missing_req_submodule.test
index d864d26..e210c2d 100644
--- a/cmd/gorelease/testdata/tidy/missing_req_submodule.test
+++ b/cmd/gorelease/testdata/tidy/missing_req_submodule.test
@@ -2,6 +2,7 @@
 base=v0.0.1
 success=true
 -- want --
+# summary
 Suggested version: v0.0.2
 -- go.mod --
 module example.com/tidy
diff --git a/cmd/gorelease/testdata/tidy/missing_req_twice_nested.test b/cmd/gorelease/testdata/tidy/missing_req_twice_nested.test
index 006c242..c06f465 100644
--- a/cmd/gorelease/testdata/tidy/missing_req_twice_nested.test
+++ b/cmd/gorelease/testdata/tidy/missing_req_twice_nested.test
@@ -2,14 +2,17 @@
 base=v0.0.1
 success=false
 -- want --
-example.com/tidy/subdir/subsubdir
----------------------------------
-Compatible changes:
-- package added
+# example.com/tidy/subdir/subsubdir
+## compatible changes
+package added
 
+# diagnostics
 go.mod: the following requirements are needed
 	example.com/basic@v1.1.2
 Run 'go mod tidy' to add missing requirements.
+
+# summary
+Suggested version: v0.1.0
 -- go.mod --
 module example.com/tidy
 
diff --git a/cmd/gorelease/testdata/tidy/no_sum.test b/cmd/gorelease/testdata/tidy/no_sum.test
index 8c594f5..f4ff48b 100644
--- a/cmd/gorelease/testdata/tidy/no_sum.test
+++ b/cmd/gorelease/testdata/tidy/no_sum.test
@@ -2,7 +2,11 @@
 base=v0.0.1
 success=false
 -- want --
+# diagnostics
 go.sum: one or more sums are missing. Run 'go mod tidy' to add missing sums.
+
+# summary
+Suggested version: v0.1.0
 -- go.mod --
 module example.com/tidy