Release 4.2.0 - #314
Merged
Merged
Conversation
fix - send community when creating report
feat - rename kgb feeds
ci: parametrize CI template include via $CI_TEMPLATE
… race test_sample (sync + async) polled the aggregated sample until the LLM report left its pre-trigger states, then asserted the sandbox tasks read COMPLETED. The report auto-triggers on any one completed dependency, and the sample's per-task requested_status fields don't update atomically, so the report could read triggered in the same response where sandbox_cape still projected NOT_TRIGGERED — an intermittent AssertionError against a live stack. Poll on the exact postconditions asserted instead: break once both sandbox deps read COMPLETED and the report is triggered. The test already drives both sandboxes to SUCCEEDED, so this only closes the projection-lag window; the committed cassettes replay unchanged.
…-race test: fix intermittent test_sample e2e race (poll on sandbox+report postconditions)
…nloads The 4.0 client widened two status-code checks and, in doing so, broke the handling of HTTP 204 — a successful response meaning "the request worked, but there was no matching data, so nothing was returned". - exists() checked `int(result) // 100 == 2` (any 2xx is "present"), so a HEAD /search/hash returning 204 for an absent artifact was reported as existing. The endpoint returns 200 when the artifact is present and 204 when it is absent, so only a 200 means it exists. Restore the pre-4.0 `== 200` check (matches the reference client's `str(result) == '200'`); 204 and 404 both map to False. - The streaming download path (_execute_download) only branched on non-2xx, so a 204 fell through, opened the destination, streamed the empty body and returned a successful *empty* artifact. Pre-4.0, a 204 on a parser-backed request raised NoResultsException via the shared parse path. Restore that: a 204 download now raises NoResultsException instead of silently writing an empty file. Both fixes edit the canonical async sources (aio/api.py, aio/session.py); the sync mirrors (api.py, session.py) are regenerated via scripts/regenerate_sync.py. Adds regression tests — exists() 200->True / 204->False / 404->False, a HEAD-204 parse-layer guard, and a 204 download raising NoResultsException — and pins the 200-only present / 204-absent contract in the specs.
fix: restore pre-4.0 204 ("no results") handling for exists() and downloads
Review — PR #314 (Release 4.2.0)Reviewed against Verdict: clean. No action items. Spot-checks that passed:
Minor (non-blocking, formatter-level): a trailing blank line was added at the end of |
mjbradford89
approved these changes
Jul 23, 2026
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.
exists()now returnsTrueonly for an HTTP200(present) andFalsefor204/404(absent), fixing a 4.0 regression where any2xx— including the server's204"no match" — was reported as existing.NoResultsExceptionon a204("no matching artifact") instead of silently writing an empty file.llm_report_download()now reads the report'surlfield, fixing anAttributeErrorfrom the previously-referenced non-existentdownload_url.create_llm_report()now sends the client'scommunitywhen creating the report.test_samplee2e race by waiting on the sandbox and LLM-report postconditions directly rather than using the report status as a proxy.$CI_TEMPLATEvariable instead of a hardcoded project path.4.2.0.