Issue #3614044: Pre-release audit since alpha11: untranslated strings, undocumented modules, stale references, a dev dependency, a stale metrics page and a token load per row
Fixes the six findings of the pre-release audit in [#3614044].
Translations. 60 strings across nine fr.po files: six reworded in this period whose translation still matched the old text, sixteen added with none at all, eleven filed in a different module's .po than the one that defines them (including the Work item status context entry for the work item state label, which belongs to the engine, not to the inbox), and 27 in the same files that had never been translated. Every .po passes msgfmt --check, and a scan of every translatable string in the files touched since alpha11 now reports no gap.
Module table. README.md gains the two shipped modules it was missing, orchestra_presentation and orchestra_inbox_views.
Stale references. docs/incidents.md shows validation.outcome in its dead-end diagnostic rather than the validation.result that no longer resolves; InstanceOriginTest builds its fixture with payload_variable and completion_scope rather than the dead keys; a routing comment names mayAct().
Dependency. drupal/domain_extras moves from 3.x-dev to ^3.0.4, now that 3.0.4 ships domain_render_context.
Metrics. docs/metrics.md regenerated from scripts/generate-metrics.php, which had not been run since the alpha11 commit itself: 998 files and 80,350 code lines, and a 61% test-to-production ratio.
A token load per row. TaskActions::family() reads a work item's token and that token's instance, and the act-link and operations columns asked it per row, so a listing paid two entity loads a row that the persistent cache deliberately does not absorb. TaskActions::prefetch() loads a listing's tokens and instances in two queries and both columns call it in preRender(), matching what the instance act link and the work item holder already do. MyTasksViewTest::testActionColumnsReadTokensInOneBatch() pins the count to the batch: four rows with four distinct tokens read them in fewer than four queries, and in five without the prefetch.
AssignmentMatcher's memos are left keyed by account id; keying them by tenant would add a tenant resolution to a hot path to guard a caller that does not exist, since every shipped dispatcher resolves recipients before entering the tenant switch. The docblock now states that as a constraint instead of claiming the tenant cannot change mid-request.
Verified locally: phpcs (Drupal, DrupalPractice, --warning-severity=1) clean on every changed PHP file, phpstan with the Drupal ruleset clean of new errors, cspell introduces no new words, and MyTasksViewTest and InstanceOriginTest both pass.