# Perseval sanitized OTLP scenarios

Download `perseval-agent-scenarios.py`, enable OTLP in the Perseval GUI, copy
the full endpoint and project ID from Sources, then run:

```bash
python3 perseval-agent-scenarios.py \
  --endpoint http://127.0.0.1:4318/v1/traces \
  --project your-project-id \
  --scenario all
```

To create several distinct examples in each failure group, add
`--occurrences 3`. Every occurrence gets new trace, span, and conversation
identities while keeping the same sanitized behavior. Re-running the command
without changing `--occurrences` intentionally sends the same stable identities
again, which exercises Perseval's deduplication and reopening behavior instead
of manufacturing duplicate runs.

Scenarios:

- `uncertain-mutation`: required mutating timeout with ambiguous state; expect
  an uncertainty finding after finalization.
- `recovered-optional`: optional browser failure with a successful fallback;
  expect an error span but no actionable finding.
- `spanlink-handoff`: planner/browser/verifier topology with a verifier
  SpanLink to browser evidence; inspect Full Trace.
- `baseline-repaired`: failing and successful release-agent builds; select the
  baseline first and candidate second in Runs, then Compare.
- `missing-telemetry`: error-only tool span without requiredness, result,
  effect, retry-safety, or state facts; expect zero findings and a missing-facts
  summary in the Full Trace Finding inspector.

The fixture uses only Python's standard library and contains no prompts,
payload bodies, credentials, personal data, or external network calls.
