chore: update dependencies from Staging#1392
Conversation
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…1499) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* fix: resolve dependency conflicts and adapt to FastAPI 0.133.0 - Downgrade websockets 16.0 -> 15.0.1 to fix conflict with web3 (<16.0.0) - Update solve_dependencies call for FastAPI 0.133.0 API changes (AsyncExitStack, scope keys, SolvedDependency dataclass) - Force TEST_WITH_MOCK_LLMS=true in unit tests before .env loading to prevent integration test config from breaking consensus timing * fixed dependencies
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…#1504) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
There was a problem hiding this comment.
Actionable comments posted: 11
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
backend/protocol_rpc/endpoints.py (1)
493-525:⚠️ Potential issue | 🔴 Critical
get_contract_schemacurrently references undefined runtime symbols.The function uses
sessionandgenvm_managerwithout defining or receiving them, so this path will fail when invoked.🐛 Suggested fix
async def get_contract_schema( accounts_manager: AccountsManager, - msg_handler: MessageHandler, + genvm_manager: GenVMManager, + msg_handler: IMessageHandler, contract_address: str, ) -> dict: - contract_snapshot = ContractSnapshot(contract_address, session) + contract_snapshot = ContractSnapshot(contract_address, accounts_manager.session)🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@backend/protocol_rpc/endpoints.py` around lines 493 - 525, get_contract_schema references undefined symbols session and genvm_manager; update the function signature to accept these dependencies (e.g., add parameters session and genvm_manager) and use them when constructing ContractSnapshot and Node respectively, or otherwise obtain them from a passed-in manager; update all call sites to pass the new session and genvm_manager arguments so ContractSnapshot(contract_address, session) and Node(..., manager=genvm_manager) have defined values.docker/Dockerfile.frontend (1)
19-21:⚠️ Potential issue | 🟡 MinorPotential Node version mismatch between build and runtime stages.
The
finalstage installs Node viaapk add --no-cache nodejs npmfromalpine:latest, which may provide a different Node version than the 24.1.0 used in the build stage. This could cause subtle runtime issues if there are version-specific behaviors.Consider using a consistent Node base image for the final stage or pinning the Alpine Node package version.
Suggested fix using consistent base image
-FROM alpine:latest AS final -RUN apk add --no-cache nodejs npm && \ +FROM node:24.1.0-alpine3.20 AS final +RUN \ addgroup --system frontend-user && adduser --system --ingroup frontend-user frontend-user && \ mkdir /app && chown -R frontend-user:frontend-user /app🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docker/Dockerfile.frontend` around lines 19 - 21, The final stage in the Dockerfile installs Node from alpine:latest which can differ from the build-stage Node 24.1.0; update the final stage to use the same Node runtime as the build (or pin the Alpine node package) so versions match: replace the apk install approach in the final stage with a consistent base (e.g., the same Node image used in the build stage) or explicitly pin the nodejs/npm package version, and ensure the changes are applied in the final stage definition (the "final" stage and its RUN that currently references alpine:latest and apk add --no-cache nodejs npm).
🧹 Nitpick comments (4)
explorer/package.json (1)
22-26: Declareengines.nodeto match upgraded toolchain requirements.Line 15 (
next@16.1.6requiringnode >=20.9.0) and Line 25 (eslint@10.0.0requiringnode ^20.19.0 || ^22.13.0 || >=24) both impose Node minimums. Without anenginesfield, unsupported Node versions can still install and fail later during lint/build.💡 Proposed change
{ "name": "studio-explorer", "version": "0.1.0", "private": true, + "engines": { + "node": ">=20.19.0" + }, "scripts": { "dev": "next dev", "build": "next build",🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@explorer/package.json` around lines 22 - 26, Add a top-level "engines": { "node": ">=20.19.0" } field to package.json so the declared Node version meets the upgraded toolchain (Next 16.1.6 and ESLint 10) requirements; update the JSON in the package.json root (where dependencies like "@types/node" and "eslint" are listed) to include the engines.node constraint and then re-run install/lint/build to verify compatibility.backend/protocol_rpc/endpoints.py (1)
1410-1421: Add an explicit return type toregister_all_rpc_endpoints.Please annotate this function with
-> Noneto satisfy repository typing rules.As per coding guidelines
**/*.py: Include type hints in all Python code.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@backend/protocol_rpc/endpoints.py` around lines 1410 - 1421, The function register_all_rpc_endpoints is missing an explicit return type; update its signature to include an explicit return annotation (-> None) so it complies with the repository typing rules and coding guidelines; locate the register_all_rpc_endpoints definition in backend/protocol_rpc/endpoints.py and add the -> None return type to the function signature while leaving the existing parameters (jsonrpc, msg_handler, request_session, accounts_manager, transactions_processor, validators_registry, llm_provider_registry, consensus, consensus_service, transactions_parser) unchanged.frontend/eslint.config.js (1)
15-15: Migrate to the recommended v14.3.0+ ESLint config API.The current
vueTsEslintConfig()callable export is the deprecated legacy API kept for backwards compatibility with v≤14.2.x. In v14.7.0, usedefineConfigWithVueTs+vueTsConfigs.recommendedinstead:Recommended migration
import pluginVue from 'eslint-plugin-vue' import { defineConfigWithVueTs, vueTsConfigs } from '@vue/eslint-config-typescript' import skipFormatting from '@vue/eslint-config-prettier/skip-formatting' export default defineConfigWithVueTs( { name: 'app/files-to-lint', files: ['**/*.{ts,mts,tsx,vue}'], }, { name: 'app/files-to-ignore', ignores: ['**/dist/**', '**/dist-ssr/**', '**/coverage/**'], }, pluginVue.configs['flat/essential'], vueTsConfigs.recommended, { rules: { 'vue/multi-word-component-names': 'off', 'vue/block-lang': 'off', '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/no-unused-expressions': 'off', '@typescript-eslint/no-unused-vars': 'off', '@typescript-eslint/no-empty-object-type': 'off', '@typescript-eslint/no-unsafe-function-type': 'off', }, }, skipFormatting, )🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@frontend/eslint.config.js` at line 15, The config is using the deprecated vueTsEslintConfig() legacy API; replace it with the new defineConfigWithVueTs call and include vueTsConfigs.recommended (and optional pluginVue.configs['flat/essential'] plus skipFormatting) as shown in the migration guidance. Update the export to call defineConfigWithVueTs(...) with your existing name/files/ignores and rules, and include vueTsConfigs.recommended in the config list instead of vueTsEslintConfig so the project uses the v14.3.0+ API.frontend/package.json (1)
19-19: Prefer non-mutatinglintand a separatelint:fixscript.The
lintscript currently runs with--fix, which auto-mutates files in the pre-commit hook. This is problematic as it modifies files silently on commit. Splitting into separatelint(check-only) andlint:fix(auto-fix) scripts provides clearer intent and prevents unexpected mutations.Suggested script split
- "lint": "eslint --fix", + "lint": "eslint .", + "lint:fix": "eslint . --fix",Update
.pre-commit-config.yamlto uselint:fixif auto-fixing on commit is desired, or keeplintfor check-only behavior in the hook.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@frontend/package.json` at line 19, Change the package.json scripts so "lint" is check-only (remove the --fix flag) and add a new "lint:fix" script that runs the linter with --fix; then update .pre-commit-config.yaml to call "npm run lint:fix" only if you want auto-fixing on commit, otherwise keep it calling "npm run lint" for check-only behavior. Ensure you modify the existing "lint" script name and add "lint:fix" (referencing the "lint" and "lint:fix" script symbols) so hooks and CI clearly distinguish between non-mutating checks and auto-fix operations.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.github/workflows/.pre-commit.yml:
- Line 18: Update the CI workflows so the yaml key python-version uses "3.12"
instead of "3.14"/"3.14.x" in all workflow files (the pre-commit workflow, the
backend_integration_tests_pr workflow, and the unit-tests-pr workflow); search
each workflow for the python-version key and replace the version string with
"3.12" to match the project's declared language_version in
.pre-commit-config.yaml and AGENTS.md.
In @.github/workflows/load-test-oha.yml:
- Around line 41-60: The workflow contains a duplicated "Install oha" step that
repeats apt-get, curl and oha download logic (variables OHA_VERSION and
LATEST_VERSION, the curl fallback logic and chmod/mv/oha --version); remove the
duplicate block so only one "Install oha" step remains, keeping the correct
version-resolution logic (use OHA_VERSION fallback to latest via LATEST_VERSION
and the curl fallback) and ensure any callers or subsequent steps still
reference the single step.
In `@backend/protocol_rpc/endpoints.py`:
- Around line 1429-1534: Several RPC registrations pass arguments in the wrong
order or reference undefined callables; update each register_rpc_endpoint
partial to match the actual handler signatures and replace any undefined names.
Specifically: fix partial(fund_account, accounts_manager,
transactions_processor) to supply parameters in the same order as the
fund_account function signature; update partial(get_contract_schema_for_code,
msg_handler) to call the actual function that expects (msg_handler, <other
args?>) or reorder/add missing dependencies to match
get_contract_schema_for_code; correct partial(send_raw_transaction,
transactions_processor, accounts_manager, transactions_parser,
consensus_service) to match send_raw_transaction's parameter order/types; locate
and replace any registrations using undefined callables like call and
set_transaction_appeal with the correct handler functions (e.g., eth_call should
partial the actual eth_call handler with request_session, accounts_manager,
msg_handler, transactions_parser in correct order). Ensure all partial(...)
argument ordering and presence exactly mirror the target functions' signatures
(validators_registry, accounts_manager, llm_provider_registry, msg_handler,
transactions_processor, request_session, transactions_parser, consensus_service,
etc.) before re-registering.
- Around line 1410-1423: The register_all_rpc_endpoints function uses
undefined/incorrect symbols: replace the undefined JSONRPC type import with the
correct type used in the codebase (or import/alias it), import the concrete
MessageHandler type (the code currently only imports IMessageHandler), and stop
calling generate_rpc_endpoint as a standalone function—instantiate
FastAPIEndpointRegistry with msg_handler and call its instance method
generate_rpc_endpoint; update the function signature/types to reference the
correct JSONRPC symbol and MessageHandler, create registry =
FastAPIEndpointRegistry(msg_handler) and use registry.generate_rpc_endpoint(...)
where needed, and add any missing imports for FastAPIEndpointRegistry,
MessageHandler and the correct JSONRPC type.
In `@backend/requirements.txt`:
- Line 1: contract_linter.py currently imports JSONRPCError from
flask_jsonrpc.exceptions which is incompatible with Flask-JSONRPC 4.0.0; update
the import to use the internal wrapper by replacing any from
flask_jsonrpc.exceptions import JSONRPCError with from
backend.protocol_rpc.exceptions import JSONRPCError, and ensure all usages in
contract_linter.py (e.g., where JSONRPCError is raised or instantiated) follow
the internal wrapper's constructor signature so no direct dependency on the
upstream constructor behavior remains.
In `@docker-compose.yml`:
- Line 238: The docker image was bumped to "image: postgres:18-alpine" but
major-version upgrades require data migration for existing postgres_data
volumes; do not reuse the old volume in-place—either reinitialize the new PG18
cluster with matching checksum settings (initialize with initdb flag
--no-data-checksums) or perform a proper pg_upgrade from the PG16 cluster (or
dump/restore) to migrate data; ensure you run pg_upgrade with both clusters
available and matching checksum settings and update any deployment scripts/docs
to call pg_upgrade or a dump/restore workflow instead of simply switching to
image: postgres:18-alpine.
In `@docker/Dockerfile.database-migration`:
- Line 2: The base image in Dockerfile.database-migration uses "FROM
python:3.14.3-slim" which mismatches the backend and project target; change the
FROM image tag to the project's target Python version (match the backend
Dockerfile’s Python 3.12 image, e.g. use "python:3.12-slim") so migrations run
with the same runtime as the backend and AGENTS.md.
In `@docker/Dockerfile.frontend`:
- Line 1: The Dockerfile uses "FROM node:24.1.0-alpine3.20" (a Current release)
and mixes that build stage with a final stage using "alpine:latest" plus "nodejs
npm", which can cause runtime Node version mismatches and expose breaking
changes (OpenSSL/TLS, native addon rebuilds, npm lifecycle differences); update
the Dockerfile.frontend to pin and align Node versions across stages by either
switching to the current LTS image (e.g., Node 18/20 LTS) or using a matching
node:<version>-alpine image for both build and final stages, remove use of
alpine:latest and avoid installing nodejs via distro packages, and add a note to
rebuild/native-module steps (e.g., sharp/bcrypt) and CI tests for
fetch/AbortSignal/TLS behavior to verify compatibility before production.
In `@frontend/eslint.config.js`:
- Line 8: Update the files glob in the eslint config (the files:
['**/*.{ts,mts,tsx,vue}'] entry) to include JS variants (e.g.
'**/*.{js,mjs,cjs,ts,mts,tsx,vue}') and remove the global disabling of
TypeScript safety rules in the top-level rules/overrides block (the section that
currently turns off several `@typescript-eslint` checks); instead re-enable those
critical rules (for example `@typescript-eslint/strict-boolean-expressions`,
`@typescript-eslint/no-explicit-any`, `@typescript-eslint/ban-ts-comment`) or
restrict exceptions to narrowly targeted overrides for specific files only, and
ensure parserOptions/project is configured so TypeScript rules run correctly.
In `@tests/unit/__init__.py`:
- Line 3: Current import-time code force-sets the environment variable
TEST_WITH_MOCK_LLMS to "true", overriding explicit CI/local settings; change it
to only set a default when the variable is not already present (e.g., use a
conditional or env.setdefault) so explicit TEST_WITH_MOCK_LLMS values provided
by CI or users are preserved; update the statement in tests/unit/__init__.py
that currently sets TEST_WITH_MOCK_LLMS to instead only assign a default if the
key is missing.
In `@tests/unit/consensus/test_base.py`:
- Around line 1606-1607: Remove the duplicated wait call to
check_contract_state_with_timeout that occurs immediately before the appeal;
specifically, delete the second invocation of
check_contract_state_with_timeout(contract_db, transaction.to_address, {}, {})
so the earlier call (the one that already awaited the state change) remains and
the appeal path does not consume the synchronization event; ensure only the
original check_contract_state_with_timeout call (associated with contract_db and
transaction.to_address) remains before performing the appeal and subsequent
assertions.
---
Outside diff comments:
In `@backend/protocol_rpc/endpoints.py`:
- Around line 493-525: get_contract_schema references undefined symbols session
and genvm_manager; update the function signature to accept these dependencies
(e.g., add parameters session and genvm_manager) and use them when constructing
ContractSnapshot and Node respectively, or otherwise obtain them from a
passed-in manager; update all call sites to pass the new session and
genvm_manager arguments so ContractSnapshot(contract_address, session) and
Node(..., manager=genvm_manager) have defined values.
In `@docker/Dockerfile.frontend`:
- Around line 19-21: The final stage in the Dockerfile installs Node from
alpine:latest which can differ from the build-stage Node 24.1.0; update the
final stage to use the same Node runtime as the build (or pin the Alpine node
package) so versions match: replace the apk install approach in the final stage
with a consistent base (e.g., the same Node image used in the build stage) or
explicitly pin the nodejs/npm package version, and ensure the changes are
applied in the final stage definition (the "final" stage and its RUN that
currently references alpine:latest and apk add --no-cache nodejs npm).
---
Nitpick comments:
In `@backend/protocol_rpc/endpoints.py`:
- Around line 1410-1421: The function register_all_rpc_endpoints is missing an
explicit return type; update its signature to include an explicit return
annotation (-> None) so it complies with the repository typing rules and coding
guidelines; locate the register_all_rpc_endpoints definition in
backend/protocol_rpc/endpoints.py and add the -> None return type to the
function signature while leaving the existing parameters (jsonrpc, msg_handler,
request_session, accounts_manager, transactions_processor, validators_registry,
llm_provider_registry, consensus, consensus_service, transactions_parser)
unchanged.
In `@explorer/package.json`:
- Around line 22-26: Add a top-level "engines": { "node": ">=20.19.0" } field to
package.json so the declared Node version meets the upgraded toolchain (Next
16.1.6 and ESLint 10) requirements; update the JSON in the package.json root
(where dependencies like "@types/node" and "eslint" are listed) to include the
engines.node constraint and then re-run install/lint/build to verify
compatibility.
In `@frontend/eslint.config.js`:
- Line 15: The config is using the deprecated vueTsEslintConfig() legacy API;
replace it with the new defineConfigWithVueTs call and include
vueTsConfigs.recommended (and optional pluginVue.configs['flat/essential'] plus
skipFormatting) as shown in the migration guidance. Update the export to call
defineConfigWithVueTs(...) with your existing name/files/ignores and rules, and
include vueTsConfigs.recommended in the config list instead of vueTsEslintConfig
so the project uses the v14.3.0+ API.
In `@frontend/package.json`:
- Line 19: Change the package.json scripts so "lint" is check-only (remove the
--fix flag) and add a new "lint:fix" script that runs the linter with --fix;
then update .pre-commit-config.yaml to call "npm run lint:fix" only if you want
auto-fixing on commit, otherwise keep it calling "npm run lint" for check-only
behavior. Ensure you modify the existing "lint" script name and add "lint:fix"
(referencing the "lint" and "lint:fix" script symbols) so hooks and CI clearly
distinguish between non-mutating checks and auto-fix operations.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: e3ae7ef6-04e0-432a-965e-c8fbe3a12a25
⛔ Files ignored due to path filters (1)
frontend/package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (41)
.github/workflows/.pre-commit.yml.github/workflows/backend_integration_tests_pr.yml.github/workflows/docker-build-and-push-image.yml.github/workflows/docker-build-test-native-arm.yml.github/workflows/frontend-unit-tests.yml.github/workflows/load-test-oha.yml.github/workflows/manual-docker-release.yml.github/workflows/release-from-main.yml.github/workflows/scan-codeql.yml.github/workflows/test-semgrep.yml.github/workflows/unit-tests-pr.ymlbackend/database_handler/migration/requirements.txtbackend/protocol_rpc/endpoints.pybackend/requirements.txtdocker-compose.ymldocker/Dockerfile.database-migrationdocker/Dockerfile.explorerdocker/Dockerfile.frontendexplorer/package.jsonfrontend/.eslintrc.cjsfrontend/.nvmrcfrontend/eslint.config.jsfrontend/package.jsonfrontend/src/components/JsonViewer/json-box.vuefrontend/src/components/JsonViewer/types/json-array.vuefrontend/src/components/JsonViewer/types/json-object.vuefrontend/src/components/JsonViewer/types/json-regexp.vuefrontend/src/components/JsonViewer/types/json-string.vuefrontend/src/components/Simulator/AccountItem.vuefrontend/src/components/Simulator/ConfigField.vuefrontend/src/components/Simulator/ContractItem.vuefrontend/src/components/Simulator/ContractTab.vuefrontend/src/components/Tutorial/TutorialContainer.vuefrontend/src/components/Tutorial/TutorialStep.vuefrontend/src/constants/pythonSyntax.tsfrontend/tsconfig.node.jsonhardhat/package.jsonrequirements.test.txtrequirements.txttests/unit/__init__.pytests/unit/consensus/test_base.py
💤 Files with no reviewable changes (3)
- frontend/src/constants/pythonSyntax.ts
- frontend/.eslintrc.cjs
- frontend/src/components/JsonViewer/types/json-regexp.vue
- Align Python version to 3.12 across CI workflows and DB migration Dockerfile - Rollback PostgreSQL from 18-alpine to 16-alpine to avoid major version migration - Fix Flask-JSONRPC 4.0 breaking import in contract_linter.py - Re-enable TypeScript safety rules in ESLint config (as warnings) - Remove unused register_all_rpc_endpoints function with broken partials - Remove duplicate check_contract_state_with_timeout call in test - Remove duplicate "Install oha" step in load test workflow - Use setdefault for TEST_WITH_MOCK_LLMS env var
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
- Align Python version to 3.12 across CI workflows and DB migration Dockerfile - Rollback PostgreSQL from 18-alpine to 16-alpine to avoid major version migration - Fix Flask-JSONRPC 4.0 breaking import in contract_linter.py - Re-enable TypeScript safety rules in ESLint config (as warnings) - Remove unused register_all_rpc_endpoints function with broken partials - Remove duplicate check_contract_state_with_timeout call in test - Remove duplicate "Install oha" step in load test workflow - Use setdefault for TEST_WITH_MOCK_LLMS env var
- Restore 6 functions removed from endpoints.py: get_contract_deployer, get_contract_nonce, admin_upgrade_contract_code, dev_get_pool_status, admin_create_tier, admin_list_tiers, admin_create_api_key, admin_deactivate_api_key - Fix FastAPI solve_dependencies compatibility in rpc_endpoint_manager.py (AsyncExitStack, scope keys, SolvedDependency attributes) - Fix test_leader_appeal race condition by setting finality_window_time=60 - Remove cosmetic print warnings from test_helpers.py
bake-action v6 defaults to git source instead of local checkout, causing COPY .env to fail since .env is gitignored. Adding source: . uses the local checkout where .env was already copied from .env.example.
The build context is ./ (repo root), so COPY ../.env resolved to /.env (filesystem root) which doesn't exist. Changed to COPY .env . which correctly references the file at the build context root. The old path worked with bake-action v5 due to lenient BuildKit path resolution.
bake-action v6 uses git context by default, where .env doesn't exist (gitignored). The COPY .env was redundant anyway: - consensus-worker: docker-compose mounts .env as a volume at runtime - database-migration: uses environment vars from docker-compose - backend Dockerfile (jsonrpc) never had COPY .env and works fine Also removes ineffective source: . from bake-action config (v6 converts '.' to empty string, which fails the truthiness check in the action code and silently falls back to git context).
There was a problem hiding this comment.
♻️ Duplicate comments (1)
frontend/eslint.config.js (1)
20-24:⚠️ Potential issue | 🟠 MajorRestore TypeScript safety rules to blocking severity.
Keeping these as
warnweakens strict lint enforcement and allows unsafe patterns through CI. Please set them toerror(or narrowly scope exceptions to specific files only).♻️ Suggested adjustment
{ rules: { 'vue/multi-word-component-names': 'off', 'vue/block-lang': 'off', - '@typescript-eslint/no-explicit-any': 'warn', - '@typescript-eslint/no-unused-expressions': 'warn', - '@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }], - '@typescript-eslint/no-empty-object-type': 'warn', - '@typescript-eslint/no-unsafe-function-type': 'warn', + '@typescript-eslint/no-explicit-any': 'error', + '@typescript-eslint/no-unused-expressions': 'error', + '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }], + '@typescript-eslint/no-empty-object-type': 'error', + '@typescript-eslint/no-unsafe-function-type': 'error', }, },As per coding guidelines:
**/*.{js,ts,tsx}must use ESLint and Prettier with strict mode enabled.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@frontend/eslint.config.js` around lines 20 - 24, Update the listed TypeScript ESLint rules from 'warn' to 'error' to restore strict lint enforcement: change '@typescript-eslint/no-explicit-any', '@typescript-eslint/no-unused-expressions', '@typescript-eslint/no-unused-vars' (keep argsIgnorePattern: '^_' option), '@typescript-eslint/no-empty-object-type', and '@typescript-eslint/no-unsafe-function-type' to severity 'error' in the ESLint config (frontend/eslint.config.js); if any true positives require exceptions, scope them via overrides for specific files rather than lowering these global severities.
🧹 Nitpick comments (1)
backend/protocol_rpc/rpc_endpoint_manager.py (1)
356-361: Remove duplicatedmsg_handleroverride.
msg_handleris set twice in the same merge path. Keep a single override after all merges to reduce noise and avoid drift.Refactor diff
- call_kwargs = dict(values) - if "msg_handler" in call_kwargs: - call_kwargs["msg_handler"] = session_logger - call_kwargs.update(bound_arguments) - if "msg_handler" in call_kwargs: - call_kwargs["msg_handler"] = session_logger + call_kwargs = dict(values) + call_kwargs.update(bound_arguments) + if "msg_handler" in call_kwargs: + call_kwargs["msg_handler"] = session_logger🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@backend/protocol_rpc/rpc_endpoint_manager.py` around lines 356 - 361, The duplicate msg_handler override in the call argument assembly should be removed: in rpc_endpoint_manager.py where call_kwargs is built from dict(values) and then merged with bound_arguments (symbols: call_kwargs, dict(values), bound_arguments, session_logger), eliminate the first (or the earlier) conditional block that sets call_kwargs["msg_handler"] = session_logger so that only a single override remains after all merges (i.e., keep the conditional that sets msg_handler only once after call_kwargs.update(bound_arguments)).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Duplicate comments:
In `@frontend/eslint.config.js`:
- Around line 20-24: Update the listed TypeScript ESLint rules from 'warn' to
'error' to restore strict lint enforcement: change
'@typescript-eslint/no-explicit-any',
'@typescript-eslint/no-unused-expressions', '@typescript-eslint/no-unused-vars'
(keep argsIgnorePattern: '^_' option),
'@typescript-eslint/no-empty-object-type', and
'@typescript-eslint/no-unsafe-function-type' to severity 'error' in the ESLint
config (frontend/eslint.config.js); if any true positives require exceptions,
scope them via overrides for specific files rather than lowering these global
severities.
---
Nitpick comments:
In `@backend/protocol_rpc/rpc_endpoint_manager.py`:
- Around line 356-361: The duplicate msg_handler override in the call argument
assembly should be removed: in rpc_endpoint_manager.py where call_kwargs is
built from dict(values) and then merged with bound_arguments (symbols:
call_kwargs, dict(values), bound_arguments, session_logger), eliminate the first
(or the earlier) conditional block that sets call_kwargs["msg_handler"] =
session_logger so that only a single override remains after all merges (i.e.,
keep the conditional that sets msg_handler only once after
call_kwargs.update(bound_arguments)).
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 57d6655b-689a-4167-864c-63679cab2a3d
📒 Files selected for processing (14)
.github/workflows/.pre-commit.yml.github/workflows/backend_integration_tests_pr.yml.github/workflows/load-test-oha.yml.github/workflows/unit-tests-pr.ymlbackend/protocol_rpc/contract_linter.pybackend/protocol_rpc/endpoints.pybackend/protocol_rpc/rpc_endpoint_manager.pydocker-compose.ymldocker/Dockerfile.consensus-workerdocker/Dockerfile.database-migrationfrontend/eslint.config.jstests/unit/__init__.pytests/unit/consensus/test_base.pytests/unit/consensus/test_helpers.py
💤 Files with no reviewable changes (4)
- docker/Dockerfile.consensus-worker
- tests/unit/consensus/test_helpers.py
- docker/Dockerfile.database-migration
- backend/protocol_rpc/endpoints.py
🚧 Files skipped from review as they are similar to previous changes (4)
- docker-compose.yml
- .github/workflows/.pre-commit.yml
- .github/workflows/load-test-oha.yml
- .github/workflows/backend_integration_tests_pr.yml
|
🎉 This PR is included in version 0.106.1 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
Fixes #issue-number-here
What
Why
Testing done
Decisions made
Checks
Reviewing tips
User facing release notes
Summary by CodeRabbit
Chores
Style
Tests