> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo/labs-voice-agent/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo/labs-voice-agent/_mcp/server.

# nemo_voice_agent.evaluation.scenarios.data.tau2_retail.base

Tau2-retail scenario base.

`Tau2RetailBaseScenario` mirrors the airline base, plus exposes
`nl_assertions` from `evaluation_criteria.nl_assertions` for the LLM judge.
Each scenario subclass only needs to set `tau2_id` (e.g. `"0"`).

## Module Contents

### Classes

| Name                                                                                                            | Description                                                                   |
| --------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
| [`Tau2RetailBaseScenario`](#nemo_voice_agent-evaluation-scenarios-data-tau2_retail-base-Tau2RetailBaseScenario) | Base class for scenarios ported from tau2-bench/retail (voice-user-sim-v1.0). |

### API

```python
class nemo_voice_agent.evaluation.scenarios.data.tau2_retail.base.Tau2RetailBaseScenario()
```

**Bases:** [Tau2BaseScenario](/nemo/labs-voice-agent/nemo-voice-agent/nemo_voice_agent/evaluation/scenarios/data/tau2_common#nemo_voice_agent-evaluation-scenarios-data-tau2_common-Tau2BaseScenario)

Base class for scenarios ported from tau2-bench/retail (voice-user-sim-v1.0).

Subclasses must set `tau2_id` (the key from `tasks.json`). For example::

@register\_eval\_scenario
class Tau2Retail0(Tau2RetailBaseScenario):
name = "tau2\_retail\_\_0"
tau2\_id = "0"

Adds one signal beyond airline: `nl_assertions`. 40 of 114 retail tasks
carry natural-language assertions in `evaluation_criteria.nl_assertions`
(e.g. *"Agent should tell the user that there are 10 t-shirt options
available."*). The runner threads these into `LLMJudge.judge_scenario`,
which returns per-assertion verdicts and a per-domain `nl_assertion_success_rate`.

**`agent_resources`**

Full tau2\_retail tool surface (all 16 ported tools) + per-scenario info.

OVERRIDES `Tau2BaseScenario.agent_resources` (which returns an empty
stub). Tool keys are the **Tool class names** (registry lookup); each
maps to an empty kwargs dict because tau2 tools take only `shared_state`
which the bot server injects automatically.

`EndConversationTool` resolves via the registry's "default" namespace
fallback (it lives in basic\_tools.py, not tau2\_retail\_tools.py). The
paired prompt-side guideline lives in
`nemo_voice_agent.evaluation.scenarios.END_CONVERSATION_GUIDELINE`.

---

**`domain`**

---

**`has_user_state`**

---

**`nl_assertions`**

Per-task natural-language assertions for the LLM judge.

Pulled directly from tau2's `evaluation_criteria.nl_assertions` —
a list of strings like *"Agent should tell the user that there are
10 t-shirt options available."*. `None` (not `[]`) when the task
has no assertions, so the runner's `if scenario_nl_assertions:` guard
in `runner.py` correctly skips verdict aggregation for action-only
tasks. Empty list from upstream is also normalized to `None` for the
same reason.

---

**`success_signals`**

DB-state hash + (when present) per-assertion NL judge verdicts.

40 of 114 retail tasks carry `nl_assertions`; the rest don't. The
rule is mechanical — derive from `self.nl_assertions` so it
cannot drift from the per-task opt-in. `JUDGE_PASSED` (overall
judge score) is intentionally NOT gating: `DB_STATE_MATCH` is
deterministic, and `NL_ASSERTION` is already per-claim judge
verdicts when present — the overall judge becomes informational.

---

```python
nemo_voice_agent.evaluation.scenarios.data.tau2_retail.base.Tau2RetailBaseScenario._build_tool_map(
    state: dict
) -> typing.Dict[str, typing.Any]
```

Instantiate one of each ported retail tool, bound to the given `state`.

Used by `Tau2BaseScenario._gold_replay` to dispatch reference actions.