Repository navigation
Commit 7bfbb96
committed
fix(sessions): void ownership on any short request history read
The compaction decorator inherits SessionABC.session_settings = None
rather than proxying the session it wraps, so a limit configured on the
wrapped backend, as in
SQLiteSession(session_settings=SessionSettings(limit=2)), resolved as
None above the wrapper while the backend still applied it to
get_items(None) and returned only the newest turns. The guard that
voids the run's ownership token asked whether a limit resolved at the
wrapper, so it never fired: the token had been captured over the full
store, its count still matched at persist time, and the response
recorded a boundary spanning history its request never carried. The
previous_response_id compaction keyed on that response then replaced
the covered prefix and deleted turns the server side history never
contained, with no limit visible anywhere above the backend and no
concurrency involved.
Stop asking where a limit was configured. The check now sits after both
read paths and voids the token whenever the history read for the
request differs in length from the count the token captured, wherever
the difference came from. That covers a limit on the wrapped session,
any other backend that windows its own reads, and any future setting of
that shape, and it removes the resolved limit condition rather than
adding a second one beside it.
The comparison is against the raw returned list, before the
normalization and dedupe steps that legitimately merge items with no
coverage lost, and against the underlying count the token captured, so
an ordinary session's unlimited read matches item for item and still
records. A limit generous enough to admit the whole store matches too,
and the control regressions for both pin that.
The wrapped limit regression fails before the fix with the whole store
replaced by the compaction output and every prior turn gone.1 parent 225ee41 commit 7bfbb96
3 files changed
Lines changed: 99 additions & 27 deletions
File tree
- src/agents
- memory
- run_internal
- tests/memory
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
52 | 52 | | |
53 | 53 | | |
54 | 54 | | |
55 | | - | |
56 | | - | |
57 | | - | |
58 | | - | |
59 | | - | |
60 | | - | |
61 | | - | |
62 | | - | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
63 | 65 | | |
64 | 66 | | |
65 | 67 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
405 | 405 | | |
406 | 406 | | |
407 | 407 | | |
408 | | - | |
409 | | - | |
410 | | - | |
411 | | - | |
412 | | - | |
413 | | - | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
414 | 414 | | |
415 | 415 | | |
416 | 416 | | |
| |||
426 | 426 | | |
427 | 427 | | |
428 | 428 | | |
429 | | - | |
430 | | - | |
431 | | - | |
432 | | - | |
433 | | - | |
434 | | - | |
435 | | - | |
436 | | - | |
437 | | - | |
438 | | - | |
439 | | - | |
440 | 429 | | |
441 | 430 | | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
442 | 442 | | |
443 | 443 | | |
444 | 444 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3388 | 3388 | | |
3389 | 3389 | | |
3390 | 3390 | | |
3391 | | - | |
3392 | | - | |
| 3391 | + | |
| 3392 | + | |
| 3393 | + | |
3393 | 3394 | | |
3394 | 3395 | | |
3395 | 3396 | | |
| |||
3541 | 3542 | | |
3542 | 3543 | | |
3543 | 3544 | | |
| 3545 | + | |
| 3546 | + | |
| 3547 | + | |
| 3548 | + | |
| 3549 | + | |
| 3550 | + | |
| 3551 | + | |
| 3552 | + | |
| 3553 | + | |
| 3554 | + | |
| 3555 | + | |
| 3556 | + | |
| 3557 | + | |
| 3558 | + | |
| 3559 | + | |
| 3560 | + | |
| 3561 | + | |
| 3562 | + | |
| 3563 | + | |
| 3564 | + | |
| 3565 | + | |
| 3566 | + | |
| 3567 | + | |
| 3568 | + | |
| 3569 | + | |
| 3570 | + | |
| 3571 | + | |
| 3572 | + | |
| 3573 | + | |
| 3574 | + | |
| 3575 | + | |
| 3576 | + | |
| 3577 | + | |
| 3578 | + | |
| 3579 | + | |
| 3580 | + | |
| 3581 | + | |
| 3582 | + | |
| 3583 | + | |
| 3584 | + | |
| 3585 | + | |
| 3586 | + | |
| 3587 | + | |
| 3588 | + | |
| 3589 | + | |
| 3590 | + | |
| 3591 | + | |
| 3592 | + | |
| 3593 | + | |
| 3594 | + | |
| 3595 | + | |
| 3596 | + | |
| 3597 | + | |
| 3598 | + | |
| 3599 | + | |
| 3600 | + | |
| 3601 | + | |
| 3602 | + | |
| 3603 | + | |
| 3604 | + | |
| 3605 | + | |
| 3606 | + | |
| 3607 | + | |
| 3608 | + | |
| 3609 | + | |
| 3610 | + | |
| 3611 | + | |
| 3612 | + | |
| 3613 | + | |
3544 | 3614 | | |
3545 | 3615 | | |
3546 | 3616 | | |
| |||
0 commit comments