Skip to content

refactor: move DAppMetadata fields into CustomMessagePayload#85

Open
aminsato wants to merge 8 commits into
mainfrom
aminsato/84_add_dapp_origin_fields
Open

refactor: move DAppMetadata fields into CustomMessagePayload#85
aminsato wants to merge 8 commits into
mainfrom
aminsato/84_add_dapp_origin_fields

Conversation

@aminsato

@aminsato aminsato commented May 6, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Removes the standalone DAppMetadata message (and the optional DAppMetadata dapp_metadata = 50 field on KeysignPayload) and inlines its three fields directly on CustomMessagePayload, where the dApp identity belongs alongside the message being signed:
    • DAppMetadata.urlCustomMessagePayload.origin (optional string = 6)
    • DAppMetadata.nameCustomMessagePayload.dapp_name (optional string = 7)
    • DAppMetadata.icon_urlCustomMessagePayload.icon_url (string = 8)
  • All three fields are documented inline as untrusted, display/identity-only data — consumers must validate before use and must not rely on them for authorization or routing.
  • Documents the existing custom_message_payload and custom_payload_id fields on KeysignMessage to clarify their role in the dApp custom-signing flow (and the relay-stored payload reference).
  • Regenerates Go (go/vultisig/keysign/v1/custom_message_payload.pb.go, keysign_message.pb.go) and Swift (Sources/swift/vultisig/keysign/v1/custom_message_payload.pb.swift, keysign_message.pb.swift) bindings.

Wire compatibility

  • DAppMetadata was never released to consumers, so removing it and its field on KeysignPayload is safe.
  • New field numbers 6, 7, 8 on CustomMessagePayload are additive and backward-compatible.

Test plan

  • make regenerates Go + Swift outputs with no other diffs
  • buf lint passes
  • Consumers (vultisig-android, vultisig-extension, vultisig-ios) can populate and read origin / dapp_name / icon_url on CustomMessagePayload
  • Existing CustomMessagePayload producers that don't set the new fields continue to deserialize correctly

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Custom message payloads now include origin and dApp name information for enhanced context.
  • Refactor

    • Consolidated dApp context data directly into message payloads, streamlining the data structure.

Adds two optional string fields to CustomMessagePayload so the
originating dApp's URL and human-readable name flow through the
extension → relay → mobile signer path. Without them, mobile
clients had no proto-level place to read dApp identity from for
the post-keysign Overview screen.

Both fields are optional, so older producers and consumers keep
working unchanged. Favicon is derived on the consumer side from
origin, so no separate icon_url is needed.

Closes #84

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented May 6, 2026

Copy link
Copy Markdown

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: e1dccacd-2ebe-4b37-9baf-8dc855d5c270

📥 Commits

Reviewing files that changed from the base of the PR and between 798af15 and 3ec327b.

⛔ Files ignored due to path filters (2)
  • go/vultisig/keysign/v1/custom_message_payload.pb.go is excluded by !**/*.pb.go
  • go/vultisig/keysign/v1/keysign_message.pb.go is excluded by !**/*.pb.go
📒 Files selected for processing (7)
  • .gitignore
  • .idea/.gitignore
  • .idea/misc.xml
  • Sources/swift/vultisig/keysign/v1/custom_message_payload.pb.swift
  • Sources/swift/vultisig/keysign/v1/keysign_message.pb.swift
  • proto/vultisig/keysign/v1/custom_message_payload.proto
  • proto/vultisig/keysign/v1/keysign_message.proto
💤 Files with no reviewable changes (3)
  • .idea/misc.xml
  • .idea/.gitignore
  • Sources/swift/vultisig/keysign/v1/keysign_message.pb.swift

Walkthrough

The PR updates the dApp context schema in CustomMessagePayload by adding origin and dapp_name optional string fields (proto fields 6–7), removes the separate DAppMetadata message type and its reference from KeysignPayload, and regenerates Swift protobuf code with corresponding accessors and runtime support. IDE configuration files are also removed and .gitignore is updated to exclude .idea/.

