QWED-AI
qwed-verification
Blog
Docs
Changelog
Blog
Docs
Changelog
Overview
Branches
Benchmarks
Runs
Performance History
Latest Results
fix(consensus): replace non-reentrant Lock with RLock in CircuitBreaker (#332) (#343) * fix(consensus): replace non-reentrant Lock with RLock in CircuitBreaker Fixes #332 - Replace threading.Lock with threading.RLock in CircuitBreaker._lock. Previously, record_success and record_failure acquired self._lock and then called get_health() which re-entered self._lock, causing an immediate self-deadlock on the event-loop thread. - Add with self._lock to get_all_health for thread-safe iteration over _engines. - Add regression tests in tests/test_circuit_breaker_deadlock_332.py covering: - record_success and record_failure without deadlock - Circuit transition to OPEN, DEGRADED, and HEALTHY - Thread-safe get_all_health statistics - Concurrent multi-threaded access without deadlock * fix(consensus): address review feedback on CircuitBreaker lock synchronization - Enclose is_available() read, timeout check, and state transition within with self._lock to ensure atomic state updates under concurrency. - Add CircuitBreaker.reset() under lock and delegate ConsensusVerifier.reset_circuit_breakers() to it for thread-safe dictionary clearance. - Replace wall-clock time.sleep with monkeypatched deterministic clock in recovery tests. - Remove unused imports (pytest, EngineHealth) in test_circuit_breaker_deadlock_332.py. - Add unit test for thread-safe reset() and reset_circuit_breakers(). * test(consensus): bound deadlock probes in worker threads with timeout - Run direct CircuitBreaker deadlock probes in daemon threads with a bounded timeout via _run_with_timeout. - Capture and re-raise any worker thread exceptions to ensure failures remain visible.
main
4 days ago
test(consensus): bound deadlock probes in worker threads with timeout - Run direct CircuitBreaker deadlock probes in daemon threads with a bounded timeout via _run_with_timeout. - Capture and re-raise any worker thread exceptions to ensure failures remain visible.
fix/circuit-breaker-self-deadlock-332
4 days ago
fix(consensus): address review feedback on CircuitBreaker lock synchronization - Enclose is_available() read, timeout check, and state transition within with self._lock to ensure atomic state updates under concurrency. - Add CircuitBreaker.reset() under lock and delegate ConsensusVerifier.reset_circuit_breakers() to it for thread-safe dictionary clearance. - Replace wall-clock time.sleep with monkeypatched deterministic clock in recovery tests. - Remove unused imports (pytest, EngineHealth) in test_circuit_breaker_deadlock_332.py. - Add unit test for thread-safe reset() and reset_circuit_breakers().
fix/circuit-breaker-self-deadlock-332
4 days ago
fix(consensus): replace non-reentrant Lock with RLock in CircuitBreaker Fixes #332 - Replace threading.Lock with threading.RLock in CircuitBreaker._lock. Previously, record_success and record_failure acquired self._lock and then called get_health() which re-entered self._lock, causing an immediate self-deadlock on the event-loop thread. - Add with self._lock to get_all_health for thread-safe iteration over _engines. - Add regression tests in tests/test_circuit_breaker_deadlock_332.py covering: - record_success and record_failure without deadlock - Circuit transition to OPEN, DEGRADED, and HEALTHY - Thread-safe get_all_health statistics - Concurrent multi-threaded access without deadlock
fix/circuit-breaker-self-deadlock-332
5 days ago
fix: resolve PyPI publish failure on Metadata-Version 2.5 (#318) * fix: resolve PyPI publish failure on Metadata-Version 2.5 The v7.1.0 PyPI publish failed during gh-action-pypi-publish's verify_metadata step: the unpinned hatchling floated to 1.32.0, which emits Metadata-Version 2.5, unsupported by the pinned ed0c539 action image (twine < 7). - Pin hatchling==1.27.0 (emits Metadata-Version 2.4, broadly supported) so builds are reproducible and metadata stops floating - Bump pypa/gh-action-pypi-publish to v1.14.2 (twine >= 7, supports metadata 2.5 incl. PEP 794) in publish.yml and publish-sdks.yml Verified locally: wheel builds with Metadata-Version 2.4 and 'twine check' passes. * fix: make publish.yml tolerant of duplicate PyPI uploads Both publish.yml and publish-sdks.yml publish the same repository-root qwed distribution on release.published. publish-sdks.yml already sets skip-existing: true; publish.yml omitted it (default false), so when the SDK workflow uploads first, publish.yml would fail on the immutable wheel/sdist. Add skip-existing: true to the PyPI publish step.
main
15 days ago
fix: make publish.yml tolerant of duplicate PyPI uploads Both publish.yml and publish-sdks.yml publish the same repository-root qwed distribution on release.published. publish-sdks.yml already sets skip-existing: true; publish.yml omitted it (default false), so when the SDK workflow uploads first, publish.yml would fail on the immutable wheel/sdist. Add skip-existing: true to the PyPI publish step.
fix/pypi-publish-metadata
15 days ago
fix: resolve PyPI publish failure on Metadata-Version 2.5 The v7.1.0 PyPI publish failed during gh-action-pypi-publish's verify_metadata step: the unpinned hatchling floated to 1.32.0, which emits Metadata-Version 2.5, unsupported by the pinned ed0c539 action image (twine < 7). - Pin hatchling==1.27.0 (emits Metadata-Version 2.4, broadly supported) so builds are reproducible and metadata stops floating - Bump pypa/gh-action-pypi-publish to v1.14.2 (twine >= 7, supports metadata 2.5 incl. PEP 794) in publish.yml and publish-sdks.yml Verified locally: wheel builds with Metadata-Version 2.4 and 'twine check' passes.
fix/pypi-publish-metadata
15 days ago
chore: prepare v7.1.0 release (Verification Context v1.0 rollout) (#317) * chore: prepare v7.1.0 release (Verification Context v1.0 rollout) Bump version to 7.1.0 across: - pyproject.toml (qwed) - src/qwed_new/__init__.py (__version__) - qwed_sdk/__init__.py (__version__) - sdk-ts/package.json - sdk-rust/Cargo.toml - src/qwed_new/api/main.py (APP_VERSION) Add CHANGELOG [7.1.0] entry covering the VC v1.0 rollout (#301-#316). Add README v7.1.0 release update + roadmap item. Update test_sdk_init version assertion. 1991 tests pass. * docs: address review comments on v7.1.0 release PR - README: clarify VC conversion is explicit via to_verification_context(), not auto-emitted; drop incorrect attestation_token claim (StatsVerifier signature does not accept it); note existing wire contracts unchanged - CHANGELOG: drop attestation_token claim from v7.1.0 entry - sdk-rust/README: bump install pin qwed = 7.0.0 -> 7.1.0 (Greptile P1)
main
16 days ago
Latest Branches
CodSpeed Performance Gauge
0%
fix(consensus): replace non-reentrant Lock with RLock in CircuitBreaker (#332)
#343
4 days ago
bc3da53
fix/circuit-breaker-self-deadlock-332
CodSpeed Performance Gauge
0%
fix: resolve PyPI publish failure on Metadata-Version 2.5
#318
15 days ago
69802dc
fix/pypi-publish-metadata
CodSpeed Performance Gauge
0%
chore: prepare v7.1.0 release (Verification Context v1.0 rollout)
#317
16 days ago
36b17a2
release/v7.1.0
© 2026 CodSpeed Technology
Home
Terms
Privacy
Docs