Files
ss-tools/agent
busya b367c3e4e6 fix(038): map LLM-invented selected_case_ids to registered catalog ids
Scenario compile returned 422 VALIDATION_ERROR because the LLM sent
human-readable case names (smoke, data_integrity, filter_propagation) as
selected_case_ids, but the compiler requires registered catalog ids
(B01-B09, C01-C07, T01-T03) and raised KeyError on unknown ones.

- tools_038._compile_objective: resolve case ids through _resolve_case_ids,
  which (1) passes through registered ids case-insensitively, (2) maps
  human-readable synonyms to closest catalog cases, (3) drops unresolvable
  tokens — a free-form name can never reach the compiler as a KeyError.
- CompileScenarioInput.objective_json description now enumerates the valid
  catalog id ranges and gives an example so the LLM stops inventing names.
- Tests: human-readable mapping, unknown-id dropping, dedupe/first-registered
  order (test_tools_038_parse.py, 21 passed).

Verification: ruff clean, 21 tests pass.
2026-08-07 16:39:21 +07:00
..