diff --git a/CLAUDE.md b/CLAUDE.md index 37f79fc..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 1.16.0 Annotation Service (`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) 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: