Skip to content

chore(deps): update dependency pytest to v9#1398

Merged
cristiam86 merged 199 commits intostagingfrom
renovate/pytest-9.x
Feb 24, 2026
Merged

chore(deps): update dependency pytest to v9#1398
cristiam86 merged 199 commits intostagingfrom
renovate/pytest-9.x

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Jan 16, 2026

This PR contains the following updates:

Package Change Age Confidence
pytest (changelog) ==8.4.1==9.0.2 age confidence

Release Notes

pytest-dev/pytest (pytest)

v9.0.2

Compare 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 TERM is dumb, the escape codes are no longer emitted, even if the plugin is enabled.

  • #​13904: Fixed the TOML type of the tmp_path_retention_count settings in the API reference from number to string.

  • #​13946: The private config.inicfg attribute 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 unittest subtests in Python 3.10.

Improved documentation

  • #​4492: The API Reference now contains cross-reference-able documentation of pytest's command-line flags <command-line-flags>.

v9.0.1

Compare Source

pytest 9.0.1 (2025-11-12)

Bug fixes

  • #​13895: Restore support for skipping tests via raise unittest.SkipTest.
  • #​13896: The terminal progress plugin added in pytest 9.0 is now automatically disabled when iTerm2 is detected, it generated desktop notifications instead of the desired functionality.
  • #​13904: Fixed the TOML type of the verbosity settings in the API reference from number to string.
  • #​13910: Fixed UserWarning: Do not expect file_or_dir on some earlier Python 3.12 and 3.13 point versions.

Packaging updates and notes for downstreams

  • #​13933: The tox configuration has been adjusted to make sure the desired
    version string can be passed into its package_env through
    the SETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST environment
    variable as a part of the release process -- by webknjaz.

Contributor-facing changes

  • #​13891, #​13942: The CI/CD part of the release automation is now capable of
    creating GitHub Releases without having a Git checkout on
    disk -- by bluetech and webknjaz.
  • #​13933: The tox configuration has been adjusted to make sure the desired
    version string can be passed into its package_env through
    the SETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST environment
    variable as a part of the release process -- by webknjaz.

v9.0.0

Compare 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:

    def contains_docstring(p: Path) -> bool:
        """Return True if the given Python file contains a top-level docstring."""
        ...
    
    def test_py_files_contain_docstring(subtests: pytest.Subtests) -> None:
        for path in Path.cwd().glob("*.py"):
            with subtests.test(path=str(path)):
                assert contains_docstring(path)

    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.subTest is now also supported.

    This feature was originally implemented as a separate plugin in pytest-subtests, but since then has been merged into the core.

    [!NOTE]
    This feature is experimental and will likely evolve in future releases. By that we mean that we might change how subtests are reported on failure, but the functionality and how to use it are stable.

  • #​13743: Added support for native TOML configuration files.

    While pytest, since version 6, supports configuration in pyproject.toml files 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.

    # pyproject.toml
    [tool.pytest]
    minversion = "9.0"
    addopts = ["-ra", "-q"]
    testpaths = [
        "tests",
        "integration",
    ]

    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 use pytest.toml or .pytest.toml:

    # pytest.toml or .pytest.toml
    [pytest]
    minversion = "9.0"
    addopts = ["-ra", "-q"]
    testpaths = [
        "tests",
        "integration",
    ]

    The documentation now (sometimes) shows configuration snippets in both TOML and INI formats, in a tabbed interface.

    See config file formats for full details.

  • #​13823: Added a "strict mode" enabled by the strict configuration option.

    When set to true, the strict option currently enables

    • strict_config
    • strict_markers
    • strict_parametrization_ids
    • strict_xfail

    The individual strictness options can be explicitly set to override the global strict setting.

    The previously-deprecated --strict command-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 mode for more details.

  • #​13737: Added the strict_parametrization_ids configuration 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:

    • On a user level, using -p no:terminalprogress on the command line or via an environment variable PYTEST_ADDOPTS='-p no:terminalprogress'.
    • On a project configuration level, using addopts = "-p no:terminalprogress".
  • #​478: Support PEP420 (implicit namespace packages) as --pyargs target when consider_namespace_packages is true in the config.

    Previously, this option only impacted package imports, now it also impacts tests discovery.

  • #​13678: Added a new faulthandler_exit_on_timeout configuration 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 aliases parameter in Parser.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.ini file and pyproject.toml with 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 --version no longer loads the entire plugin infrastructure, making it faster and more reliable when displaying only the pytest version.

    Passing --version twice (e.g., pytest --version --version) retains the original behavior, showing both the pytest version and plugin information.

    [!NOTE]
    Since --version is now processed early, it only takes effect when passed directly via the command line. It will not work if set through other mechanisms, such as PYTEST_ADDOPTS or addopts.

  • #​13823: Added strict_xfail as an alias to the xfail_strict option,
    strict_config as an alias to the --strict-config flag,
    and strict_markers as an alias to the --strict-markers flag.
    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:

    1. pytest a/b a/ or pytest a/ a/b are equivalent to pytest a; if an argument overlaps another arguments, only the prefix remains.
    2. pytest x.py x.py is equivalent to pytest x.py; previously such an invocation was taken as an explicit request to run the tests from the file twice.

    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 PytestRemovedIn9Warning now generate errors
    instead of warning messages by default.

    The affected features will be effectively removed in pytest 9.1, so please consult the
    deprecations section in the docs for directions on how to update existing code.

    In the pytest 9.0.X series, it is possible to change the errors back into warnings as a
    stopgap measure by adding this to your pytest.ini file:

    [pytest]
    filterwarnings =
        ignore::pytest.PytestRemovedIn9Warning

    But this will stop working when pytest 9.1 is released.

    If you have concerns about the removal of a specific feature, please add a
    comment to 13779.

