Skip to main content
Release notes for Kensa. Full notes are available on GitHub Releases.

0.22.0

The kensa-setup skill can now discover which agent frameworks a repository imports before manual tracing begins.
  • detect_frameworks.py --root . scans a repository read-only for imports of 47 known agent frameworks and returns each match as an unconfirmed candidate alongside that framework’s documentation URL.
  • Detector output is import evidence only: it never ranks candidates, selects a production target, or establishes relevance, confidence, or readiness, and an empty or incomplete result never blocks the existing source-tracing workflow.
  • Version and documentation lookups run only after a candidate is confirmed against actual application control flow, resolved from installed package metadata or the repository’s dependency and lock data.
View the 0.22.0 release notes.

0.21.0

Traces can now dual-export to any OTLP HTTP collector, and setup, inspect, and doctor output carry versioned contracts for other tooling to consume.
  • instrument() dual-exports spans to a standard OTLP HTTP endpoint via otlp_endpoint or KENSA_OTLP_ENDPOINT, while keeping local JSONL capture and isolating export failures from the traced process; standard OTEL_EXPORTER_OTLP_* variables never enable export on their own.
  • kensa.behavior_candidate.v1 publishes an inspect idea as a strict public model with a deterministic semantic_fingerprint over its normalized failure and outcome semantics.
  • kensa init --non-interactive --json --project-root ... emits a versioned kensa.init_manifest.v1 changed-file manifest, and kensa doctor --json emits versioned kensa.doctor_diagnostics.v1 codes.
View the 0.21.0 release notes.

0.20.0

Judge defaults, agent setup, and Langfuse imports now track the production systems they run against.
  • OpenAI judges now default to gpt-5.6-luna, while Anthropic judges default to claude-sonnet-5; older model IDs remain available as explicit overrides.
  • The kensa-setup skill now connects kensa_run to approved production agent code, preserves one conversation across turns, and asks before changing the harness or allowing model spend and live side effects.
  • Legacy Langfuse imports now respect the v1 observation limit of 100, while v2 imports retain their 1,000-item page size.
View the 0.20.0 release notes.

0.19.1

Tool-call traces now expose structured evidence for precise assertions over arguments, results, ordering, and execution status.
  • ToolCallEvidence provides immutable normalized records with sequence, name, arguments, result, capture-presence flags, status, span ID, and duration.
  • result.trace.tools.matching(...) and .called(...) filter calls by recursive argument and result subsets plus status, while existing name assertions remain available.
  • record_tool_call() accepts strict JSON arguments and results, supports capturing a result inside the tool context, and persists normalized tool_calls alongside the existing tools list.
View the 0.19.1 release notes.

0.19.0

Run-result artifacts now have a strict, versioned public contract for reliable downstream tooling.
  • Breaking: every initial, incremental, interrupted, and completed result artifact now uses schema_version: "kensa.result.v1"; unversioned, unsupported, legacy, or internally inconsistent artifacts are rejected.
  • kensa.results exposes immutable typed models plus load_run_result() for loading complete, interrupted, and initial snapshots with path-specific validation errors.
  • Writes normalize and deterministically order trials, derive aggregates and summaries from the same v1 data, validate before atomic replacement, and preserve full evidence during watchdog recovery.
View the 0.19.0 release notes.

0.18.0

Trials now carry structured failure provenance so agent behavior is separated from eval-system failures.
  • Breaking: trial artifacts replace the legacy error and error_kind fields with one validated failure object containing a category, kind, message, and JSON evidence.
  • Reliability, latency, and cost metrics include only passes, assertion failures, and errors attributed to the agent; excluded errors still fail the eval gate and are reported by category.
  • KensaEvalError, TrialFailure, and FailureCategory support explicit attribution, while JudgeResult.require() distinguishes negative verdicts from judge execution and contract errors.
View the 0.18.0 release notes.

0.17.0

Eval adapters can now attach structured evidence from target-owned agents without Kensa importing, invoking, or connecting to them.
  • AgentRunEvidence records execution attestation, ordered trajectory events, provider trace references, observed state, and independent trajectory and state completeness.
  • attach_agent_run() snapshots evidence during the active case operation and preserves it across result, trace, failure, and timeout artifacts.
  • External tool and LLM events feed the existing trace, turn, and cost accessors; target state remains separate under result.trace.agent_runs.
View the 0.17.0 release notes.

0.16.1

Eval reports now quantify reliability and make incomplete cost data explicit.
  • Terminal, Markdown, and JSON reports include pass^k reliability with cohort counts, latency percentiles, mean LLM turns, and cost per pass.
  • Trace cost is None when any billable span is unpriced, while known_cost_usd preserves the sum of priced spans.
  • Timeouts distinguish setup, agent call, and teardown failures while preserving the active instrumented GenAI operation.
View the 0.16.1 release notes.

0.16.0

