Implement FeedReader.stream_file/2 as the primary large-feed local API.
Scope
Make one Saxy pass over a caller-owned XML file, emit {:feed, feed} before {:item, item} events, emit terminal parser errors, and preserve caller-owned files. Do not collect all raw or normalized items.
Acceptance Criteria
Feed metadata is the first event.
Items are delivered lazily in source order.
A malformed tail produces a terminal error after prior events in default mode.
Parser state retains only bounded current-item and consumer state.
Caller-owned files are never removed.
Event order, empty feeds, malformed tails, and cleanup are tested.
## Objective
Implement `FeedReader.stream_file/2` as the primary large-feed local API.
## Scope
Make one Saxy pass over a caller-owned XML file, emit `{:feed, feed}` before `{:item, item}` events, emit terminal parser errors, and preserve caller-owned files. Do not collect all raw or normalized items.
## Acceptance Criteria
- Feed metadata is the first event.
- Items are delivered lazily in source order.
- A malformed tail produces a terminal error after prior events in default mode.
- Parser state retains only bounded current-item and consumer state.
- Caller-owned files are never removed.
- Event order, empty feeds, malformed tails, and cleanup are tested.
mmacia
self-assigned this 2026-10-16 10:12:47 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Objective
Implement
FeedReader.stream_file/2as the primary large-feed local API.Scope
Make one Saxy pass over a caller-owned XML file, emit
{:feed, feed}before{:item, item}events, emit terminal parser errors, and preserve caller-owned files. Do not collect all raw or normalized items.Acceptance Criteria