Changes

dApp Context Schema Migration

Layer / File(s) Summary
Proto schema: inline dApp fields and DAppMetadata removal
proto/vultisig/keysign/v1/custom_message_payload.proto, proto/vultisig/keysign/v1/keysign_message.proto
CustomMessagePayload gains origin (field 6) and dapp_name (field 7) as optional string fields for untrusted dApp display/identity data. DAppMetadata message definition is removed; KeysignPayload.dapp_metadata field (field 50) is deleted. KeysignMessage custom signing fields gain expanded inline documentation.
Swift generated types and accessors
Sources/swift/vultisig/keysign/v1/custom_message_payload.pb.swift, Sources/swift/vultisig/keysign/v1/keysign_message.pb.swift
VSCustomMessagePayload gains public origin and dappName computed properties with private optional backing storage (_origin, _dappName), plus hasOrigin, hasDappName, clearOrigin(), and clearDappName() accessors. VSDAppMetadata type definition and all dappMetadata accessors from VSKeysignPayload are removed.
SwiftProtobuf runtime integration
Sources/swift/vultisig/keysign/v1/custom_message_payload.pb.swift, Sources/swift/vultisig/keysign/v1/keysign_message.pb.swift
Proto field name map, decodeMessage, and traverse methods are updated to handle new origin/dapp_name fields on VSCustomMessagePayload; equality comparison includes _origin and _dappName. VSDAppMetadata conformances to @unchecked Sendable and SwiftProtobuf.Message are removed; VSKeysignPayload runtime wiring for field 50 (dapp_metadata) is eliminated.

Repository Configuration Cleanup

Layer / File(s) Summary
IDE and Git configuration
.idea/misc.xml, .idea/.gitignore, .gitignore
IDE metadata file .idea/misc.xml (including device selection configuration) is removed entirely; .idea/.gitignore default entries are deleted. .gitignore is updated to ignore the .idea/ directory alongside the existing .build/ entry.

Possibly related issues

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 35.71% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title describes moving DAppMetadata fields into CustomMessagePayload, which aligns with the removal of DAppMetadata and the addition of origin and dapp_name fields to CustomMessagePayload.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch aminsato/84_add_dapp_origin_fields

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

Update protobuf definitions and regenerate Swift/Go bindings to move dapp_metadata out of KeysignPayload into KeysignMessage. Also remove origin and dapp_name fields from CustomMessagePayload. Adjusts generated decoding/encoding, equality checks and field storage in Sources/swift/.../*.pb.swift and go/.../*.pb.go to match the new proto layout.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@proto/vultisig/keysign/v1/keysign_message.proto`:
- Line 28: The proto introduced a DAppMetadata field (dapp_metadata) that
reintroduces icon_url and diverges from the intended origin/name-only contract;
replace usage of the DAppMetadata field in the KeysignMessage with explicit
optional string fields for the dApp origin and dApp name (e.g., optional string
origin and optional string dapp_name) and remove/stop referencing the
DAppMetadata message (and its icon_url) so the wire schema matches the
origin/name-only contract expected by consumers; update any references to
keysign_message.dapp_metadata to use keysign_message.origin and
keysign_message.dapp_name instead.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 864ed4cb-ce4c-4dbc-a843-bdabdff8f6f8

📥 Commits

Reviewing files that changed from the base of the PR and between 52fad0c and 55f695d.

⛔ Files ignored due to path filters (1)
  • go/vultisig/keysign/v1/keysign_message.pb.go is excluded by !**/*.pb.go
📒 Files selected for processing (2)
  • Sources/swift/vultisig/keysign/v1/keysign_message.pb.swift
  • proto/vultisig/keysign/v1/keysign_message.proto

