Snapshot Backward Compatibility for Minor Version Upgrades

Versions (relevant - OpenSearch/Dashboard/Server OS/Browser): All versions up to 1.3.15 and 2.12.0

Describe the issue:
I have an OpenSearch cluster running version 1.3.11, preparing to upgrade to version 1.3.15. The below steps are what I did:

  1. Snapshot of all indices in the cluster with OpenSearch 1.3.11;

  2. Upgraded the whole cluster from OpenSearch 1.3.11 to 1.3.15;

  3. Snapshot with OpenSearch 1.3.15 to the same snapshot repository as step 1;

  4. Restored snapshot taken in step 3 to an OpenSearch 1.3.11 cluster ā€“ Failed;

  5. Restored snapshot taken in step 1 to an OpenSearch 1.3.11 cluster ā€“ Succeeded;

Although semantic versioning should ensure some sort of compatibility, I cannot restore to a new cluster in step 4.

[Question #1] Is this behavior expected? That OpenSearch does not guarantee snapshot backward compatibility between minor versions?

I cannot directly restore from newer version to older version like in step 4 but I can still manage to restore the last old-version snapshot like in step 5 in case of failed upgrade. This means the old version snapshot repository touched by a newer version cluster after upgrade like this is still restorable to an older version cluster. However, I have a concern:

[Question #2] Are older versions of OpenSearch guaranteed to be able to access a repository that has been modified by a newer version? Do I have to keep testing this behavior in future releases, and do we need another backup plan if it does not work?

I suppose, on a cluster with a single backup repository, Step 5 is the only way we can roll back to an older version in the event of failed upgrade (including unexpected breaking change). If what Iā€™m concerned about in Question #2 is not guaranteed, I plan to use a separate snapshot repository for each minor version, which would be a lot to manage.

Although the strategy like in step 5 works, all changes after the upgrade (at step 2) such as creating, updating and deleting indices will surely be lost.

[Question #3] Is there any way to roll back to the older version that includes writes performed in the new version? Does not have to be an in-place rollback, restoring to a new cluster is fine as well.

If the behavior in step 5 always works,

[Question #4] is it worth documenting in the OpenSearch official documentation?

I have logged an issue in the GitHub repository of OpenSearch with somewhat similar questions.

Thank you very much.