Skip to main content

Overview

dorgu report answers “is this working here?” from the cluster’s own records. It reads RemediationAction, IncidentMemory, persona and Event resources, computes the numbers below for a time window, and prints them. It sends nothing anywhere. If you are a design partner, the output is what you paste to the Dorgu team. It is read-only and needs CLI v0.14.0. The heal and refusal sections need operator v0.13.0 or newer, which is the release that writes the records they are computed from.
It never prints a zero for something it could not measure. A figure with no sample behind it reads no data (null with no_data: true in JSON). A cluster read that fails is named in the output, and every section that depends on it says no data with the reason. A zero in this report is a measurement.

Synopsis

Flags

Examples

What it reports

The text output labels some lines with short IDs (A2, A5, A6, Q1, Q2, Q3, Q6). They name the measure, so two pasted reports can be compared line by line.

Example output

This is real output from the report’s own test fixture, with the cluster name changed. Your numbers will differ. Long lines are shortened with ....
Where there is no sample, a line reads no data (reason). In the example, Q3 has no data because model calls and cost per incident are operator metrics (see the metrics reference) and are not stored on any resource.

JSON output

--json prints one document. schema is dorgu.report/v1, and it changes only when a field is removed or its meaning changes. New fields can be added without a new version, so read the fields you need and ignore the rest.
The example shortens the long text fields and lists only two of the not_measurable entries. These are the top-level fields and what they hold:
Check no_data before you read a number. clean, safe_heals, a percentile or a rate is null when it cannot be known, and no_data is true with a reason. A script that treats null as 0 will report a failure to read as a fact.

The operator line in the header

The header prints the operator version only when the operator’s image tag is a release version. A commit hash, latest or dev reads Operator: unreleased build <tag>, so a build identifier is never shown as if it were a version. cluster.operator_version in the JSON keeps the raw tag.

Older operators

Against an operator older than v0.13.0, which writes no tickets and no HealCredited record, the heal sections are no data with the operator version in the reason. The same is true when the operator version cannot be determined (for example an image pinned by digest, or a tag such as latest) and the window has completed actions with no HealCredited record. The report fails toward no data, not toward a measured zero.

Permissions

The report reads, with the identity in your kubeconfig, remediationactions, incidentmemories, applicationpersonas, clusterpersonas, Events about RemediationActions, and Deployments (to read the operator’s version). If a read is forbidden, it is listed in input_errors and the sections that depend on it say no data. The command needs kubectl on your PATH, like every dorgu command that talks to the cluster.

How Dorgu decides

The pipeline these numbers describe

dorgu remediation

reject --reason feeds proposal precision

Metrics reference

The same events as Prometheus metrics