Comment thread proto/vultisig/keysign/v1/keysign_message.proto Outdated
@aminsato aminsato changed the title feat: add origin and dapp_name to CustomMessagePayload refactor: move dapp_metadata from KeysignPayload to KeysignMessage May 7, 2026
Update DAppMetadata field number from 50 to 10 in the proto and regenerate protobuf outputs. Files changed: proto/vultisig/keysign/v1/keysign_message.proto and the generated Go and Swift sources (go/vultisig/keysign/v1/keysign_message.pb.go, Sources/swift/vultisig/keysign/v1/keysign_message.pb.swift). Adjusts field tags, raw descriptor bytes, and encode/decode branches to use field number 10. Note: this modifies the on-the-wire tag for dapp_metadata and is not backward-compatible with messages using the previous tag (50); update producers/consumers accordingly.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@proto/vultisig/keysign/v1/keysign_message.proto`:
- Line 28: The dapp_metadata field was retagged to 10 causing an extra
wire-compatibility break; restore its original tag by changing the declaration
of the dapp_metadata field in keysign_message.proto (the optional DAppMetadata
dapp_metadata field) back to use field number 50 instead of 10 so the message
keeps the prior wire layout and avoids an additional compatibility vector.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 559f1791-1479-4a14-b940-de7854a79e0f

📥 Commits

Reviewing files that changed from the base of the PR and between 55f695d and 618b0fc.

⛔ Files ignored due to path filters (1)
  • go/vultisig/keysign/v1/keysign_message.pb.go is excluded by !**/*.pb.go
📒 Files selected for processing (2)
  • Sources/swift/vultisig/keysign/v1/keysign_message.pb.swift
  • proto/vultisig/keysign/v1/keysign_message.proto

Comment thread proto/vultisig/keysign/v1/keysign_message.proto Outdated
string payload_id = 7;
optional CustomMessagePayload custom_message_payload = 8;
optional string custom_payload_id = 9;
optional DAppMetadata dapp_metadata = 10;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Instead of moving this out of KeysignPayload , you can just add it to CustomMessagePayload , that way it won't cause incompatible issues

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Good call — reverted the move. dapp_metadata stays in KeysignPayload (untouched from #82), and origin + dapp_name are added to CustomMessagePayload instead. No wire-compat break. Pushed in c9ec3ed.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
proto/vultisig/keysign/v1/custom_message_payload.proto (1)

14-15: ⚡ Quick win

Document canonical semantics for origin and dapp_name in-schema.

Line 14 and Line 15 add cross-platform fields without format guidance. A short proto comment (e.g., expected URL form for origin, display intent for dapp_name) helps prevent client-side interpretation drift.

Suggested diff
 message CustomMessagePayload {
   string method = 1;
   string message = 2;
   string vault_public_key_ecdsa = 3;
   string vault_local_party_id = 4;
   optional string chain = 5;
+  // Canonical dApp origin, preferably absolute HTTPS origin (scheme + host [+ port]).
   optional string origin = 6;
+  // Human-readable dApp display name shown in signing UX.
   optional string dapp_name = 7;
 }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@proto/vultisig/keysign/v1/custom_message_payload.proto` around lines 14 - 15,
