fix: make model metadata merging deterministic

HA
9h ago
+250-19

Fixes #7830 by preserving model registration order when combining metadata from multiple model bases. If separate metadata objects define the same table, the registry now raises a clear InvalidRequestError instead of silently selecting one definition.

Regression coverage verifies deterministic ordering through register(), ordering after a model is removed and re-registered, duplicate table detection, and preservation of convention-generated constraint names.

Testing:

  • uv run pytest tests/units/test_model.py tests/units/utils/test_migrations.py -q — 60 passed.
  • Ruff format/check, codespell, and Pyright passed for the changed files.
  • The full unit suite on Windows reported 15,064 passed, 85 skipped, and 21 failures in platform-sensitive/unrelated tests (including symlink privilege limitations).