Skip to content

Commit 1304c9e

Browse files
ampagentIsaac Miller
andcommitted
Record temporary patches replayed on lm15 1.2.3
Signed-off-by: Amp <amp@ampcode.com> Amp-Thread-ID: https://ampcode.com/threads/T-01a0c095-4917-7617-9dac-e99f1ef22d41 Co-authored-by: Isaac Miller <isaac@cmpnd.ai>
1 parent 3a883ec commit 1304c9e

1 file changed

Lines changed: 58 additions & 0 deletions

File tree

‎DOWNSTREAM_PATCHES.md‎

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
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

Comments
 (0)