DUR041 carries the real state of conformance coverage - #270
Merged
Conversation
… décrivait DUR041 décrit deux dispositions comme acquises alors qu'elles n'ont jamais été écrites : « The Temporal adapters ... run this tier there » et « Temporal's read-through store gets checked for the first time ». Ni TemporalJournalEventStore, ni TemporalReadThroughEventStore, ni TemporalWorkflowRunCatalog n'étend une suite de conformité — aucun palier ne s'exécute contre eux. Le statut disait « implemented for all four ports ». C'est vrai des ports : les quatre ont bien leur suite. Ça laissait croire à une couverture qui n'existe pas côté adaptateurs, d'où un tableau de couverture explicite. Une paire n'existe que si le backend implémente le port : Temporal en implémente deux sur quatre, donc WorkflowMetadataStore et ChildWorkflowParentLinkStore ne sont pas des trous. Douze paires existent et sont couvertes, deux existent et ne le sont pas — les deux Temporal, le seul backend dont la forme de stockage diffère de la référence. Les deux phrases fautives sont conservées et annotées plutôt que réécrites : elles disent la décision, qui tient. C'est le présent de l'indicatif qui ne tenait pas. Le docbloc d'EventStoreReplayConformanceTestCase reprenait le même énoncé faux ; il est corrigé au même endroit, sinon le lecteur qui vérifie l'ADR retombe dessus. 134 tests de conformité verts, inchangés : ce commit ne touche que du texte. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
gplanchat
added a commit
that referenced
this pull request
Sep 3, 2026
Le décompte était faux. Une paire n'existe que si le backend implémente le port, et Temporal en implémente deux sur quatre : EventStoreInterface (deux fois) et WorkflowRunCatalogInterface. WorkflowMetadataStore et ChildWorkflowParentLinkStore n'ont pas d'implémentation Temporal — ce ne sont pas des trous, et le tableau de contexte de DUR041 le disait déjà avec des tirets. Douze paires existent et sont couvertes, deux existent et ne le sont pas. La §5.1 écrit donc deux sous-classes, pas quatre, et le job de 5.3 ne compte pas une paire qui n'existe pas. Corrige aussi l'attribution : « implemented for all four ports » est exact des ports. Ce qui était faux, ce sont les deux phrases au présent de l'indicatif sur les adaptateurs Temporal. Reprises en #270, d'où les §6.1 et 6.2 cochées. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This was referenced Sep 3, 2026
gplanchat
enabled auto-merge
September 3, 2026 20:49
5mehulhelp5
pushed a commit
to 5mehulhelp5/durable-dev
that referenced
this pull request
Sep 4, 2026
…n/audit/ Vingt relectures indépendantes du cœur, du bundle Symfony et du plugin Sylius, menées le 3 septembre 2026 sur main à 8fdc5ec, plus leur synthèse. Les grilles sont nommées par leur axe de relecture. Aucun nom ni profil de personne n'apparaît : ce sont des axes d'expertise, pas des auteurs, et une opinion attribuée à quelqu'un qui ne l'a pas émise n'aurait rien à faire dans un dépôt. Seules subsistent deux références au paquet Composer webmozart/assert, dans une ligne « Amont » où elles citent une bibliothèque, pas une personne. Le README porte la méthode, le périmètre — dont l'exclusion des 680 fichiers protobuf générés du pont Temporal — et une section sur ce qu'un audit de code ne peut pas voir, avec les exemples que les issues ouvertes en donnent. Deux notes d'édition corrigent une surestimation du rapport sur les tests, reprise dans la synthèse : le statut « implemented for all four ports » de DUR041 était exact des ports. Ce qui était faux, ce sont les deux énoncés au présent sur les adaptateurs Temporal, repris en gplanchat#270. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Text only — one ADR and one docblock. No behaviour, no test changed; the 134 conformance tests pass, unchanged.
What was false
DUR041 describes two arrangements in the present tense although they were never written:
Neither
TemporalJournalEventStore, norTemporalReadThroughEventStore, norTemporalWorkflowRunCatalogextends a conformance suite. No tier runs against them — not the port tier, not the replay tier, not inunit, not inintegration.The docblock of
EventStoreReplayConformanceTestCaserepeated the same statement ("an adapter backed by a server — both Temporal stores — only extendsEventStoreConformanceTestCase"), so a reader who checks the ADR against the code lands on the same claim and concludes it is true.What was not false
The status said "implemented for all four ports". That is accurate: all four ports do have their suite. What was missing is that adapter coverage is a different question, and that nothing in the ADR gave it.
And a pair only exists if the backend implements the port. Temporal implements two out of four —
EventStoreInterface(twice) andWorkflowRunCatalogInterface.WorkflowMetadataStoreandChildWorkflowParentLinkStoreInterfacehave no Temporal implementation, as the ADR's context table already says with dashes: those are not gaps.The real state, now in the ADR
EventStoreInterfaceWorkflowMetadataStoreChildWorkflowParentLinkStoreInterfaceWorkflowRunCatalogInterfaceTwelve pairs exist and are covered, two exist and are not — the two Temporal ones, the only backend whose storage shape differs from the reference. The three covered backends share a journal and a table: the parity they prove is the one that was never in doubt. The suite is proven where it was free and unproven where it matters, which is the opposite of what the ADR set out to do.
The shape of the correction
The two faulty sentences are kept and annotated, not rewritten. They state the decision, which holds: splitting into two classes is sound, and an adapter backed by a server should indeed extend only the port tier. It is the present tense that did not hold. One observation is worth keeping as is:
Follow-up
Filling the two pairs is the subject of #269 (
backend-data-parity), whose §5 writes them and whose §5.3 adds a CI job that fails on a missing pair — so the grid does not end up incomplete a second time without anyone seeing it.