Skip to content

Replace buffered dataset spans with typed resource writes - #123

Merged
Stephen Belanger (Qard) merged 1 commit into
refactor/resource-registrationfrom
refactor/typed-dataset-writes
Oct 28, 2026
Merged

Stephen Belanger (Qard) merged 1 commit into
refactor/resource-registrationfrom
refactor/typed-dataset-writes

Conversation

@Qard

Copy link
Copy Markdown
Contributor

Dataset mutations previously accumulated in a private buffer until flush, which converted them to synthetic span payloads and discarded their delivery completions. This could report success before the API accepted a mutation, and placed deletion flags inside span attributes.

This change sends typed dataset rows through the direct API and returns each operation's actual result. Insert returns Result<String>; update and delete return Result<()>. Merge and deletion flags are top-level row fields, and no tracing fields are synthesized. There is no private buffer or automatic replay after failure. Each mutation request makes one attempt; payload rejection and rate limits are returned directly without retry, splitting, or overflow.

Dataset flush now returns the shared trace queue's eager completion/barrier. Dataset mutations are acknowledged independently, and summary reads no longer flush unrelated work. Dataset registration, writes, pagination, and summaries carry the explicit organization header.

Experiment and dataset transport adapters now delegate to the shared API client instead of duplicating HTTP code in logger.rs. They reuse the SDK transport and configured control/data routes. The SDK retains its existing interpretation of base-experiment HTTP 400 as no base; the direct API preserves the HTTP error.

Stacked on #122. Immutable credential scopes, concrete resource handles, and the remaining eager resource operations follow in later layers. Planning notes remain local.

Validation: 268 unit/integration tests and 9 doctests passed (one existing integration test and four existing doctests ignored), strict Clippy and rustdoc, formatting, and git diff --check. New coverage checks exact mutation payloads, immediate acknowledgement/errors, no replay, shared registration, shared flush failure retirement, organization headers, and separate control/data routes with path prefixes.

@Qard
Stephen Belanger (Qard) merged commit 82eb144 into refactor/resource-registration Oct 28, 2026
2 checks passed
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.

1 participant