Draft: fix: #3627189 Read persisted revisions before translation conflict checks

Adding Spanish over an English working copy can return a false existing-translation conflict: the locked recheck reads the revision object already mutated while preparing the candidate. Read persisted revision state for that check, retaining the locked pointer checks and real conflict refusals. Reuse the compatible revision read for paragraphs on Drupal 10.6.

Closes #3627189. Based on released 2.25.5. Existing functional assertions are retained; stored-state test reads reset entity caches before loading revisions. The API selection follows the Drupal 11.3 introduction of loadRevisionUnchanged().

Validation at 58498194:

  • Drupal 11.4.7/PHP 8.4 with Twig 3.29: all four draft/translation classes pass, 17 tests / 557 assertions. Existing 28 Drupal/Twig and seven PHPUnit deprecations remain visible. The earlier Twig 3.30 failure is core #3625969, fixed in 11.4.8.
  • Drupal 10.6/PHP 8.2: 17 tests / 574 assertions pass with the separately contributed ERR #3627204 release-based fix. Without that fix, the unrelated non-default paragraph-pin HTTP 422 reproduces on unchanged Sentinel 2.25.5; the three focused Sentinel cases pass 3 / 71. ERR contribution: entity_reference_revisions!111.
  • Earlier Drupal 11.3.18/PHP 8.3 regression evidence: baseline HTTP 409, fixed 1 / 15; expanded 17 / 557 before the test cache-read adaptation.
  • PHP syntax, PHPCS, focused local PHPStan, and independent standards/spec reviews pass.
  • Hosted pipeline 983306 is terminal: both runtime jobs, Composer, PHPStan, PHPCS, ESLint, cspell and composer-lint pass. Its only allowed failure is the existing dashboard stylelint finding, fixed separately in !8. The prior pipeline’s compatibility-check PHPStan finding is resolved.

Draft retained pending the separate CSS contribution and dependency coordination. This change preserves field validation, entity IDs, revision pins, permissions and storage schema.

Edited by Jeremy Cerda

Merge request reports

Loading
Loading