Skip to content

Sync upstream v11.1.1 (merge conflicts)#72

Open
JOY (JOY) wants to merge 35 commits into
mainfrom
sync-upstream-v11.1.1
Open

Sync upstream v11.1.1 (merge conflicts)#72
JOY (JOY) wants to merge 35 commits into
mainfrom
sync-upstream-v11.1.1

Conversation

@JOY
Copy link
Copy Markdown

Upstream Sync - v11.1.1

Auto-merge with upstream v11.1.1 failed. Version/workflow conflicts were auto-resolved,
but the following files have code conflicts that need manual resolution:

docker-compose/envs/common-blockscout.env

To resolve:

  1. Check out this branch locally
  2. Resolve remaining conflicts
  3. Push and merge this PR
  4. Then create tag v11.1.1 to trigger Docker build

Upstream release notes

Alexander Kolotov (akolotov) and others added 30 commits May 8, 2026 18:45
Co-authored-by: Alexander Kolotov <alexander.kolotov@gmail.com>
Co-authored-by: Maxim Filonov <53992153+sl1depengwyn@users.noreply.github.com>
Co-authored-by: Victor Baranov <baranov.viktor.27@gmail.com>
Co-authored-by: Qwerty5Uiop <105209995+Qwerty5Uiop@users.noreply.github.com>
…oints (blockscout#14227)

Co-authored-by: Alexander Kolotov <alexander.kolotov@gmail.com>
Co-authored-by: Maxim Filonov <53992153+sl1depengwyn@users.noreply.github.com>
Co-authored-by: Victor Baranov <baranov.viktor.27@gmail.com>
Co-authored-by: Qwerty5Uiop <105209995+Qwerty5Uiop@users.noreply.github.com>
…ut#14251)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Alexander Kolotov <alexander.kolotov@gmail.com>
Co-authored-by: Victor Baranov <baranov.viktor.27@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Nikita Pozdniakov <nikitosing4@mail.ru>
Co-authored-by: Maxim Filonov <53992153+sl1depengwyn@users.noreply.github.com>
Co-authored-by: Qwerty5Uiop <alex000010@bk.ru>
Co-authored-by: Qwerty5Uiop <105209995+Qwerty5Uiop@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…#14350)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Victor Baranov <baranov.viktor.27@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…CY (blockscout#14390)

Co-authored-by: Victor Baranov <baranov.viktor.27@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@chatgpt-codex-connector
Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a comprehensive OpenAPI specification framework, including a new inspector agent, detailed authoring skills, and extensive annotations for the Advanced Filter and Arbitrum controllers. It also standardizes parameter handling by migrating to atom-keyed maps via the CastAndValidate plug. Several critical issues were identified in the AdvancedFilterController, including potential runtime crashes due to strict pattern matching on optional parameters, a missing module attribute that would prevent compilation, and a pagination bug where an atom key is passed instead of a required string key.


next_page_params =
next_page |> next_page_params(advanced_filters, Map.take(params, ["items_count"]), false, &paging_params/1)
next_page |> next_page_params(advanced_filters, Map.take(params, [:items_count]), false, &paging_params/1)
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

Passing :items_count as an atom key to next_page_params/5 will likely break the cumulative item count in pagination. The standard BlockScoutWeb.Chain.next_page_params/5 helper expects string keys in the extra_params map. Using an atom key here will result in the helper failing to find the existing count, causing it to reset to 0 on every page.

      next_page |> next_page_params(advanced_filters, %{"items_count" => params[:items_count]}, false, &paging_params/1)

@spec list_methods(Plug.Conn.t(), map()) :: {:method, nil | Explorer.Chain.ContractMethod.t()} | Plug.Conn.t()
def list_methods(conn, %{"q" => query}) do
@spec list_methods(Plug.Conn.t(), map()) :: Plug.Conn.t()
def list_methods(conn, %{q: query}) when is_binary(query) do
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The list_methods/2 action now strictly matches on the presence of the q parameter. Since q is defined as optional in the OpenAPI spec, a request without this parameter will result in a FunctionClauseError. A fallback clause should be added to handle the default case as described in the endpoint documentation.

defp merge_methods(a, b) do
(List.wrap(a) ++ List.wrap(b))
|> Enum.uniq()
|> Enum.take(@methods_filter_limit)
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The module attribute @methods_filter_limit does not appear to be defined in this module based on the provided diff. This will cause a compilation error. Please ensure it is defined, likely near the other method-related attributes at the top of the file.

Comment on lines 658 to 664
defp paging_options(%{
"block_number" => block_number_string,
"transaction_index" => transaction_index_string,
"internal_transaction_index" => internal_transaction_index_string,
"token_transfer_index" => token_transfer_index_string,
"token_transfer_batch_index" => token_transfer_batch_index_string
block_number: block_number_string,
transaction_index: transaction_index_string,
internal_transaction_index: internal_transaction_index_string,
token_transfer_index: token_transfer_index_string,
token_transfer_batch_index: token_transfer_batch_index_string
}) do
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The strict map pattern match in paging_options/1 will cause a FunctionClauseError when any of the optional pagination parameters are missing from the request. Since CastAndValidate does not populate missing optional parameters in the atom-keyed map, this function should handle partial maps or use Map.get/3.

  defp paging_options(params) do
    block_number_string = params[:block_number]
    transaction_index_string = params[:transaction_index]
    internal_transaction_index_string = params[:internal_transaction_index]
    token_transfer_index_string = params[:token_transfer_index]
    token_transfer_batch_index_string = params[:token_transfer_batch_index]

@JOY JOY (JOY) force-pushed the sync-upstream-v11.1.1 branch from 64009d6 to 8c84e94 Compare May 25, 2026 20:56
@JOY JOY (JOY) force-pushed the sync-upstream-v11.1.1 branch from 8c84e94 to 709702b Compare May 26, 2026 05:58
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.

5 participants