~ LOSSY

any-llm 1.40.2

stream.missing-finish · ollama-openai

Back to results · Scenario

Requirements

IdLevelStatusEvidence
no-normal-stopMUSTSATISFIEDoutcome=returned; finish.value=null (absent); truth.finish="none"; forbidden finish="stop"
stream-incompleteMUSTNOT_OBSERVABLEstream.completed=null; outcome=returned; truth.stream_completed=false

What the provider sent

Finish
none
Raw finish
null
Text
Octopuses rely on their unique physiology to camouflage against the vast array of natural
Tool calls
[]
Usage
{
  "alternatives": {},
  "cached_input": null,
  "input": null,
  "output": null,
  "raw": null,
  "reasoning": null,
  "total": null
}
Stream completed
false
Error
null
Wire excerpt
status: 200
content-type: text/event-stream
body (sse):
data: {"id":"chatcmpl-554","object":"chat.completion.chunk","created":1791831681,"model":"qwen3.5:0.8b","system_fingerprint":"fp_ollama","choices":[{"index":0,"delta":{"role":"assistant","content":"Oct"},"finish_reason":null}]}


data: {"id":"chatcmpl-554","object":"chat.completion.chunk","created":1791831681,"model":"qwen3.5:0.8b","system_fingerprint":"fp_ollama","choices":[{"index":0,"delta":{"content":"op"},"finish_reason":null}]}


data: {"id":"chatcmpl-554","object":"chat.completion.chunk","created":1791831681,"model":"qwen3.5:0.8b","system_fingerprint":"fp_ollama","choices":[{"index":0,"delta":{"content":"uses"},"finish_reason":null}]}


data: {"id":"chatcmpl-554","object":"chat.completion.chunk","created":1791831681,"model":"qwen3.5:0.8b","system_fingerprint":"fp_ollama","choices":[{"index":0,"delta":{"content":" rely"},"finish_reason":null}]}


data: {"id":"chatcmpl-554","object":"chat.completion.chunk","created":1791831681,"model":"qwen3.5:0.8b","system_fingerprint":"fp_ollama","choices":[{"index":0,"delta":{"content":" on"},"finish_reason":null}]}


data: {"id":"chatcmpl-554","object":"chat.completion.chunk","created":1791831681,"model":"qwen3.5:0.8b","system_fingerprint":"fp_ollama","choices":[{"index":0,"delta":{"content":" their"},"finish_reason":null}]}


data: {"id":"chatcmpl-554","object":"chat.completion.chunk","created":1791831681,"model":"qwen3.5:0.8b","system_fingerprint":"fp_ollama","choices":[{"index":0,"delta":{"content":" unique"},"finish_reason":null}]}


data: {"id":"chatcmpl-554","object":"chat.completion.chunk","created":1791831681,"model":"qwen3.5:0.8b","system_fingerprint":"fp_ollama","choices":[{"index":0,"delta":{"content":" physiology"},"finish_reason":null}]}


data: {"id":"chatcmpl-554","object":"chat.completion.chunk","created":1791831681,"model":"qwen3.5:0.8b","system_fingerprint":"fp_ollama","choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}]}


data: {"id":"chatcmpl-554","object":"chat.completion.chunk","created":1791831681,"model":"qwen3.5:0.8b","system_fingerprint":"fp_ollama","choices":[{"index":0,"delta":{"content":" camouflage"},"finish_reason":null}]}


data: {"id":"chatcmpl-554","object":"chat.completion.chunk","created":1791831681,"model":"qwen3.5:0.8b","system_fingerprint":"fp_ollama","choices":[{"index":0,"delta":{"content":" against"},"finish_reason":null}]}


data: {"id":"chatcmpl-554","object":"chat.completion.chunk","created":1791831681,"model":"qwen3.5:0.8b","system_fingerprint":"fp_ollama","choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}]}


data: {"id":"chatcmpl-554","object":"chat.completion.chunk","created":1791831681,"model":"qwen3.5:0.8b","system_fingerprint":"fp_ollama","choices":[{"index":0,"delta":{"content":" vast"},"finish_reason":null}]}


data: {"id":"chatcmpl-554","object":"chat.completion.chunk","created":1791831681,"model":"qwen3.5:0.8b","system_fingerprint":"fp_ollama","choices":[{"index":0,"delta":{"content":" array"},"finish_reason":null}]}


data: {"id":"chatcmpl-554","object":"chat.completion.chunk","created":1791831681,"model":"qwen3.5:0.8b","system_fingerprint":"fp_ollama","choices":[{"index":0,"delta":{"content":" of"},"finish_reason":null}]}


data: {"id":"chatcmpl-554","object":"chat.completion.chunk","created":1791831681,"model":"qwen3.5:0.8b","system_fingerprint":"fp_ollama","choices":[{"index":0,"delta":{"content":" natural"},"finish_reason":null}]}

What the library reported

Outcome
returned
Finish
{
  "raw": null,
  "source": null,
  "surface": "absent",
  "value": null
}
Text
Value
Octopuses rely on their unique physiology to camouflage against the vast array of natural
Surface
primary
Tool calls
[]
Usage
{
  "cached_input": null,
  "input": null,
  "output": null,
  "reasoning": null,
  "surface": {
    "cached_input": "absent",
    "input": "absent",
    "output": "absent",
    "reasoning": "absent",
    "total": "absent"
  },
  "total": null
}
Stream
{
  "chunks_seen": 16,
  "completed": null,
  "used": true
}
Error
null
Unsupported reason
null
Full observation JSON
{
  "elapsed_ms": 187.57942132651806,
  "error": null,
  "finish": {
    "raw": null,
    "source": null,
    "surface": "absent",
    "value": null
  },
  "format": "wiretruth.observation/v1",
  "library": {
    "api": "any_llm.completion",
    "language": "python",
    "name": "any-llm",
    "version": "1.40.2"
  },
  "notes": [],
  "outcome": "returned",
  "stream": {
    "chunks_seen": 16,
    "completed": null,
    "used": true
  },
  "structured": {
    "attempted": false,
    "returned_as_success": false,
    "value": null
  },
  "text": {
    "surface": "primary",
    "value": "Octopuses rely on their unique physiology to camouflage against the vast array of natural"
  },
  "tool_calls": [],
  "unsupported_reason": null,
  "usage": {
    "cached_input": null,
    "input": null,
    "output": null,
    "reasoning": null,
    "surface": {
      "cached_input": "absent",
      "input": "absent",
      "output": "absent",
      "reasoning": "absent",
      "total": "absent"
    },
    "total": null
  }
}

Fixture

derived ollama-openai/stream.missing-finish

ProvenanceValue
Transformstrip_finish
Source fixtureollama-openai/truncation.text-stream
RationaleThe stream ends cleanly without its finish signal.
Evidencehttps://github.com/pydantic/pydantic-ai/issues/6610

Reproduce

wiretruth serve ollama-openai/stream.missing-finish

Plain-library snippet from the shim manifest.

any_llm.completion(model=model, provider='openai', api_base=WIRETRUTH_BASE_URL_OLLAMA_OPENAI, api_key=WIRETRUTH_API_KEY)

Upstream

reported Issue

Fixed in: not specified

A stream that ends before the provider's terminal signal returns the partial chunks normally, with no error and no incomplete flag (reproduced on 1.40.2 and 1.50.0). The OpenAI Responses path reports the output item as incomplete and passes.

History

VersionGrade
1.40.2~ LOSSY
1.38.0~ LOSSY
1.33.0~ LOSSY