Skip to main content

logomesh

PyPI License: MIT Status: Alpha

Paste a Sentry URL. Get a failing pytest back.

pip install logomesh
logomesh repro https://sentry.io/organizations/your-org/issues/12345678/

Why logomesh

  • Deterministic test synthesis — no LLM touches the test bytes. The pytest comes from a pure function of your frame locals.
  • Verified reproduction — the sandbox must raise the same exception type Sentry captured. If it doesn't, it refuses to ship.
  • Runs on your machine — your Sentry token, your Docker, your repo. Nothing phones home.
  • PII redaction built in — strips card numbers, emails, JWTs, API keys, and sensitive field names before anything hits an LLM.
  • Audit-ready — every artifact carries llm_in_evidence_path: false, a SHA-256 stamp, and SOC2/PCI control mapping.

Requirements

  • Python 3.11+
  • Docker running locally
  • Sentry auth token with event:read scope (Settings → API Keys)
  • OpenAI API key (powers the agent — context recovery, dep pinning, source resolution, retries)
export SENTRY_AUTH_TOKEN=sntryu_...
export OPENAI_API_KEY=sk-...

Or drop them in a .env file in your project root.


Usage

logomesh repro <sentry-url>                  # reproduce a crash
logomesh repro <url> --no-llm               # deterministic only, skip LLM
logomesh repro <url> --artifact             # emit SOC2/PCI audit artifact
logomesh repro <url> --draft-pr             # open GitHub draft PR with failing test
logomesh repro <url> --json                 # machine-readable output
logomesh repro <url> --repo /path/to/repo   # point at local repo (default: cwd)
logomesh repro <url> --timeout 120          # wall-clock timeout in seconds

Supported Sentry URL formats:

https://sentry.io/organizations/{org}/issues/{id}/
https://sentry.io/issues/{id}/
https://{org}.sentry.io/issues/{id}/

Example output

  ✓ Reproduced: ZeroDivisionError at billing/calc.py:18
     division by zero
     rate = total / count
  ✗ Cannot reproduce ValueError at checkout.py:42
     The synthesized test passed against the current branch.
     Either the bug is fixed, or the captured locals are insufficient.

How it works

  1. Fetches the innermost in-app frame + locals from your Sentry event
  2. PII redaction runs before any data touches an LLM
  3. Builds a pytest deterministically from the captured locals
  4. Runs it in an airgapped Docker sandbox (128 MB, no network, nobody user)
  5. Verifies the sandbox raised the same exception type Sentry captured
  6. Emits the failing test — or a structured reason it couldn't reproduce

A LangGraph agent handles context recovery, dep pinning, source resolution, and retries. It's advisory — it never writes the test or the artifact.

Full architecture details → GitHub


What reproduces well

  • Input validation bugs, NoneType mismatches, type coercion errors
  • Off-by-one, ordering, idempotency issues
  • Anything where the crash inputs are captured in the Sentry frame

What doesn't

  • Race conditions, distributed failures, live DB/Redis state not in the frame
  • C extension crashes, timezone/DST edge cases (sandbox runs TZ=UTC)

When it can't reproduce, it says so with a structured reason. Never guesses.


Sentry setup

Frame locals must be enabled:

sentry_sdk.init(dsn="...", send_default_pii=True)

Or: Project Settings → SDK Setup → Enable "Send default PII"


License

MIT

Metadata

Release files for logomesh 0.1.5

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

Source distribution (sdist)

Source distribution for logomesh 0.1.5
File Size Uploaded
logomesh-0.1.5.tar.gz 475.6 kB Details

Built distribution (wheel)

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

Total release size: 631.5 kB

Release files / logomesh-0.1.5.tar.gz

Download URL logomesh-0.1.5.tar.gz
Size 475.6 kB
Tags Source
SHA-256 checksum
How to use checksums
970156a1e130d354650dcb4ed9a89a8c56d838cc0e861eef019df285eb5384c3
BLAKE2b-256 checksum
How to use checksums
c85bc60a5b5bd316aed2c6104e366022c600f5232d52777f0e9e09ccbb21bbdb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.8

Release files / logomesh-0.1.5-py3-none-any.whl

Download URL logomesh-0.1.5-py3-none-any.whl
Size 155.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
70bc69018046beced138de756b797dfa7a3152a0250fed8c4c644fbedb3395a9
BLAKE2b-256 checksum
How to use checksums
09d55dfb446dee571b1a401cf2511194783c049a263e12fff8652be952a3c31b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.8

Release history Release notifications | RSS feed

This release

0.1.5 This release

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

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