Skip to Content
Tares

What verdict and next step should an AI SRE record for crash loops?

For a crash loop, an AI SRE in Tares calls conclude with a verdict you define, a headline and a next step, or no_op when there is nothing to report. A sensible set is investigate while a loop needs a closer look, rca once you know what is failing and why, and resolved when it was noise or is already over. You choose these words on the agent, and Tares holds the agent to them.

How it works

An agent set to end every run with a conclusion gets the conclude tool. It ends a run in one of two ways:

  • no_op: there is nothing to report, and no finding is recorded.
  • A finding: a verdict about a named entity, here the workload or container that is crash looping, plus a headline and a next step.

The finding carries two more fields:

  • headline: one line of up to 100 characters that says what was found in the reader’s terms. For example, “checkout-api keeps restarting”.
  • next_step: up to 300 characters on what a person should do. Leave it empty when nothing needs doing.

The verdict words are yours. You can list up to 10, each one word (letters, digits, dashes), each listed once, and none of them no_op, because nothing to report is always possible. Each word comes with a description of when to give it. With a list in place, the tool accepts only those words, a finding must carry one, and an off-list or missing verdict goes back to the agent to fix within the same run.

For crash loops, this maps onto the words the Tares presets already use:

  • investigate: one entity looks like a problem and needs a closer look. Use it when a first pass spots a restarting entity but the cause is not yet known.
  • rca: you found what is failing and why. Use it when the run has traced the loop to a cause.
  • resolved: it was noise, or it is already over. Use it when the loop has stopped and you still want a finding to say so.

Use no_op instead when there is nothing at all to report, and no finding is stored. The full behavior is on How a run ends.

Set it up

  1. Open the agent form for the agent that watches for crash loops, and find the How it ends section.
  2. Tick Ends every run with a conclusion (concludes: true). The agent then always gets conclude, and Tares adds the instructions for it, so your prompt only describes the job.
  3. Under Verdicts it can give, add your words, each with when to give it. For crash loops, investigate, rca and resolved cover the usual outcomes.
  4. Keep the prompt about the job, such as which entity to inspect and what to look for, and ask for a short headline and a concrete next step.

The same setup in YAML looks like this, shown here with a single verdict. Add rca and resolved as further entries in the same list, each with its own when:

agents: - name: triage trigger: watch-web concludes: true verdicts: - { verdict: investigate, when: one entity looks like a problem and needs a closer look } prompt: | ...

If a run stops without concluding, Tares asks once more with conclude as the only choice. If you leave the box off, the agent’s last message is its finding and carries no verdict.

What you get

  • Every crash loop run ends on purpose, either with a finding or with no_op.
  • Each finding names the entity and carries a verdict from your own list, so the outcome is easy to scan and filter.
  • A headline of up to 100 characters and a next step of up to 300 characters give a person the problem and the action without opening the run.
  • Runs with nothing to report leave no finding behind, so quiet runs do not add noise.
  • Verdict words are what an agent’s handoffs key off, so investigate and rca can drive what happens after triage.

For how this fits the wider AI SRE workflow, see AI SRE.

When something else fits

  • If you do not need a verdict, leave Ends every run with a conclusion off. The agent’s last message is then its finding, with no verdict.
  • If you want the agent free to use any verdict, leave the verdict list empty. A finding can then carry any verdict, or none, but nothing checks the words for you.
  • If a run has nothing to say, use no_op instead of a finding with an empty next step.

Still stuck? Get help

Last updated on