Skip to content

[NONEVM-5742] Ensure ExecuteReport backwards compatibility - #889

Merged
duck-types merged 10 commits into
mainfrom
followup/fix/exec-report-offchainTokenData
Sep 24, 2026
Merged

duck-types merged 10 commits into
mainfrom
followup/fix/exec-report-offchainTokenData

Conversation

@duck-types

@duck-types duck-types commented Sep 15, 2026 •

Copy link
Copy Markdown
Collaborator

NONEVM-5742
followup of #884

@duck-types duck-types changed the title Followup/fix/exec report offchainTokenData Ensure ExecuteReport backwards compatibility Sep 15, 2026
@duck-types duck-types changed the title Ensure ExecuteReport backwards compatibility [NONEVM-5742] Ensure ExecuteReport backwards compatibility Sep 15, 2026
@duck-types
duck-types force-pushed the followup/fix/exec-report-offchainTokenData branch from f83c223 to 229e0df Compare September 17, 2026 21:32
@duck-types
duck-types force-pushed the followup/fix/exec-report-offchainTokenData branch from 229e0df to a45fdfb Compare September 17, 2026 21:32

Copilot AI left a comment

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.

🟡 Changes recommended

Critical issues remain in tokenless encoding and the CI workflow configuration.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

This PR adds backwards-compatibility coverage for tokenless TON ExecuteReport encoding.

Changes:

  • Updates tokenless encoding behavior.
  • Adds golden fixtures, tests, and a legacy encoder.
  • Adds CI validation and dependency metadata.
File summaries
File Reviewed change
testdata/golden/execute_report.json Adds the golden report fixture.
go.md Updates the module graph.
cciplib/ccip/codec/executereport_golden_test.go Adds golden BOC compatibility tests.
cciplib/ccip/codec/executecodec.go Changes tokenless report encoding.
cciplib/ccip/codec/executecodec_test.go Tests legacy-compatible encoding.
cciplib/ccip/bindings/ocr/testdata/legacyexecutereport/main.go Provides the legacy encoder/decoder CLI.
cciplib/ccip/bindings/ocr/testdata/legacyexecutereport/go.sum Records dependency checksums.
cciplib/ccip/bindings/ocr/testdata/legacyexecutereport/go.mod Pins the legacy dependency.
.github/workflows/execute-report-golden-boc.yml Verifies golden BOC stability.
.gitattributes Marks BOC fixtures as binary.
Review details

Suppressed comments (2)

.github/workflows/execute-report-golden-boc.yml:42

  • This workflow only rebuilds the pinned legacy CLI and compares its BOC; it never runs the current cciplib tests. Because cciplib has its own nested go.mod, the root go test ./... job does not exercise executecodec.go or executereport_golden_test.go, so this backwards-compatibility assertion can remain green while the current codec regresses. Add a go test ./... step with working-directory: cciplib.
            - name: Assert golden BOC was not mutated
              run: |
                  git add testdata/golden/execute_report.boc
                  if ! git diff --minimal --cached --exit-code; then

testdata/golden/execute_report.json:2

  • This fixture description repeats that the legacy binding uses a flat LispList[SnakeBytes], but the pinned legacy revision uses a hardcoded empty *cell.Cell for this field. Since this text documents what the byte-for-byte golden check actually compares, please describe the pinned legacy schema accurately rather than claiming coverage of a legacy flat-list codec.
    "description": "Tokenless ccipocr3.ExecutePluginReport used to verify that the current cciplib binding (nested LispList[LispList[SnakeBytes]] OffChainTokenData) produces the exact same bag of cells as the legacy binding (flat LispList[SnakeBytes]) when there are no token transfers. No token-transfer messages have happened for TON in production yet, so tokenless reports must encode to the identical BOC. The companion execute_report.boc is the committed golden BOC produced by the legacy binding; CI regenerates it and asserts no mutation, while the Go test in cciplib encodes with the current codec and asserts byte equality, then decodes the golden BOC and asserts the result matches this fixture.",
  • Files reviewed: 9/11 changed files
  • Comments generated: 3
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread .github/workflows/execute-report-golden-boc.yml
Comment thread cciplib/ccip/codec/executecodec.go
Comment thread cciplib/ccip/bindings/ocr/testdata/legacyexecutereport/main.go Outdated
@duck-types
duck-types marked this pull request as ready for review September 18, 2026 11:45
@duck-types
duck-types requested a review from a team as a code owner September 18, 2026 11:45
vicentevieytes
vicentevieytes previously approved these changes Sep 22, 2026
vicentevieytes
vicentevieytes previously approved these changes Sep 24, 2026
@duck-types
duck-types enabled auto-merge (squash) September 24, 2026 13:41
@duck-types
duck-types merged commit 4ee7bc2 into main Sep 24, 2026
39 checks passed
@duck-types
duck-types deleted the followup/fix/exec-report-offchainTokenData branch September 24, 2026 14:33
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