Skip to content

Troubleshooting

No assertions file at <path>.

groundtruth exits 2 before checking anything if it can't find the assertions file. Fix: cp node_modules/groundtruth/.groundtruth.jsonc.example .groundtruth.jsonc, or pass --file <path> if yours lives somewhere else. See Getting started.

A .json file clearly contains the env var, but env_var_absent says passing

env_var_absent does an exact key/string-value match against the parsed JSON document, not a substring search — a variable name embedded inside a longer string (e.g. as part of a URL) won't be caught. Use path_absent for the coarser "this whole file shouldn't exist" case in the meantime. See Assertion kinds.

symbol_at_path reports failing for a symbol I know is exported

Almost always a re-export: export { entitlementsFor } from "./impl" isn't matched by the regex checker, only a direct export function entitlementsFor (or const/class/interface/type/enum) declaration in the target file is. This is a documented limitation, not a bug — see ADR-0003.

script_exists / workflow_trigger reports unverifiable, not failing

That's deliberate: a missing or malformed package.json / .github/workflows/<file> is a different problem than a missing script or trigger, so it's surfaced as "couldn't check this," not "this claim is false." Fix the underlying file (or your --file/packageJson path) and re-run.

My CI didn't fail even though the table shows red ✗ marks

Check that you're actually gating on the exit code (groundtruth check || exit 1 or just letting a non-zero exit fail the step naturally — most CI runners already treat a non-zero exit as a failed step). unverifiable results print with a ? mark but never affect the exit code — only failing () does.

I want groundtruth to read CLAUDE.md directly and generate assertions

Not built yet — see the FAQ and Roadmap. Today, assertions are written by hand.

Something else

Open an issue on GitHub — there's no other support channel yet.

Released under the MIT License.