The tests
Ten test classes read project files and assert something about the words in them, or test a script in scripts/. None of them exercises the module. They walk the whole project on every run, and they had accumulated to the point where the Unit suite spent 12,306 assertions and over three seconds on them.
DocumentedSurfaceTest, 21 tests: documentation prose rules.TranslationCheckTest, 17 tests: the behaviour ofscripts/check-translations.inc.MetricsTestCountingTest, 6, andMetricsWriteTest, 2: the behaviour ofscripts/generate-metrics.inc.CatalogTerminologyTest, 6 tests: French wording.HouseVocabularyTest, 3 tests: the word "memo", and where@countmay appear.DocblockReferenceTest, 2, andDocblockNullabilityTest, 1: docblock wording.ParameterNamingTest, 1 test: a naming convention.TemplateTranslationsTest, 1 test: that no shipped template carries a French HTML body.
With them go TranslationCheckTrait and a README-scanning test in OrchestraAuditTrailSubscriberTest. The translations CI job already reports a missing translation, which is what most of these were circling.
The Unit suite goes from 143 tests and 12,306 assertions to 93 and 2,513, and from 3.21 seconds to 0.78.
What stays
Ten classes that also read files are kept, because each states a rule about the code or about something a person hits rather than about prose: the WCAG contrast check, table captions, the initiator lookup cost, guarded row updates invalidating their caches, the absence of upgrade hooks, resolver priorities, shipped configuration enforced on its module, plugin families covered by the dependency walk, menu links rooting into admin, and no prebuilt logger channel being injected.
Three tests inside those are dropped too, for asserting nothing a reader could reach: one that checked a table of stylesheets still names files that exist (the completeness guard beside it fails on the same rename), one about an empty post_update.php that nobody ships, and a positive control restating what the file collector already asserts.
The two kept guards that matter most were checked by mutation rather than by reading: darkening a card color to #9a9a9a is reported as 2.81:1 against the 4.5:1 AA asks, and renaming a real #caption key is reported as a table with no caption.
Two French strings
Folded in because they are the same shape of problem, a catalog left behind by a rename. The capability-link doorway's status report line is titled Orchestra request limits, and its French still read Limites de requetes de l'interaction Orchestra. And orchestra_views rendered the workflow's read access as la portee de consultation du workflow, where portee is the scope word the ReadScope to ReadAccess rename retired and the other catalogs use acces en lecture.
User interface changes
A French site reads the same status report title as an English one, and the Views column description names read access the way the rest of the interface does.
AI-Generated: Yes (Claude Code was used to help draft this issue summary and to write the code on the merge request. I reviewed and ran the work myself before posting it.)
Issue fork orchestra-3624520
Show commands
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
Comments
Comment #2
mably commentedComment #4
mably commentedComment #5
mably commentedComment #6
mably commentedComment #8
mably commented