Skip to main content

Local-first process assurance for agentic AI pipelines.

Project description

agent-assure

Output equivalence is not process equivalence.

Catch agent process regressions that final-answer evals miss with local-first release evidence for agentic AI pipelines.

Run the offline demo · For AI/ML leaders · For engineers · How it works · Claim boundary

PyPI version Supported Python versions CI status License: MIT Project status: Release candidate

agent-assure checks whether a candidate agent preserves declared, observable process expectations—not only whether it preserves the visible answer. It turns privacy-filtered run evidence into reproducible comparisons, reviewer-facing artifacts, portable evidence packets, and ordinary CI gate signals.

It is a local-first Agent Release Assurance Compiler for Evidence-Carrying Agent Releases: declared controls and privacy-filtered artifacts remain bound to method identity, prerequisites, provenance, assumptions, and limitations.

Local-first · offline flagship demo · versioned artifacts · CI-native · no hosted control plane required

Bundled deterministic flagship fixture: the baseline and candidate both approve with zero decision-field changes across ten cases, but the candidate loses the claim-duration evidence link, producing a new-failure classification and a blocked configured CI gate.

approve → approve · claim-duration: linked → missing · classification: new_failure · configured gate: blocked

The visible approval stayed stable. A declared material-evidence invariant did not.

[!NOTE] This is a bundled deterministic fixture demonstration, not a model benchmark, live-model result, or customer outcome.

Read the flagship demo

Quickstart

Requires Python 3.11 or newer.

pip install agent-assure
agent-assure demo flagship --out .tmp/demo/flagship --clean

The flagship demo uses bundled deterministic fixtures—no provider API key, network call, or token spend.

output equivalence: preserved
missing evidence link: claim-duration
reason code: MATERIAL_CLAIM_MISSING_EVIDENCE
classification: new_failure
CI gate: blocked as expected

The demo wrapper exits 0 only when it verifies that the expected regression was caught. The underlying candidate evaluation, comparison, and CI commands remain strict and exit nonzero for the blocking finding.

Actual reviewer output

Screenshot of the generated Agent Assure evidence-diff report. It shows the preserved approval, zero changed decision fields, the missing claim-duration evidence link, and the blocked configured CI gate.

Screenshot of the reviewer-facing evidence-diff.html produced from the same bundled fixture. Open the image to inspect it at full resolution.

Key artifacts are written under .tmp/demo/flagship:

Artifact Review purpose
demo-summary.json Machine-readable demonstration result
baseline-report/evaluation-summary.json Baseline behavior against declared expectations
comparison-report/comparison-summary.json Controlled baseline-to-candidate classification
ci-report/evidence-packet.json Portable machine-readable review handoff
evidence-diff.html Self-contained reviewer-facing evidence diff
How this README evidence view is verified against the fixtures

Flagship regression at a glance

This diagram is checked in CI against the bundled flagship fixtures, keeping README claims aligned with the evidence produced by the project itself.

flowchart LR
    subgraph OutputCheck["Ordinary visible-output check"]
        BOut["Baseline output<br/>recommendation=approve<br/>outcome=approve"]
        COut["Candidate output<br/>recommendation=approve<br/>outcome=approve"]
        Same["Visible answer unchanged"]
        BOut --> Same
        COut --> Same
    end

    subgraph InvariantCheck["agent-assure invariant check"]
        BEv["Baseline evidence<br/>claim-duration linked"]
        CEv["Candidate evidence<br/>claim-duration missing link"]
        Pass["Baseline evaluation: pass"]
        Fail["Candidate evaluation: fail<br/>MATERIAL_CLAIM_MISSING_EVIDENCE"]
        BEv --> Pass
        CEv --> Fail
    end

    Same --> Tension["Output unchanged<br/>but governance invariant regressed"]
    Equiv["Fixture equivalence: pass"] --> Compare["Baseline-to-candidate comparison"]
    Pass --> Compare
    Fail --> Compare
    Tension --> Compare

    Compare --> NewFailure["Classification: new_failure"]

Choose your path

Your role Fastest path
AI/ML leaders and release owners See how unchanged decisions can conceal control drift and how local evidence supports repeatable release review. Read the leader brief.
AI/ML engineers Declare expectations, project run evidence, compare releases, and return an ordinary CI decision. Follow the engineering guide.
Risk, security, and governance reviewers Inspect evaluated controls, evidence lineage, limitations, and the reason behind a gate decision. Review the claim boundary.

