52 lines
2.1 KiB
Markdown
52 lines
2.1 KiB
Markdown
|
|
---
|
||
|
|
model: openai/gpt-5.6-sol
|
||
|
|
service: opencode
|
||
|
|
timestamp: 2026-08-13T20:24:02Z
|
||
|
|
git_ref: 12b0d66e
|
||
|
|
diff_cmd: git diff HEAD~1..HEAD
|
||
|
|
---
|
||
|
|
|
||
|
|
The user asked to continue the paired piker broadcast-consumer work after
|
||
|
|
Tractor PR 490 stabilization. The next item was to stop cached feed callers
|
||
|
|
from mutating or consuming shared `Feed`/`Flume` quote-stream roots, then
|
||
|
|
review, verify and prepare a commit boundary.
|
||
|
|
|
||
|
|
> `git diff HEAD~1..HEAD -- piker/data/feed.py`
|
||
|
|
|
||
|
|
Changed `maybe_open_feed()` so the cached `Feed` exclusively owns provider
|
||
|
|
root streams and every caller, including the first cache owner, receives a
|
||
|
|
caller-local `Feed`/`Flume` view backed by one child subscription per provider.
|
||
|
|
The cache identity now includes normalized full symbol shape and stream policy.
|
||
|
|
|
||
|
|
Changed `Feed.open_multi_stream()` so every provider relay subscribes instead
|
||
|
|
of directly consuming a shared stream, and synchronizes relay startup before
|
||
|
|
yielding the merged channel. Each relay owns a cloned send channel so one
|
||
|
|
provider EOC cannot terminate its siblings. The module-level relay returns its
|
||
|
|
live child receiver through `TaskStatus` for typed retention and introspection.
|
||
|
|
Documented `Feed.pause()`/`Feed.resume()` as provider-context-wide controls
|
||
|
|
shared by local cache users.
|
||
|
|
|
||
|
|
> `git diff HEAD~1..HEAD -- tests/test_feed_broadcast.py`
|
||
|
|
|
||
|
|
Added real `Feed`, `Flume`, and Tractor broadcast regressions covering both
|
||
|
|
cache-miss owner and cache-hit paths, one-provider-many-market mapping,
|
||
|
|
multi-provider relay fan-out and startup, duplex controls, lexical child
|
||
|
|
closure, sibling survival after provider EOC, cached-root immutability, and
|
||
|
|
full cache-key differentiation.
|
||
|
|
|
||
|
|
Verification output:
|
||
|
|
|
||
|
|
```text
|
||
|
|
... [100%]
|
||
|
|
3 passed in 0.02s
|
||
|
|
|
||
|
|
. [100%]
|
||
|
|
1 passed in 0.01s
|
||
|
|
```
|
||
|
|
|
||
|
|
The second result is the existing EMS broadcast ownership regression. Ruff,
|
||
|
|
E501, compilation and whitespace checks passed. Repeated adversarial review
|
||
|
|
found and resolved shared `Feed.streams`, incomplete cache-key, fake-lifecycle,
|
||
|
|
relay-startup and first-owner asymmetry issues; final review reported no
|
||
|
|
findings.
|