Release v0.9.0
·
252 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
[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)