fix: persist stream name in sync history to prevent verification mismatches
The upload path saved files under a stream-derived directory but did not
record the stream name in the sync history. The query path re-derived
the stream independently, which could produce a different result when
_strip_hostname() behaved differently or the client sent a different
stream query param. This caused the April 9 circuit breaker outage.
Now the stream is persisted in the sync history record at upload time.
The query handler reads it from the record, falling back to derivation
for legacy records that lack the field.
Files changed:
- apps/observer/routes.py
- apps/observer/tests/test_routes.py