Test the two bounds that were written and never exercised - #285
Merged
Merged
Conversation
Spec 011 Phase 9, less the two tasks that need a deploy. T034 and T035 were implemented in Phase 3 by copying the answer endpoint's patterns, and neither had a test. Written code with no test is not the same as working code, and both of these only run on paths nobody exercises deliberately. The bound now has one: a stuck model, the timeout patched to 0.25s, and the stream must still end with a terminal `failed` rather than holding the connection. The stand-in hangs for a finite five seconds so a regression fails quickly instead of hanging the suite. And a second test the task did not ask for: a timed-out generation must not store its partial text. `put` already refuses empty text, but a truncated summary is not empty -- it is worse, a plausible fragment ending mid-sentence that would then be served as the summary forever. The abandoned-stream log has one too, driven through the response iterator rather than a client, because the point is to close it mid-stream and a TestClient will not. An abandoned stream is identical to a healthy one in every other signal: the request 200s, tokens flow, and then nothing happens. Also, at the website's request, expression summaries now refer to columns as `column 1`, `column 2` and in no other form. They hold the real labels and we never do, so they substitute them into our prose -- which only works if our wording is fixed. They had decided to show labels alongside rather than splice on brittle matching; pinning the form is the better half of that trade, and it is in the contract now. All three verified by sabotage, with each sabotage asserted to have applied. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
Spec 011 Phase 9, less the two tasks that need a deploy (T036, T037).
Two bounds with no tests
T034 and T035 were implemented back in Phase 3 by copying the answer endpoint's patterns, and neither had a test. Written code is not working code, and both only run on paths nobody exercises deliberately.
The timeout now has one: a stuck model, the bound patched to 0.25s, and the stream must end with a terminal
failedrather than holding the connection open. The stand-in hangs for a finite five seconds so a regression fails quickly instead of hanging the suite.A second test the task did not ask for: a timed-out generation must not store its partial text.
putalready refuses empty text, but a truncated summary is not empty — it is worse, a plausible fragment ending mid-sentence that would then be served as the summary forever.The abandoned-stream log has one too, driven through the response iterator rather than a client, because the point is to close it mid-stream and a
TestClientwill not. An abandoned stream is identical to a healthy one in every other signal: the request 200s, tokens flow, then nothing happens.A stable form for column references
At the website's request. Expression summaries now refer to columns as
column 1,column 2and in no other form.They hold the real labels and we never do, so they substitute them into our prose — which only works if our wording is fixed. They had decided to show labels alongside rather than splice on brittle matching; pinning the form is the better half of that trade. In the contract now.
All three verified by sabotage, each sabotage asserted to have applied.
🤖 Generated with Claude Code