SourceAnt

Contract Drift

Ein Spec-Diff sagt Ihnen, dass etwas kaputtgegangen ist. Er kann Ihnen nicht sagen, wer dadurch kaputtgeht.

Jedes Breaking-Change-Tool vergleicht zwei Versionen eines Dokuments. Das ist die leichte Hälfte. Die Frage, die Sie am Morgen eines Releases tatsächlich haben, ist, welcher Ihrer Services kurz davor steht umzufallen, und ein Spec-Diff hat keine Ahnung.

Ein Feld, eine Woche

  1. Dienstag

    Ein Feld wird optional

    Ein Agent verschärft einen Handler, und das Response-Schema verliert ein Feld, das schon immer da war. Der Pull Request ist grün. Die Änderung ist isoliert betrachtet korrekt.

  2. Dienstag

    Die Spec wird versioniert, nicht nur diffed

    Das veröffentlichte Dokument wird als Snapshot mit einem Digest erfasst, seine Elemente extrahiert und gegen die Baseline verglichen. Der Vergleich beantwortet kompatibel oder nicht und benennt jede Änderung, die dazu geführt hat.

  3. Dienstag

    Der Graph sagt, wen es betrifft

    Drei Services deklarieren eine Abhängigkeit von dem Service, der diesen Contract veröffentlicht. Das ist keine Vermutung aus einem Spec-Diff. Es wird aus ihren eigenen Manifesten gelesen.

  4. Freitag

    Was stattdessen früher passierte

    Das Mobile-Team erfährt es im Staging, oder ein Kunde erfährt es in der Produktion, und jemand verbringt den Nachmittag damit, herauszufinden, welches Release es verursacht hat.

Der Eintrag

Was eine Änderung trägt

Ein Vergleich beantwortet, ob die beiden Versionen kompatibel sind, und jede Änderung darin ist ein Eintrag, auf den Sie reagieren können, statt einer Zeile Prosa.

classification
Um welche Art von Änderung es sich handelt, damit ein Rename und eine Entfernung nicht als dasselbe Ereignis abgelegt werden.
severity
Wie sehr es zählt, getragen von der Änderung selbst, statt später von demjenigen abgeleitet, der sie liest.
summary
Was sich verschoben hat, in einer Zeile, damit ein Reviewer nicht zwei Dokumente mit dem Auge diffen muss.
before / after element
Das exakte Element auf jeder Seite. Eine Änderung muss etwas benennen, das sie betrifft, sonst wird sie nicht erfasst.
confidence
Zwischen 0 und 1. Unsicherheit wird benannt, statt weggerundet zu werden.
evidence
Die Quelle und die Revision hinter dem Befund, damit er überprüft statt geglaubt werden kann.

Die Schnittstelle

Der Vertrag weiß, was sich geändert hat. Der Graph weiß, wer davon abhängt.

Keine der beiden Hälften ist für sich genommen ungewöhnlich. Beide in einem Datensatz zu vereinen, ist der Teil, der die Frage beantwortet, die Sie tatsächlich haben.

Die veröffentlichte Schnittstelle

Mit einem Digest und einer Revision erfasst, ihre Elemente extrahiert und mit der vorherigen Version verglichen.

In einem Graphen verbunden

Unter einem Geltungsbereich, in einer einzigen begrenzten Abfrage durchquerbar

Die Dienste, die sie nutzen

Gelesen aus den Manifesten, die diese Repositories veröffentlichen, mit der Datei hinter jeder Kante im Datensatz.

Wo Sie ihr begegnen

Im Review, bei der Änderung, die sie verursacht hat

Ein Befund zu einer veröffentlichten Schnittstelle wird danach gewichtet, was laut Graph von ihr abhängt. Ein Bruch an einem Vertrag, den drei Dienste nutzen, ist nicht derselbe Befund wie einer an einem internen Helper.

In Ihrem Assistenten, bevor die Änderung geschrieben wird

Verträge sind eine der Quellen, aus denen ein Kontextpaket schöpft. Fragt ein Agent, was eine Änderung berührt, erhält er die Schnittstelle und ihre Nutzer zusammen mit dem Code.

Setzen Sie Ihr System auf den Eintrag

Betreiben Sie den Open Core auf Ihrer eigenen Infrastruktur oder starten Sie im gehosteten Workspace. Der Graph ist in beiden Fällen portabel.

Alle Anwendungsfälle