ComponentTreeFieldSymmetricalTranslationSynchronizerTest assumes a database-backend-independent inputs key order
### Overview
The kernel test `ComponentTreeFieldSymmetricalTranslationSynchronizerTest` fails on MySQL and PostgreSQL but passes on MariaDB and SQLite. The failure is an "arrays are identical" mismatch on a component instance's `inputs` where the values are correct but the key order differs (e.g. `href`/`text` swapped).
The cause is database-backend-dependent: component `inputs` are stored in a native JSON column, and JSON object key order is not preserved uniformly across backends. MySQL (`json`) and PostgreSQL (`jsonb`) reorder object keys on storage, while MariaDB (where `json` is a `LONGTEXT` alias) and SQLite (stored as `TEXT`) keep the source order. Whether a given comparison sees reordered keys also depends on whether the value was read back from the database or is still the in-memory copy.
Component input key order is not semantically meaningful, so an order-sensitive comparison of `inputs` is only valid on the order-preserving backends. There is no behavior change for site builders — only the test's assumption is wrong.
### Steps to reproduce
1. Run `ComponentTreeFieldSymmetricalTranslationSynchronizerTest` against MySQL or PostgreSQL.
2. Observe an "arrays are identical" failure where only the `inputs` key order differs.
3. Run the same test against MariaDB or SQLite — it passes.
### Proposed resolution
Compare component inputs order-independently in tests, and enforce that mechanically so the wrong assumption cannot be reintroduced:
- A shared `assertSameInputs()` test helper that canonicalizes key order before a strict comparison (keeping key→value binding and type strictness, unlike a value-canonicalizing equality assertion).
- A custom PHPStan rule that flags order-sensitive `assertSame()` comparisons of `ComponentTreeItem::getInputs()` and points to the helper, mirroring the existing "must use `assertEntityIsValid()`" rule.
Two alternatives were considered and rejected: normalizing key order on read (couples a low-level getter to config-schema resolution and adds cost to a hot path), and changing the storage column away from native JSON (requires a storage migration that is not viable here).
### Remaining tasks
- Convert the order-sensitive input comparisons in the affected test to the helper.
- Add and register the PHPStan rule; confirm it has no pre-existing violations.
- Decide whether to extend the helper + rule to functional tests (currently kernel-scoped, matching existing rule precedent).
### User interface changes
None in this issue.
### Data model changes
None. The `inputs` storage column is unchanged; key order was never a guaranteed property of it.
issue