# What changed in monocle-apptrace

> 41 changes in monocle-apptrace 0.8 from its official release notes, upgrade guides and advisories: 4 breaking, 1 security, 21 new APIs and options. Each one cited. Sources checked 2026-10-19. HTML: https://unstale.sh/pypi/monocle-apptrace/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## monocle-apptrace 0.8

### Breaking changes

- MS Agent Framework agents hosted on Azure AI Foundry now produce complete traces, identify Foundry as their host, and have spans retrievable from Okahu. (0.8.15) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.15)
- `setup_test_cases` refuses discovery windows larger than this limit instead of silently truncating them; the value comes from the argument, then `OKAHU_MAX_FACTS`, then defaults to 1000. (0.8.15) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.15)
- Turn spans now record prompt text using the renamed `contents` field instead of an object representation; the fallback also avoids exporting object reprs. (0.8.15) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.15)
- AWS Bedrock AgentCore trace return now authorizes callers before returning spans; deployments must configure this key or a retrieval callback, and invocations must present the matching retrieval key. (0.8.13) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.13)

### Security

- Sensitive data in `data.input` and `data.output` is scrubbed before spans reach exporters; obfuscation is on by default and covers common credentials and secrets. (0.8.14) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.14)

### New APIs and options

- Accepts a `testcase` for parametrized tests. (0.8.15) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.15)
- Accepts a `testcase` for parametrized tests. (0.8.15) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.15)
- Accepts a `testcase`; every eval a case names is graded and all failures are reported together. (0.8.15) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.15)
- Borrows the expected result from a different eval. (0.8.15) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.15)
- Adds a runner for invoking an agent deployed to Azure AI Foundry and retrieving its spans from Okahu; it authenticates with an Entra bearer token and correlates spans using Foundry's trace id. (0.8.15) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.15)
- Input and output assertions accept a `testcase` for parametrized tests. (0.8.15) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.15)
- The root path `/` can now be opted into as a health check route and matches the root exactly; it is not a default. (0.8.15) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.15)
- Remote trace retrieval now waits up to this many seconds for spans to reach the backend; the default is 60 seconds instead of a hard-coded 10. (0.8.15) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.15)
- Sets the Okahu API timeout, which defaults to 120 seconds; precedence is explicit argument, environment variable, then default, and unusable values are logged and ignored. (0.8.15) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.15)
- Recorded populations can become parametrizable test cases for eval tuning and A/B testing; parametrized cases are named after the case rather than `[testcase0]`. (0.8.15) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.15)
- Accepts a `testcase` for parametrized tests. (0.8.15) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.15)
- Accepts a `testcase` for parametrized tests. (0.8.15) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.15)
- Builds one `FluentTestCase` per recorded Okahu fact, or loads a committed JSON array with `source="local"` for network-free golden datasets. (0.8.15) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.15)
- Provides the workflow name needed to retrieve Foundry runner spans; alternatively, use `FOUNDRY_TRACE_WORKFLOW`. (0.8.15) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.15)
- Accepts a `testcase` for parametrized tests; trace sources also accept a `start_time`/`end_time` window. (0.8.15) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.15)
- Setting this environment variable to `true` disables span obfuscation. (0.8.14) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.14)
- Use this environment variable to scope span obfuscation to selected span types. (0.8.14) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.14)
- Configure span obfuscators, including adding PII detection with `credentials,presidio` or disabling obfuscation with `none`. (0.8.14) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.14)
- Pass an empty `span_obfuscators` list to disable span obfuscation. (0.8.14) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.14)
- Implement a custom `SpanObfuscator` and configure it by its `module:ClassName` path. (0.8.14) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.14)
- Health-check routes can be replaced via this variable; matching response-body checks are sampled down to one span per reset counter, while requests with params or a body and failing checks are exported. (0.8.13) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.13)

### Behavior and default changes

- A fact whose spans fail to load is emitted as a failing test under its own id, with the reason available in `load_error`. (0.8.15) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.15)
- The LiteLLM metamodel now recognizes ReAct-style text tool calls and extracts their tool name. (0.8.14) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.14)
- The LiteLLM metamodel now recognizes ReAct-style text tool calls and extracts their tool type. (0.8.14) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.14)
- `eval_name` accepts a built-in eval template name or a custom template JSON file path, so callers need not switch to `template_path` for custom templates. (0.8.13) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.14), [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.13)

### Tooling

- The test generator discovers evals configured for an agent and adds matching check_eval assertions, supporting custom templates and searching eval traces beyond 90 days. (0.8.13) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.13)

### Fixes and other changes

- Streaming inference now emits a span when the consumer stops reading early; closing after full consumption cannot emit a duplicate span. (0.8.15) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.15)
- A path-like string eval name is now classified as a custom template, matching `check_eval`, rather than being requested as a built-in template. (0.8.15) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.15)
- The runner passes `memory=` only to callables that accept it and binds it with `functools.partial` for `run_in_executor`, which takes no kwargs. (0.8.15) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.15)
- An unset API key is no longer stripped unguarded. (0.8.15) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.15)
- An endpoint environment variable that is set but empty now falls back to the default endpoint instead of producing a scheme-less URL. (0.8.15) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.15)
- Okahu enumerators now walk every page, and page size is bounds-checked locally instead of producing an opaque HTTP 400. (0.8.15) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.15)
- Wrappers no longer stop the scope token twice, preventing a cleanup error from masking the test's original exception. (0.8.15) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.15)
- Expected-failure marks now apply correctly to fluent assertions, avoiding hard failures for intentional failures and passes when a test silently stops failing. (0.8.15) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.15)
- Resetting span processors now re-appends the trace-return processor, so trace return is not silently dropped on an initialized instrumentor. (0.8.15) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.15)
- Span obfuscation preserves sentence punctuation after an unquoted credential value while still treating dots inside the value as part of the secret. (0.8.14) — [release notes](https://github.com/monocle2ai/monocle/releases/tag/v0.8.14)
