Skip to main content

Local-first decision engine for baseline vs candidate LLM output checks.

Project description

BreakPoint AI

Prevent bad AI releases before they hit production.

You change a model. The output looks fine. But:

  • Cost jumps +38%.
  • A phone number slips into the response.
  • The format breaks your downstream parser.

BreakPoint catches it before you deploy.

It runs locally. Policy evaluation is deterministic from your saved artifacts. It gives you one clear answer:

ALLOW · WARN · BLOCK

Quick Example

breakpoint evaluate baseline.json candidate.json
STATUS: BLOCK

Reasons:
- Cost increased by 38% (baseline: 1,000 tokens -> candidate: 1,380)
- Detected US phone number pattern

Ship with confidence.

Lite First (Default)

This is all you need to get started:

breakpoint evaluate baseline.json candidate.json

Lite is local, deterministic, and zero-config. Out of the box:

  • Cost: WARN at +20%, BLOCK at +40%
  • PII: BLOCK on first detection (email, phone, credit card)
  • Drift: WARN at +35%, BLOCK at +70%
  • Empty output: always BLOCK

Advanced option: Need config-driven policies, output contract, latency, presets, or waivers? Use --mode full and see docs/user-guide-full-mode.md.

Full Mode (If You Need It)

Add --mode full when you need config-driven policies, output contract, latency, presets, or waivers. Full details: docs/user-guide-full-mode.md.

breakpoint evaluate baseline.json candidate.json --mode full --json --fail-on warn

CI First (Recommended)

breakpoint evaluate baseline.json candidate.json --json --fail-on warn

Why this is the default integration path:

  • Machine-readable decision payload (schema_version, status, reason_codes, metrics).
  • Non-zero exit code on risky changes.
  • Easy to wire into existing CI without additional services.

Default policy posture (out of the box, Lite):

  • Cost: WARN at +20%, BLOCK at +40%
  • PII: BLOCK on first detection
  • Drift: WARN at +35%, BLOCK at +70%

Copy-Paste GitHub Actions Gate

Use the template:

  • examples/ci/github-actions-breakpoint.yml

Copy it to:

  • .github/workflows/breakpoint-gate.yml

What --fail-on warn means:

  • Any WARN or BLOCK fails the CI step.
  • Exit behavior remains deterministic: ALLOW=0, WARN=1, BLOCK=2.

If you only want to fail on BLOCK, change:

  • BREAKPOINT_FAIL_ON: warn to:
  • BREAKPOINT_FAIL_ON: block

Try In 60 Seconds

pip install -e .
make demo

What you should see:

  • Scenario A: BLOCK (cost spike)
  • Scenario B: BLOCK (format/contract regression)
  • Scenario C: BLOCK (PII + verbosity drift)
  • Scenario D: BLOCK (small prompt change -> cost blowup)

Four Realistic Examples

Baseline for all examples:

  • examples/install_worthy/baseline.json

1) Cost regression after model swap

breakpoint evaluate examples/install_worthy/baseline.json examples/install_worthy/candidate_cost_model_swap.json

Expected: BLOCK Why it matters: output appears equivalent, but cost increases enough to violate policy.

2) Structured-output behavior regression

breakpoint evaluate examples/install_worthy/baseline.json examples/install_worthy/candidate_format_regression.json

Expected: BLOCK Why it matters: candidate drops expected structure and drifts from baseline behavior.

3) PII appears in candidate output

breakpoint evaluate examples/install_worthy/baseline.json examples/install_worthy/candidate_pii_verbosity.json

Expected: BLOCK Why it matters: candidate introduces PII and adds verbosity drift.

4) Small prompt change -> big cost blowup

breakpoint evaluate examples/install_worthy/baseline.json examples/install_worthy/candidate_killer_tradeoff.json

Expected: BLOCK Why it matters: output still looks workable, but detail-heavy prompt changes plus a model upgrade create large cost and latency increases with output-contract drift.

More scenario details:

  • docs/install-worthy-examples.md

CLI

Evaluate two JSON files:

breakpoint evaluate baseline.json candidate.json

Evaluate a single combined JSON file:

breakpoint evaluate payload.json

JSON output for CI/parsing:

breakpoint evaluate baseline.json candidate.json --json

Exit-code gating options:

# fail on WARN or BLOCK
breakpoint evaluate baseline.json candidate.json --fail-on warn

# fail only on BLOCK
breakpoint evaluate baseline.json candidate.json --fail-on block

Stable exit codes:

  • 0 = ALLOW
  • 1 = WARN
  • 2 = BLOCK

Waivers, config, presets: see docs/user-guide-full-mode.md.

Input Schema

Each input JSON is an object with at least:

  • output (string)

Optional fields used by policies:

  • cost_usd (number)
  • model (string)
  • tokens_total (number)
  • tokens_in / tokens_out (number)
  • latency_ms (number)

Combined input format:

{
  "baseline": { "output": "..." },
  "candidate": { "output": "..." }
}

Python API

from breakpoint import evaluate

decision = evaluate(
    baseline_output="hello",
    candidate_output="hello there",
    metadata={"baseline_tokens": 100, "candidate_tokens": 140},
)
print(decision.status)
print(decision.reasons)

Additional Docs

  • docs/user-guide.md
  • docs/user-guide-full-mode.md (Full mode: config, presets, environments, waivers)
  • docs/terminal-output-lite-vs-full.md (Lite vs Full terminal output, same format)
  • docs/quickstart-10min.md
  • docs/install-worthy-examples.md
  • docs/baseline-lifecycle.md
  • docs/ci-templates.md
  • docs/value-metrics.md
  • docs/policy-presets.md
  • docs/release-gate-audit.md

Contact

Suggestions and feedback: c.holmes.silva@gmail.com or open an issue.

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

breakpoint_ai-0.1.3.tar.gz (39.8 kB view details)

Uploaded Source

Built Distribution

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

breakpoint_ai-0.1.3-py3-none-any.whl (36.5 kB view details)

Uploaded Python 3

File details

Details for the file breakpoint_ai-0.1.3.tar.gz.

File metadata

  • Download URL: breakpoint_ai-0.1.3.tar.gz
  • Upload date:
  • Size: 39.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.6

File hashes

Hashes for breakpoint_ai-0.1.3.tar.gz
Algorithm Hash digest
SHA256 28399c6ef480eaf9488d915095f6b34b248ba0632d969b203e870e0d73df5770
MD5 43cf1b4e887c3a277410099fa1bb2d12
BLAKE2b-256 a83ad824012e9291ab82d86e65c8e4a189cb7fd51ed6df9663b0291c80158aa0

See more details on using hashes here.

File details

Details for the file breakpoint_ai-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: breakpoint_ai-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 36.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.6

File hashes

Hashes for breakpoint_ai-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e4fe7e1a599b1c0378a5ddb40dc1736d1c03cae2b1171d84ea2e478a42d08aca
MD5 131562522d95a41b506d334dd07f8f69
BLAKE2b-256 87955f9812e7c37eb94e9d8a0a2492f4abcf08996460b4c37cb3861f2b248b02

See more details on using hashes here.

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