Repository: truera/trulens
Issue: LiteLLM provider: Databricks structured outputs fail due to missing additionalProperties: false in JSON schema
Root cause: Interface Contract Mismatch

## Description

When using TruLens with the LiteLLM provider to call Databricks-hosted models (via AI Gateway or Foundation Model APIs), all evaluations fail with a JSON schema validation error.

## Error Message

```
litellm.BadRequestError: databricksException - {"error_code":"BAD_REQUEST","message":"{\n  \"error\": {\n    \"message\": \"Invalid schema for response_format 'ChainOfThoughtResponse': In context=(), 'additionalProperties' is required to be supplied and to be false.\",\n    \"type\": \"invalid_request_error\",\n    \"param\": \"response_format\",\n    \"code\": null\n  }\n}"}
```

## Root Cause

Databricks requires `"additionalProperties": false` at each level of nested objects in JSON schemas used for structured outputs. TruLens's `ChainOfThoughtResponse` schema (and other internal schemas) does not include this field.

See Databricks documentation: https://docs.databricks.com/en/machine-learning/model-serving/structured-outputs.html

## Steps to Reproduce

```python
from trulens.providers.litellm import LiteLLM

provider = LiteLLM(model_engine="databricks/databricks-gpt-5-2")

# Any evaluation method that uses structured output will fail
score, reasons = provider.groundedness_measure_with_cot_reasons(
    source="Some context",
    statement="Some statement"
)
```

## Expected Behavior

TruLens should include `"additionalProperties": false` in all JSON schemas used for `response_format` to ensure compatibility with providers that require strict schema validation (Databricks, Azure OpenAI with strict mode, etc.).

## Suggested Fix

Update the Pydantic models used for structured outputs (e.g., `ChainOfThoughtResponse`) to generate JSON schemas with `additionalProperties: false`. This can be done by:

1. Using Pydantic's `model_config` with `extra = "forbid"`:
```python
from pydantic import BaseModel, ConfigDict

class ChainOfThoughtResponse(BaseModel):
    model_config = ConfigDict(extra="forbid")
    # ... fields
```

2. Or by post-processing the schema to add the field at all levels.

## Environment

- TruLens version: latest
- trulens-providers-litellm: latest
- LiteLLM version: latest
- Databricks Runtime: 15.x

## Impact

This blocks TruLens usage with Databricks AI Gateway, forcing users to use direct OpenAI API calls instead of leveraging their existing Databricks infrastructure.

I've submitted a fix for this issue in PR #2308.

The solution adds `model_config = ConfigDict(extra="forbid")` to the Pydantic models in `output_schemas.py`, which causes Pydantic to include `additionalProperties: false` in the generated JSON schema.

This enables TruLens structured outputs to work with Databricks AI Gateway and other providers that require strict JSON schema validation.

I've submitted a fix for this issue in PR #2308.

Additionally, I'm integrating TruLens agent trace scorers into MLflow's GenAI evaluation framework (PR: https://github.com/mlflow/mlflow/pull/19328). The Databricks compatibility fix in #2308 will be needed when users want to use these scorers with Databricks AI Gateway.