v0.5.0: DataCanvas staging goes opt-in and byte-bounded
DataCanvas staging goes opt-in and byte-bounded
Breaking: a canvas-backed search tool no longer drains its full matched
set by default. Staging now requires stage=true or a canvas_id — omit
both and the call costs one upstream request, same as canvas disabled.
- Opt-in staging replaces the unconditional drain that pulled up to
25,000 rows regardless of the caller's limit, timing out (178s
locally, 502 on the hosted deployment) against large-record endpoints
(#30) - The drain is now byte-budgeted (~16 MB) instead of row-unconditional,
and the inline page serves the caller's limit/skip identically staged
or not — fixing an empty-preview false negative on oversized records
(#31) and skip disagreeing between staged and unstaged modes (#32) - openfda_dataframe_query maps canvas SQL errors onto its declared
invalid_query/missing_table contract instead of leaking internal
registerTable()/drop() API names, and discloses the 10,000-row query
cap with a continuation query (#28, #29) - Internal: format-utils helpers consolidated across all eight staging
tools; the framework's spillover() helper is no longer used in favor
of a direct canvas drain