Looks clean. Here's the breakdown:

**What changed:** `kestrel-llms[all]` pinned from `0.1.4` -> `0.1.5`. The lock file reflects transitive bumps across the LLM sub-packages:

| Package | Old | New |
|---|---|---|
| kestrel-llms | 0.1.4 | 0.1.5 |
| kestrel-llm-openai-compat | 0.1.5 | 0.1.6 |
| kestrel-llm-deepseek | 0.1.6 | 0.1.7 |
| kestrel-llm-kimi | 0.1.6 | 0.1.7 |
| kestrel-llm-xai | 0.1.6 | 0.1.7 |

**Release/install risks: all low**

1. **Exact pin is correct.** `==0.1.5` in pyproject.toml matches the lock. No range ambiguity.
2. **All artifacts on PyPI.** Upload timestamps are today (2026-05-21), hashes present and consistent between sdist/wheel entries.
3. **No new dependencies introduced.** The dependency lists for each sub-package are identical: same `kestrel-sovereign-sdk`, `openai`, `pydantic` deps. No supply-chain surface change.
4. **openai-compat wheel grew ~275 bytes** (3381 -> 3656). Consistent with a small code change, not a vendored blob. The others are unchanged or trivially smaller. Nothing suspicious.
5. **No changes outside the kestrel-llm family.** The rest of `uv.lock` is untouched: no collateral version drift.
6. **Existing `kestrel-sovereign-sdk` floor unchanged.** The sub-packages still depend on the SDK without a version bump, so no circular or conflicting constraint.

**One thing to verify before merge:** confirm tests pass with the new versions (the openai-compat bump from 0.1.5 -> 0.1.6 is the one most likely to carry behavioral changes given the size delta). Otherwise, ship it.
