|
| 1 | +# Temporary DSPy integration patches |
| 2 | + |
| 3 | +Upstream release: lm15 v1.2.3 at |
| 4 | +`fcc367caedbeca42831e4e64578d222827baf1c1`. |
| 5 | +Contract pin: `8eedbae4f13dc80666024503256149a7bbf39388`. |
| 6 | + |
| 7 | +Replay these commits in order on a newer eligible release, omitting a patch |
| 8 | +only when its regression is covered by the upstream release. Keep fork main |
| 9 | +unpatched and do not rewrite published integration branches. |
| 10 | + |
| 11 | +1. `7ff9f18` (original `bf96a4fe32edfa72125a2f9c2ee7ea0cc206c655`): |
| 12 | + enforce the selected model for keyword requests as well as explicit Request |
| 13 | + values. Otherwise a bound client can silently request a different model. |
| 14 | + The regression in tests/test_login.py verifies matching spellings and |
| 15 | + rejection before dispatch for request, plan, complete and stream. |
| 16 | +2. `9897ee2` (original `3a5cac83983aa462841f32a7f9842a085ac052ef`): |
| 17 | + classify renewal HTTP 429 as RateLimitError rather than LoginDenied. A |
| 18 | + temporary rate limit must not delete saved credentials. The regression in |
| 19 | + tests/test_login.py checks preserved credentials/revision, cleared in-flight |
| 20 | + state, no automatic retry and a successful later renewal. |
| 21 | +3. `1becdc1` (original `dd0662c866dfd208ffed443f071e10123170ef0e`): |
| 22 | + keep credentials, account headers and endpoints in one per-operation |
| 23 | + snapshot. Retained adapters acquire the active connection for each |
| 24 | + operation; bound clients retain their selected identity. Dispatch checks |
| 25 | + the snapshot's generation before every transport handoff, including delayed |
| 26 | + streams and multi-wire operations. Renewal cannot silently change a known |
| 27 | + account ID. Regression coverage in tests/test_managed_dispatch.py includes |
| 28 | + sync/async replacement, renewal, logout races, batch upload/submit, explicit |
| 29 | + endpoints and offline planning. |
| 30 | +4. `3a883ec` (original `046f2bfa5c12b55c6a199f388879e5d689397a87`): |
| 31 | + preserve the retained adapter's transport and adaptation policy when |
| 32 | + preparing an operation. Sync/async regressions verify the documented |
| 33 | + transport replacement escape hatch sends only through the caller's |
| 34 | + replacement transport. |
| 35 | + |
| 36 | +All four patches remain necessary in v1.2.3. Its new provider auth-error |
| 37 | +classification does not fix renewal HTTP 429 handling; its router changes |
| 38 | +redact invalid credential names, without adding managed request snapshots. |
| 39 | +The replay has no patch-content changes from the validated v1.2.1 stack. |
| 40 | + |
| 41 | +The first two fixes originate on cmpnd-ai/lm15-python branch |
| 42 | +fix/managed-auth-review. The routing fixes are published on |
| 43 | +fix/managed-request-snapshots. Upstream PR submission was denied by GitHub |
| 44 | +integration permissions; no patch is claimed to be merged upstream. Check |
| 45 | +for an existing upstream PR before attempting submission again. |
| 46 | + |
| 47 | +Managed websocket operations and raw request builders that bypass operation |
| 48 | +preparation fail closed; explicit/unmanaged credentials retain their existing |
| 49 | +behavior. No shared adapter fields are mutated during requests. A snapshot |
| 50 | +admitted before logout may still reach the transport: logout cannot recall an |
| 51 | +already admitted request. |
| 52 | + |
| 53 | +Full source tests, strict conformance, the exact pinned contract harness, |
| 54 | +type checks and DSPy integration tests must pass on every changed stack before |
| 55 | +import. The only approved orb exceptions are the sync/async reserved-IP |
| 56 | +connect-timeout tests, with passing exact-release upstream CI. Do not infer |
| 57 | +that passing existing contract tests alone demonstrates the race regressions. |
| 58 | +No live provider calls are needed. |
0 commit comments