* main: (131 commits)
[ty] Fixup examples in `invalid-key` docs (#23968)
[ty] Fix compiler warning about unused variable (#23967)
[ty] Sync vendored typeshed stubs (#23963)
Add a `.git-blame-ignore-revs` file (#23959)
Revert "[ty] Completely remove the `NoReturn` shortcut optimization" (#23955)
[ty] Completely remove the `NoReturn` shortcut optimization (#23378)
[ty] Introduce fast path for protocol non-assignability (#23952)
Bump typing conformance suite SHA (#23951)
Minor followup to severity display - use preview function in server instead of checking preview disabled directly (#23950)
Document editor features for markdown code formatting (#23924)
[ty] Add `with_recursion_guard()` helpers to `relation.rs` (#23945)
[ty] Remove `check_optional_method_pair` methods (#23947)
[ty] Remove unused `CycleDetector::try_visit` method (#23944)
[ty] Ensure TypedDict subscripts for unknown keys return Unknown (#23926)
[ty] Fix variance of frozen dataclass-transform models (#23931)
Display output severity in preview (#23845)
Revert "[`ruff`] use `bitcode` instead of `bincode`" (#23935)
Fix shell injection via `shell=True` in subprocess calls (#23894)
[ty] Refactor `relation.rs` to store state on a struct rather than passing around 7 arguments every time we recurse (#23837)
Don't return code actions for non-Python documents (#23905)
...
Summary
We now model subscript reads directly so invalid keys recover as
Unknownwhile still emittinginvalid-key.Closes astral-sh/ty#3029.