Skip to content

fix(review): замечания CodeRabbit к релизному PR #68 - #69

Merged
Platonenkov merged 1 commit into
devfrom
claude/coderabbit-pr68-review-fixes
Jul 29, 2026
Merged

fix(review): замечания CodeRabbit к релизному PR #68#69
Platonenkov merged 1 commit into
devfrom
claude/coderabbit-pr68-review-fixes

Conversation

@Platonenkov

Copy link
Copy Markdown
Collaborator

Разбор ревью CodeRabbit к релизному PR #68. Десять находок: 4 инлайн, 2 «outside diff», 4 нитпика. Восемь применены, две отклонены с обоснованием, ещё одна оказалась уже выполненной.

Применено

🟠 Порт 6007 CI-стенда — только на loopback. В docker-compose.batchv11.yml он и так публиковался как 127.0.0.1:6007, а в CI-стенде я оставил 6007:6007 на все интерфейсы, притом что креды лежат в rippled.cfg открытым текстом.

🟡 ValidateCheckCreate требует от InvoiceID 256-битное hex-значение. sfInvoiceID — это Hash256, и в этом же релизе ровно такое правило добавлено для WalletLocator в AccountSet и SignerListSet; CheckCreate остался единственным местом, где проверялось только is string. Малформед проходил валидацию и падал позже уже внутри кодека — с ошибкой кодирования вместо ValidationException. Текст исключения оставлен прежним (CheckCreate: invalid InvoiceID), поэтому существующий TestVerify_InValid_InvoiceID продолжает описывать тот же контракт. Два новых теста по TDD: сперва падали на длине 63/65, не-hex и пустой строке.

🟠 TestIConnectionStates — оба теста на исчерпание реконнектов игнорировали победителя Task.WhenAny. Прогон, в котором терминальное событие не приходило вовсе, продолжался по 30-секундному таймауту и мог пройти, маскируя сломанный реконнект. Теперь проверяется, что победила именно задача события, и что была хотя бы одна попытка реконнекта.

🟡 TestIProtocolFieldSets — ассерт на Expiration. Тест выставлял поле у mint-time NFT-оффера, но никогда не проверял, что оно прочиталось обратно.

🔵 Нитпики: порог парсинга больше не дублируется литералом (RippledTransactionFormats.MinimumExpectedTransactions стал internal), общий набор common-полей для двух conformance-поверхностей вынесен в один хелпер (RippledTransactionFormats.CommonFields), убран лишний Link у vendored fixture.

Отклонено

🟡 «Поднять версии базовых пакетов до 10.10.0.0». Противоречит политике репозитория. Коммит dc9e3f0:

The change touches Xrpl/Models only, so Xrpl.AddressCodec, Xrpl.BinaryCodec and Xrpl.Keypairs stay at 10.9.0.0 — they are consumed via ProjectReference, so the packed Xrpl 10.9.1.0 keeps depending on the already published 10.9.0.0 base packages.

Проверено фактически: git diff --stat origin/release...origin/dev -- Base/ даёт пустой вывод — базовые пакеты в этом релизе не менялись вообще, версии корректны как есть.

Первопричина ложного срабатывания устранена здесь же: CodeRabbit подписал ту находку Source: Coding guidelines — он вывел правило из CLAUDE.md, где в разделе Release Process было написано «Update version in all .csproj files». Этот текст устарел после dc9e3f0 и теперь исправлен, иначе то же замечание повторялось бы на каждом релизном PR.

🟠 «Keepalive-ping отвергается на порту 6007 с Bad credentials». Наблюдение верное — connection.cs шлёт keepalive сырым SendMessage мимо RequestManager, поэтому креды туда не попадают. Но следствие не воспроизводится: проверено на живой ноде — ping без кредов проходит успешно, тогда как ledger_accept на том же соединении отвергается. requestRole возвращает FORBID только для команд, требующих роли ADMIN; guest-команды (ping, server_info) обслуживаются нормально. Никаких «recurring false errors» не возникает.

Остаточный риск чисто латентный — если через этот сырой путь когда-нибудь отправят admin-команду, она молча отвалится. Оставлен комментарий у строки.

Уже было сделано

🔵 «Записать провенанс vendored fixture». Файл Tests/Xrpl.Tests/Fixtures/transactions.macro.ref существует и содержит repo + SHA + дату. Независимо проверил, что пин верный: содержимое transactions.macro байт-в-байт совпадает с XRPLF/rippled на fd2cc6dcb308fb811960380eba7bf4309934d05d. Провенанс намеренно лежит соседним файлом, а не комментарием внутри .macro, — иначе копия перестанет быть побайтовой и проверка обычным diff сломается.

Проверено

  • dotnet test --filter "TestU"867/867 (было 865, +2 новых теста на InvoiceID)
  • dotnet test --filter "TestI&TestCategory!=Live" на standalone-стенде — 219 пройдено, 40 пропущено (amendment-gated), 0 падений
  • отдельно TestIConnectionStates|TestIProtocolFieldSets11/11, ни одного пропуска, то есть усиленные ассерты действительно исполнились, а не проскочили как skipped
  • dotnet build XrplCSharp.sln — 0 ошибок

Валидные находки:
- ValidateCheckCreate требует от InvoiceID 256-битное hex-значение. sfInvoiceID -
  это Hash256, и в этом же релизе такое же правило добавлено для WalletLocator в
  AccountSet и SignerListSet; CheckCreate был единственным исключением, где
  малформед проходил валидацию и падал позже уже внутри кодека. Текст исключения
  не меняется, так что существующий контракт сохранён
- порт 6007 CI-стенда привязан к 127.0.0.1: креды лежат в rippled.cfg открытым
  текстом, а nightly-стенд и так публиковал его только на loopback
- TestIConnectionStates: оба теста на исчерпание реконнектов игнорировали
  победителя Task.WhenAny, поэтому прогон без терминального события мог пройти по
  таймауту. Теперь проверяется, что победила именно задача события, и что была
  хотя бы одна попытка реконнекта
- TestIProtocolFieldSets: добавлен ассерт на Expiration у mint-time NFT-оффера
- нитпики: общий литерал порога парсинга, общий источник common-полей для двух
  conformance-тестов, убран лишний Link у fixture

Отклонённые находки прокомментированы в PR #68. Коротко:
- «поднять версии базовых пакетов до 10.10.0.0» противоречит политике из dc9e3f0
  (бампаем только изменившийся пакет), а Base/ в этом релизе не менялся вообще.
  Первопричина ложного срабатывания - устаревший раздел Release Process в
  CLAUDE.md, он исправлен здесь же
- «keepalive-ping отвергается на порту с кредами» не воспроизводится: роль
  резолвится per-command, guest-команды проходят. Проверено на живой ноде.
  У сырого send оставлен комментарий про латентный риск
@coderabbitai

coderabbitai Bot commented Jul 29, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 81d27204-3219-40d6-98c9-bd0c6f633950

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@Platonenkov
Platonenkov added this pull request to the merge queue Jul 29, 2026
Merged via the queue into dev with commit 8c0443f Jul 29, 2026
4 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.

1 participant