Skip to main content

yer — Yocto error-report analyzer

A command-line tool that reads Yocto/OpenEmbedded error-report.txt files, highlights the errors, failures, and anomalies in the embedded build logs, and turns them into:

  • Rich terminal output for developers debugging a failed build.
  • Self-contained static HTML + JSON + SARIF artifacts for CI to publish.
  • Compact, token-bounded summaries designed to be fed to Claude for automated root-cause analysis and fix suggestions.
  • Cross-run trends — new / recurring / regressed / fixed failures, with a --fail-on-new regression gate.

error-report.txt files are the JSON payloads produced by OpenEmbedded's report-error bbclass / send-error-report. See docs/data-format.md.

Status

✅ Implemented (v0.1.0). The full pipeline (ingest → parse → analyze → summarize → render) plus cross-run trends is built, tested against the real report corpus, and green in CI. Milestones M0–M6 are complete — see docs/roadmap.md and CHANGELOG.md.

Why

A failed Yocto build drops a large JSON report whose real content is one or more raw task logs — up to ~2 MB each. Finding the actual root cause means scrolling past thousands of lines of NOTE:/DEBUG: noise. yer extracts the handful of lines that matter, classifies the failure (compile / configure / patch / QA / fetch / dependency), deduplicates repeats, and presents a ranked list of findings — the same findings drive the terminal view, the HTML report, and the LLM summary.

Quick example

$ yer analyze error-reports/error_report_20260701180755.txt
[ERROR] gz-gui9 [do_configure] - configure (0.85)
    package "Qt5" considered NOT FOUND
    at CMakeLists.txt:86
      | -- Could NOT find Qt5QuickControls2 (missing: Qt5QuickControls2_DIR)
      | but it set Qt5_FOUND to FALSE so package "Qt5" is considered to be NOT

1 error(s), 0 warning(s) - exit 1

$ yer report error-reports/*.txt --html out/                 # static dashboard + report.json
$ yer analyze error-reports/*.txt --format sarif -o out.sarif # code-scanning annotations
$ yer summarize error-reports/err.txt | claude -p "Fix this build failure"
$ yer trend error-reports/*.txt --store .yer/trends.jsonl --record --fail-on-new  # regression gate

Documentation map

Doc Purpose
docs/quickstart.md Install and first run (dev + CI).
docs/ci.md CI recipes: exit codes, SARIF upload, trend gating.
docs/releasing.md Maintainer runbook: how to publish yer to PyPI.
docs/architecture.md The five-stage pipeline and module layout.
docs/roadmap.md Milestones and the development plan.
docs/data-format.md Reference for the error-report.txt format.
docs/corpus.md How to add to the sample corpus and derive fixtures.
docs/spec-driven-workflow.md How specs, plans, and tasks are organized for Claude Code.
docs/specs/ Component specifications (SPEC-000…006).
tasks/ Actionable, per-milestone task lists.
CHANGELOG.md Release history.
CLAUDE.md Operating guide for Claude Code in this repo.

Design commitments (v1)

  • Language: Python 3.11+. Core parse/analyze/models are stdlib-only; rendering adds Jinja2.
  • Inputs: error-report.txt JSON files (globs, dirs, stdin).
  • Outputs: terminal, canonical report.json, self-contained HTML, SARIF 2.1.0, and a local cross-run trend store.
  • LLM: emits a structured summary only — no API calls in the core tool.
  • CI-first: meaningful exit codes, machine-readable output, deterministic artifacts, and privacy redaction of host identity in everything shareable.

License

MIT © 2026 Rob Woolley.

Metadata

Release files for yer 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for yer 0.1.0
File Size Uploaded
yer-0.1.0.tar.gz 161.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for yer 0.1.0
File Interpreter ABI Platform
yer-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 206.0 kB

Release files / yer-0.1.0.tar.gz

Download URL yer-0.1.0.tar.gz
Size 161.0 kB
Tags Source
SHA-256 checksum
How to use checksums
b32c6cc869b282778f99e43ff11fd049775e7ae72452e717553b033ed876ec3e
BLAKE2b-256 checksum
How to use checksums
4f8346ff1938ae96fe2ba9562accdf997bd8523f8678be636946ea91c48a6473
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 5, 2026.

Transparency log

Release files / yer-0.1.0-py3-none-any.whl

Download URL yer-0.1.0-py3-none-any.whl
Size 45.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0754b16a081d0bbf893588c907fcad7b379c80876ded6ae389ca6191a9b33c65
BLAKE2b-256 checksum
How to use checksums
df99053e0142cd85ac815d08daefe9f01f5d13660cf28b447156093f38d448c0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 5, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page