The proto fields origin and dapp_name lack in-schema documentation; add brief
proto comments above the fields in custom_message_payload.proto describing
canonical semantics: for origin specify expected format (e.g., an origin URL
including scheme and host like "https://example.com" or an origin string per
RFC, and whether trailing slash or port allowed), and for dapp_name state it is
a human-readable display name (not an identifier) for UI only, max
length/encoding expectations, and whether clients must treat it as
untrusted/display-only. Update the comments immediately above the optional
string origin = 6; and optional string dapp_name = 7; declarations to reflect
these guidelines.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@proto/vultisig/keysign/v1/custom_message_payload.proto`:
- Around line 14-15: The proto fields origin and dapp_name lack in-schema
documentation; add brief proto comments above the fields in
custom_message_payload.proto describing canonical semantics: for origin specify
expected format (e.g., an origin URL including scheme and host like
"https://example.com" or an origin string per RFC, and whether trailing slash or
port allowed), and for dapp_name state it is a human-readable display name (not
an identifier) for UI only, max length/encoding expectations, and whether
clients must treat it as untrusted/display-only. Update the comments immediately
above the optional string origin = 6; and optional string dapp_name = 7;
declarations to reflect these guidelines.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: e1e07658-a16e-416a-9872-b9f162f48da2

📥 Commits

Reviewing files that changed from the base of the PR and between 618b0fc and c9ec3ed.

⛔ Files ignored due to path filters (1)
  • go/vultisig/keysign/v1/custom_message_payload.pb.go is excluded by !**/*.pb.go
📒 Files selected for processing (2)
  • Sources/swift/vultisig/keysign/v1/custom_message_payload.pb.swift
  • proto/vultisig/keysign/v1/custom_message_payload.proto
✅ Files skipped from review due to trivial changes (1)
  • Sources/swift/vultisig/keysign/v1/custom_message_payload.pb.swift

@aminsato

Copy link
Copy Markdown
Contributor Author

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented May 12, 2026

Copy link
Copy Markdown
✅ Actions performed

Full review triggered.

@aminsato aminsato requested a review from johnnyluo May 12, 2026 06:19

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.idea/inspectionProfiles/Project_Default.xml:
- Around line 1-1097: The PR incorrectly includes an IDE config XML (.idea
inspection profile) — the <component name="InspectionProjectProfileManager"> /
<profile> export is unrelated to the protobuf/Swift changes; remove this file
from the commit, update the repo ignore rules (ensure .idea/ is listed in
.gitignore), and re-add only the intended proto and generated Swift files for
the CustomMessagePayload changes so the diff shows the actual symbols (e.g.,
origin, dapp_name additions in the proto and regenerated Swift outputs).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: f57f27df-0d69-4e14-8db8-d69e5784c38f

📥 Commits

Reviewing files that changed from the base of the PR and between 3e2da9e and a138b26.

⛔ Files ignored due to path filters (1)
  • go/vultisig/keysign/v1/custom_message_payload.pb.go is excluded by !**/*.pb.go
📒 Files selected for processing (5)
  • .idea/caches/deviceStreaming.xml
  • .idea/inspectionProfiles/Project_Default.xml
  • .idea/misc.xml
  • Sources/swift/vultisig/keysign/v1/custom_message_payload.pb.swift
  • proto/vultisig/keysign/v1/custom_message_payload.proto
💤 Files with no reviewable changes (1)
  • .idea/misc.xml

Comment thread .idea/inspectionProfiles/Project_Default.xml Outdated
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@aminsato aminsato force-pushed the aminsato/84_add_dapp_origin_fields branch from a138b26 to 05c8462 Compare May 12, 2026 06:22
@aminsato aminsato changed the title refactor: move dapp_metadata from KeysignPayload to KeysignMessage feat: add origin and dapp_name to CustomMessagePayload May 14, 2026
aminsato and others added 2 commits May 14, 2026 13:34
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…nMessage

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@aminsato aminsato changed the title feat: add origin and dapp_name to CustomMessagePayload feat: add dApp identity fields (origin, dapp_name, icon_url) to CustomMessagePayload May 14, 2026
@aminsato aminsato changed the title feat: add dApp identity fields (origin, dapp_name, icon_url) to CustomMessagePayload feat: add dApp identity fields to CustomMessagePayload May 14, 2026
@aminsato

Copy link
Copy Markdown
Contributor Author

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented May 14, 2026

Copy link
Copy Markdown
✅ Actions performed

Full review triggered.

@aminsato aminsato changed the title feat: add dApp identity fields to CustomMessagePayload refactor: move DAppMetadata fields into CustomMessagePayload May 14, 2026
SignTon sign_ton = 42;
SignBitcoin sign_bitcoin = 43;
}
optional DAppMetadata dapp_metadata = 50;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

can you please explain why we remove it from here?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

We removed DAppMetadata because its contents were moved into CustomMessagePayload (as you suggested in #85 (comment)). The three fields (origin, dapp_name, icon_url) now live directly on CustomMessagePayload at field numbers 6/7/8, so the standalone DAppMetadata message and the dapp_metadata field on KeysignPayload are no longer needed. Since DAppMetadata was never released to consumers, removing it is wire-safe.

Comment thread .idea/misc.xml

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

can you please don't check in files under .idea folder

@aminsato aminsato May 14, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

These were added by mistake earlier — Claude corrected it by removing the .gitignore inside the .idea/ folder, so the .idea/ files are no longer tracked on this branch.

Worth noting: the .idea/ folder shouldn't be in the repo at all — main currently has .idea/.gitignore and .idea/misc.xml checked in incorrectly, which is what this PR also cleans up.

@gomesalexandre gomesalexandre left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

PR #85refactor: move DAppMetadata fields into CustomMessagePayload

This PR removes DAppMetadata (standalone message + dapp_metadata = 50 on KeysignPayload) and inlines the fields into CustomMessagePayload. The motivation is solid — dApp identity belongs alongside the custom message being signed, not scattered as a separate sub-message on the top-level payload. BUT there is a material wire-compat issue.


blocker: DAppMetadata and dapp_metadata = 50 are already on main

blocker: DAppMetadata was merged to main in a prior commit ("feat: add DAppMetadata to KeysignPayload"). The field optional DAppMetadata dapp_metadata = 50 is live on the default branch right now. This PR removes it entirely - including deleting the DAppMetadata message type and the field number 50 on KeysignPayload.

Even if no tagged release exists, consumers pinning the main branch (e.g. iOS / Android via buf.build registry or direct Go module pins) can already have this field in their generated code. A producer that populates dapp_metadata talking to a consumer that has merged this PR will silently drop the field - it becomes an unknown field on the receiver. Worse, if any downstream has started reading dapp_metadata from KeysignPayload, those reads now silently zero-out.

The PR description says "DAppMetadata was never released to consumers" - please verify that claim by confirming:

  1. No downstream repo (vultisig-ios, vultisig-android, vultisig-extension, vultisig-sdk) has merged or is running code that reads KeysignPayload.dapp_metadata
  2. No buf.build artifact was pushed with the old schema

If those are confirmed safe, add a note to the PR. If uncertain, the safe path is to keep field 50 as a reserved number: reserved 50; reserved "dapp_metadata"; - this prevents the number from being accidentally reused while still letting you remove the type.

field numbers on CustomMessagePayload - OK

praise: New fields 6 (origin), 7 (dapp_name), 8 (icon_url) are clean appends past the existing 5 fields. Numbers verified in both the .proto source and the generated rawDesc blobs in Go + Swift. No collision.

type inconsistency: icon_url vs origin / dapp_name

should-fix: origin and dapp_name are optional string (generates has-field sentinel, nil pointer in Go, _origin: String? in Swift). icon_url is a plain string (no optional, defaults to ""). If you're treating all three as "optional for compat", they should all be optional. An absent icon_url from an old sender will deserialize as "" which is fine for display, but it's architecturally inconsistent with the other two. Either make all three optional or document why icon_url deliberately isn't.

naming: origin vs url

q: The old DAppMetadata.url becomes origin here, with the doc comment defining it as "URL with scheme and host". That's a semantic narrowing (not just any URL, specifically an origin). The rename is good but worth confirming all existing producers (extension, SDK) that used to set dapp_metadata.url will update to custom_message_payload.origin and use the stricter format.

.idea/ cleanup

suggestion: The diff also removes .idea/misc.xml / .idea/.gitignore and adds .idea/ to .gitignore. Fine cleanup, but it's mixed into a proto refactor commit. Ideally a separate commit or at least acknowledged in the PR. Not blocking.

CI

Build passes, CodeRabbit skipped review. The DAppMetadata removal risk won't be caught by buf breaking if the baseline is main and main already has it - the breaking change is in the deletion direction.


Verdict: REQUEST_CHANGES - the dapp_metadata = 50 removal from a field already on main needs to be explicitly verified as safe before merge. Reserve the field number at minimum.

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.

3 participants