Changelog
All notable changes to Attest are documented here. Versions follow Semantic Versioning.
v0.4.2 — 2026-02-22
Section titled “v0.4.2 — 2026-02-22”SDK patch release — adapter fixes and async compatibility
- LangChain adapter — Add missing callback protocol attributes (
ignore_agent,ignore_retry,raise_error) required by LangChain’sBaseCallbackHandlerinterface. Handle LangGraphAIMessageandToolMessageoutput formats so traces capture tool-call responses correctly. - expect() DSL — Accept
Tracedirectly in addition toAgentResult. Auto-wraps intoAgentResultfor manual adapter workflows that build traces viaTraceBuilderwithout going through a provider adapter. - Plugin fixture — Run the engine event loop in a background daemon thread with
run_coroutine_threadsafe()bridge. FixesFuture attached to a different looperrors when pytest-asyncio tests (e.g., google-adk) call into the engine from a separate event loop.
Upgrade
Section titled “Upgrade”uv add attest-ai@latest- No engine changes. The Go engine binary remains at v0.4.0.
ENGINE_VERSIONis unchanged; auto-download continues to fetch v0.4.0 binaries.
v0.4.1 — 2026-02-21
Section titled “v0.4.1 — 2026-02-21”SDK patch release — engine auto-download
Features
Section titled “Features”-
Engine auto-download — Both Python and TypeScript SDKs now automatically download the
attest-enginebinary from GitHub Releases on first use. No manual binary setup required afteruv add attest-aiorpnpm add @attest-ai/core. -
SHA256 verification — Downloaded binaries are verified against
checksums-sha256.txtfrom the release. Checksum mismatch aborts the download with a clear error. -
Version-pinned cache — Binaries are cached at
~/.attest/bin/with a.engine-versionmarker. SDK version mismatch triggers automatic re-download. -
Discovery chain — Engine binary resolution follows a predictable order:
ATTEST_ENGINE_PATH env var→ PATH lookup→ ~/.attest/bin/ (shared cache, version-checked)→ ../../bin/ (monorepo dev layout)→ ./bin/ (local)→ auto-download from GitHub Releases→ actionable error message -
Opt-out — Set
ATTEST_ENGINE_NO_DOWNLOAD=1to disable network access. The error message explains alternative installation methods.
- pytest plugin —
pytest.skip()replaced withpytest.fail()when the engine binary is missing. With auto-download in place, silent skipping is no longer appropriate; real errors are now surfaced. - TypeScript VERSION — Corrected from
0.3.0to0.4.1.
- Examples moved — All example projects relocated to
attest-framework/attest-examplesfor independent versioning. A redirect README remains in the main repo.
Install / Upgrade
Section titled “Install / Upgrade”Python
Section titled “Python”uv add attest-aiTypeScript
Section titled “TypeScript”pnpm add @attest-ai/coreEnvironment Variables
Section titled “Environment Variables”| Variable | Purpose | Default |
|---|---|---|
ATTEST_ENGINE_PATH | Absolute path to engine binary — skips all discovery | unset |
ATTEST_ENGINE_NO_DOWNLOAD | 1 / true / yes disables auto-download | unset (enabled) |
v0.4.0 — 2026-02-20
Section titled “v0.4.0 — 2026-02-20”Production & Polish
- Result history with SQLite storage
- Drift detection (σ-based statistical thresholds)
- Continuous eval runner with sampling and alerting
- Plugin system (
attest.pluginsentry point group) - CrewAI adapter (11 adapters total)
- CLI
initandvalidatecommands - MkDocs documentation site
v0.3.0 — 2026-02-20
Section titled “v0.3.0 — 2026-02-20”Simulation & Multi-Agent
- Layers 7-8: simulation runtime, multi-agent testing
- TypeScript SDK (first npm publish:
@attest-ai/core,@attest-ai/vitest) - Framework adapters: LangChain, Google ADK, LlamaIndex
v0.2.0 — 2026-02-19
Section titled “v0.2.0 — 2026-02-19”Semantic & Judge Layers
- Layers 5-6: ONNX local embeddings, LLM-as-judge
- Soft failure support
- OTel adapter
setup-attestGitHub Action
v0.1.0
Section titled “v0.1.0”Foundation
- Layers 1-4: schema validation, cost/performance, trace structure, content validation
- Python SDK with pytest plugin
- 4 provider adapters: OpenAI, Anthropic, Gemini, Ollama
- PyPI + GitHub release