Pulse/pkg/reporting
rcourtman e6c0c4d385 fix(reporting): resolve unified resource IDs to metrics targets and render honest report subjects
Performance reports were structurally disconnected from the v6 ID
space: the UI (and any API caller working from /api/state) addresses
resources by canonical unified ID, while the metrics store is keyed by
each platform's native source ID (the resource's metricsTarget). The
engine queried the store with the unified ID verbatim, so every report
rendered 'Data Points: 0' regardless of how much history existed, and
covers showed raw hash IDs a report reader cannot map to a machine.

- MetricReportRequest gains MetricsResourceID: handlers resolve the
  unified ID through the tenant monitor's resource store (new
  Monitor.MetricsTargetForResource accessor; the registry computes
  targets on demand, they are not persisted on snapshot structs) and
  the engine uses it for store queries only. Recovery points and
  Patrol findings stay keyed by the unified ID.
- Legacy snapshot models and their alerts are keyed by the metrics
  target ID, so enrichment now matches either ID space and resource
  names/status resolve again on covers, headers, and fleet rows.
- Fleet summaries mirror the single-report guard: zero data points
  across the fleet renders a muted NO DATA card instead of a green
  HEALTHY 'All systems operating normally' - false reassurance is the
  worst failure mode for a client-facing stability report.
- Em dashes in PDF-bound literals become hyphens; fpdf core fonts are
  cp1252 and rendered them as mojibake.
2026-06-10 17:10:30 +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 feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
csv_additional_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
engine.go fix(reporting): resolve unified resource IDs to metrics targets and render honest report subjects 2026-06-10 17:10:30 +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 unified resource IDs to metrics targets and render honest report subjects 2026-06-10 17:10:30 +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_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 unified resource IDs to metrics targets and render honest report subjects 2026-06-10 17:10:30 +01:00
report_branding_test.go Add entitlement-gated report branding 2026-06-02 18:11:25 +01:00
reporting.go fix(reporting): resolve unified resource IDs to metrics targets and render honest report subjects 2026-06-10 17:10:30 +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