Skip to content

Statically enforce storage backwards compatibility #816

Open
@iljakuklic

Description

@iljakuklic

Agglayer node has to be able to correctly load certificates and other pieces of data written by older versions of the software. We currently rely on code reviews to accomplish that which has proven to be rather error prone. Tooling should be introduced to automate this at least in part.

Suggested approach

Take a snapshot of the internal structure of serialized types as understood by serde. Commit it into the repo. Differences will be way more obvious during the code review, making potential incompatibilities easier to spot.

Possible follow up

The CI could checkout the structure snapshot from the base branch and from the PR branch. Then feed them both into a script checking backwards incompatibilites.

  • Enum arms can only be added at the end of the enum
  • Adding fields to structs is not allowed

False positives are to some degree expected but it should help with the most common cases.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions