Pulse/pkg/reporting
rcourtman 9bcf767b1b fix(reporting): resolve report subjects through the canonical unified view and paginate the metric card grid
Two regressions surfaced by generating a real-mode agent report after a
backend restart:

- Report subject lookups used Monitor.GetUnifiedResources (the raw
  resource store), but the raw store's canonical IDs depend on per-boot
  ingest order for merged-source hosts: after a restart the same host
  resolved to a different agent-<hash> than the one the UI and
  /api/state advertise, so reports lost the resource name, availability,
  and metrics translation entirely. Subject enrichment now reads
  Monitor.UnifiedResourceSnapshot and MetricsTargetForResource resolves
  through GetUnifiedReadStateOrSnapshot first (raw store as fallback) -
  the same re-ingested registry every other read surface uses.
- The performance summary card grid positions cards absolutely and never
  paginated: an agent host reporting 8+ metric families walked off the
  page bottom, fought fpdf's auto page break, and scattered one orphan
  element per page (a 7-day delly report rendered 18 pages, ten of them
  near-blank). The grid now starts a new page before a row that will not
  fit; the same report renders 9 pages with intact cards.

Verified live: real-mode delly report shows name, 288 data points,
availability, charts, and correctly paginated cards. The underlying
canonical-ID instability (raw store vs re-ingested view, and the
resource_changes journal fragmenting across boot eras) is a separate
root issue tracked for its own fix.
2026-06-10 22:02:48 +01:00
..
branding.go Add entitlement-gated report branding 2026-06-02 18:11:25 +01:00
catalog.go Refresh advanced_reporting paywall and guidance copy 2026-05-11 10:16:27 +01:00
catalog_test.go Remove customer commercial analytics wrappers 2026-04-30 11:46:16 +01:00
csv.go fix(reporting): make report PDFs read like client documents, not generated artifacts 2026-06-10 18:11:42 +01:00
csv_additional_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
engine.go fix(reporting): make report PDFs read like client documents, not generated artifacts 2026-06-10 18:11:42 +01:00
engine_additional2_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
engine_additional3_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
engine_additional_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
engine_integration_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
engine_narrative_test.go Harden Patrol and Assistant action boundaries 2026-05-12 12:06:27 +01:00
engine_test.go Add agentless availability targets 2026-05-06 10:35:34 +01:00
fleet_narrative.go fix(reporting): resolve unified resource IDs to metrics targets and render honest report subjects 2026-06-10 17:10:30 +01:00
fleet_narrative_test.go Add fleet-level AI narrative for multi-resource reports 2026-05-10 21:23:12 +01:00
multi_report_visual_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
narrative.go Make Narrative / FleetOutlier JSON shape consistent with prompt schema 2026-05-11 11:29:35 +01:00
narrative_json_test.go Make Narrative / FleetOutlier JSON shape consistent with prompt schema 2026-05-11 11:29:35 +01:00
narrative_test.go Replace heuristic report narrative with optional AI-generated layer 2026-05-10 19:30:54 +01:00
pdf.go fix(reporting): resolve report subjects through the canonical unified view and paginate the metric card grid 2026-06-10 22:02:48 +01:00
pdf_additional2_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
pdf_additional_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
pdf_codepage.go fix(reporting): translate UTF-8 report strings to cp1252 before PDF render 2026-06-10 17:18:19 +01:00
pdf_codepage_test.go fix(reporting): translate UTF-8 report strings to cp1252 before PDF render 2026-06-10 17:18:19 +01:00
pdf_insights_test.go Replace heuristic report narrative with optional AI-generated layer 2026-05-10 19:30:54 +01:00
pdf_ux_test.go fix(reporting): resolve report subjects through the canonical unified view and paginate the metric card grid 2026-06-10 22:02:48 +01:00
report_branding_test.go Add entitlement-gated report branding 2026-06-02 18:11:25 +01:00
reporting.go feat(reporting): availability section computed from the resource state timeline 2026-06-10 17:48:11 +01:00
reporting_test.go Expose engine narrative entry points for non-rendering callers 2026-05-10 22:23:09 +01:00
vm_inventory.go Canonicalize reporting fallback filename date style 2026-03-26 09:28:17 +00:00
vm_inventory_test.go Define VM inventory export schema contract 2026-03-25 22:09:37 +00:00