diff --git a/changelog.d/fixed-14727.md b/changelog.d/fixed-14727.md new file mode 100644 index 0000000000..cf5cbe29ea --- /dev/null +++ b/changelog.d/fixed-14727.md @@ -0,0 +1 @@ +- Forward-merge PRs that are forced to a merge commit instead of a squash no longer raise a repeated unclassified runtime-error self-report ([#14727](https://github.com/hivecommons/hive/issues/14727)). diff --git a/src/pkg/fleetreport/fleetreport.go b/src/pkg/fleetreport/fleetreport.go index 5f42ef8839..f039e1dbe6 100644 --- a/src/pkg/fleetreport/fleetreport.go +++ b/src/pkg/fleetreport/fleetreport.go @@ -767,6 +767,11 @@ var benignSubstrings = []string{ // output, not a repeated runtime defect (hivecommons/hive#14377). The // enforce-mode denial (effects.ErrDenied) stays reportable. "shadow fence would have denied external mutation", + // The forward-merge guard (src/pkg/github/pullrequest.go) warns each time + // it overrides a squash request on a forward-merge PR with a merge commit. + // That is the merge-safety policy working as designed, re-logged per + // merge attempt, not a repeated runtime defect (hivecommons/hive#14727). + "forward-merge guard: refusing to squash", } // IsBenignMessage reports whether a raw log message is noise the generic diff --git a/src/pkg/fleetreport/runtime_test.go b/src/pkg/fleetreport/runtime_test.go index b2100d14ce..37255fb418 100644 --- a/src/pkg/fleetreport/runtime_test.go +++ b/src/pkg/fleetreport/runtime_test.go @@ -797,6 +797,15 @@ func TestIsBenignMessagePolicySeedDivergence(t *testing.T) { } } +func TestIsBenignMessageForwardMergeGuard(t *testing.T) { + if !IsBenignMessage("forward-merge guard: refusing to squash, forcing merge commit") { + t.Error("forward-merge squash refusal not benign") + } + if IsBenignMessage("forward-merge guard: head-history check failed") { + t.Error("head-history check failure wrongly benign") + } +} + func TestIsBenignMessageCopilotModelFallback(t *testing.T) { const msg = "copilot CLI substituted the configured model" if !IsBenignMessage(msg) {