Documentation · Getting started

What a run tells you

How to read the report: survivors first, the score after, and the four output formats.

kalku run lib/green.ex --limit 6 --verbose
lib/green.ex:4  compare  Green.classify/1
  - >=
  + >
  covered by 4 tests
  No test tells `>=` apart from `>` in `Green.classify/1`. Add a case at the boundary where the two sides are equal.

score 60% · 3 killed · 2 survived · 1 compile error

A survivor, line by line

LineWhat it says
lib/green.ex:4 compare Green.classify/1The file and the line, the spell that made the wekufe and the function it is in
- >= and + >The change, as a diff: what was there and what the wekufe put in its place
covered by 4 testsHow many tests reach that line. The wekufe was cast against those tests and none noticed
No test tells…The hint: which test is missing. It comes from a fixed template per spell, not from a model

Survivors come first and the score comes after, because the survivor is the thing you can act on.

covered by 4 tests is not decoration: the baseline records which tests reach which lines, and a wekufe is cast against those tests alone. A site no test reaches is no_coverage, never a kill; and neither is a timeout, a crash, or a wekufe that did not compile.

The score

score 60% · 3 killed · 2 survived · 1 compile error

The score is killed / (killed + survived) and nothing else moves it: here, 3 out of 5. The wekufe that did not compile is counted beside it, not inside it. Outcomes and score explains each outcome.

Read a wekufe back

A wekufe is named by the text it was cast in, so editing its file renames it; re-casting an old name says so, and a new kalku run gives the new ones.

kalku show <wekufe>            # site, diff, covering tests, hint, history
kalku cast <wekufe>            # re-cast just that one
kalku info outcomes            # what each outcome means

Formats

--format chooses how a run is reported. This is what kalku info formats answers:

FormatWhat it gives
humanThe default: survivors first, each with file, line, spell, diff and a hint. The score is context, printed last
agentNDJSON: one line per survivor and one summary. Each line carries everything needed to act without opening a file. See For coding agents
jsonThe whole report as one object
githubWorkflow commands, so survivors appear on the diff. See In CI