42 lines
1.4 KiB
Markdown
42 lines
1.4 KiB
Markdown
|
|
---
|
||
|
|
model: openai/gpt-5.6-sol
|
||
|
|
service: opencode
|
||
|
|
timestamp: 2026-08-21T02:35:37Z
|
||
|
|
git_ref: ae6f2ac3
|
||
|
|
diff_cmd: git diff HEAD~1..HEAD
|
||
|
|
---
|
||
|
|
|
||
|
|
Replace the actor-cancel timeout watcher/status experiment with one
|
||
|
|
explicit absolute deadline threaded through the existing private call
|
||
|
|
path. Do not use a `ContextVar`, shared result state, waiter
|
||
|
|
coalescing, or polling tasks.
|
||
|
|
|
||
|
|
> `git diff HEAD~1..HEAD -- tractor/runtime/_portal.py`
|
||
|
|
|
||
|
|
`Portal.cancel_actor()` computes one absolute deadline and uses it for
|
||
|
|
both `Start` frame publication and the subsequent cancel-ack wait.
|
||
|
|
|
||
|
|
> `git diff HEAD~1..HEAD -- tractor/runtime/_runtime.py`
|
||
|
|
|
||
|
|
> `git diff HEAD~1..HEAD -- tractor/ipc/_chan.py`
|
||
|
|
|
||
|
|
The private RPC path forwards the operation-specific deadline. Lower
|
||
|
|
layers preserve the ordinary infinite-deadline call shape.
|
||
|
|
|
||
|
|
> `git diff HEAD~1..HEAD -- tractor/ipc/_transport.py`
|
||
|
|
|
||
|
|
`MsgpackTransport.send()` applies the deadline inside its complete-frame
|
||
|
|
shield. If the deadline expires after partial publication, it closes
|
||
|
|
the unusable stream before releasing the send lock.
|
||
|
|
|
||
|
|
> `git diff HEAD~1..HEAD -- tests/ipc/test_each_tpt.py`
|
||
|
|
|
||
|
|
> `git diff HEAD~1..HEAD -- tests/test_to_actor.py`
|
||
|
|
|
||
|
|
Focused regressions prove a partial-frame timeout closes the stream and
|
||
|
|
that actor-cancel publication and acknowledgement share one budget.
|
||
|
|
|
||
|
|
The implementation removes the earlier `_SendStatus`, watcher task,
|
||
|
|
coalescing, shared cancel result, and per-waiter state. Four focused
|
||
|
|
transport and actor-cancel tests pass.
|