# Probe Stream Semantics Before Designing Trace Capture

## Trigger

The user pointed to SuperAgent's
`/messages/stream?include_trace=true` capability after the first task-log
implementation reconstructed only ARR database facts. The URL alone did not
establish whether it could replay an existing run or only create a new one.

## Evidence

- `OPTIONS`, `HEAD` and `GET` returned `405 Allow: POST`.
- A no-business-data probe showed the first SSE event was `run.started`, followed
  by task/step updates and a terminal run event/end marker.
- Repeating the exact same message and idempotency key created a different
  `run_id`; the endpoint did not replay or deduplicate the prior run.

## Lesson

Do not infer read/replay semantics from an observability query parameter. Before
wiring trace capture, verify the HTTP method, event order, connection lifetime
and duplicate-submission behavior with an isolated harmless request. If trace is
emitted only while creating the run, return the handle from the first start event
and keep consuming that same connection; never POST again merely to recover
diagnostics.

## Reusable Check

1. Probe non-mutating methods first and inspect `Allow`/Content-Type.
2. Use a separate no-PII session for the smallest authorized POST probe.
3. Record only schema/event names until the privacy boundary is known.
4. Test identical idempotency keys explicitly; do not assume endpoint parity.
5. Treat an uncertain post-send failure as ambiguous when the server cannot
   prove deduplication.

