chore(deps): update dependency pytest to v9#1398
Merged
cristiam86 merged 199 commits intostagingfrom Feb 24, 2026
Merged
Conversation
* chore: removed unused models and update existing ones * chore: config more diverse providers and models * chore: updated env example with multiple validators * feat: added output and eq principle outputs to transaction detail modal * chore: clean up models that doesn't perform well * fix: transaction details modal horizontal scroll * fix: frontend build * fix: format * refactor: updated providers schema in frontend * refactor: removed unused property in providers schema * fix: add XAI_API_KEY, remove prints * fix: format and missing env variable example * fix: duplicated XAI_API_KEY in env file --------- Co-authored-by: kstroobants <stroobants.kristof@hotmail.com>
* feat: removed contract_snapshot_supplier, created contract snapshot inside context init * fix: remove hardcoded majority_agrees for testing * fix: no creation of contract snapshot when transaction is funding; add check for restore_stuck_transactions --------- Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com>
* chore(deps): update dependency @vue/eslint-config-prettier to v10 (#697) * chore(deps): update dependency @vue/eslint-config-prettier to v10 * fix: adding Hardhat Dockerfile in GitHub Workflow (#693) * fix(hardhat): prevent race conditions in contract deployment (#704) * fix(hardhat): Add contract deployment and healthcheck to prevent race conditions - Added healthcheck to hardhat service in docker-compose.yml - Modified Dockerfile.hardhat to deploy contracts after node is ready - Added proper service dependency in docker-compose.yml to ensure jsonrpc waits for hardhat This fixes the race condition where jsonrpc would try to access hardhat accounts before they were available, causing the finality window to crash. * fix: use named volume for hardhat artifacts to fix permissions issue - Changed hardhat artifacts from bind mount to named volume - This ensures correct permissions are maintained - Fixes CI/CD pipeline issues with hardhat compilation * chore(docker): add curl to Dockerfile.hardhat and update healthcheck method * chore(docker): merge RUN instructions and sort package names in Dockerfile * fix: change health check command to nc instead of curl * fix: healthcheck trying curl with increased retries --------- Co-authored-by: kstroobants <stroobants.kristof@hotmail.com> * fix: catch exception to keep loop running (#705) Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> * fix: add BACKEND_BUILD_TARGET used in docker compose file in .env.example to run in debug (#707) Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> * chore: Update reviewers for renovate (#694) Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Edinaldo Pereira da Silva Junior <69252337+epsjunior@users.noreply.github.com> Co-authored-by: Miguel Paya <71258059+mpaya5@users.noreply.github.com> Co-authored-by: kstroobants <stroobants.kristof@hotmail.com> Co-authored-by: kstroobants <130580298+kstroobants@users.noreply.github.com> Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> Co-authored-by: Agustín Díaz <49416765+AgustinRamiroDiaz@users.noreply.github.com> * chore(deps): update sonarsource/sonarcloud-github-action action to v4 (#696) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> * chore(deps): update node.js to v22 (#695) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> * chore(deps): update codecov/codecov-action action to v5 (#660) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> * chore(deps): update dependency pre-commit to v4 (#557) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> * chore(deps): update dependency @types/chai to v5 (#551) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> * fix(deps): update all non-major dependencies (#534) * fix(deps): update all non-major dependencies * remove trailing whitespace --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Den <den@Deniss-MacBook-Pro.local> Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> * chore(deps): update dependency @vitejs/plugin-vue-jsx to v4 (#514) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> * chore: updated target branch to staging * chore: update dependencies * chore(deps): update dependency @vue/eslint-config-prettier to v10 (#716) * chore(deps): update dependency @vue/eslint-config-prettier to v10 * fix: adding Hardhat Dockerfile in GitHub Workflow (#693) * fix(hardhat): prevent race conditions in contract deployment (#704) * fix(hardhat): Add contract deployment and healthcheck to prevent race conditions - Added healthcheck to hardhat service in docker-compose.yml - Modified Dockerfile.hardhat to deploy contracts after node is ready - Added proper service dependency in docker-compose.yml to ensure jsonrpc waits for hardhat This fixes the race condition where jsonrpc would try to access hardhat accounts before they were available, causing the finality window to crash. * fix: use named volume for hardhat artifacts to fix permissions issue - Changed hardhat artifacts from bind mount to named volume - This ensures correct permissions are maintained - Fixes CI/CD pipeline issues with hardhat compilation * chore(docker): add curl to Dockerfile.hardhat and update healthcheck method * chore(docker): merge RUN instructions and sort package names in Dockerfile * fix: change health check command to nc instead of curl * fix: healthcheck trying curl with increased retries --------- Co-authored-by: kstroobants <stroobants.kristof@hotmail.com> * fix: catch exception to keep loop running (#705) Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> * fix: add BACKEND_BUILD_TARGET used in docker compose file in .env.example to run in debug (#707) Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> * chore: Update reviewers for renovate (#694) Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Edinaldo Pereira da Silva Junior <69252337+epsjunior@users.noreply.github.com> Co-authored-by: Miguel Paya <71258059+mpaya5@users.noreply.github.com> Co-authored-by: kstroobants <stroobants.kristof@hotmail.com> Co-authored-by: kstroobants <130580298+kstroobants@users.noreply.github.com> Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> Co-authored-by: Agustín Díaz <49416765+AgustinRamiroDiaz@users.noreply.github.com> * chore(deps): update node.js to v22 (#717) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> * chore: updated frontend dependencies config * fix: dependencies * chore(deps): update dependency @vue/eslint-config-typescript to v14 (#698) * chore(deps): update dependency @vue/eslint-config-typescript to v14 * fix: adding Hardhat Dockerfile in GitHub Workflow (#693) * fix(hardhat): prevent race conditions in contract deployment (#704) * fix(hardhat): Add contract deployment and healthcheck to prevent race conditions - Added healthcheck to hardhat service in docker-compose.yml - Modified Dockerfile.hardhat to deploy contracts after node is ready - Added proper service dependency in docker-compose.yml to ensure jsonrpc waits for hardhat This fixes the race condition where jsonrpc would try to access hardhat accounts before they were available, causing the finality window to crash. * fix: use named volume for hardhat artifacts to fix permissions issue - Changed hardhat artifacts from bind mount to named volume - This ensures correct permissions are maintained - Fixes CI/CD pipeline issues with hardhat compilation * chore(docker): add curl to Dockerfile.hardhat and update healthcheck method * chore(docker): merge RUN instructions and sort package names in Dockerfile * fix: change health check command to nc instead of curl * fix: healthcheck trying curl with increased retries --------- Co-authored-by: kstroobants <stroobants.kristof@hotmail.com> * fix: catch exception to keep loop running (#705) Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> * fix: add BACKEND_BUILD_TARGET used in docker compose file in .env.example to run in debug (#707) Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> * chore: Update reviewers for renovate (#694) Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> * chore(deps): update dependency @vue/eslint-config-typescript to v14 --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Edinaldo Pereira da Silva Junior <69252337+epsjunior@users.noreply.github.com> Co-authored-by: Miguel Paya <71258059+mpaya5@users.noreply.github.com> Co-authored-by: kstroobants <stroobants.kristof@hotmail.com> Co-authored-by: kstroobants <130580298+kstroobants@users.noreply.github.com> Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> Co-authored-by: Agustín Díaz <49416765+AgustinRamiroDiaz@users.noreply.github.com> * chore(deps): update codecov/codecov-action action to v5 (#719) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> * fix: docker python images version * fix: removed unused dependencies * chore(deps): update dependency jsdom to v25 (#517) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency sinon to v19 (#520) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> * chore(deps): update vitest monorepo to v2 (#526) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency @globalhive/vuejs-tour to v2 (#529) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> * fix(deps): update all non-major dependencies (#718) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/chai to v5 (#722) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> * chore(deps): update dependency @vitejs/plugin-vue-jsx to v4 (#724) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> * chore(deps): update dependency pre-commit to v4 (#728) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> * chore(deps): update dependency mocha to v11 (#737) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> * chore(deps): update dependency npm-run-all2 to v7 (#738) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> * chore(deps): update dependency vite to v6 (#739) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> * fix(deps): update dependency @nomicfoundation/hardhat-toolbox to v5 (#740) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> * fix(deps): update dependency hardhat-gas-reporter to v2 (#741) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> * fix(deps): update dependency uuid to v11 (#742) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> * chore: updated deps * chore(deps): update all non-major dependencies (#745) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update all non-major dependencies (#749) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#750) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update all non-major dependencies (#756) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update all non-major dependencies (#760) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update all non-major dependencies (#763) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#773) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#774) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#775) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#776) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#777) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#778) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#779) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#784) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#794) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#797) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#798) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#800) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#802) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update all non-major dependencies (#806) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#807) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#808) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#810) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#811) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#815) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update all non-major dependencies (#816) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#817) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update all non-major dependencies (#825) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#829) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#831) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#832) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#833) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update all non-major dependencies (#834) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#837) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency vite to v6.0.9 [security] (#836) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#845) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#848) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update all non-major dependencies (#849) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#852) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#854) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#855) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update all non-major dependencies (#856) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#860) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#862) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#866) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#868) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#871) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix: downgraded hardhat-gas-reporter as it is not compatible with hardhat-toolbox; added requests in webrequests as newer version of anthropic raised an import error * chore(deps): update dependency black to v25 (#861) * chore(deps): update dependency black to v25 * fix: unknown compiler * fix: useWebSocketClient test saying object is possibly undefined --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: kstroobants <stroobants.kristof@hotmail.com> * chore(deps): update dependency web3 to v7.8.0 (#872) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency jsdom to v26 (#809) * chore(deps): update dependency jsdom to v26 --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: kstroobants <130580298+kstroobants@users.noreply.github.com> Co-authored-by: kstroobants <stroobants.kristof@hotmail.com> * chore(deps): update dependency eth-account to v0.13.5 (#875) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update vitest monorepo to v3 (#819) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: kstroobants <130580298+kstroobants@users.noreply.github.com> Co-authored-by: kstroobants <stroobants.kristof@hotmail.com> * chore(deps): update all non-major dependencies to v3.0.4 (#876) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency openai to v1.61.1 (#879) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#882) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update all non-major dependencies to v3.0.5 (#884) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#885) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency genlayer-js to v0.6.4 (#888) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#889) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency viem to v2.22.23 (#890) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency lucide-vue-next to ^0.475.0 (#896) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update ollama/ollama docker tag to v0.5.8 (#898) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update node.js to v22.14.0 (#899) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency prettier to v3.5.0 (#902) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency openai to v1.62.0 (#903) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update ollama/ollama docker tag to v0.5.9 (#905) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency viem to v2.23.0 (#906) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update all non-major dependencies (#908) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#909) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#911) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/node to v22.13.2 (#912) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency prettier to v3.5.1 (#913) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#914) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update all non-major dependencies (#917) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies to v12.7.0 (#919) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update all non-major dependencies (#923) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency @tanstack/vue-query to v5.66.4 (#928) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#931) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#932) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#935) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update all non-major dependencies (#936) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency vue-tsc to v2.2.4 (#943) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#944) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#948) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency anthropic to v0.49.0 (#952) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency openai to v1.65.2 (#953) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency pytest to v8.3.5 (#954) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#955) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update all non-major dependencies (#958) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency vue-tsc to v2.2.8 (#960) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update all non-major dependencies (#963) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency @tanstack/vue-query to v5.67.1 (#965) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/node to v22.13.9 (#966) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency viem to v2.23.6 (#967) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#970) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update all non-major dependencies (#972) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#974) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#978) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#984) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update all non-major dependencies (#993) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update ollama/ollama docker tag to v0.6.0 (#995) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#997) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @rushstack/eslint-patch to v1.11.0 (#999) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#1000) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency genlayer-js to ^0.9.0 (#1002) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency start-server-and-test to v2.0.11 (#1003) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update all non-major dependencies (#1004) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#1006) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#1007) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update all non-major dependencies (#1008) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update all non-major dependencies (#1011) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update all non-major dependencies (#1012) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency viem to v2.23.12 (#1013) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#1014) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency sinon to v19.0.4 (#1015) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency viem to v2.23.13 (#1016) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/node to v22.13.11 (#1018) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#1019) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency vite to v6.2.3 [security] (#1025) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency eth-account to v0.13.6 (#1029) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update all non-major dependencies (#1030) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update all non-major dependencies (#1032) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency viem to v2.23.15 (#1034) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#1035) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#1037) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency @tanstack/vue-query to v5.69.2 (#1039) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#1042) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency vite to v6.2.4 [security] (#1043) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency aiohttp to v3.11.15 (#1044) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency aiohttp to v3.11.16 (#1048) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency @tanstack/vue-query to v5.71.0 (#1050) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update ollama/ollama docker tag to v0.6.4 (#1051) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency @tanstack/vue-query to v5.71.1 (#1052) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update all non-major dependencies to v3.1.1 (#1053) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#1054) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency viem to v2.24.3 (#1055) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/node to v22.13.15 (#1056) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/node to v22.13.16 (#1057) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency vite to v6.2.5 [security] (#1059) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/node to v22.13.17 (#1060) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#1061) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#1062) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency viem to v2.25.0 (#1063) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update ollama/ollama docker tag to v0.6.5 (#1064) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#1067) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency pydantic to v2.11.3 (#1070) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency openai to v1.72.0 (#1073) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#1077) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency @tanstack/vue-query to v5.72.0 (#1082) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#1083) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency viem to v2.26.2 (#1084) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency vite to v6.2.6 [security] (#1089) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#1087) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update all non-major dependencies (#1090) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency @tanstack/vue-query to v5.73.0 (#1092) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency viem to v2.26.3 (#1093) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency pinia to v3 (#910) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: kstroobants <130580298+kstroobants@users.noreply.github.com> * fix(deps): update all non-major dependencies (#1095) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update all non-major dependencies (#1098) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update vueuse monorepo to v13 (#998) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: kstroobants <stroobants.kristof@hotmail.com> * fix(deps): update dependency splitpanes to v4 (#973) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: kstroobants <stroobants.kristof@hotmail.com> * chore(deps): update tibdex/github-app-token action to v2 (#1096) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: kstroobants <stroobants.kristof@hotmail.com> * chore(deps): update dependency sinon to v20 (#1033) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: kstroobants <stroobants.kristof@hotmail.com> * fix(deps): update all non-major dependencies (#1099) * fix(deps): update all non-major dependencies --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: kstroobants <stroobants.kristof@hotmail.com> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Edinaldo Pereira da Silva Junior <69252337+epsjunior@users.noreply.github.com> Co-authored-by: Miguel Paya <71258059+mpaya5@users.noreply.github.com> Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> Co-authored-by: Agustín Díaz <49416765+AgustinRamiroDiaz@users.noreply.github.com> Co-authored-by: Den <den@Deniss-MacBook-Pro.local>
…ccepted (#1106) * fix: process pending transaction when previous does not exist, is appealed or is in an accepted/undetermined/finalized state * fix: add get_previous_transaction in test helpers
* feat: update default provider presets at startup * fix: remove comments * fix: add is_default to GetProvidersAndModelsData frontend * fix: do not reset providers when migrating an empty database, at that point is_default does not exist --------- Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com>
…onsensus (#1080) * feat: call addTransaction from _emit_transactions * feat: call _addTransaction inside solidity contract when calling emitTransactionAccepted or emitTransactionFinalized * fix: internal message for deployment needed more gas, contract_address is created in python because genvm does the same construction * fix: add InternalMessageProcessed * fix: split _emit_transactions --------- Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com>
* feat: add contract state checks for one tx for happy path, leader appeal, rollback validator appeal * feat: added test for one transaction in validator appeal and future transaction in accepted * feat: add test for one transaction in leader appeal and future transaction in accepted --------- Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com>
…#1120) * fix: generate contracts address when consensus_service is not running * fix: autogenerate tx hash in the transaction processor * fix: check states when they are not timing dependent --------- Co-authored-by: kstroobants <stroobants.kristof@hotmail.com>
* feat: add snapshot model * feat: add snapshot manager * feat: add rpc endpoints * fix: minor updates * feat: add snapshot manager tests * chore: propagate failure on github actions * fix: old tests * fix: black * fix: chromedriver version
…rn (#1122) * test: add an integration test for Intelligent Contracts Factory Pattern from intelligent oracle project * test: change prediction markets --------- Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com>
* feat: add timeout retry in node call * fix: changed timeout to 30 seconds --------- Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com>
Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com>
* fix: remove private_key from validators for endpoints methods * fix: solve failed testcase
* refactor: rename contracts extension to .gpy * refactor: integrate genlayer-test * fix: update import * fix: delete unused code * chore: add genlayer-test package * fix: use gltest command to run integration tests * chore: update frontend docker file to receive .py files * refactor: rename to .gpy * feat: integrate intelligent oracle test * chore: upgrade genlayer-test version * fix: black * fix: simplify logic * fix: add setup_validator fixture to all tests * chore: updated and fixed dependencies * fix: manage tx timestamp_appeal as int --------- Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com>
* fix: add missing transaction fields * fix: black
* chore: update BSL date on PR merge * chore: comment out condition for PR merge in update-bsl-date workflow * chore: add display changes step in update-bsl-date workflow * test * chore: update update-bsl-date workflow to trigger on opened, synchronize, and reopened PRs; add permissions for pull-requests * use current branch instead of main * chore: clean up update-bsl-date workflow --------- Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com>
* made ollama optional * fix: don't have ollama in database when profile is not active --------- Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com> Co-authored-by: kstroobants <stroobants.kristof@hotmail.com>
* feat: add gen_call * fix: gen_call read works by adding parsing * fix: remove prints * fix: add logs for newTransaction event in get receipt * fix: solve pre-commit issues * fix: change status to statusName, add Address type * fix: update genlayer-js to 0.9.3, solve pre-commit --------- Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com>
…t state (#1152) * feat: add gen_call * fix: gen_call read works by adding parsing * fix: remove prints * feat: read accepte d and finalized state in frontend * fix: pre-commit solved * refactor: improved UI styles for both states * chore: updates genlayer-js * fix: tutorial location * fix: undo tutorial change * fix: use TransactionHashVariant from genlayer-js * fix: update genlayer-js to 0.9.5 --------- Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com>
* fix: consensus history updated before logevent * This is an empty commit --------- Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com>
Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com>
* feat: detect appeals from raw transaction * fix: update genlayer-js version; remove appeal function in endpoints * fix: frontend hash type --------- Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com>
* feat: rename example contracts extension to .py * refactor: reorganize intelligent contracts tests * bump genlayer-test to 0.1.1 * fix: frontend build and test * feat: update frontend .py files to .gpy * fix: ic tests * fix: frontend lint * docs: added README.md to run tests * fix: delete duplicated extension
…ash (#1427) * fix: reduce log noise for usage metrics API connection failures Connection errors (ClientConnectorError) when the usage metrics API is unavailable are expected in many environments (local dev, API down). Log these at debug level instead of error level to prevent Sentry spam. Other client errors (DNS, SSL) logged at warning level. Fixes GENLAYER-STUDIO-E Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: log GenVM execution errors at INFO level instead of ERROR GenVM execution errors are user contract errors (e.g., permission denied, validation failures) - expected behavior when contracts reject operations. These should not trigger Sentry alerts as they're not Studio infrastructure errors. The error details remain available in the 'result' data field for debugging purposes. Fixes GENLAYER-STUDIO-EY Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: correct GCP log severity for loguru and uvicorn logs Route logs to stdout/stderr based on severity for proper GCP Cloud Logging: - DEBUG/INFO/WARNING → stdout (GCP labels as INFO/default) - ERROR/CRITICAL → stderr (GCP labels as ERROR) Changes: - Update loguru config in fastapi_handler.py to split stdout/stderr - Update uvicorn log config in logging_config.py to split stdout/stderr - Add log_policy=LogPolicy.debug() to high-frequency polling endpoints to reduce log noise in production (filtered when LOG_LEVEL=INFO) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * chore: set openrouter presets for gpt5.1 sonet 4.5 and gemini 3 flash --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
AOT precompilation during docker build bakes in build-machine CPU features (e.g. AVX-512 from GitHub Actions runners). When deployed to k8s nodes lacking those features, every contract deploy fails with: "compilation setting has_avx512bitalg is enabled, but not available on the host" Skip precompile at build time, run it on startup for the actual host CPU. Entrypoint checks a version marker to avoid re-precompiling on restart.
…th (#1430) The .dockerignore excludes docker/* except docker/entrypoint-*.sh. Also fixes cache marker to use actual GenVM cache location at /genvm/executor/${GENVM_TAG}/.cache/pc/
…diness (#1431) Three fixes for the jsonrpc pod crash loop (134 restarts/17h) caused by GenVM semaphore permit exhaustion on Rally TestNet: 1. Gate liveness failure counting on manager /status probe — when the GenVM manager process is healthy (just busy), execution failures no longer count toward the liveness threshold that triggers pod kills. 2. Use is_sync=True for read-only gen_call paths — halves permit usage from 2→1 per request, effectively doubling concurrent capacity. 3. Permit-aware readiness endpoint — /ready now returns 503 when permits are exhausted (sustained), so K8s stops routing traffic to saturated pods. Disabled by default (READINESS_PERMIT_MIN_AVAILABLE=0), with sustain/recover windows and per-pod jitter to prevent death spirals.
* fix: reduce log noise for usage metrics API connection failures Connection errors (ClientConnectorError) when the usage metrics API is unavailable are expected in many environments (local dev, API down). Log these at debug level instead of error level to prevent Sentry spam. Other client errors (DNS, SSL) logged at warning level. Fixes GENLAYER-STUDIO-E Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: log GenVM execution errors at INFO level instead of ERROR GenVM execution errors are user contract errors (e.g., permission denied, validation failures) - expected behavior when contracts reject operations. These should not trigger Sentry alerts as they're not Studio infrastructure errors. The error details remain available in the 'result' data field for debugging purposes. Fixes GENLAYER-STUDIO-EY Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
…1432) _SnapshotView.storage_read() was base64-decoding the entire slot value on every single read. For contracts with large state (e.g. 99k slots), this caused get_scoreboard() to spend 18s out of 34.5s total just on repeated base64 decodes across 19,766 reads. Pre-decode all slot values to raw bytes once at load time. Per-read handler drops from 917µs to 22µs (41x faster), overall call time from 34.5s to 11.5s (3x faster).
…ompile cache (#1434) * feat: upgrade GenVM to v0.2.12, persist execution stats, and fix precompile cache - Upgrade GenVM v0.2.11 → v0.2.12 (LLM token usage metadata, relaxed nondet storage guards) - Persist execution stats (host handling time, per-method breakdown, call counts) on Receipt, flowing into consensus_data JSONB for per-transaction observability - Fix precompile cache: use fixed /genvm-cache/ path instead of version-dependent path, move backend precompile from build-time to container startup (matches consensus-worker pattern) - Add entrypoint-backend.sh for startup precompile with cache marker - Bump backend health check start-period to 120s to accommodate first-boot precompile * fix: use find to locate genvm.yaml in versioned executor path GenVM v0.2.12 places genvm.yaml at /genvm/executor/v0.2.12/config/genvm.yaml rather than /genvm/config/genvm.yaml. Use find to locate it regardless of version path.
* fix: reduce log noise for usage metrics API connection failures Connection errors (ClientConnectorError) when the usage metrics API is unavailable are expected in many environments (local dev, API down). Log these at debug level instead of error level to prevent Sentry spam. Other client errors (DNS, SSL) logged at warning level. Fixes GENLAYER-STUDIO-E Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: log GenVM execution errors at INFO level instead of ERROR GenVM execution errors are user contract errors (e.g., permission denied, validation failures) - expected behavior when contracts reject operations. These should not trigger Sentry alerts as they're not Studio infrastructure errors. The error details remain available in the 'result' data field for debugging purposes. Fixes GENLAYER-STUDIO-EY Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: correct GCP log severity for loguru and uvicorn logs Route logs to stdout/stderr based on severity for proper GCP Cloud Logging: - DEBUG/INFO/WARNING → stdout (GCP labels as INFO/default) - ERROR/CRITICAL → stderr (GCP labels as ERROR) Changes: - Update loguru config in fastapi_handler.py to split stdout/stderr - Update uvicorn log config in logging_config.py to split stdout/stderr - Add log_policy=LogPolicy.debug() to high-frequency polling endpoints to reduce log noise in production (filtered when LOG_LEVEL=INFO) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * chore: set openrouter presets for gpt5.1 sonet 4.5 and gemini 3 flash * chore: setup preset for running tests * chore: removed unused preset --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* fix: prevent validator thrashing by comparing config hash before reinit jsonrpc pods run initialize_validators() on every startup, which deletes all validators and recreates them, broadcasting Redis events that reset all consensus-workers. With multiple replicas or canary rollouts, pods thrash each other in a continuous loop, blocking transaction processing for 30-60 minutes. Now compares a hash of the desired config (VALIDATORS_CONFIG_JSON) against the current DB state (provider, model, stake, count). Only reinitializes when the config actually changed or the DB is empty. * fix: atomic validator replacement to prevent worker thrashing Replace the two-step delete-all + batch-create with a single replace_all_validators() that does both in one DB flush and publishes one `validators_replaced` Redis event. Workers never see 0 validators. Combined with the config hash comparison in the previous commit, this eliminates validator thrashing on jsonrpc restart entirely: - Hash match → skip reinit (most common case) - Hash mismatch → atomic swap (no intermediate empty state) * fix: eliminate 2.5min finalization delay and fix DB session leak Root cause: finalization eagerly constructed a ChainSnapshot (loading ALL pending + awaiting-finalization transactions with full JSONB columns including 17-53 MB contract_snapshot per row, plus N+1 lazy loads for triggered_transactions relationship) — none of which was used by FinalizingState.handle(). Changes: - Skip ChainSnapshot construction during finalization (pass None) - Remove contract_snapshot from finalization claim RETURNING clause - Use server-side jsonb_set() for add_state_timestamp and update_transaction_status to avoid full-row ORM loads - Fix validators session leak: commit after read-only queries to close implicit transactions that blocked autovacuum (caused 44% dead tuples, 2.3 TB TOAST bloat) - Add selectinload with load_only(hash) to ChainSnapshot queries to eliminate N+1 triggered_transactions lazy loads Expected: finalization drops from ~150s to <1s. Autovacuum unblocked. * perf: eliminate full-row ORM loads in PENDING→ACCEPTED transaction path - Pass None for chain_snapshot in process_transaction/process_appeal (no state handler accesses it; saves ~140-160s of eager TOAST loading) - Narrow claim CTEs from SELECT t.* to SELECT t.hash,t.to_address,t.created_at and remove contract_snapshot from RETURNING clauses - Move expire_all() from writers (~25 calls/tx) to readers (~3-5 calls/tx), fixing the regression from the previous raw-SQL conversion - Convert 16 ORM setter methods to raw SQL UPDATEs, avoiding full-row loads that pulled in 53MB contract_snapshot just to update a single column * fix: sync health endpoint + increase idle replacements to 5 - Convert /health from async to sync so FastAPI runs it in a threadpool, independent of the asyncio event loop. Prevents liveness probe timeouts when the event loop is blocked by long-running sync DB operations. - Replace aiohttp with urllib for GenVM probe (sync context). - Increase MAX_IDLE_REPLACEMENTS from 3 to 5. * perf: narrow update_consensus_history to avoid full-row ORM load Replace ORM query(Transactions).one() with a narrow SELECT consensus_history ... FOR UPDATE, build the updated JSONB in Python, and write back with a raw SQL UPDATE. Avoids loading the 53MB contract_snapshot column entirely. - SELECT only consensus_history (+ FOR UPDATE for row-level locking) - Build new history dict in Python, write via CAST(:data AS jsonb) - Remove unused flag_modified import * fix: update health degradation tests for sync endpoint Tests were using await on health_check() and mocking aiohttp. Updated to call sync function directly and mock urllib.request.urlopen. * perf: prioritize upgrade transactions in worker queue Upgrade transactions (type=3) now jump ahead of regular pending transactions in the claim queue, ensuring contract code updates apply without waiting behind queued calls.
* fix: prevent validator thrashing by comparing config hash before reinit
jsonrpc pods run initialize_validators() on every startup, which
deletes all validators and recreates them, broadcasting Redis events
that reset all consensus-workers. With multiple replicas or canary
rollouts, pods thrash each other in a continuous loop, blocking
transaction processing for 30-60 minutes.
Now compares a hash of the desired config (VALIDATORS_CONFIG_JSON)
against the current DB state (provider, model, stake, count). Only
reinitializes when the config actually changed or the DB is empty.
* fix: atomic validator replacement to prevent worker thrashing
Replace the two-step delete-all + batch-create with a single
replace_all_validators() that does both in one DB flush and publishes
one `validators_replaced` Redis event. Workers never see 0 validators.
Combined with the config hash comparison in the previous commit, this
eliminates validator thrashing on jsonrpc restart entirely:
- Hash match → skip reinit (most common case)
- Hash mismatch → atomic swap (no intermediate empty state)
* fix: eliminate 2.5min finalization delay and fix DB session leak
Root cause: finalization eagerly constructed a ChainSnapshot (loading ALL
pending + awaiting-finalization transactions with full JSONB columns
including 17-53 MB contract_snapshot per row, plus N+1 lazy loads for
triggered_transactions relationship) — none of which was used by
FinalizingState.handle().
Changes:
- Skip ChainSnapshot construction during finalization (pass None)
- Remove contract_snapshot from finalization claim RETURNING clause
- Use server-side jsonb_set() for add_state_timestamp and
update_transaction_status to avoid full-row ORM loads
- Fix validators session leak: commit after read-only queries to
close implicit transactions that blocked autovacuum (caused 44%
dead tuples, 2.3 TB TOAST bloat)
- Add selectinload with load_only(hash) to ChainSnapshot queries
to eliminate N+1 triggered_transactions lazy loads
Expected: finalization drops from ~150s to <1s. Autovacuum unblocked.
* perf: eliminate full-row ORM loads in PENDING→ACCEPTED transaction path
- Pass None for chain_snapshot in process_transaction/process_appeal
(no state handler accesses it; saves ~140-160s of eager TOAST loading)
- Narrow claim CTEs from SELECT t.* to SELECT t.hash,t.to_address,t.created_at
and remove contract_snapshot from RETURNING clauses
- Move expire_all() from writers (~25 calls/tx) to readers (~3-5 calls/tx),
fixing the regression from the previous raw-SQL conversion
- Convert 16 ORM setter methods to raw SQL UPDATEs, avoiding full-row loads
that pulled in 53MB contract_snapshot just to update a single column
* fix: sync health endpoint + increase idle replacements to 5
- Convert /health from async to sync so FastAPI runs it in a threadpool,
independent of the asyncio event loop. Prevents liveness probe timeouts
when the event loop is blocked by long-running sync DB operations.
- Replace aiohttp with urllib for GenVM probe (sync context).
- Increase MAX_IDLE_REPLACEMENTS from 3 to 5.
* perf: narrow update_consensus_history to avoid full-row ORM load
Replace ORM query(Transactions).one() with a narrow
SELECT consensus_history ... FOR UPDATE, build the updated JSONB in
Python, and write back with a raw SQL UPDATE. Avoids loading the
53MB contract_snapshot column entirely.
- SELECT only consensus_history (+ FOR UPDATE for row-level locking)
- Build new history dict in Python, write via CAST(:data AS jsonb)
- Remove unused flag_modified import
* fix: update health degradation tests for sync endpoint
Tests were using await on health_check() and mocking aiohttp.
Updated to call sync function directly and mock urllib.request.urlopen.
* perf: prioritize upgrade transactions in worker queue
Upgrade transactions (type=3) now jump ahead of regular pending
transactions in the claim queue, ensuring contract code updates
apply without waiting behind queued calls.
* fix: handle JSONB null in consensus_history jsonb_set operations
COALESCE(consensus_history, '{}'::jsonb) only catches SQL NULL, not
JSONB null (a valid JSONB scalar). When consensus_history contains
JSONB null, jsonb_set fails with "cannot set path in scalar".
Use jsonb_typeof(consensus_history) = 'object' to guard both
update_transaction_status and add_state_timestamp.
* fix: default genvm_healthy to False to prevent routing to unready pods
HealthCache.genvm_healthy defaulted to True, so both /health and /ready
returned 200 before the first background health check confirmed GenVM
was actually alive. Now pods start as not-ready and only accept traffic
after the checker validates GenVM.
Regression tests for jsonb_set operations when consensus_history contains SQL NULL, JSONB null, or empty object. Runs against real Postgres to catch SQL-level semantics that unit test mocks miss.
…gging (#1439) * feat: add generic error retry tracking to consensus worker + DB test coverage Worker: transactions that fail with generic exceptions now get exponential backoff (10s base) and cancel after 3 retries instead of silently retrying forever. Health endpoint exposes retry count for observability. Tests: 25 new DB integration tests covering update_transaction_status, consensus_history, set_transaction_result, timestamps, appeals, state_timestamp, get_transactions, contract_snapshot, and rotation_count. * feat: surface raw GenVM error detail in worker logs Add `detail` field to GenVMInternalError carrying the raw error string (truncated to 1000 chars). Worker logs now include the full Rust ModuleError with ctx (HTTP status, response body from OpenRouter), so we can see *why* LLM calls fail instead of just "LLM_EXECUTION_ERROR". * fix: consensus history tests pass leader receipt for get_transaction_by_hash compat _prepare_basic_transaction_data expects leader_result[0]["node_config"]["address"] to exist when consensus_results is present. Pass _MockReceipt with proper node_config instead of None. * style: fix black formatting for long line * fix: use base64-encoded result in _MockReceipt for _process_messages compat * fix: use checksum address in _MockReceipt for web3 validation * fix: increase healthcheck start_period to 180s for GenVM WASM precompilation GenVM precompiles 6+ WASM modules on first start (~18s each = ~108s total). The previous 40s start_period caused healthcheck failures in CI before the Flask app could even start. * fix: set genvm_healthy=True in readiness test (no GenVM manager in CI) Commit 621a568 changed HealthCache.genvm_healthy default from True to False. The readiness integration test has no GenVM manager, so the check short-circuits to 503 before evaluating the RPC router. Set the cache flag explicitly so the test exercises the intended code path. * fix: add Semaphore(8) to gen_call to prevent uvloop fd conflicts gen_call had no concurrency limit, allowing unbounded concurrent GenVM executions that cause uvloop file descriptor registry collisions (RuntimeError: File descriptor N is used by transport). Workers already use asyncio.Semaphore(8) in consensus/base.py; this adds the same limit to the jsonrpc gen_call path. Configurable via GENVM_MAX_CONCURRENT. * fix: rewrite HPA metric to measure demand not supply Replace worker_id-based genlayer_needed_workers metric with per-contract schedulable work measurement. Old metric counted distinct worker_ids from last hour (supply-based, double-counted during rolling upgrades). New metric counts distinct contracts with occupied (in-flight) or runnable (pending, no in-flight) transactions — directly measuring max useful parallelism since transactions per contract are processed sequentially. New gauges: genlayer_occupied_contracts, genlayer_runnable_contracts
* ci: optimize integration test pipeline (~3-4 min faster) - Cache GenVM precompile artifacts across CI runs (keyed on GENVM_TAG) - Add docker-compose.ci.yml override to mount host cache into containers - Enable pip cache on setup-python (cache-dependency-path for 3 req files) - Move Python setup + pip install before Docker build (overlap I/O) - Combine 3 pip install commands into 1 (single dependency resolution) - Bump test parallelism from -n 4 to -n 8 (I/O-bound tests benefit) - Reduce health check poll interval from 5s to 2s - Add mkdir -p safety in entrypoints for empty cache on first run * ci: replace 5-iteration validator CRUD test with single smoke test The full CRUD suite ran 5 iterations of create/delete, each triggering a GenVM LLM module restart (~14s per call, ~280s total). Replaced with a single create-delete smoke test (~30s) that still exercises the GenVM restart path. Exhaustive CRUD coverage lives in tests/db-sqlalchemy/validators_registry_test.py (<1s, no GenVM overhead). * fix(ci): revert to sequential pip installs to avoid version conflict requirements.txt pins requests==2.32.5 while backend/requirements.txt pins requests==2.32.3. Combined into a single pip install, pip correctly rejects the conflict. Revert to sequential installs (last writer wins) to match existing behavior. The version mismatch should be fixed in a separate PR. * perf: optimize consensus worker execution path * perf: optimize consensus-worker storage reads and add benchmarks
The permit-aware readiness gating was non-functional due to two bugs: 1. Schema mismatch: code expected flat keys (max_permits, current_permits) but manager returns nested (permits.max, permits.current). 2. Inverted formula: permits.current is the available count (semaphore value), not permits in use. The old formula (max - current) gave 0 at idle and 2 at full load. Now parses the actual schema and uses permits.current directly as available_permits, with len(executions) as the active execution count. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* fix: resolve N+1 query for triggered_transactions relationship Add eager loading with selectinload for the triggered_transactions relationship in TransactionsProcessor methods that fetch multiple transactions and call _parse_transaction_data. This eliminates the N+1 query problem detected by Sentry (GENLAYER-STUDIO-NA). Methods updated: - get_activated_transactions_older_than - get_transactions_for_address - get_transactions_for_block (conditionally, only when include_full_tx) - get_newer_transactions - transactions_in_process_by_contract Fixes GENLAYER-STUDIO-NA Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat: forward llm error to receipts * chore: increase wait time for pre-compile * feat: extracted error context from LLM calls in lua and store it in the transaction receipts * fix: - Removed error from receipt - Log error with context - Fixed race condition on triggered transactions --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
…_call (#1443) Prevents a single contract from exhausting the DB connection pool by hammering gen_call. Two layers: 1. Per-address sliding window rate limit (20 req/10s default) — rejects before any heavy resources are acquired 2. Non-blocking semaphore check — rejects immediately when all GenVM execution slots are occupied instead of queuing and holding DB connections Both return specific JSON-RPC error codes (-32005 rate limit, -32006 server busy) with retry_after_seconds so clients can back off. Adds /health/ratelimit endpoint for observability. Env vars: GEN_CALL_RATE_LIMIT_WINDOW, GEN_CALL_RATE_LIMIT_MAX, GENVM_MAX_CONCURRENT
Adds a Share2 icon button next to the copy-address button in ContractInfo.vue. Clicking it copies the shareable URL `<origin>/?import-contract=<address>` to the clipboard, which the app's import-contract query param handler can use to auto-import the contract. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
The _set_vote logic was comparing raw result bytes between leader and validator receipts. When both crashed with the same VM error (e.g. exit_code, OOM), they'd match byte-for-byte and vote AGREE — even though neither actually validated anything. New logic: - RETURN/USER_ERROR → check deterministic properties (state, pending_txs, execution_result) for DETERMINISTIC_VIOLATION, otherwise AGREE - VM_ERROR + timeout/internal → TIMEOUT - VM_ERROR + anything else (exit_code, OOM) → DISAGREE - nondet_disagree signal from GenVM → DISAGREE Result bytes are no longer compared for vote determination. Only execution outcome category and contract state matter.
…1449) - Orphaned transactions only degrade instanceHealth when count >= 3 - Add instanceHealthReasons array to system health payload whenever instanceHealth is not "healthy", sourced from health_cache.issues Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: HusseinAdeiza <yunusahusseinadeiza@gmail.com.com> Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com>
Contributor
Author
Edited/Blocked NotificationRenovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR. You can manually request rebase by checking the rebase/retry box above. |
* feat: add multi-wallet support via Reown AppKit + Wagmi Replaces MetaMask-only window.ethereum integration with Reown AppKit, enabling MetaMask, WalletConnect, Coinbase Wallet, Rabby, Trust Wallet, and any EIP-1193 compliant wallet. Renames account type 'metamask' to 'external' and adds graceful degradation when no project ID is set. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com> * fix: use correct RPC URL and fix AppKit provider reactivity - Changed genlayerLocalnet from module-level constant to factory function that reads VITE_JSON_RPC_SERVER_URL from runtime config - Fixed useAppKitProvider access: use toRefs() on the reactive object returned by useAppKitProvider so .value works correctly Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com> * fix: add error handling around AppKit init and bootstrap Wrap initAppKit() in try-catch so the app mounts even if wallet initialization fails. Add .catch() on bootstrap() to show a user-facing error message instead of a silent blank screen. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com> * fix: guard eth_call against missing 'to' and 'data' params Wagmi/AppKit sends eth_call requests without a 'to' field for internal chain checks. Return empty result instead of crashing with KeyError. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
…1277) * fix: correct typo in destination path variable for ncp * fix(json-box): correct typos 'becase' → 'because', 'assing' → 'assign' * fix(useWebSocketClient): 'disconnnect' → 'disconnect' * fix(useWebSocketClient.test.ts) disconnnect -> disconnect * fix(ideas.md): `stardard` → `standard` * fix(intelligent_oracle.py): `individial` → `individual` --------- Co-authored-by: Cristiam Da Silva <cristiam86@gmail.com>
# Conflicts: # .github/workflows/backend_integration_tests_pr.yml # .github/workflows/frontend-unit-tests.yml # .github/workflows/unit-tests-pr.yml # backend/database_handler/migration/requirements.txt # backend/protocol_rpc/requirements.txt # docker-compose.yml # docker/Dockerfile.database-migration # docker/Dockerfile.frontend # docker/Dockerfile.webdriver # docker/Dockerfile.webrequest # frontend/.nvmrc # frontend/package-lock.json # frontend/package.json # requirements.test.txt # requirements.txt # webrequest/requirements.txt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
==8.4.1→==9.0.2Release Notes
pytest-dev/pytest (pytest)
v9.0.2Compare Source
pytest 9.0.2 (2025-12-06)
Bug fixes
#13896: The terminal progress feature added in pytest 9.0.0 has been disabled by default, except on Windows, due to compatibility issues with some terminal emulators.
You may enable it again by passing
-p terminalprogress. We may enable it by default again once compatibility improves in the future.Additionally, when the environment variable
TERMisdumb, the escape codes are no longer emitted, even if the plugin is enabled.#13904: Fixed the TOML type of the
tmp_path_retention_countsettings in the API reference from number to string.#13946: The private
config.inicfgattribute was changed in a breaking manner in pytest 9.0.0.Due to its usage in the ecosystem, it is now restored to working order using a compatibility shim.
It will be deprecated in pytest 9.1 and removed in pytest 10.
#13965: Fixed quadratic-time behavior when handling
unittestsubtests in Python 3.10.Improved documentation
pytest's command-line flags <command-line-flags>.v9.0.1Compare Source
pytest 9.0.1 (2025-11-12)
Bug fixes
raise unittest.SkipTest.Packaging updates and notes for downstreams
version string can be passed into its
package_envthroughthe
SETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTESTenvironmentvariable as a part of the release process -- by
webknjaz.Contributor-facing changes
creating GitHub Releases without having a Git checkout on
disk -- by
bluetechandwebknjaz.version string can be passed into its
package_envthroughthe
SETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTESTenvironmentvariable as a part of the release process -- by
webknjaz.v9.0.0Compare Source
pytest 9.0.0 (2025-11-05)
New features
#1367: Support for subtests has been added.
subtests <subtests>are an alternative to parametrization, useful in situations where the parametrization values are not all known at collection time.Example:
Each assert failure or error is caught by the context manager and reported individually, giving a clear picture of all files that are missing a docstring.
In addition,
unittest.TestCase.subTestis now also supported.This feature was originally implemented as a separate plugin in pytest-subtests, but since then has been merged into the core.
#13743: Added support for native TOML configuration files.
While pytest, since version 6, supports configuration in
pyproject.tomlfiles under[tool.pytest.ini_options],it does so in an "INI compatibility mode", where all configuration values are treated as strings or list of strings.
Now, pytest supports the native TOML data model.
In
pyproject.toml, the native TOML configuration is under the[tool.pytest]table.The
[tool.pytest.ini_options]table remains supported, but both tables cannot be used at the same time.If you prefer to use a separate configuration file, or don't use
pyproject.toml, you can usepytest.tomlor.pytest.toml:The documentation now (sometimes) shows configuration snippets in both TOML and INI formats, in a tabbed interface.
See
config file formatsfor full details.#13823: Added a "strict mode" enabled by the
strictconfiguration option.When set to
true, thestrictoption currently enablesstrict_configstrict_markersstrict_parametrization_idsstrict_xfailThe individual strictness options can be explicitly set to override the global
strictsetting.The previously-deprecated
--strictcommand-line flag now enables strict mode.If pytest adds new strictness options in the future, they will also be enabled in strict mode.
Therefore, you should only enable strict mode if you use a pinned/locked version of pytest,
or if you want to proactively adopt new strictness options as they are added.
See
strict modefor more details.#13737: Added the
strict_parametrization_idsconfiguration option.When set, pytest emits an error if it detects non-unique parameter set IDs,
rather than automatically making the IDs unique by adding 0, 1, ... to them.
This can be particularly useful for catching unintended duplicates.
#13072: Added support for displaying test session progress in the terminal tab using the OSC 9;4; ANSI sequence.
When pytest runs in a supported terminal emulator like ConEmu, Gnome Terminal, Ptyxis, Windows Terminal, Kitty or Ghostty,
you'll see the progress in the terminal tab or window,
allowing you to monitor pytest's progress at a glance.
This feature is automatically enabled when running in a TTY. It is implemented as an internal plugin. If needed, it can be disabled as follows:
-p no:terminalprogresson the command line or via an environment variablePYTEST_ADDOPTS='-p no:terminalprogress'.addopts = "-p no:terminalprogress".#478: Support PEP420 (implicit namespace packages) as --pyargs target when
consider_namespace_packagesis true in the config.Previously, this option only impacted package imports, now it also impacts tests discovery.
#13678: Added a new
faulthandler_exit_on_timeoutconfiguration option set to "false" by default to let faulthandler interrupt the pytest process after a timeout in case of deadlock.Previously, a faulthandler timeout would only dump the traceback of all threads to stderr, but would not interrupt the pytest process.
-- by
ogrisel.#13829: Added support for configuration option aliases via the
aliasesparameter inParser.addini() <pytest.Parser.addini>.Plugins can now register alternative names for configuration options,
allowing for more flexibility in configuration naming and supporting backward compatibility when renaming options.
The canonical name always takes precedence if both the canonical name and an alias are specified in the configuration file.
Improvements in existing functionality
#13330: Having pytest configuration spread over more than one file (for example having both a
pytest.inifile andpyproject.tomlwith a[tool.pytest.ini_options]table) will now print a warning to make it clearer to the user that only one of them is actually used.-- by
sgaist#13574: The single argument
--versionno longer loads the entire plugin infrastructure, making it faster and more reliable when displaying only the pytest version.Passing
--versiontwice (e.g.,pytest --version --version) retains the original behavior, showing both the pytest version and plugin information.#13823: Added
strict_xfailas an alias to thexfail_strictoption,strict_configas an alias to the--strict-configflag,and
strict_markersas an alias to the--strict-markersflag.This makes all strictness options consistently have configuration options with the prefix
strict_.#13700: --junitxml no longer prints the generated xml file summary at the end of the pytest session when --quiet is given.
#13732: Previously, when filtering warnings, pytest would fail if the filter referenced a class that could not be imported. Now, this only outputs a message indicating the problem.
#13859: Clarify the error message for pytest.raises() when a regex match fails.
#13861: Better sentence structure in a test's expected error message. Previously, the error message would be "expected exception must be <expected>, but got <actual>". Now, it is "Expected <expected>, but got <actual>".
Removals and backward incompatible breaking changes
#12083: Fixed a bug where an invocation such as pytest a/ a/b would cause only tests from a/b to run, and not other tests under a/.
The fix entails a few breaking changes to how such overlapping arguments and duplicates are handled:
If you rely on these behaviors, consider using
--keep-duplicates <duplicate-paths>, which retains its existing behavior (including the bug).#13719: Support for Python 3.9 is dropped following its end of life.
#13766: Previously, pytest would assume it was running in a CI/CD environment if either of the environment variables $CI or $BUILD_NUMBER was defined;
now, CI mode is only activated if at least one of those variables is defined and set to a non-empty value.
#13779: PytestRemovedIn9Warning deprecation warnings are now errors by default.
Following our plan to remove deprecated features with as little disruption as
possible, all warnings of type
PytestRemovedIn9Warningnow generate errorsinstead of warning messages by default.
The affected features will be effectively removed in pytest 9.1, so please consult the
deprecationssection in the docs for directions on how to update existing code.In the pytest
9.0.Xseries, it is possible to change the errors back into warnings as astopgap measure by adding this to your
pytest.inifile:But this will stop working when pytest
9.1is released.If you have concerns about the removal of a specific feature, please add a
comment to
13779.Deprecations (removal in next major release)
monkeypatch.syspath_prepend() <pytest.MonkeyPatch.syspath_prepend>now issues a deprecation warning when the prepended path contains legacy namespace packages (those usingpkg_resources.declare_namespace()).Users should migrate to native namespace packages (
420).See
monkeypatch-fixup-namespace-packagesfor details.Bug fixes
#13445: Made the type annotations of
pytest.skipand friends more spec-complaint to have them work across more type checkers.#13537: Fixed a bug in which
ExceptionGroupwith onlySkippedexceptions in teardown was not handled correctly and showed as error.#13598: Fixed possible collection confusion on Windows when short paths and symlinks are involved.
#13716: Fixed a bug where a nonsensical invocation like
pytest x.py[a](a file cannot be parametrized) was silently treated aspytest x.py. This is now a usage error.#13722: Fixed a misleading assertion failure message when using
pytest.approxon mappings with differing lengths.#13773: Fixed the static fixture closure calculation to properly consider transitive dependencies requested by overridden fixtures.
#13816: Fixed
pytest.approxwhich now returns a clearer error message when comparing mappings with different keys.#13849: Hidden
.pytest.inifiles are now picked up as the config file even if empty.This was an inconsistency with non-hidden
pytest.ini.#13865: Fixed --show-capture with --tb=line.
#13522: Fixed
pytesterin subprocess mode ignored all :attr`pytester.plugins <pytest.Pytester.plugins>` except the first.Fixed
pytesterin subprocess mode silently ignored non-strpytester.plugins <pytest.Pytester.plugins>.Now it errors instead.
If you are affected by this, specify the plugin by name, or switch the affected tests to use
pytester.runpytest_inprocess <pytest.Pytester.runpytest_inprocess>explicitly instead.Packaging updates and notes for downstreams
iniconfigandpackagingwere bumped to1.0.1and22.0.0, respectively.Contributor-facing changes
lsofcommand hanging (e.g. due to unreachable network filesystems), with the affected selftests being skipped after 10 seconds.gh pr newcommand inscripts/prepare-release-pr.py.The script now uses
gh pr createwhich is compatible with GitHub CLI v2.0+.ogrisel.tox>=4is now required when contributing to pytest.pytest_addoption(),pytest_configure(), andcacheshow()functions incacheprovider.py.Miscellaneous internal changes
-o/--override-ini) are now processed during startup rather than duringconfig.getini() <pytest.Config.getini>.v8.4.2Compare Source
pytest 8.4.2 (2025-09-03)
Bug fixes
#13478: Fixed a crash when using
console_output_style{.interpreted-text role="confval"} withtimesand a module is skipped.#13530: Fixed a crash when using
pytest.approx{.interpreted-text role="func"} anddecimal.Decimal{.interpreted-text role="class"} instances with thedecimal.FloatOperation{.interpreted-text role="class"} trap set.#13549: No longer evaluate type annotations in Python
3.14when inspecting function signatures.This prevents crashes during module collection when modules do not explicitly use
from __future__ import annotationsand import types for annotations within aif TYPE_CHECKING:block.#13559: Added missing [int]{.title-ref} and [float]{.title-ref} variants to the [Literal]{.title-ref} type annotation of the [type]{.title-ref} parameter in
pytest.Parser.addini{.interpreted-text role="meth"}.#13563:
pytest.approx{.interpreted-text role="func"} now only importsnumpyif NumPy is already insys.modules. This fixes unconditional import behavior introduced in [8.4.0]{.title-ref}.Improved documentation
pytest_generate_testsis discovered in test modules/classes; other hooks must be inconftest.pyor plugins.Contributor-facing changes
-Wdefaultor a similar override.test_doctest_unexpected_exceptionin Python3.14.CIenvironment variable -- byogrisel{.interpreted-text role="user"}.Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.