Skip to main content

Parse Yocto error-report.txt files into ranked build findings.

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yer-0.1.0.tar.gz (161.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

yer-0.1.0-py3-none-any.whl (45.0 kB view details)

Uploaded Python 3

File details

Details for the file yer-0.1.0.tar.gz.

File metadata

  • Download URL: yer-0.1.0.tar.gz
  • Upload date:
  • Size: 161.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for yer-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b32c6cc869b282778f99e43ff11fd049775e7ae72452e717553b033ed876ec3e
MD5 46e368c120a6c894687fdc56d2acb5b2
BLAKE2b-256 4f8346ff1938ae96fe2ba9562accdf997bd8523f8678be636946ea91c48a6473

See more details on using hashes here.

Provenance

The following attestation bundles were made for yer-0.1.0.tar.gz:

Publisher: release.yml on robwoolley/yer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file yer-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: yer-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 45.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for yer-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0754b16a081d0bbf893588c907fcad7b379c80876ded6ae389ca6191a9b33c65
MD5 174aac732f65446592421bba30195e90
BLAKE2b-256 df99053e0142cd85ac815d08daefe9f01f5d13660cf28b447156093f38d448c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for yer-0.1.0-py3-none-any.whl:

Publisher: release.yml on robwoolley/yer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page