Conversational evals now model multi-turn agent interactions and return structured run evidence.
  • Breaking: the kensa_run fixture now returns a case-aware agent with respond(messages), and case.run(kensa_run) returns a CaseResult instead of the raw agent output.
  • Cases can start from message history, and optional simulators can drive bounded conversations with explicit termination metadata.
  • Successful results expose messages, output, termination, and a read-only trace; pass trace=result.trace to judge(...) when a criterion needs trajectory evidence.
View the 0.16.0 release notes.

0.15.0

Project configuration is now explicit in pyproject.toml, failed eval runs can be diagnosed against repository evidence, and console output is easier to scan.
  • Breaking: Kensa no longer reads .kensa/settings.json; trace source and redaction model settings now live under [tool.kensa] in the nearest pyproject.toml, and readiness is computed live.
  • kensa init installs a read-only kensa-diagnose skill that analyzes failed or errored result JSON against the current repository’s source and tests.
  • kensa eval keeps periodic heartbeat details behind --verbose and prints a compact aggregate and per-trial summary.
View the 0.15.0 release notes.

0.14.0

Kensa trials now run in parallel across four local pytest workers by default.
  • Use kensa eval --workers N to tune concurrency or --workers 1 for sequential execution.
  • Timeout handling preserves completed results and the latest evidence from a timed-out trial.
  • Breaking: worker processes do not share process globals or session-scoped fixtures, and provider concurrency increases.
View the 0.14.0 release notes.

0.13.0

Eval runs now have hard per-trial timeouts and bounded judge calls.
  • Trials stop after 300 seconds by default. Use --trial-timeout or @pytest.mark.kensa(timeout_s=...) to change the limit.
  • Timeout artifacts preserve completed results, set complete to false, and include a structured interruption.
  • Judge calls time out after 30 seconds by default.
View the 0.13.0 release notes.

0.12.0

Imported trace evidence is now minimized to a versioned, allowlisted TraceView before mandatory redaction.
  • Only eval-required fields are retained, and trace and span identifiers use import-local aliases.
  • Breaking: persisted TraceView artifacts use the v2 evidence contract.
View the 0.12.0 release notes.

0.11.1

Redaction setup is now automatic and fails clearly when incomplete.
  • Selecting a trace source installs missing redaction dependencies as a development dependency.
  • Setup output reports one protection status and preserves actionable diagnostics on failure.
View the 0.11.1 release notes.

0.11.0

Trace redaction is now mandatory and fails closed across import, inspection, trace access, and eval generation.
  • Redaction happens in memory before connected Langfuse payloads reach disk.
  • Safe import manifests are bound to the exact artifact with SHA-256. Missing or mismatched manifests block access.
  • kensa doctor reports missing redaction readiness and unsafe or modified artifacts.
  • Breaking: kensa import no longer accepts --redact. Redaction cannot be disabled or bypassed.
View the 0.11.0 release notes.

0.10.3

  • kensa connect langfuse now validates the endpoint and credentials without reading trace data.
  • Langfuse imports use the CLI’s default scope unless you explicitly request a different one.
View the 0.10.3 release notes.

0.10.2

Connected Langfuse imports now use the official Langfuse SDK while preserving legacy trace and observations v2 import formats. View the 0.10.2 release notes.

0.10.1

  • Langfuse observation input and output are parsed locally instead of sent as unsupported request parameters.
  • kensa init can connect Langfuse before judge credentials are configured and now surfaces clearer setup errors.
View the 0.10.1 release notes.

0.10.0

Langfuse imports now support events-only deployments by reconstructing traces from observations v2 when the legacy traces API is unavailable. View the 0.10.0 release notes.

0.9.4

  • kensa connect langfuse reports endpoint, authentication, and import-readiness checks separately.
  • Omitted endpoints now resolve from LANGFUSE_BASE_URL before using the cloud default.
View the 0.9.4 release notes.

0.9.3

  • The interactive agent picker starts on Claude Code and offers one agent at a time. kensa init --agent all remains available for non-interactive setup.
  • README assets and the license link now render correctly on PyPI.
View the 0.9.3 release notes.

0.9.2

kensa init --agent now supports explicit agent choices and all, persists the selection in .kensa/settings.json, and fails clearly when automatic detection finds no supported agent. View the 0.9.2 release notes.

0.9.1

Relaxed lower dependency bounds improve compatibility with existing Python environments while retaining Python 3.11+ support. View the 0.9.1 release notes.

0.9.0

Added Kensa’s pytest-native eval workflow for turning agent traces into plain pytest tests with deterministic assertions, repeated trials, optional LLM judges, and CI reporting. View the 0.9.0 release notes.

Legacy releases

[!WARNING] Versions 0.1.0 through 0.8.0 are part of Kensa’s legacy implementation and have been yanked from PyPI. Kensa 0.9.0 is a complete rewrite with a new API. These release notes are preserved for historical reference.
View the legacy changelog.
Last modified on August 18, 2026