| """What the console can run: built tasks (JE-01..10), their spec JSON, and the |
| generator dispatch. New tasks appear here as later phases wire them.""" |
| from __future__ import annotations |
|
|
| import json |
| from functools import cache |
| from pathlib import Path |
|
|
| from je_validation.envir.briefs import brief_for |
| from je_validation.envir.run_config import DEFAULT_KNOBS |
| from je_validation.generator import ( |
| je01, |
| je02, |
| je03, |
| je04, |
| je05, |
| je06, |
| je07, |
| je08, |
| je09, |
| je10, |
| je11, |
| je12, |
| je13, |
| je14, |
| je15, |
| ) |
| from je_validation.generator.persist import spec_task_path |
|
|
| GENERATORS = { |
| "JE-01": je01.generate, "JE-02": je02.generate, "JE-03": je03.generate, |
| "JE-04": je04.generate, "JE-05": je05.generate, "JE-06": je06.generate, |
| "JE-07": je07.generate, "JE-08": je08.generate, "JE-09": je09.generate, |
| "JE-10": je10.generate, "JE-11": je11.generate, "JE-12": je12.generate, |
| "JE-13": je13.generate, "JE-14": je14.generate, "JE-15": je15.generate, |
| } |
| |
| |
| |
| POPULATION_EDITABLE = frozenset(f"JE-{i:02d}" for i in range(1, 6)) |
|
|
| |
| |
| |
| |
| |
| |
| |
| _L2_POPULATIONS: dict[str, int] = { |
| "JE-06": 60, "JE-07": 304, "JE-08": 221, "JE-09": 199, "JE-10": 280, |
| } |
|
|
| |
| |
| |
| |
| |
| POPULATION_SEED_VARIABLE: frozenset[str] = frozenset({"JE-10"}) |
|
|
| |
| |
| _L3_POPULATIONS: dict[str, int] = { |
| "JE-11": 260, "JE-12": 320, "JE-13": 600, "JE-14": 240, "JE-15": 380, |
| } |
|
|
| |
| |
| |
| |
| |
| _L1_POPULATIONS: dict[str, int] = {"JE-01": 400} |
|
|
|
|
| def default_population(task_id: str) -> int: |
| if task_id in POPULATION_EDITABLE: |
| return _L1_POPULATIONS.get(task_id, int(DEFAULT_KNOBS["population"])) |
| return {**_L2_POPULATIONS, **_L3_POPULATIONS}[task_id] |
|
|
|
|
| @cache |
| def built_tasks() -> dict[str, dict]: |
| return {tid: json.loads(spec_task_path(tid).read_text(encoding="utf-8")) |
| for tid in GENERATORS} |
|
|
|
|
| def generate_bundle(task_id: str, seed: int, snapshot: Path, |
| population: int, out_dir: Path) -> None: |
| if task_id in POPULATION_EDITABLE: |
| GENERATORS[task_id](seed, snapshot, n_entries=population, out_dir=out_dir) |
| else: |
| GENERATORS[task_id](seed, snapshot, out_dir=out_dir) |
|
|