Release notes for Kensa. Full notes are available on GitHub Releases.
0.22.0
Thekensa-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.
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 viaotlp_endpointorKENSA_OTLP_ENDPOINT, while keeping local JSONL capture and isolating export failures from the traced process; standardOTEL_EXPORTER_OTLP_*variables never enable export on their own.kensa.behavior_candidate.v1publishes an inspect idea as a strict public model with a deterministicsemantic_fingerprintover its normalized failure and outcome semantics.kensa init --non-interactive --json --project-root ...emits a versionedkensa.init_manifest.v1changed-file manifest, andkensa doctor --jsonemits versionedkensa.doctor_diagnostics.v1codes.
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 toclaude-sonnet-5; older model IDs remain available as explicit overrides. - The
kensa-setupskill now connectskensa_runto 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.
0.19.1
Tool-call traces now expose structured evidence for precise assertions over arguments, results, ordering, and execution status.ToolCallEvidenceprovides 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 normalizedtool_callsalongside the existingtoolslist.
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.resultsexposes immutable typed models plusload_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.
0.18.0
Trials now carry structured failure provenance so agent behavior is separated from eval-system failures.- Breaking: trial artifacts replace the legacy
erroranderror_kindfields with one validatedfailureobject 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, andFailureCategorysupport explicit attribution, whileJudgeResult.require()distinguishes negative verdicts from judge execution and contract errors.
0.17.0
Eval adapters can now attach structured evidence from target-owned agents without Kensa importing, invoking, or connecting to them.AgentRunEvidencerecords 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.
0.16.1
Eval reports now quantify reliability and make incomplete cost data explicit.- Terminal, Markdown, and JSON reports include
pass^kreliability with cohort counts, latency percentiles, mean LLM turns, and cost per pass. - Trace cost is
Nonewhen any billable span is unpriced, whileknown_cost_usdpreserves the sum of priced spans. - Timeouts distinguish setup, agent call, and teardown failures while preserving the active instrumented GenAI operation.
0.16.0
Conversational evals now model multi-turn agent interactions and return structured run evidence.- Breaking: the
kensa_runfixture now returns a case-aware agent withrespond(messages), andcase.run(kensa_run)returns aCaseResultinstead 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.tracetojudge(...)when a criterion needs trajectory evidence.
0.15.0
Project configuration is now explicit inpyproject.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 nearestpyproject.toml, and readiness is computed live. kensa initinstalls a read-onlykensa-diagnoseskill that analyzes failed or errored result JSON against the current repository’s source and tests.kensa evalkeeps periodic heartbeat details behind--verboseand prints a compact aggregate and per-trial summary.
0.14.0
Kensa trials now run in parallel across four local pytest workers by default.- Use
kensa eval --workers Nto tune concurrency or--workers 1for 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.
0.13.0
Eval runs now have hard per-trial timeouts and bounded judge calls.- Trials stop after 300 seconds by default. Use
--trial-timeoutor@pytest.mark.kensa(timeout_s=...)to change the limit. - Timeout artifacts preserve completed results, set
completetofalse, and include a structured interruption. - Judge calls time out after 30 seconds by default.
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.
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.
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 doctorreports missing redaction readiness and unsafe or modified artifacts.- Breaking:
kensa importno longer accepts--redact. Redaction cannot be disabled or bypassed.
0.10.3
kensa connect langfusenow validates the endpoint and credentials without reading trace data.- Langfuse imports use the CLI’s default scope unless you explicitly request a different one.
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 initcan connect Langfuse before judge credentials are configured and now surfaces clearer setup errors.
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 langfusereports endpoint, authentication, and import-readiness checks separately.- Omitted endpoints now resolve from
LANGFUSE_BASE_URLbefore using the cloud default.
0.9.3
- The interactive agent picker starts on Claude Code and offers one agent at a time.
kensa init --agent allremains available for non-interactive setup. - README assets and the license link now render correctly on PyPI.
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.