feat: add compose deliverable, scenario definitions, eval stub, and CI
This commit is contained in:
parent
ef9e102b05
commit
7c3934daee
8 changed files with 148 additions and 0 deletions
0
eval/fixtures/.gitkeep
Normal file
0
eval/fixtures/.gitkeep
Normal file
23
eval/run_eval.py
Normal file
23
eval/run_eval.py
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
"""Eval harness entry point.
|
||||
|
||||
Fixture mode (default, key-free): byte-snapshots of deterministic pipeline
|
||||
stages against recorded cassettes. Live mode: property assertions only —
|
||||
LLM output is constrained, not pinned.
|
||||
"""
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
import yaml
|
||||
|
||||
SCENARIOS_FILE = Path(__file__).parent / "scenarios.yaml"
|
||||
|
||||
|
||||
def load_scenarios() -> dict:
|
||||
"""Load the shared scenario definitions."""
|
||||
with SCENARIOS_FILE.open() as handle:
|
||||
return yaml.safe_load(handle)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
scenarios = load_scenarios()
|
||||
print(f"{len(scenarios['scenarios'])} scenarios, {len(scenarios['refinements'])} refinements")
|
||||
45
eval/scenarios.yaml
Normal file
45
eval/scenarios.yaml
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
# One source of truth for three consumers: golden eval queries, demo fixture
|
||||
# keys, and UI suggestion chips. Every chip therefore has a fixture, and every
|
||||
# fixture has a golden query.
|
||||
|
||||
scenarios:
|
||||
- key: focus-coding
|
||||
chip: "Focus while coding"
|
||||
query: "something calm for while I'm programming, but not boring"
|
||||
facets: { activity: coding, familiarity: mixed }
|
||||
|
||||
- key: workout-energy
|
||||
chip: "Energy for the gym"
|
||||
query: "high-energy music for a heavy workout"
|
||||
facets: { activity: workout, mood: energetic }
|
||||
|
||||
- key: dutch-chill
|
||||
chip: "Dutch-language & relaxed"
|
||||
query: "relaxed Dutch-language music for lounging on the couch"
|
||||
facets: { language: nl, mood: relaxed }
|
||||
|
||||
- key: nineties-nostalgia
|
||||
chip: "90s nostalgia"
|
||||
query: "take me back to the nineties"
|
||||
facets: { era: "1990s" }
|
||||
|
||||
- key: discover-new
|
||||
chip: "Surprise me with something new"
|
||||
query: "something I don't know yet but will probably like"
|
||||
facets: { familiarity: new } # asserts known-track exclusion
|
||||
|
||||
- key: rainy-sunday
|
||||
chip: "Rainy Sunday"
|
||||
query: "melancholic but warm, for a rainy Sunday morning"
|
||||
facets: { mood: melancholic }
|
||||
|
||||
- key: dinner-background
|
||||
chip: "Background for dinner"
|
||||
query: "something jazzy for during dinner, not too present"
|
||||
facets: { mood: understated }
|
||||
|
||||
# Multi-turn refinement goldens: reuse the grounded pool, no re-grounding.
|
||||
refinements:
|
||||
- key: focus-coding-refine
|
||||
after: focus-coding
|
||||
query: "a bit more electronic, and drop number 3"
|
||||
0
eval/snapshots/.gitkeep
Normal file
0
eval/snapshots/.gitkeep
Normal file
Loading…
Add table
Add a link
Reference in a new issue