[!TIP] For release owners: Evidence packets can carry evaluation and comparison summaries, artifact digests, limitations, dependency and environment context, and human-readable reports. They remain in the team workspace for local review, while the configured gate returns an ordinary CI signal—no hosted control plane required.

Integrate your agent

The integration contract has three parts:

  1. Declare observable process expectations in YAML.
  2. Produce versioned run records from fixtures or privacy-filtered observations.
  3. Evaluate the candidate, compare equivalent baseline evidence when available, and gate the resulting evidence packet.

A real expectation from the bundled flagship suite:

cases:
  - case_id: shared-source-multi-claim
    fixture_id: shared-source-multi-claim
    expectation:
      expected_recommendation: approve
      required_evidence_refs:
        - ref-shared-clinical-note
      material_claim_ids:
        - claim-eligibility
        - claim-duration

agent-assure does not infer material claims from rationale text. Authors declare the oracle, and run-record producers emit explicit claim-to-evidence links for the material claims they intend to satisfy.

Author expectations · Understand the CLI contract · Review the public API surface

GitHub Actions example using the bundled fixture

Pin both the package and composite action in release workflows. Replace the example suite and variant paths with your own controlled materials.

name: agent-assure
on: [pull_request]

jobs:
  assure:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.11"
      - run: python -m pip install agent-assure==0.6.0
      - uses: acblabs/agent-assure/.github/actions/agent-assure@v0.6.0
        with:
          suite: examples/prior_auth_synthetic/suite.yaml
          baseline-variant: examples/prior_auth_synthetic/variants/baseline.yaml
          candidate-variant: examples/prior_auth_synthetic/variants/candidate_evidence_normalization.yaml
          report-mode: full

full produces the complete review artifacts; fail-fast gives shorter blocking feedback. The configured gate follows declared expectations and policies, the selected gate profile, and explicit strictness flags. The composite action uploads only the packet, manifest, summaries, and CI diagnostics by default. Set upload-full-artifacts: "true" only when the workflow is approved to retain compiled suites, fixture data, and RunSets; the default retention period is 14 days.

What it can surface

  • Evidence and RAG support: a required source or material claim-to-evidence link disappears, or declared corpus and retrieval identity changes. Flagship example: MATERIAL_CLAIM_MISSING_EVIDENCE → new_failure.
  • Human review: a required route or performed-review record is missing.
  • Provider, tool, and privacy boundaries: a forbidden provider or tool appears, or declared route, redaction state, or detector identity changes.
  • Usage and reliability: retries, tool calls, tokens, latency, rate-limit events, or declared estimated cost change materially.
  • Streaming integrity: events are replayed, duplicated, conflicting, or outside the declared sequence contract.
  • Stochastic live behavior: repeated observations drift outside a declared protocol or comparison boundary.

A surfaced difference may be blocking, review-only, or informational. Usage and reliability deltas block only when a suite or policy declares that behavior.

How it works

A declared suite with expectations and canonical baseline and candidate run records enter a local assurance boundary. Invariant evaluation and fixture-equivalent comparison produce an evidence packet for a configured CI gate and human release or governance review.

Declared controls and canonical run evidence remain distinct inputs. Evaluation checks the candidate against expectations; controlled comparison adds baseline context only after its equivalence prerequisites pass. The resulting evidence packet supports both ordinary CI enforcement and human release review.

The assurance model is deliberately bounded:

  • Reproducible: fixed fixtures, controlled comparison inputs, canonical serialization, versioned schemas, and digest-bound manifests.
  • Traceable: expectations connect to run records, findings, comparisons, evidence packets, and gate state.
  • Fail-closed: malformed, conflicting, incompatible, ambiguous, or unbound evidence does not silently become a passing review.
  • Statistically bounded: live conclusions remain tied to a declared protocol, data boundary, provider/model configuration, execution window, and explicit limitations.

Where it fits

agent-assure complements output evaluation, observability, runtime guardrails, and governance systems. Its focused role is release-time evidence for declared process expectations: did the controlled path around an agent decision regress when the implementation changed?

  • Output and agent evals ask whether answers, trajectories, tools, or components meet quality targets.
  • Observability and tracing capture and query runtime behavior.
  • Runtime guardrails enforce policy while requests and actions execute.
  • Governance and GRC systems manage organizational policy, inventory, approvals, and accountability.
  • agent-assure checks declared release controls under controlled evidence, produces a portable packet, and returns an ordinary CI signal.

