## TL;DR

Truncated lines happen when the stream is cut (timeouts, kills) or buffers flush partially. Parse line by line, skip and log malformed lines, and mark the stream partial so downstream knows it is incomplete.

## Error

```text
agent failed to parse the trufflehog json stream: truncated lines error
```

## Steps

1. Capture the truncated line and confirm truncation versus corruption. Expected: the failure mode known.
2. Parse incrementally, one line at a time, catching errors per line. Expected: one bad line cannot kill the parse.
3. Log skipped lines with byte offsets for later inspection. Expected: visibility.
4. Mark results partial when truncation is detected. Expected: honest downstream handling.
5. Fix the upstream cause: timeouts, killed processes, or undersized buffers. Expected: fewer truncations.

## When to use

- Trufflehog stream parsing failures in agents.
- Consuming any line-delimited JSON stream.

## When not to use

- Schema changes (normalize instead).
- The stream never starts (check the invocation).

## Tool compatibility

- Trufflehog JSON output; streaming parsers.

## Variant phrasings

### truncated json stream

Skip and mark partial.

### json stream parse failed mid-run

Defensive parsing.

## Why it happens

Streams get cut by timeouts and kills; the last line is often half-written.

## Edge cases

- Partial results must be labeled partial; silent partials cause false confidence.
- Buffering the whole stream to validate defeats streaming; validate per line.
- Retries should resume from the last good offset where possible.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_3MYNin15b1hRShTFXlXRNg
