Skip to content

docs: add the 1.16.0 release notes - #51

Merged
craigmcchesney merged 4 commits into
mainfrom
docs/release-notes-1.16.0
Sep 16, 2026
Merged

craigmcchesney merged 4 commits into
mainfrom
docs/release-notes-1.16.0

Conversation

@craigmcchesney

Copy link
Copy Markdown
Collaborator

Adds doc/release-notes/rel-1.16.0.md — the first document under the convention #50 established, and the one remaining blocker for the rel-1.16.0 tag. release.yml's build job fails before building if the notes are missing on the tagged commit, so this has to merge first.

Style

Follows dp-grpc's rel-1.16.0.md: organized by issue ticket rather than by PR (#6 alone spans four PRs), leading with an Upgrading from 1.15.0 checklist that separates the silent behavior changes from the ones that merely widen a signature.

What it says

The release is breaking, but narrowly, and the notes are explicit about which half is which:

  • Genuinely breaking (both inherited from the protocol, both silent in Python): DataValue.valueStatus is gone from the stubs, and multi-criterion queries now AND server-side where two tags criteria used to OR.
  • Not breaking: every hand-written client signature is unchanged or widened. Verified by diffing the public def/class lines across rel-1.15.0..main — the only changes are required params becoming optional.

Sections: sample status (#8), datasets/annotations/export plus the DataFrame builders and conversions (#6), the shared time converters (#6), key-only attribute search (#40), browse-all queries (#41), the _dispatch refactor (#14), dependency floors, docs/process, and the release-body and stub-sync workflow fixes.

Verification

  • Every internal anchor and relative link resolves (checked programmatically, including the two cross-doc CLAUDE.md#... anchors).
  • The workflow's notes check was run against the real path with GITHUB_REF_NAME=rel-1.16.0 — it resolves.
  • Two numbers I had initially taken from the ticket text were wrong against the code and are corrected here: the _dispatch refactor converted 18 senders but there are now 28 call sites after interface to modernized annotation API #6 and interface to sample status API #8 built on it, and the error-message contract is pinned by ~80 assertions, not ~40.
  • grpcio floor stated as >=1.84.0, matching GRPC_GENERATED_VERSION in the synced stubs on main.

Reviewing this

The prose is the deliverable, so it's worth a read rather than a skim — particularly the Upgrading from 1.15.0 section, which is what a consumer will actually act on, and the Dependency floors note about the import-time RuntimeError on an older pinned grpcio.

After this merges, rel-1.16.0 is ready to tag.

🤖 Generated with Claude Code

https://claude.ai/code/session_0151QFCHYMNBgEVNGLTgsoFL

Adds doc/release-notes/rel-1.16.0.md, the first document under the convention
release.yml established in #50 and the one thing still blocking the rel-1.16.0
tag -- the build job fails before building if it is missing on the tagged commit.

Organized by issue ticket rather than by PR, following dp-grpc's house style,
since #6 in particular spans four PRs.  Leads with an "Upgrading from 1.15.0"
checklist that separates the two silent behavior changes (DataValue.valueStatus
removed; multi-criterion queries now AND server-side) from the changes that
merely widen an existing signature.

Covers: the sample status client (#8), datasets/annotations/export and the
DataFrame builders and conversions (#6), the shared time converters (#6), the
key-only attribute search (#40), browse-all queries (#41), the _dispatch
refactor (#14), the raised grpcio floors, and the release-body and stub-sync
workflow fixes.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0151QFCHYMNBgEVNGLTgsoFL
Copilot AI lite review requested due to automatic review settings September 16, 2026 16:56

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Address the documented release-note inaccuracies and omissions before approval.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

Adds the 1.16.0 release notes and upgrade guidance for dp-python-lib.

Changes:

  • Documents breaking and non-breaking changes.
  • Summarizes API, query, dependency, and workflow updates.
  • Adds release guidance for the 1.16.0 tag.
File summaries
File Description
doc/release-notes/rel-1.16.0.md New 1.16.0 release documentation and upgrade guidance
Review details

Suppressed comments (1)

doc/release-notes/rel-1.16.0.md:230

  • column_values() raises on SerializedDataColumn, and iter_frame_columns()/data_frame_columns() intentionally skip serialized columns because decoding is deferred. “Every column kind” overstates the read support; qualify this as supported non-serialized kinds.
one entry per sample for every column kind, with the structural fields a payload cannot be interpreted
  • Files reviewed: 1/1 changed files
  • Comments generated: 5
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread doc/release-notes/rel-1.16.0.md
Comment thread doc/release-notes/rel-1.16.0.md Outdated
Comment thread doc/release-notes/rel-1.16.0.md Outdated
Comment thread doc/release-notes/rel-1.16.0.md Outdated
Comment thread doc/release-notes/rel-1.16.0.md Outdated
craigmcchesney and others added 3 commits September 16, 2026 11:08
…-note claims

The 1.16.0 release notes claimed the per-recipe "Verified against" headers
were gone, matching dp-grpc #141.  That change was made in dp-grpc; it was
never done here, so all seven recipes still carried the header, five of them
stamped "dp-python-lib 1.15.0" -- which would have shipped alongside the
1.16.0 release the notes were announcing.  The supporting anecdote was stale
too: no recipe claimed a rel-1.16.0 anymore.

Does the removal, following dp-grpc's convention: drop the version claim,
keep durable API facts as a short note below the reference links ("added in
1.16.0 and not available in earlier releases").  Kept for the v2 query API,
sample status, and datasets/annotations/export.  conventions.md keeps the
stubs-track-dp-grpc explanation, minus the stale 1.15.0-vs-rel-1.14.0 gap
and the now-dangling pointer to per-recipe notes.

Two other corrections to the notes:

- The sample status selector was described as supported by query_samples()
  / iter_query_samples_stream() "only", omitting iter_query_samples(), which
  calls query_samples() and carries it too.  The real distinction is between
  RPCs -- querySamples/querySamplesStream accept it, bucket queries do not --
  so the sentence now says that and names all three Python methods.
- "some 80 assertions" pin the error-message contract; the actual count of
  assertions matching the three _dispatch message formats is 46.

Verified: ruff lint and format clean, 725 unit tests pass, all 107 cookbook
snippets type-check, and every internal anchor and relative link in the
release notes and the cookbook still resolves.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0151QFCHYMNBgEVNGLTgsoFL
…rding

Two fixes from the Copilot review of PR #51.

The upgrade checklist described an unset limit as yielding a
"server-configured" default page size, contradicting this same document
eleven lines later, which correctly says the annotation-service default is
hardcoded at 100 and not configurable.  Says the latter in both places, so
nobody goes looking for a knob that does not exist.

The browse-all section credited dp-service #245 for all five RPCs.  That
ticket's own title names only the three metadata queries; datasets and
annotations got match-all earlier from dp-grpc #132, implemented by
dp-service #248.  plan/tickets/41/plan.md records this correction (T5) --
the net behavior is as described, only the provenance was wrong, and it
matters because this repo's plans cite upstream tickets as evidence.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0151QFCHYMNBgEVNGLTgsoFL
The sample status verification note said the 1.16.0 API was "not yet
released -- the newest tag everywhere is rel-1.15.0".  dp-grpc tagged
rel-1.16.0 today (cc61ec6), so that aside is now wrong, and this repo is
about to tag its own rel-1.16.0.

Keeps everything durable: which integration test verified what, that the
server was a dp-service `main` build carrying the 1.16.0 API, the skip
behavior against a pre-1.16.0 server, and that status filtering is still
unit-tested only.  Only the claim about which tags existed when it was
written is removed -- that is the part that decays at every release.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0151QFCHYMNBgEVNGLTgsoFL
@craigmcchesney
craigmcchesney merged commit 3d06dce into main Sep 16, 2026
6 checks passed
@craigmcchesney
craigmcchesney deleted the docs/release-notes-1.16.0 branch September 16, 2026 17:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants