From 5d2870e48389b36e615c31f39bf4d85dbb938093 Mon Sep 17 00:00:00 2001 From: Craig McChesney Date: Thu, 10 Sep 2026 14:20:51 -0600 Subject: [PATCH 1/2] docs: correct the sample-status version banner (rel-1.16.0 does not exist) doc/cookbook/sample-status.md claimed "Verified against dp-grpc rel-1.16.0", but that tag has never been cut -- the newest dp-grpc release is rel-1.15.0. Copilot caught the identical overclaim in the datasets recipe during the review of #45; that one was corrected there, and this one was left alone as it was not that PR's file. Fixing it now, before the release, since a banner naming a nonexistent tag is exactly what a reader checks first. Separates the two claims the old banner conflated: the TARGET API version (1.16.0, unreleased) from what was actually exercised (a pre-release Annotation Service built from dp-service main). The verification section lower in the file and the matching CLAUDE.md line get the same treatment. Unlike the datasets recipe, no dp-service commit was recorded for the sample status integration run, so this does not name one rather than inventing a plausible sha. Worth recording the commit next time that suite is run against a live server. The four dp-python-lib 1.15.0 banners on the other recipes are accurate -- that release exists -- and are left as they are. 103 cookbook snippets check; 719 unit tests pass; ruff clean. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_019he3UCsAnqTDE2VQ73Djwn --- CLAUDE.md | 2 +- doc/cookbook/sample-status.md | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 37f79fc..f0b1fea 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -717,7 +717,7 @@ Notes: - The deferred domain-registry RPCs (`saveSampleStatusDomain` / `querySampleStatusDomains`) are reserved placeholders that return "not implemented", so they are not wrapped. - A pandas view of statuses is deferred; `sample_status_conversions` returns plain Python objects and needs no extras. -- Verified end to end against a live 1.16.0 Annotation Service (`tests/integration/test_sample_status_client_integration.py`): +- Verified end to end against a live Annotation Service built from dp-service `main` (the 1.16.0 API, which is not yet released — the newest tag is `rel-1.15.0`) (`tests/integration/test_sample_status_client_integration.py`): exact nanosecond timestamp round-trip through both axis forms, absent-stays-absent, full-replace upsert, and layer independence. The tests probe for the API first and skip with an actionable message against a pre-1.16.0 server, since reachability alone does not imply the RPCs exist. Status *filtering* of query results is still unit-tested diff --git a/doc/cookbook/sample-status.md b/doc/cookbook/sample-status.md index 51d99fe..9d8b682 100644 --- a/doc/cookbook/sample-status.md +++ b/doc/cookbook/sample-status.md @@ -3,8 +3,12 @@ Recording that *this particular sample, at this particular instant, was bad* — and then querying data with the flagged samples left out. -> **Verified against:** dp-grpc `rel-1.16.0`. -> The sample status API is **new in 1.16.0** and will not work against a `rel-1.15.0` server. +> **Target API version:** dp-grpc 1.16.0, which is **not yet released** — the newest tag is +> `rel-1.15.0`. The sample status API is new in 1.16.0 and will not work against a `rel-1.15.0` +> server, which answers these calls with `UNIMPLEMENTED`. +> +> **Verified against:** a pre-release Annotation Service built from dp-service `main` carrying the +> 1.16.0 API. See [API conventions](conventions.md) for result checking, paging, and time handling. @@ -366,7 +370,8 @@ delete would remove, run the same range and `(domain, layer)` through ### How far these examples have been verified -The save/query/delete loop **has** been exercised against a live 1.16.0 Annotation Service, by +The save/query/delete loop **has** been exercised against a live Annotation Service built from +dp-service `main` (the 1.16.0 API, pre-release), by `tests/integration/test_sample_status_client_integration.py`. That covers the parts most likely to break silently: From 41c8a6e6d11905cde9e60730a6d91d2c22148f72 Mon Sep 17 00:00:00 2001 From: Craig McChesney Date: Thu, 10 Sep 2026 14:39:44 -0600 Subject: [PATCH 2/2] docs: rewrap the sample-status verification bullet to CLAUDE.md's line width The previous commit collapsed that bullet onto a single 227-column line, against the ~120-column hard wrap the surrounding list uses -- its own continuation lines were already wrapped that way, so the result was visibly inconsistent and would make future diffs noisier. Rewrapped, and while there merged the two adjacent parenthetical groups the edit had left back to back into one clause. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_019he3UCsAnqTDE2VQ73Djwn --- CLAUDE.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index f0b1fea..437a3f1 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -717,11 +717,12 @@ Notes: - The deferred domain-registry RPCs (`saveSampleStatusDomain` / `querySampleStatusDomains`) are reserved placeholders that return "not implemented", so they are not wrapped. - A pandas view of statuses is deferred; `sample_status_conversions` returns plain Python objects and needs no extras. -- Verified end to end against a live Annotation Service built from dp-service `main` (the 1.16.0 API, which is not yet released — the newest tag is `rel-1.15.0`) (`tests/integration/test_sample_status_client_integration.py`): - exact nanosecond timestamp round-trip through both axis forms, absent-stays-absent, full-replace upsert, and layer - independence. The tests probe for the API first and skip with an actionable message against a pre-1.16.0 server, - since reachability alone does not imply the RPCs exist. Status *filtering* of query results is still unit-tested - only — it needs ingested sample data to attach to (#17). +- Verified end to end by `tests/integration/test_sample_status_client_integration.py` against a live Annotation + Service built from dp-service `main` (the 1.16.0 API, **not yet released** — the newest tag everywhere is + `rel-1.15.0`): exact nanosecond timestamp round-trip through both axis forms, absent-stays-absent, full-replace + upsert, and layer independence. The tests probe for the API first and skip with an actionable message against a + pre-1.16.0 server, since reachability alone does not imply the RPCs exist. Status *filtering* of query results + is still unit-tested only — it needs ingested sample data to attach to (#17). ### Configuration Priority (High to Low) 1. **Explicit parameters** (direct channels, config objects)