Skip to content

Add rebased Aptos CRE common and loop support#1896

Draft
cawthorne wants to merge 5 commits intomainfrom
feature/aptos-local-cre-minimal-write
Draft

Add rebased Aptos CRE common and loop support#1896
cawthorne wants to merge 5 commits intomainfrom
feature/aptos-local-cre-minimal-write

Conversation

@cawthorne
Copy link
Contributor

@cawthorne cawthorne commented Mar 13, 2026

Summary

  • rebase the Aptos CRE common changes on top of the latest default branch
  • preserve the working Aptos read-capability baseline from the earlier local CRE stack
  • retain only the shared compatibility needed by the write path

What changed

  • added the Aptos service and loop typing needed by the CRE integration path
  • retained LedgerVersion support used by the Aptos read flow
  • kept the shared Aptos conversion helpers and tests
  • kept the transmitter-bytes compatibility used by the write path
  • refreshed the generated Aptos protobuf / gRPC outputs to match the rebased interfaces

Why

The Aptos local CRE stack needs the common Aptos loop/service surface from the earlier read-capability work, plus the shared compatibility pieces consumed by the write path. This PR keeps that layer narrow so downstream repos do not need to reach around chainlink-common.

Testing

  • ran:
    • go test ./pkg/types/chains/aptos ./pkg/loop/internal/relayer ./pkg/loop/internal/relayerset ./pkg/loop/internal/core/services/capability -count=1

CI refs

  • core ref: e2a5c22eff7c7cf8e913453387f8fefe89fff40f
  • solana ref: develop
  • starknet ref: develop

@cawthorne cawthorne changed the title Feature/aptos local cre minimal write Add rebased Aptos CRE common and loop support Mar 13, 2026
@github-actions
Copy link

github-actions bot commented Mar 13, 2026

⚠️ API Diff Results - github.com/smartcontractkit/chainlink-common

⚠️ Breaking Changes (3)

pkg/chains/aptos.AptosClient (1)
  • LedgerVersion — ➕ Added
pkg/types/chains/aptos.Client (2)
  • LedgerVersion — ➕ Added

  • LedgerVersion — ➕ Added

✅ Compatible Changes (60)

pkg/capabilities/v2/chain-capabilities/aptos (5)
  • ReceiverContractExecutionStatus — ➕ Added

  • ReceiverContractExecutionStatus_name — ➕ Added

  • ReceiverContractExecutionStatus_RECEIVER_CONTRACT_EXECUTION_STATUS_REVERTED — ➕ Added

  • ReceiverContractExecutionStatus_RECEIVER_CONTRACT_EXECUTION_STATUS_SUCCESS — ➕ Added

  • ReceiverContractExecutionStatus_value — ➕ Added

pkg/capabilities/v2/chain-capabilities/aptos.(*ViewRequest) (1)
  • GetLedgerVersion — ➕ Added
pkg/capabilities/v2/chain-capabilities/aptos.(*WriteReportReply) (1)
  • GetReceiverContractExecutionStatus — ➕ Added
pkg/capabilities/v2/chain-capabilities/aptos.ViewRequest (1)
  • LedgerVersion — ➕ Added
pkg/capabilities/v2/chain-capabilities/aptos.WriteReportReply (1)
  • ReceiverContractExecutionStatus — ➕ Added
pkg/chains/aptos (3)
  • Aptos_LedgerVersion_FullMethodName — ➕ Added

  • LedgerVersionReply — ➕ Added

  • LedgerVersionRequest — ➕ Added

pkg/chains/aptos.(*ViewRequest) (1)
  • GetLedgerVersion — ➕ Added
pkg/chains/aptos.AptosServer (1)
  • LedgerVersion — ➕ Added
pkg/chains/aptos.UnimplementedAptosServer (1)
  • LedgerVersion — ➕ Added
pkg/chains/aptos.ViewRequest (1)
  • LedgerVersion — ➕ Added
pkg/types (1)
  • FinalizedHeadService — ➕ Added
pkg/types.(*UnimplementedAptosService) (1)
  • LedgerVersion — ➕ Added
pkg/types.(*UnimplementedRelayer) (22)
  • Aptos — ➕ Added

  • Close — ➕ Added

  • EVM — ➕ Added

  • HealthReport — ➕ Added

  • Name — ➕ Added

  • NewAutomationProvider — ➕ Added

  • NewCCIPCommitProvider — ➕ Added

  • NewCCIPExecProvider — ➕ Added

  • NewCCIPProvider — ➕ Added

  • NewConfigProvider — ➕ Added

  • NewContractReader — ➕ Added

  • NewContractWriter — ➕ Added

  • NewFunctionsProvider — ➕ Added

  • NewLLOProvider — ➕ Added

  • NewMedianProvider — ➕ Added

  • NewMercuryProvider — ➕ Added

  • NewOCR3CapabilityProvider — ➕ Added

  • NewPluginProvider — ➕ Added

  • Ready — ➕ Added

  • Solana — ➕ Added

  • Start — ➕ Added

  • TON — ➕ Added

pkg/types/chains/aptos (16)
  • ClassifyWriteVmStatus — ➕ Added

  • ReceiverExecutionStatus — ➕ Added

  • ReceiverExecutionStatusReverted — ➕ Added

  • ReceiverExecutionStatusSuccess — ➕ Added

  • ReceiverExecutionStatusUnknown — ➕ Added

  • ViewPayloadFromCapability — ➕ Added

  • WriteFailureClassification — ➕ Added

  • WriteFailureDecision — ➕ Added

  • WriteFailureDecisionAlreadyProcessed — ➕ Added

  • WriteFailureDecisionRetryable — ➕ Added

  • WriteFailureDecisionTerminal — ➕ Added

  • WriteFailureKind — ➕ Added

  • WriteFailureKindAlreadyProcessed — ➕ Added

  • WriteFailureKindForwarderRejected — ➕ Added

  • WriteFailureKindReceiverReverted — ➕ Added

  • WriteFailureKindUnknown — ➕ Added

pkg/types/chains/aptos.ViewRequest (1)
  • LedgerVersion — ➕ Added
pkg/types/mocks (1)
  • AptosService_LedgerVersion_Call — ➕ Added
pkg/types/mocks.(*AptosService) (1)
  • LedgerVersion — ➕ Added
pkg/types/mocks.(*AptosService_Expecter) (1)
  • LedgerVersion — ➕ Added

📄 View full apidiff report

@github-actions
Copy link

📊 API Diff Results

No changes detected for module github.com/smartcontractkit/chainlink-common/pkg/monitoring

View full report

@github-actions
Copy link

📊 API Diff Results

No changes detected for module github.com/smartcontractkit/chainlink-common/keystore

View full report

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR rebases and narrows the shared Aptos “CRE common” surface in chainlink-common, adding the Aptos loop/service types and compatibility needed by CRE’s integration path (read baseline + write-path shared pieces), and refreshing generated protobuf/gRPC outputs accordingly.

Changes:

  • Extend Aptos support with LedgerVersion, optional LedgerVersion for view calls, and capability-to-relayer conversion helpers + tests.
  • Add Aptos write-status classification helpers + tests for distinguishing forwarder/receiver failures.
  • Adjust loop/relayer “finalized head” handling to fall back to LatestHead (and remove the dedicated finalized-head RPCs), plus update transmitter decoding compatibility and DON time store semantics.

Reviewed changes

