review/settings: clarify model offset-matching; mergeReviewProfiles always returns non-nil
Commit

-
modelComponentsMatch: document that a shorter id matches at any offset in a longer one (so a provider/family prefix like 'anthropic-claude- sonnet-4-5' still matches 'claude-sonnet'), and that equal-length arrays are either identical (matched upstream via want==got) or different models. No behavior change; added tests for identical two-component ids, slash-provider stripping, and a provider-component offset match.
-
mergeReviewProfiles: drop the both-empty early return so it always returns a fresh, non-nil map; a nil base with a non-nil-empty src no longer yields nil. Behavior-equivalent for current consumers (which treat nil and empty maps the same), but avoids the nil-from-non-nil surprise. Updated the test accordingly.
Entire-Checkpoint: 5cbbb55f9459