{"data":{"kind":"file","path":"README.md","version_id":"yscs2al8tzvh90yduvk0b3mk","entry":{"name":"README.md","path":"README.md","is_directory":false,"size":3173,"modified_at":"2026-09-11T17:29:23.953000","content_hash":"923b70df1cb903fd1bec70acd0fdd0236c25e752f97c1ae8a3b7b91d899676c6"},"entries":[],"content":"# haicai-v1\n\n### Overview\n- **Environment ID**: `ob1/haicai-v1`\n- **Short description**: Escrever haicai 5-7-5 em português brasileiro; recompensa determinística de escansão por intervalos + ortografia AO90.\n- **Tags**: creative-writing, portuguese, single-turn, deterministic\n\n### Datasets\n- **Primary dataset(s)**: 73 temas embutidos (`TEMAS` em `haicai_v1/taskset.py`) — mar, lua, saudade, farol, …; cada task pede um haiku original sobre um tema.\n- **Source links**: pacote `escansao` (escansão por intervalos) + léxico compilado de 40k palavras pós-AO90 (`haicai_v1/data/vocabulario.txt`).\n- **Split sizes**: sem split fixo — use `offset` para janelas disjuntas de treino/teste, ou passe `temas` para uma lista própria.\n\n### Task\n- **Type**: single-turn\n- **Output format expectations (optional)**: exatamente as três linhas do haiku, sem título.\n- **Rubric overview**: duas rewards determinísticas (sem LLM no loop) — `forma` (fração dos versos 5/7/5 cujo intervalo de escansão defensável contém o alvo) e `ortografia` (cobertura do léxico AO90). Métricas extras: `exata_575` e notas por escola (`escola_ipe`, `escola_guilhermina`, `escola_leminski`, `escola_millor`, `escola_concreta`, `escolas_media`, `escolas_maximo`).\n\n### Quickstart\nRun an evaluation with default settings:\n\n```bash\nprime eval run ob1/haicai-v1\n```\n\nConfigure model and sampling:\n\n```bash\nprime eval run ob1/haicai-v1 -m openai/gpt-4.1-mini -n 20 -r 3 -t 1024 -T 0.7\n```\n\nCustom theme list (eval-only-escansão example):\n\n```bash\nprime eval run ob1/haicai-v1 --env.taskset.temas '[\"neblina\", \"farol\"]' --env.taskset.num-tasks 2 --env.taskset.task.rewards.forma.weight 1.0 --env.taskset.task.rewards.ortografia.weight 0.0\n```\n\nNotes:\n- Put task-owned settings under `[env.taskset]` and harness-owned settings under `[env.harness]` in TOML configs.\n- The null harness + subprocess runtime keeps scoring local (no sandbox cost): `--env.agent.harness.id null --env.agent.runtime.type subprocess`.\n\n### Taskset Config\nDocument any taskset config fields and their meaning. Example:\n\n| Field | Type | Default | Description |\n| --- | ---- | ------- | ----------- |\n| `num_tasks` | int | `200` | How many tasks to generate (cycles the theme pool with `% len` if larger) |\n| `offset` | int | `0` | Shifts the theme window — use for disjoint train/test splits |\n| `temas` | list[str] \\| None | `None` | Custom theme list replacing built-in `TEMAS`; set `num_tasks = len(temas)` for the exact list |\n\n### Harness Config\nSingle-turn generation needs no tools: use the `null` harness with the `subprocess` runtime (see Quickstart).\n\n### Metrics\nSummarize key metrics your rubric emits and how they’re interpreted.\n\n| Metric | Meaning |\n| ------ | ------- |\n| `reward` | Main scalar reward (weighted sum of criteria) |\n| `forma` | Reward (default weight 0.5): per-verse 5/7/5 credit via scansion interval |\n| `ortografia` | Reward (default weight 0.5): AO90 lexicon coverage of the completion |\n| `exata_575` | 1.0 only if all three verses hit 5/7/5 exactly |\n| `escola_*` / `escolas_media` / `escolas_maximo` | Deterministic per-school rubric notes (metrics only, not rewards) |\n","encoding":"utf-8","truncated":false,"total_bytes":3173},"status":null}