---
title: "Reading a report"
description: "The report format — stable codes, JSON Pointer paths, computed suggestions, errors before warnings, in an order that makes two runs diffable."
url: https://kaicad.barpom.xyz/docs/validation/reading-a-report
schema: "0.1"
---

# Reading a report

```
KAICAD VALIDATION — walnut-platform-bed-queen — schema 0.1
4 errors, 2 warnings

ERROR  RES-005  /joints/2/fixture
  Catalogue entry not found: 'fixtures.wood_screw.5x60'.
  Nearest valid: fixtures.wood_screw.5x50, fixtures.wood_screw.5x70,
                 fixtures.wood_screw.4x60

ERROR  GEO-001  /parts/side_rail
  side_rail@left intersects head_post@left by 1820 mm³.
  Both are mated to the same anchor; one offset is probably missing.

ERROR  FAS-003  /joints/4
  fixtures.wood_screw.4x40 into slat_cleat: 20 mm through + 20 mm engagement,
  but this fixture requires >= 25 mm engagement.
  Suggestion: fixtures.wood_screw.4x50 gives 30 mm.

ERROR  DOM-001  /parts/slat
  Slat gap is 81 mm; standards.bed.slat_gap_max is 76 mm.
  Increase count to 15 or widen slats to 95 mm.

WARN   STR-003  /parts/headboard_panel
  A 420 mm wide solid panel is fixed at both ends; seasonal movement of
  ±3.8 mm has nowhere to go. Use a slotted screw hole or a floating panel.

WARN   STR-004  /parts/frame
  Nothing resists racking along the long axis. A fixed back, a brace or a
  panel would.
```

## How to read it

**The code** is stable and documented — [every one of them](/docs/validation/error-codes) has
an entry written for a model repairing a document, not for a developer reading a stack
trace.

**The path** is a JSON Pointer into the document you pasted. `/joints/4` is the fifth entry
in your `joints:` list. Repairs are therefore targeted: there is no searching for which of
twenty screws the finding is about.

**The suggestion** is computed wherever one exists. That is the difference between a report
you can hand to a model and one you have to think about first.

**Errors come before warnings**, and the order is deterministic. Two runs of the same design
produce the same report, so you can diff them and see what your repair actually changed.

## Errors and warnings are different kinds of thing

An **error** means the design does not compile or is physically wrong: an unknown ID, two
parts in the same space, a screw that cannot hold.

A **warning** is a judgement call with a number attached. Shelf sag over span/360 is a
warning because whether it matters depends on what is going on the shelf. Warnings are for
you to decide about — so ask your LLM to raise them with you rather than quietly designing
around them.

## What is not in the report

Rules that could not run are listed separately, by name, with the reason. A design that
compiles without geometry has not been checked for interference, and the report says so
rather than implying a clean bill of health.
