release(0.12.1): wire server-minted execution_id through /check -> /t…#51
Merged
Conversation
…rack Bug-fix release. The 0.12.0 changelog claimed the SDK propagates the server-minted execution_id from /check to /track but the wiring was never shipped -- the SDK still sent client-supplied ids on /track/batch and ignored reservation_id on /check responses. Closes the four gaps documented in docs/sdk-v3-migration-gaps.md: * check_workflow_budget() now reads response["reservation_id"] into a contextvar (nullrun.context._server_minted_execution_id_var). * New helpers set_/get_/reset_/clear_server_minted_execution_id plus a paired _server_minted_reservation_at timestamp for the 295s TTL guard. * _enrich_event stamps execution_id on the /track payload while the captured reservation is fresh; past the 295s safety window it drops and clears the capture so a doomed id never ships to /track (which would 503 RESERVATION_NOT_FOUND -- CLAUDE.md section 33). * _route_track dispatches llm_call events to the v3 /api/v1/track single-event endpoint via Transport.track_single() so backend gate_consume_v3 validates the consume-vs-reserve + epsilon invariant (CLAUDE.md section 25). Span / tool events keep using the legacy /api/v1/track/batch. NULLRUN_V3_TRACK_DISABLE=1 forces everything through the legacy batch path (backends still on v1/v2). Adds 27 contract tests in tests/test_v3_server_minted.py covering contextvar hygiene, capture defence-in-depth, _enrich_event age threshold, _route_track dispatch, and end-to-end /gate -> /track round trip.
…-> 0.12.1) Same drift pattern as #50: the runtime commit bumped src/nullrun/__version__.py to 0.12.1 but missed this field. Without the sync-up `python -m build` would publish a `nullrun-0.12.0-*` wheel that PyPI Trusted Publishing rejects with HTTP 400 "File already exists", blocking the publish workflow that fires on `v*` tags. Refreshes the inline comment to point at the current bump and explains why the fix had to be applied again.
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
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.
…rack
Bug-fix release. The 0.12.0 changelog claimed the SDK propagates the server-minted execution_id from /check to /track but the wiring was never shipped -- the SDK still sent client-supplied ids on /track/batch and ignored reservation_id on /check responses.
Closes the four gaps documented in docs/sdk-v3-migration-gaps.md:
Adds 27 contract tests in tests/test_v3_server_minted.py covering contextvar hygiene, capture defence-in-depth, _enrich_event age threshold, _route_track dispatch, and end-to-end /gate -> /track round trip.
What
Why
How
Test plan
cd backend && cargo test,cd frontend && npm test)cd frontend && npm run lint)cd frontend && npm run type-check)Risk
Checklist
CONTRIBUTING.md(if present)