# Release Notes Version 1.1 These notes summarize local changes since the last commit. ## Highlights - Added a full async pipeline via `ShinkaEvolveRunner` for concurrent proposal generation and evaluation. - Introduced prompt co-evolution (system prompt archive, prompt mutation, prompt fitness tracking). - Expanded island and parent sampling logic, including dynamic island spawning on stagnation. - Refactored LLM + embedding stack into provider-based modules. - Major WebUI refresh with dashboard + compare views and new API endpoints. ![Image #1](media/async_speed.png) ## Cost Budgeting (`max_api_costs`) - `max_api_costs` is now a first-class runtime budget guard in evolution runners. - Budget checks use a **committed cost** model: - realized DB costs (`api_costs`, `embed_cost`, `novelty_cost`, `meta_cost`) - plus estimated cost of in-flight work - Once the budget is reached, new proposals stop and the runner drains ongoing jobs. - If `num_generations` is omitted, `max_api_costs` is required to bound the run. ## Added - Async runtime and helpers: - `shinka/core/async_runner.py` - `shinka/core/async_summarizer.py` - `shinka/core/async_novelty_judge.py` - `shinka/database/async_dbase.py` - Prompt evolution system: - `shinka/core/prompt_evolver.py` - `shinka/database/prompt_dbase.py` - `shinka/prompts/prompts_prompt_evo.py` - Fix-mode prompt path for incorrect-only populations: - `shinka/prompts/prompts_fix.py` - Island sampling strategies: - `shinka/database/island_sampler.py` (`uniform`, `equal`, `proportional`, `weighted`) - New plotting modules: - `shinka/plots/plot_costs.py` - `shinka/plots/plot_evals.py` - `shinka/plots/plot_time.py` - `shinka/plots/plot_llm.py` - New docs: - `docs/async_evolution.md` - `docs/design/dynamic_evolve_markers.md` - `docs/design/evaluation_cascades.md` - New example: - `examples/game_2048/*` ## Changed - `ShinkaEvolveRunner` now includes: - stronger resume behavior (meta memory + bandit state persistence) - fix-mode sampling fallback when no correct program exists - richer metadata and cost accounting - Database model expanded with: - dynamic island spawning controls - island selection strategy config - `system_prompt_id` lineage field - LLM/embedding refactor: - `shinka/llm/models/*` replaced by `shinka/llm/providers/*` - embeddings moved to `shinka/embed/*` - Evaluation wrapper (`shinka/core/wrap_eval.py`) now supports: - per-run process parallelism via `run_workers` (with optional `max_workers_cap`) - deterministic result ordering and clearer worker/serialization error surfacing - early stopping (`bayesian`, `ci`, `hybrid`) - early stopping remains sequential-only (`run_workers=1`) - optional plot artifact generation - NaN/Inf score guards - WebUI backend and frontend expanded: - new endpoints for summary/count/details/prompts/stats/plots - improved WAL retry behavior under active writes - added `shinka/webui/index.html` and `shinka/webui/compare.html` ## Packaging and Dependencies - `pyproject.toml` updates: - `google-generativeai` -> `google-genai` - added `psutil` - pinned `httpx==0.27` - setuptools packaging config updated ## Tests Added - `tests/test_async_complexity_1000.py` - `tests/test_bandit_persistence.py` - `tests/test_dynamic_islands.py` - `tests/test_island_sampler.py` - `tests/test_prompt_evolution.py` - `tests/test_wrap_eval_parallel.py`