Deprecations (removal in next major release)

  • #​13807: monkeypatch.syspath_prepend() <pytest.MonkeyPatch.syspath_prepend> now issues a deprecation warning when the prepended path contains legacy namespace packages (those using pkg_resources.declare_namespace()).
    Users should migrate to native namespace packages (420).
    See monkeypatch-fixup-namespace-packages for details.

Bug fixes

  • #​13445: Made the type annotations of pytest.skip and friends more spec-complaint to have them work across more type checkers.

  • #​13537: Fixed a bug in which ExceptionGroup with only Skipped exceptions 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 as pytest x.py. This is now a usage error.

  • #​13722: Fixed a misleading assertion failure message when using pytest.approx on mappings with differing lengths.

  • #​13773: Fixed the static fixture closure calculation to properly consider transitive dependencies requested by overridden fixtures.

  • #​13816: Fixed pytest.approx which now returns a clearer error message when comparing mappings with different keys.

  • #​13849: Hidden .pytest.ini files 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 pytester in subprocess mode ignored all :attr`pytester.plugins <pytest.Pytester.plugins>` except the first.

    Fixed pytester in subprocess mode silently ignored non-str pytester.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

  • #​13791: Minimum requirements on iniconfig and packaging were bumped to 1.0.1 and 22.0.0, respectively.

Contributor-facing changes

  • #​12244: Fixed self-test failures when TERM=dumb.
  • #​12474: Added scheduled GitHub Action Workflow to run Sphinx linkchecks in repo documentation.
  • #​13621: pytest's own testsuite now handles the lsof command hanging (e.g. due to unreachable network filesystems), with the affected selftests being skipped after 10 seconds.
  • #​13638: Fixed deprecated gh pr new command in scripts/prepare-release-pr.py.
    The script now uses gh pr create which is compatible with GitHub CLI v2.0+.
  • #​13695: Flush stdout and stderr in Pytester.run to avoid truncated outputs in test_faulthandler.py::test_timeout on CI -- by ogrisel.
  • #​13771: Skip test_do_not_collect_symlink_siblings on Windows environments without symlink support to avoid false negatives.
  • #​13841: tox>=4 is now required when contributing to pytest.
  • #​13625: Added missing docstrings to pytest_addoption(), pytest_configure(), and cacheshow() functions in cacheprovider.py.

Miscellaneous internal changes

  • #​13830: Configuration overrides (-o/--override-ini) are now processed during startup rather than during config.getini() <pytest.Config.getini>.

v8.4.2

Compare Source

pytest 8.4.2 (2025-09-03)

Bug fixes

  • #​13478: Fixed a crash when using console_output_style{.interpreted-text role="confval"} with times and a module is skipped.

  • #​13530: Fixed a crash when using pytest.approx{.interpreted-text role="func"} and decimal.Decimal{.interpreted-text role="class"} instances with the decimal.FloatOperation{.interpreted-text role="class"} trap set.

  • #​13549: No longer evaluate type annotations in Python 3.14 when inspecting function signatures.

    This prevents crashes during module collection when modules do not explicitly use from __future__ import annotations and import types for annotations within a if 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 imports numpy if NumPy is already in sys.modules. This fixes unconditional import behavior introduced in [8.4.0]{.title-ref}.

Improved documentation

  • #​13577: Clarify that pytest_generate_tests is discovered in test modules/classes; other hooks must be in conftest.py or plugins.

Contributor-facing changes

  • #​13480: Self-testing: fixed a few test failures when run with -Wdefault or a similar override.
  • #​13547: Self-testing: corrected expected message for test_doctest_unexpected_exception in Python 3.14.
  • #​13684: Make pytest's own testsuite insensitive to the presence of the CI environment variable -- by ogrisel{.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.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

cristiam86 and others added 30 commits April 14, 2025 12:47
* 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
cristiam86 and others added 22 commits February 9, 2026 14:29
…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>
@renovate
Copy link
Contributor Author

renovate bot commented Feb 23, 2026

Edited/Blocked Notification

Renovate 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.

⚠️ Warning: custom changes will be lost.

cristiam86 and others added 6 commits February 23, 2026 18:29
* 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
@cristiam86 cristiam86 merged commit c913b02 into staging Feb 24, 2026
4 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.