Reconciliation of Contract discrepancies - Accordance/accordance.github.io GitHub Wiki

When a new deployment coming in (let’s say "db1" is upgraded to version "2.0"), Accordance receives a new manifest and tries to reconcile the graph. It finds all the dependents of "db1" and validates that the new contract version is going to keep the graph true or going to break it. In this example, the system will identify that the new version is not compatible with the declaration of dependencies of "app1" and will deny the change.

The story above describes the failure detection via Contract declaration discrepancies. In a mature organization the detected failures trigger conversations.

In the case above the conversation should happen between the owners of these two systems: "app1" and "db1". They can reach one of 2 agreements:

  1. "app1" will be tested to work with the new version of "db1" or updated to work with the new version of "db1", or
  2. "db1" will be tested to be backward compatible with the current version of "app1"

After the resolution is found, then either the manifest of "db1" or a manifest of "app1" will be updated. This will allow the system to properly reconcile the graph. Then the deploys will resume.