Skip to content

Release v0.9.0

Choose a tag to compare

@github-actions github-actions released this 11 Feb 13:36
· 252 commits to main since this release
Immutable release. Only release title and notes can be modified.
e1e6e40

[0.9.0] - 2026-02-11

Features

  • sync: Generate native sync code from async source (f2c3a6f)
  • sync: Add SyncRepositoryProtocol transformation (22d6010)
  • exports: Export sync classes from generated modules (0338792)
  • repository: Eagerly reconcile bucket on config changes (#327) (f73d39c)
  • aggregator: Proactive bucket refill from DynamoDB Streams (#317) (5079100)
  • infra: Add stack type tagging, discovery filtering, and CFN exports (80a1a34)
  • infra: Add stack type tagging, discovery filtering, and CFN exports (#348) (ba12e26)
  • load: Add Locust base classes and example locustfiles (#351) (df81b5d)
  • load: Add Locust base classes and example locustfiles (#350) (a472e1b)
  • load: Add infrastructure deploy/teardown for load testing (#352) (24abf08)
  • load: Add infrastructure deploy/teardown for load testing (#355) (8c0210b)
  • load: Add runtime connect/run/calibrate commands (#353) (30a6b5c)
  • load: Add runtime connect/run/calibrate commands (#356) (8b74e8e)

Bug Fixes

  • generate-sync: Fix transformer for boto3 sync clients (8118dc8)
  • limiter: Address code review findings in async source and generated sync (2c25160)
  • ci: Resolve CI failures from missing ruff and mypy stubs (86c912d)
  • ci: Use uv run for sync verification and exclude plans from doctest (fd76c19)
  • ci: Add ruff as build dependency and fix doctest issues (bbbf556)
  • ci: Add ruff as build dependency, require it in generate_sync (27cfb1c)
  • benchmark: Update benchmark tests for native sync SyncRateLimiter (0dc520f)
  • repository: Fix sync code generation for enum identity and boto3 clients (420de57)
  • infra: Rename IAM policies for clarity and fix permissions (bc66567)
  • infra: Revert modification to accepted ADR-117 (f35c965)
  • infra: Rename IAM policies for clarity and fix permissions (#307) (#310) (a28d77f)
  • lease: Prevent token leak when _commit_adjustments fails (#309) (f295f69)
  • test: Use per_day limit in concurrent adjust test to avoid refill drift (17f983f)
  • test: Relax single/multi-entity concurrent assertions for moto (8d489cf)
  • Address PR #308 code review feedback (94f4953)
  • benchmark: Use non-cascade entity in test_acquire_without_cascade (4013d56)
  • benchmark: Use non-cascade entity in test_acquire_without_cascade (#319) (c2be320)
  • ci: Docs workflow cancelling tests (#321) (a109add)
  • repository: Add tk >= floor guard to build_composite_normal (eb345b3)
  • repository: Reject expired-TTL buckets in speculative path (659a04b)
  • limiter: Compensate child tokens on parent-only slow path failure (d6b5362)
  • repository: Route _resolve_on_unavailable through config cache (#333) (05e3272)
  • test: Use flat schema in handler test mocks (ADR-111) (9ee28d6)
  • ci: Revert gevent pre-push step (no gevent tests in this branch) (ab7166b)
  • ci: Remove gevent test step (no gevent tests in this branch) (a39b432)
  • loadtest: Address PR review comments (066a9b8)

Revert

  • ♻️ refactor(limiter): add delegation methods for invalidate_config_cache and get_cache_stats (#329) (3149286)

Documentation

  • plans: Add native sync unasync design (386441d)
  • plans: Add native sync implementation plan (9faa96a)
  • adr: ADR-121 native sync via unasync pattern (2c6fe16)
  • claude: Document sync code generation workflow (15e2c6e)
  • api: Update SyncRateLimiter reference to sync_limiter module (8693aa3)
  • infra: Replace Migration with Alternatives Considered in ADR-121 (5446e56)
  • limiter: Update documentation for write-on-enter behavior (#309) (055faa1)
  • issue: Add conversation mining checklist to issue creation skill (402051b)
  • Add DynamoDB pricing reference to CLAUDE.md (6491b19)
  • Update write path documentation for write_each() (9d07f16)
  • Add hatch install to developer setup instructions (9ddb8b9)
  • pr: Add comments/reviews support to PR view skill (7a8f8c1)
  • Update speculative writes docs with deferred cascade compensation (06e5d12)
  • Update speculative writes to reflect default-on (00385fa)
  • repository: Add ADR-122 resolve_limits on repository protocol (d3b299f)
  • repository: Accept ADR-122 resolve_limits on repository protocol (495b130)
  • repository: Fix docstring indentation and add config_cache_ttl to Repository Pattern (ad35a85)
  • repository: Update API reference and architecture for ADR-122 (25db1b1)
  • Fix stale config schema and speculative writes default (a2e7249)
  • guide: Fix incomplete code snippet in speculative writes section (a4369e7)
  • Update documentation for parallel cascade speculative writes (#318) (293c2ce)
  • Fix stale method refs and sync transformation descriptions (#318) (fd11928)
  • load: Update docs for Locust integration and all 5 example scenarios (831bb18)
  • loadtest: Update command list in CLAUDE.md (c608f93)
  • loadtest: Add orchestrator and worker to CLAUDE.md project structure (6ebc3d9)

Performance

  • limiter: Write token consumption to DynamoDB on acquire enter (#309) (40909f9)
  • limiter: Write token consumption to DynamoDB on acquire enter (#309) (#312) (fe62cf5)
  • repository: Use single-item API for non-cascade writes (#313) (b396ee8)
  • repository: Add write_each() for non-atomic independent writes (d81fe27)
  • repository: Use single-item API for non-cascade writes (#316) (398da2e)
  • cache: Batch config resolution with deserialized returns (#298) (c68e07d)
  • cache: BatchGetItem optimization for config resolution (#298) (#323) (2dd6304)
  • limiter: Add speculative UpdateItem to skip read round trip (#315) (0e6b99c)
  • limiter: Defer cascade compensation with parent-only slow path (3aa2cf4)
  • limiter: Enable speculative_writes=True by default (c16e833)
  • limiter: Speculative UpdateItem to skip read round trip (#326) (626beb7)
  • limiter: Cache entity metadata for parallel cascade speculative writes (#318) (5cb82c5)
  • aggregator: Proactive bucket refill from DynamoDB Streams (#317) (#335) (52d260e)
  • limiter: Cache entity metadata for parallel cascade speculative writes (#318) (#338) (54cf0c9)
  • repository: Add configurable parallel_mode for SyncRepository (b5d6634)
  • repository: Add configurable parallel_mode for SyncRepository (#349) (728e8b9)

Refactoring

  • repository: Restore async source, handle code review issues in generator (9e07237)
  • repository: Fix mypy for generated sync code, replace hatch_build.py (d96acda)
  • repository: Native sync implementation via AST transformation (#308) (d99b7da)
  • repository: Type-safe ConfigSource and OnUnavailableAction (#325) (6e3ef0b)
  • repository: Move resolve_limits and config cache to Repository (#329) (95cad97)
  • limiter: Add delegation methods for invalidate_config_cache and get_cache_stats (#329) (dc19472)
  • repository: Move resolve_limits and config cache to Repository (ADR-122) (#330) (c18ef3b)
  • repository: Move cascade parallelism into Repository (ADR-122) (aaeabce)
  • repository: Internalize entity cache population (#318) (f6d6170)
  • load: Replace --create-vpc-endpoints with explicit endpoint flags (c9528c8)
  • load: Rename load module and CLI group to loadtest (e509544)
  • loadtest: Rename CLI commands and add push (b9d36ec)

Testing

  • fixtures: Update sync fixtures for native implementation (4d27e42)
  • sync: Fix sync tests for native implementation (5068fc1)
  • sync: Fix sync tests for native implementation (535b864)
  • limiter: Fix sync test referencing old _limiter attribute (d256bf5)
  • limiter: Add tests for error-path logging in get_status and create_stack (01abfa4)
  • infra: Add close() error-handling test for InfrastructureDiscovery (76ed9d2)
  • repository: Auto-generate sync test files from async sources (10870d8)
  • repository,limiter: Add tests to improve sync coverage (35576a0)
  • lease: Add coverage for write-on-enter paths (#309) (e76371d)
  • lease: Verify cascade writes both entity and parent on enter (#309) (5d7c59c)
  • lease: Verify concurrent adjust writes don't lose tokens (#309) (f4c2f0c)
  • lease: Add edge-case coverage for consume/adjust on committed lease (a6ef5f5)
  • benchmark: Relax moto assertions for true thread concurrency (b1d9b83)
  • repository: Add unit tests for write_each() coverage (532adce)
  • repository: Cover transact_write single-item Delete and fallback paths (681416b)
  • cache: Add coverage for batch config edge cases (#298) (8be217f)
  • benchmark: Add BatchGetItem vs sequential config resolution comparison (#298) (f8848ca)
  • limiter: Add coverage for speculative cascade/failure paths (992eb12)
  • limiter: Cover remaining speculative paths (config change, parent zero-consume) (73a9b63)
  • limiter: Cover child refill-helps fallback path (line 821) (43b6bb1)
  • limiter: Add explicit execution assertions to rollback test (9d20794)
  • repository: Add speculative_consume integration and e2e tests (0bf9adb)
  • limiter: Extract helper to silence CodeQL unreachable-code false positive (21e8c97)
  • benchmark: Update capacity assertions for speculative writes (95c956a)
  • repository: Cover _resolve_limits_sequential fallback paths (8483ab8)
  • repository: Fix test suites for ADR-122 API migration (7ac088f)
  • limiter: Cover zero-amount bucket skip in parallel speculative paths (40f2e0f)
  • benchmark: Add cascade speculative cache cold vs warm benchmarks (#318) (0c63225)
  • benchmark: Add non-cascade baseline to speculative comparison (#318) (c855284)
  • benchmark: Add speculative vs baseline AWS latency comparison (#331) (9c381f5)
  • benchmark: Mark cascade concurrent test as xfail (#332) (efb7ac0)
  • benchmark: Add speculative vs baseline AWS latency comparison (#331) (#339) (38a0e68)
  • repository: Add unit tests for parallel_mode and restore gevent CI step (4d55822)
  • load: Add tests for DynamoDB endpoint check and list command (5bc25df)
  • load: Cover orchestrator inclusion in build context (60ed5d7)
  • loadtest: Add moto-based tests for _push_code and _get_lambda_client_and_config (bf2a9ad)
  • loadtest: Reach 100% coverage on orchestrator module (bb97b74)

Miscellaneous Tasks

  • ci: Exclude generated sync files from patch coverage (07e48fc)
  • ci: Exclude generated sync files from coverage measurement (fa5a4dd)
  • infra: Regenerate sync_stack_manager after policy rename merge (d4acad8)
  • Consolidate Claude Code permissions into settings.json (f489c9a)
  • Update uv.lock with bench extra dependencies (140c140)

CI

  • pre-commit: Add hook to verify generated sync code (cb9fd46)
  • Add sync code verification job (21e8155)
  • Fix docs workflow cancelling tests (#314) (0be9d65)
  • Reduce Python matrix to 3.12-only on PRs (f6dfebb)
  • Reduce Python matrix to 3.12-only on PRs (#354) (965fec4)
  • load: Trigger CI run (86ee62e)

Security

  • deps: Bump pip from 25.3 to 26.0 (#324) (77d99e0)
  • deps: Bump cryptography from 46.0.3 to 46.0.5 (#358) (e1e6e40)

Build

  • deps: Bump pip from 25.3 to 26.0 (6929aac)
  • deps: Bump cryptography from 46.0.3 to 46.0.5 (d0c5a6f)