From e9fa6696824fadd654f1fb4ebf93e71323b02193 Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Mon, 18 May 2026 09:46:45 +0800 Subject: [PATCH] Use ctx.States() for federation status in HTML report Derive federation badge from rule states when available; fall back to raw FederationOK observation field when states are absent. --- checker/report.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/checker/report.go b/checker/report.go index ad88a39..f414adb 100644 --- a/checker/report.go +++ b/checker/report.go @@ -296,8 +296,23 @@ func (p *matrixProvider) GetHTMLReport(ctx sdk.ReportContext) (string, error) { return "", fmt.Errorf("failed to unmarshal matrix report: %w", err) } + // When states are available, derive the federation verdict from them so the + // report badge and the rule output never disagree. Fall back to the raw + // observation flag when the host hasn't threaded rule output yet. + states := ctx.States() + federationOK := r.FederationOK + if len(states) > 0 { + federationOK = true + for _, st := range states { + if st.Status == sdk.StatusCrit || st.Status == sdk.StatusError || st.Status == sdk.StatusWarn { + federationOK = false + break + } + } + } + data := matrixTemplateData{ - FederationOK: r.FederationOK, + FederationOK: federationOK, WellKnownServer: r.WellKnownResult.Server, WellKnownResult: r.WellKnownResult.Result, SRVSkipped: r.DNSResult.SRVSkipped,