Changelog
The format is based on Keep a Changelog, and this project follows Semantic Versioning.
[3.2.1] - 2026-05-30
Added
- Cost rate cards (
briefcase.cost.CostCalculator.estimate_cost): an optional keyword-onlyrate_cardselects aplatform × tier × modifierpricing scheme — platformsfirst_party/bedrock/vertex/azure, tiersstandard/batch/cached/priority/flex, and modifiers for long-context tiered pricing, data residency (us, +10%), and fast-mode. Cards are forgiving strings such as"batch","bedrock:batch", or"first_party:fast"; batch/flex are 0.5×, cache reads are 0.1× of input, and regional/residency add 10%. New keyword-onlycache_read_tokens/cache_write_5m_tokens/cache_write_1h_tokensarguments bill prompt-cache usage, acache_costfield is exposed onCostEstimate, andget_available_rate_cards()lists representative cards. Omittingrate_card(or passing"standard") preserves the previous first-party standard pricing. - Latest model pricing: added Anthropic Claude 4.x (
claude-opus-4-8/4-7/4-6/4-5/4-1,claude-sonnet-4-6/4-5,claude-haiku-4-5/3-5), OpenAI GPT-5.x (gpt-5.5,gpt-5.5-pro,gpt-5.4,gpt-5.4-mini,gpt-5.4-nano,gpt-5.4-pro), and Google Gemini (gemini-3.5-flash,gemini-3.1-pro,gemini-3.1-flash-lite,gemini-3-flash,gemini-2.5-pro/flash/flash-lite) to the default pricing table. All previously available models are retained.
Changed
CostCalculator.estimate_cost,estimate_cost_from_text, andproject_monthly_costgained keyword-onlyrate_card(and, forestimate_cost, cache-token) parameters. The existing positional arguments and theirinput_tokens/output_tokenskeyword names are unchanged, so existing calls behave identically.- The MCP
estimate_costtool accepts an optionalrate_cardand returns acache_costfield.
Fixed
- A single stable-ABI wheel per platform now installs on Python 3.9–3.13 (previously the prebuilt wheel was effectively 3.11-only).
- The source distribution now bundles
LICENSEandNOTICE.
[3.2.0] - 2026-05-30
Added
- Stock exporters in the base package (
briefcase.exporters):ConsoleExporter(JSON lines to stderr),JSONLFileExporter(append-only, thread-safe), andMemoryExporter(collects records in.records). - One-line observability setup:
briefcase.observe(exporter="console", *, level=None)wires the global exporter so@capturerecords are emitted, and returns the configured exporter for inspection. - Centralized logging in the base package: top-level
enable_logging,set_log_level,disable_logging, andget_logger. The library is silent by default (NullHandler); setBRIEFCASE_LOG_LEVEL=DEBUGto enable logging automatically at import. - MCP server (
pip install briefcase-ai[mcp]): thebriefcase-mcpconsole script (orpython -m briefcase.mcp) exposessanitize_text,estimate_cost,analyze_drift, andhow_totools plus abriefcase://llms-full.txtresource to MCP-capable clients.briefcase.mcpexportsbuild_server()andmain(). - LLM-friendly
llms.txt,llms-full.txt, andAGENTS.mdso coding assistants can discover the API surface. - Bitemporal evidence primitives (
briefcase.bitemporal):BitemporalRecord, theBitemporalStoreprotocol with in-memory, SQLite, and Iceberg backends,AsOfView, append-only corrections, and batch/stream ingest. - Versioned routing policy (
briefcase.routing):PolicyRegistry,PolicyVersion,PolicyRule,AgentRouter, andAgentRoutingDecision. - Audit bundles (
briefcase.compliance):ExaminerBundlewith SHA-256 content-hash integrity and tamper detection. - Top-level
briefcase.capture,briefcase.setup, andbriefcase.BriefcaseConfigre-exports for discoverability. ExternalDataTracker(sanitizer=...)to redact PII from external-data snapshots before they are persisted to durable storage.scripts/check_imports.pyimport-smoke test for the built wheel.
Fixed
briefcase.cost,briefcase.drift, andbriefcase.sanitizenow import from a clean source build. The native bindings were missingadd_classregistrations forCostEstimate,BudgetStatus,DriftMetrics,Redaction,SanitizationResult, andSanitizationJsonResult;briefcase.costalso imported a non-existentBudgetAlerttype.briefcase.ragno longer fails to import on a spuriouspyarrowrequirement.- Misleading
ImportErrormessages on native-backed modules now point to reinstall/rebuild rather than no-op pip extras. scripts/version_sync.pymissingIterableimport; the manifest now also tracksbindings/python/Cargo.toml.- The flagship
examples/python-basicand validation examples now run end-to-end.
Security
- External-data snapshots can be redacted before persistence; redaction fails closed if it errors.
- Expanded PII detection: corrected the email regex and added GitHub, GitLab, Stripe, and Hugging Face API-key prefixes.
- Robust telemetry opt-out:
BRIEFCASE_TELEMETRYnow accepts0,false,no, andoff. source_nameis sanitized before use in storage object keys (path-traversal hardening).
Changed
- Deduplicated the optional OpenTelemetry import into
briefcase._otel. - Extracted guardrail core data types into
briefcase.guardrails._types. - CI builds and tests across Python 3.9-3.13, runs the native binding tests, and import-smoke-tests the built wheel before publish.
[3.0.0] - 2026-03-22
Added
- Initial open-source release: decision tracking, deterministic replay, drift and cost calculation, PII sanitization, and SQLite storage, backed by a Rust core.