plan: triage and plan #16 bucket-oriented v2 query client - #71
Merged
Merged
Conversation
Triage of the AI-drafted ticket against dp-service main (08c2038) and the rel-1.16.0 stubs: most of the conversion layer exists from #6/#17; sampleStatusSelector is rejected on buckets; useSerializedColumns is inert on buckets (upstream docs fix filed as osprey-dcs/dp-grpc#167); limit counts buckets and pages are also cut by bytes. Q1-Q4 resolved: per-PV pandas frames, opt-in exact trimming, two implementation PRs. Refs #16 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CajTMkjkkzeoWXLSgMpn5k
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
The trimming design lacks range validation and cannot correctly handle the promised unsorted timestamp axes.
Review effort: Balanced
Findings: 2
Open (2)
What changed in this PR
Plans issue #16’s bucket-oriented v2 query client and conversion layer.
Changes:
- Documents verified server behavior and design decisions.
- Splits implementation into client/unit-test and integration/docs PRs.
| File | Description |
|---|---|
plan/tickets/16/plan.md |
Defines triage findings, API design, implementation tasks, and sequencing. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
A stored TimestampList is non-decreasing (dp-service rejects decreasing at ingestion since rel-1.13.0), so trimming bisects and raises on a decreasing axis instead of scanning; trim ranges require begin < end; bucket reads use read-side checks only, since stored axes may carry duplicates the write path refuses; pandas attrs are rebuilt after concatenation. Refs #16 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CajTMkjkkzeoWXLSgMpn5k
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Plan-only PR for #16 (the bucket-oriented v2 query,
queryBuckets/queryBucketsStream). Merging this does not close the issue; the implementation lands in PR A (client, conversions, unit tests) and PR B (live tests, docs,Closes #16).Refs #16
What triage found
The ticket was AI-drafted and filed before #6 and #17 landed. Its request-side analysis holds; the rest needed correcting against dp-service
main(08c2038):data_frame_conversions,expand_data_timestamps(),data_frame._slice_frame()). ADataBucketis one PV's column over one axis, so the work is wrapping, per-PV assembly, and trimming.sampleStatusSelectoris rejected on buckets (not "future"); the client refuses it at request-build time.useSerializedColumnsis inert on buckets, contrary toquery.proto; serialized buckets are user data, passed through raw and refused in pandas. Upstream docs fix: queryBuckets: correct useSerializedColumns docs, and document byte-cut pages, token scope, and result order dp-grpc#167 (sub-issue of 2.0 API modernization data-platform#104).limitcounts buckets, pages are also cut by bytes (with a token), andexcludeColumnMetadataworks on buckets, so this is the first live read-back of provenance.Resolved questions (2026-09-30)
Flagged for review
Decisions taken without a question: D2 (refuse, not drop, the status filter), D4 (no dedup across overlapping buckets), D6 (serialized pass-through), D7 (per-bucket metadata in
df.attrs["buckets"]), D8 (no streaming pandas convenience), D9 (one shared stream sender for both query kinds).🤖 Generated with Claude Code
https://claude.ai/code/session_01CajTMkjkkzeoWXLSgMpn5k