Error messages
Every error has one shape, in the terminal, in the editor and as JSON: what is wrong, where, why, the recommended next step, who decides, the rule ID and a help link. One mistake gives one error: the compiler doesn't report the errors that follow from it. An error reads:
error titel isn't defined in this scope
--> domains/planning/libraries/titles.jadpo:6:12
|6 | return titel | ^^^^^
- reason
- Jadpo could not find this name. Did you mean
title? - next
- Use
titleinstead oftitel(agent) - rule
- type.
unknown_ value - help
- https://jadpo.
dev/docs/errors/type. unknown_ value
(human) at the end of an error's next: line tells your coding agent to
stop and ask you which fix you want, because the choice is yours to make
(who can see data, what a setting holds). (agent) means your agent can
make the fix itself.
There is no warning severity. Every finding is an error, and it stops
check and the build until it is answered: fixed or, for the few rules
that allow it, declined.
- Paths are relative to the project.
- The two impact lines appear only when they say something.
- An obvious repair carries its edit, so the editor and agents can apply it.
- The help link is the address of the error's own page on the site,
https://jadpo.dev/docs/errors/<rule>, which has an example of the rule. - Tools read the same fields as JSON with
jadpo check --json, which gives line and column as well as byte offsets, and uses one naming style for its keys. - A reason that quotes another tool's lines, as
toolchain.build_failedquotes cargo's, prints each as a line of its own under the reason, its indent kept and blank lines left out; JSON keeps them in the one string, each break a\n.
When Jadpo itself fails
Sometimes the fault is Jadpo's. If jadpo panics, including inside the
interpreter that jadpo dev and jadpo test run, it says so first, so
you don't hunt for a mistake in your own code. This is the screen:
✗ failed This is a bug in Jadpo, not in your code ran jadpo check version jadpo 0.1.0 · aarch64-macos in crates/jadpo-check/src/lib.rs:12What to do next 1. Read the crash file. It can quote your project. /Users/ada/.cache/jadpo/crashes/2026-10-30T14-02-31Z.txt 2. Report it with this link, attaching the file. https://github.com/jadpo-dev/jadpo/issues/new?template=bug.yml&title=Internal%20error%20in%20jadpo%20check&version=0.1.0%20aarch64-macos
The screen names only the command word, never an argument, and never the
panic message. The crash file holds those, so it can quote your project:
read it before you attach it. Jadpo writes it under $XDG_CACHE_HOME/jadpo/ crashes/, or ~/.cache/jadpo/crashes/, and keeps the newest 20. It holds
the version, the platform, the arguments (jadpo config keeps only its
subcommand), the panic message and a backtrace. Jadpo sends nothing
anywhere.
A deployed app is different: the client sees only 500 internal_fault, and
the log says more (What it logs; Failures).
Markdown for agents: /docs/error-messages.md.Built from Jadpo main at aee2e8f.