kind: liveReport declares a live call report: the calls it covers (an agent, narrowed by filters), the targets each period is held to, its cadence, and who it is sent to. When each period closes, Roark writes the report: targets met and missed, what changed since the period before, failure themes with quoted evidence, and recommendations.
Applying a report never writes one. Roark writes a report when each period closes, or when someone asks for the latest period from Roark, the API or roark live-report run.
Live reports are YAML-only for now. A
defineLiveReport helper for the TypeScript SDK is on the way.Fields
Every field is defaulted, so deleting a line reverts it rather than keeping the last value: removing
dashboard unlinks it, and removing notify goes back to emailing every project member.
Targets
A threshold’s pass rate uses the threshold’s own condition, so it takes no
passOperator.
A target on a metric that doesn’t exist, or one the metric can’t answer (an average of a classification), fails that report’s apply with the reason and leaves the report as it was.
References
Live reports are applied after everything they name: metrics, agents and dashboards, so a report can name a metric, agent or dashboard defined in the same config. A dashboard that a report in your config still embeds is never pruned: removing the dashboard alone fails with the report named. Removedashboard: from the report, or remove both together.
In Roark
A report created by config shows as managed by config. It is read-only in Roark and over the API (edits, pause and delete return409): change it in your config and re-apply. Anyone can still open its reports, download the PDF, and write the latest period on demand.
A report made in Roark with the same title as a kind: liveReport (its displayName, or name) is adopted on the first apply rather than duplicated. Titles are unique in a project, ignoring case.