It is a particularly strong fit when release review must be local, reproducible, CI-enforceable, and traceable without a required hosted control plane.

Integrations and maturity

Current maturity: Release Candidate (RC, v0.6.0).

The CLI, YAML authoring format, persisted versioned JSON artifacts, and AgentRunRecord producer contract are the primary integration surface. Framework adapters, streaming, and live execution remain experimental. The RC label applies only to the primary surface; development-RFC contracts remain explicitly non-stable. The package-level PyPI Development Status :: 4 - Beta classifier is the closest standardized classifier to an RC and does not widen that supported surface.

If you have… Start with… Maturity
YAML suites or versioned JSON artifacts CLI contract Primary supported surface
A GitHub release workflow Composite action Packaged and documented
Built-in control mutations Evidence-carrying releases Development RFC
RAG retrieval evidence RAG provenance demo Reference implementation
JSONL or multi-agent events Streaming example Experimental
LangGraph or Google ADK events LangGraph · Google ADK Experimental
Live provider or external-script subjects Adapter contract Experimental, time-bound evidence
OpenTelemetry context or export OpenTelemetry alignment Optional alignment only

Framework adapters consume only privacy-filtered agent_assure metadata and project it into the shared framework-neutral run-record model. They ignore raw prompts, messages, completions, tool arguments, token chunks, and unredacted summaries.

Governance crosswalks

Packet-resident evidence can be mapped to selected concepts in the NIST AI RMF, OWASP Top 10 for LLM Applications 2025, ISO/IEC 42001, and MITRE ATLAS 2026.06.

These crosswalks are planning and review aids. They do not establish framework conformance, complete coverage, third-party assurance, or endorsement.

Claim boundary

Measured evidence, not a blanket trust claim.

This project is not a compliance attestation.

agent-assure supports human release review. It does not determine safety or replace domain, legal, regulatory, clinical, security, provider-quality, model-quality, or business-impact review.

agent-assure is agent-assure is not
Release-review evidence for declared process expectations A legal or regulatory determination
A deterministic and protocol-bound measurement toolkit A safety determination
A way to surface evidence, routing, privacy, boundary, provenance, usage, and stream-integrity regressions A general model-quality benchmark
A local artifact and CI-gate workflow A production observability backend or enterprise governance system of record
An engineering evidence source for human and governance review A replacement for organizational accountability

Pattern redaction is a guardrail, not comprehensive DLP or de-identification. Live conclusions remain bounded by the declared protocol, data boundary, provider/model configuration, and execution window. Review the claim boundary, limitations, threat model, privacy model, and security guidance.

Learn more

Development from a repository checkout
pip install -e ".[dev]"
git config core.hooksPath .githooks
python scripts/check_docs_alignment.py
ruff check .
mypy src scripts
pytest
python -m build

Citing

This project ships a CITATION.cff. Use GitHub’s Cite this repository control for generated citation formats.

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

agent_assure-0.6.0.tar.gz (950.4 kB view details)

Uploaded Source

Built Distribution

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

agent_assure-0.6.0-py3-none-any.whl (787.5 kB view details)

Uploaded Python 3

File details

Details for the file agent_assure-0.6.0.tar.gz.

File metadata

  • Download URL: agent_assure-0.6.0.tar.gz
  • Upload date:
  • Size: 950.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for agent_assure-0.6.0.tar.gz
Algorithm Hash digest
SHA256 e06f6212969fb0db286969eebc5a002c2baefb58739e799631a67c6e97deab9b
MD5 440b4df19cc536e7b77ee67e03941637
BLAKE2b-256 e6c41f967c81ce836b435379269e5a8642336fe469c43d2b172fbbeb33dfc393

See more details on using hashes here.

Provenance

The following attestation bundles were made for agent_assure-0.6.0.tar.gz:

Publisher: release.yml on acblabs/agent-assure

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

File details

Details for the file agent_assure-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: agent_assure-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 787.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for agent_assure-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 48ecace59027b712361a002ae2d9b7c346bbb2108b9899f8ff9955da35013ac6
MD5 d7a958f28f9c274cc824ffb512b529be
BLAKE2b-256 1e580631815a71f635f9110fd4515bd1035d3fc43c2e02ba3b87028d3e9bb5dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for agent_assure-0.6.0-py3-none-any.whl:

Publisher: release.yml on acblabs/agent-assure

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