# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.1.1] - 2026-04-10

### Fixed

- **CRITICAL:** Interceptor now POSTs the AuthZEN request directly to the PDP instead of delegating to `AuthZENBackend.evaluate()`. The mapping module is now the single source of truth for the request shape sent over the wire.
- `fail_closed=False` now works correctly — PDP errors propagate as exceptions instead of being silently absorbed.
- Renamed "durable outbox" to "in-memory outbox" in all docstrings and README to accurately describe the non-persistent queue.
- Added `max_backoff` cap (default 5.0s) to outbox retry to prevent unbounded sleep.
- Added injectable `sleep_fn` to `AuditOutbox` and `ARIAAuditBackend` for test-friendly retry.
- Implemented `agent_id` filtering in `ARIAPolicyProvider._filter()` — policies with `metadata.agent_id` are now matched correctly.
- Added `py.typed` marker (PEP 561) for type-checker support.
- Fixed `__init__.py` quick-start docstring to show `ARIAToolInterceptor` directly.
- Fixed `client_credentials` docstring in interceptor and provider (was "Dict with..." — now correctly says `ClientCredentialsAuth`).
- Added `mcp_session_params_factory()` for refreshable token support.
- Added `__enter__`/`__exit__` context manager support to `ARIAToolInterceptor`, `ARIAAuditBackend`, and `ARIAPolicyProvider`.
- Added `__repr__` to all three main classes (shows config, never credentials).
- Added list recursion to audit redaction — dicts nested inside lists are now redacted.
- Added contract test for `ARIAPolicyProvider` against `PolicyProviderInterface`.

## [0.1.0] - 2026-04-10

### Added

- `ARIAToolInterceptor` — `ToolCallInterceptor` implementation backed by ARIA's AuthZEN PDP with rigorous request mapping, fail-closed behavior, and parameter clamping via PDP constraints.
- `ARIAPolicyProvider` — `PolicyProviderInterface` implementation that fetches policy definitions from the ARIA PDP with TTL-based caching.
- `ARIAAuditBackend` — `AuditBackend` implementation with governance-grade export: durable outbox, hash-chained receipts, configurable redaction, retry with exponential backoff, and dead-letter routing.
- `claude_desktop_config()` — Generates Claude Desktop `mcpServers` config entries for ARIA MCP Gateway with Streamable HTTP transport and Bearer auth.
- `mcp_session_params()` — Generates MCP Python SDK transport parameters for ARIA MCP Gateway with proper Origin header and protocol version.
- Version gate (`compat.py`) that fails fast on unsupported `agent-os-kernel` versions.
- Contract tests against real AGT 3.0.x types (`ToolCallInterceptor`, `AuditBackend`, `ExternalPolicyBackend`, `PolicyEvaluator`).
- Golden/snapshot tests for AuthZEN request mapping.
- Concurrency tests (50 interceptor evaluations, 100 audit writers).