Copilot reviewed 41 out of 42 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
sonar-project.properties Updates Sonar coverage exclusions to reflect regenerated/internal code locations.
pkg/workflows/dontime/transmitter_test.go Adds test ensuring transmit does not delete cached DON times for omitted execution IDs.
pkg/workflows/dontime/transmitter.go Changes transmit behavior to update per-executionID without replacing/deleting the whole map.
pkg/workflows/dontime/store.go Removes replaceDonTimes, aligning store behavior with “preserve cached” semantics.
pkg/workflows/dontime/plugin_test.go Refactors/updates outcome tests for missing/empty observed entries and new transmit semantics.
pkg/workflows/dontime/plugin.go Initializes missing observed entries during outcome processing; changes expiry cleanup behavior and trims logging.
pkg/types/relayer.go Adjusts FinalizedHead contract docs; adds FinalizedHeadService; aliases UnimplementedChainService; adds Aptos LedgerVersion stub.
pkg/types/mocks/aptos_service.go Regenerates mock to include LedgerVersion.
pkg/types/chains/aptos/write_status_test.go Adds tests for Aptos write VM-status classification helpers.
pkg/types/chains/aptos/write_status.go Implements Aptos write VM-status classification (forwarder vs receiver, retryable vs terminal).
pkg/types/chains/aptos/capability_convert_test.go Adds tests for capability payload conversion to relayer types.
pkg/types/chains/aptos/capability_convert.go Adds conversion logic from Aptos capability payload/type tags to relayer types.
pkg/types/chains/aptos/aptos.go Adds LedgerVersion to client interface and optional LedgerVersion to ViewRequest.
pkg/loop/relayer_service_test.go Adds test asserting FinalizedHead falls back to LatestHead.
pkg/loop/relayer_service.go Implements finalized-head fallback via FinalizedHeadService type assertion, else LatestHead.
pkg/loop/internal/relayerset/server.go Removes relayerset finalized-head RPC handler.
pkg/loop/internal/relayerset/relayerset_test.go Adds Aptos LedgerVersion and View-with-ledger-version tests.
pkg/loop/internal/relayerset/relayer.go Makes relayerset FinalizedHead fall back to LatestHead.
pkg/loop/internal/relayerset/client.go Removes relayerset client finalized-head RPC wrapper.
pkg/loop/internal/relayerset/aptos.go Adds Aptos LedgerVersion RPC wiring and passes through optional view LedgerVersion.
pkg/loop/internal/relayer/test/relayer.go Updates test relayer FinalizedHead to return LatestHead.
pkg/loop/internal/relayer/relayer.go Removes loop relayer finalized-head RPC; makes client fallback to LatestHead.
pkg/loop/internal/relayer/pluginprovider/contractreader/test/loop_server_tester.go Avoids require in goroutine; stores server reference and ignores Serve error.
pkg/loop/internal/relayer/aptos_test.go Adds gRPC round-trip tests for Aptos LedgerVersion and view LedgerVersion.
pkg/loop/internal/relayer/aptos.go Adds Aptos LedgerVersion RPC + optional LedgerVersion in view request mapping.
pkg/loop/internal/pb/relayerset/relayerset_grpc.pb.go Regenerates relayerset gRPC stubs removing finalized-head RPC.
pkg/loop/internal/pb/relayerset/relayerset.proto Removes relayerset finalized-head RPC/messages.
pkg/loop/internal/pb/relayerset/relayerset.pb.go Regenerates relayerset protobuf output after API removal.
pkg/loop/internal/pb/relayer_grpc.pb.go Regenerates relayer gRPC stubs removing finalized-head RPC.
pkg/loop/internal/pb/relayer.proto Removes relayer finalized-head RPC/messages.
pkg/loop/internal/pb/relayer.pb.go Regenerates relayer protobuf output after API removal.
pkg/loop/internal/example-relay/main.go Updates example relayer FinalizedHead to return LatestHead.
pkg/loop/internal/core/services/capability/capabilities_registry_test.go Adds tests for transmitter account decoding compatibility.
pkg/loop/internal/core/services/capability/capabilities_registry.go Adds transmitterAccountToBytes to support 0x-prefixed hex and raw-bytes compatibility.
pkg/chains/aptos/aptos_grpc.pb.go Regenerates Aptos gRPC stubs adding LedgerVersion RPC.
pkg/chains/aptos/aptos.proto Adds LedgerVersion RPC and optional ledger_version on view request.
pkg/chains/aptos/aptos.pb.go Regenerates Aptos protobuf output for LedgerVersion and optional view ledger_version.
pkg/capabilities/v2/chain-capabilities/solana/generate.go Temporarily disables Solana proto regeneration (missing source proto).
pkg/capabilities/v2/chain-capabilities/evm/client.pb.go Updates generated EVM capability proto output (chain selector/rawDesc changes).
pkg/capabilities/v2/chain-capabilities/aptos/client.pb.go Updates generated Aptos capability proto output (view ledger version + receiver execution status field).
go.mod Bumps chainlink-protos/cre/go dependency to the rebased version.
go.sum Updates sums for the bumped chainlink-protos/cre/go version.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

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