synth-optimizers 0.2.9.dev20260814__tar.gz → 0.2.11.dev20260816__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/PKG-INFO +15 -5
  2. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/README.md +14 -4
  3. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/pyproject.toml +1 -1
  4. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/config.rs +4 -2
  5. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/__init__.py +10 -0
  6. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/docs/gepa/algorithms/20-proposer-and-policies.md +1 -1
  7. synth_optimizers-0.2.11.dev20260816/src/synth_optimizers/future_algorithms.py +39 -0
  8. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/hosted.py +20 -0
  9. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/Cargo.lock +0 -0
  10. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/Cargo.toml +0 -0
  11. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_gepa/Cargo.toml +0 -0
  12. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_gepa/README.md +0 -0
  13. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_gepa/openapi/gepa-service-v1.yaml +0 -0
  14. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_gepa/src/codex_app_server.rs +0 -0
  15. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_gepa/src/jesterky_workflow.rs +0 -0
  16. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_gepa/src/lib.rs +0 -0
  17. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_gepa/src/machines.rs +0 -0
  18. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_gepa/src/pipeline.rs +0 -0
  19. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_gepa/src/planner.rs +0 -0
  20. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_gepa/src/prompting_best_practices.md +0 -0
  21. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_gepa/src/runtime.rs +0 -0
  22. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_gepa/src/service.rs +0 -0
  23. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/Cargo.toml +0 -0
  24. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/README.md +0 -0
  25. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/agent_runtime/README.md +0 -0
  26. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/agent_runtime/app_server.rs +0 -0
  27. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/agent_runtime/codex_home.rs +0 -0
  28. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/agent_runtime/daytona.rs +0 -0
  29. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/agent_runtime/docker.rs +0 -0
  30. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/agent_runtime/jsonrpc_read_window.rs +0 -0
  31. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/agent_runtime/limits.rs +0 -0
  32. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/agent_runtime/local.rs +0 -0
  33. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/agent_runtime/mod.rs +0 -0
  34. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/agent_runtime/nano.rs +0 -0
  35. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/agent_runtime/role_agent.rs +0 -0
  36. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/agent_runtime/session.rs +0 -0
  37. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/agent_runtime/substrate.rs +0 -0
  38. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/agent_runtime/supervisor.rs +0 -0
  39. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/agent_runtime/usage.rs +0 -0
  40. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/artifact_store.rs +0 -0
  41. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/artifacts.rs +0 -0
  42. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/cache.rs +0 -0
  43. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/candidates.rs +0 -0
  44. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/checkpoints.rs +0 -0
  45. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/configured_limits.rs +0 -0
  46. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/container_contract.rs +0 -0
  47. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/data_models.rs +0 -0
  48. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/disk_budget.rs +0 -0
  49. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/error.rs +0 -0
  50. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/event_visualization.rs +0 -0
  51. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/events.rs +0 -0
  52. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/evidence.rs +0 -0
  53. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/failures.rs +0 -0
  54. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/fsm.rs +0 -0
  55. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/http.rs +0 -0
  56. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/invariants.rs +0 -0
  57. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/jesterky.rs +0 -0
  58. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/jobs.rs +0 -0
  59. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/levers.rs +0 -0
  60. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/lib.rs +0 -0
  61. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/limit_engine.rs +0 -0
  62. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/limits.rs +0 -0
  63. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/observability.rs +0 -0
  64. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/operations.rs +0 -0
  65. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/process.rs +0 -0
  66. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/projections.rs +0 -0
  67. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/prompt_program.rs +0 -0
  68. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/registry.rs +0 -0
  69. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/resources.rs +0 -0
  70. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/rollouts.rs +0 -0
  71. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/runtime_records.rs +0 -0
  72. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/scores.rs +0 -0
  73. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/sensors.rs +0 -0
  74. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/state_machine.rs +0 -0
  75. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/stopper.rs +0 -0
  76. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/storage_maintenance.rs +0 -0
  77. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/usage.rs +0 -0
  78. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizer_platform/src/workspace.rs +0 -0
  79. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizers_py/Cargo.toml +0 -0
  80. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizers_py/README.md +0 -0
  81. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/rust/crates/synth_optimizers_py/src/lib.rs +0 -0
  82. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/README.md +0 -0
  83. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/_synth_optimizers.pyi +0 -0
  84. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/board_server.py +0 -0
  85. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/cli.py +0 -0
  86. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/discovery.py +0 -0
  87. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/docs/gelo/00-index.md +0 -0
  88. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/docs/gelo/10-cli.md +0 -0
  89. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/docs/gelo/20-sdk.md +0 -0
  90. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/docs/gelo/30-hosted.md +0 -0
  91. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/docs/gelo/containers/00-overview.md +0 -0
  92. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/docs/gelo/containers/20-contract.md +0 -0
  93. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/docs/gepa/00-index.md +0 -0
  94. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/docs/gepa/10-cli.md +0 -0
  95. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/docs/gepa/20-sdk.md +0 -0
  96. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/docs/gepa/algorithms/00-overview.md +0 -0
  97. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/docs/gepa/algorithms/10-pipeline-modes.md +0 -0
  98. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/docs/gepa/assets/synth-logo.png +0 -0
  99. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/docs/gepa/containers/00-overview.md +0 -0
  100. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/docs/gepa/containers/10-catalog.md +0 -0
  101. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/docs/gepa/containers/20-contract.md +0 -0
  102. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/docs_server.py +0 -0
  103. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/eval_stats.py +0 -0
  104. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/gelo.py +0 -0
  105. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/gepa.py +0 -0
  106. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/hosted_config.py +0 -0
  107. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/o11y.py +0 -0
  108. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/observability.py +0 -0
  109. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/py.typed +0 -0
  110. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/sdk.py +0 -0
  111. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/tunnels.py +0 -0
  112. {synth_optimizers-0.2.9.dev20260814 → synth_optimizers-0.2.11.dev20260816}/src/synth_optimizers/victorialogs.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: synth-optimizers
3
- Version: 0.2.9.dev20260814
3
+ Version: 0.2.11.dev20260816
4
4
  Requires-Dist: pydantic>=2.0.0
5
5
  Requires-Dist: synth-containers==0.4.1.dev20260814
6
6
  Requires-Dist: websocket-client>=1.8.0
@@ -43,12 +43,22 @@ contract.
43
43
  | --- | --- | --- | --- |
44
44
  | **GEPA** — reflective prompt evolution | Supported | [`rust/crates/synth_gepa/`](rust/crates/synth_gepa/) (Rust engine + service), [`src/synth_optimizers/gepa.py`](src/synth_optimizers/gepa.py) (Python API), [`skills/gepa/SKILL.md`](skills/gepa/SKILL.md) (agent runbook) | [Paper](https://arxiv.org/abs/2507.19457) · [gepa-ai docs](https://gepa-ai.github.io/gepa/) · bundled HTML via `gepa console` |
45
45
  | **GELO** — Go-Explore in prompt space (hosted) | Hosted submit | [`src/synth_optimizers/gelo.py`](src/synth_optimizers/gelo.py), [`skills/gelo/SKILL.md`](skills/gelo/SKILL.md), [`GELO_HOSTED_SDK_CLI_SPEC.md`](GELO_HOSTED_SDK_CLI_SPEC.md) | Bundled HTML via `gelo console` — [`src/synth_optimizers/docs/gelo/`](src/synth_optimizers/docs/gelo/) |
46
+ | **SFT** — supervised fine-tuning (hosted) | Hosted submit | `HostedOptimizerClient.submit_sft()` / `submit_sft()` | Executed by the private Optimizers-beta runtime; the public client uses the shared hosted run API. |
46
47
 
47
48
  The shared [`synth_optimizer_platform`](rust/crates/synth_optimizer_platform/)
48
49
  crate is the substrate for optimizer implementations; GEPA is the first public
49
- local algorithm; GELO is hosted-only in the public package and runs on Synth
50
- hosted optimizer infrastructure.
51
- Hosted GEPA/GELO submission is covered in [`docs/hosted-optimizers.md`](docs/hosted-optimizers.md).
50
+ local algorithm; GELO and SFT are hosted-only in the public package and run on
51
+ Synth hosted optimizer infrastructure. Hosted GEPA, GELO, and SFT submission is
52
+ covered in [`docs/hosted-optimizers.md`](docs/hosted-optimizers.md).
53
+
54
+ ## Future hosted-algorithm compatibility
55
+
56
+ MAPO, OHCO, Online Reflexion, and MARL prompt-optimization identifiers are retained
57
+ in [`future_algorithms.py`](src/synth_optimizers/future_algorithms.py) so clients can
58
+ parse hosted catalogs and historical runs. They are **not supported public optimizer
59
+ algorithms**: they carry no local executor, cookbook, or release commitment. New
60
+ public algorithms graduate into the table above only after their public API contract,
61
+ replay semantics, and end-to-end evidence are ready.
52
62
 
53
63
  ## Install
54
64
 
@@ -173,7 +183,7 @@ policy can stay on OpenAI. See [skills/gepa/SKILL.md](skills/gepa/SKILL.md) for
173
183
 
174
184
  - **OpenAI API key proposer** — run-local Codex home; does not use your host `~/.codex` login.
175
185
  - **OpenRouter proposer** — provider-aware Codex config and base URL; OpenRouter works for policy rollouts too.
176
- - **ChatGPT subscription proposer** — `auth_mode = "chatgpt"` with required `codex_home` (OAuth via [Codex CLI](https://github.com/openai/codex) or [opencode-openai-codex-auth](https://github.com/numman-ali/opencode-openai-codex-auth)); models include `gpt-5.4-mini`, `gpt-5.3-codex`, `gpt-5.3-codex-spark`, `gpt-5.5`; proposer usage is $0, policy rollouts still bill normally.
186
+ - **ChatGPT subscription proposer** — `auth_mode = "chatgpt"` with required `codex_home` (OAuth via [Codex CLI](https://github.com/openai/codex) or [opencode-openai-codex-auth](https://github.com/numman-ali/opencode-openai-codex-auth)); models include `gpt-5.4-mini`, `gpt-5.4`, `gpt-5.3-codex`, `gpt-5.3-codex-spark`, `gpt-5.5`, `gpt-5.6-luna`, `gpt-5.6-sol`, and `gpt-5.6-terra`; proposer usage is $0, policy rollouts still bill normally.
177
187
  - **Nano-Codex proposer harness** — explicit `[proposer.nano_codex]` opt-in keeps one ChatGPT-authenticated app-server session warm across compatible GEPA generations, caches static task/program context by content digest, records monotonic JSONL events and typed turn receipts, and can replay receipts with zero live model or tool calls. See [`dev_examples/nano_codex_gepa/`](dev_examples/nano_codex_gepa/).
178
188
  - **Live usage** — `SYNTH_OPTIMIZERS_TERMINAL=1` prints running token and cost splits (`usage total=… policy=… proposer=…`).
179
189
  - **Docker proposer** — `runtime_substrate = "docker"` with `[proposer.docker].image`; workspaces stage under `~/.cache/synth-gepa-docker-workspaces/`, sync back, then cleanup; image: `docker/codex-gepa-proposer/Dockerfile`.
@@ -21,12 +21,22 @@ contract.
21
21
  | --- | --- | --- | --- |
22
22
  | **GEPA** — reflective prompt evolution | Supported | [`rust/crates/synth_gepa/`](rust/crates/synth_gepa/) (Rust engine + service), [`src/synth_optimizers/gepa.py`](src/synth_optimizers/gepa.py) (Python API), [`skills/gepa/SKILL.md`](skills/gepa/SKILL.md) (agent runbook) | [Paper](https://arxiv.org/abs/2507.19457) · [gepa-ai docs](https://gepa-ai.github.io/gepa/) · bundled HTML via `gepa console` |
23
23
  | **GELO** — Go-Explore in prompt space (hosted) | Hosted submit | [`src/synth_optimizers/gelo.py`](src/synth_optimizers/gelo.py), [`skills/gelo/SKILL.md`](skills/gelo/SKILL.md), [`GELO_HOSTED_SDK_CLI_SPEC.md`](GELO_HOSTED_SDK_CLI_SPEC.md) | Bundled HTML via `gelo console` — [`src/synth_optimizers/docs/gelo/`](src/synth_optimizers/docs/gelo/) |
24
+ | **SFT** — supervised fine-tuning (hosted) | Hosted submit | `HostedOptimizerClient.submit_sft()` / `submit_sft()` | Executed by the private Optimizers-beta runtime; the public client uses the shared hosted run API. |
24
25
 
25
26
  The shared [`synth_optimizer_platform`](rust/crates/synth_optimizer_platform/)
26
27
  crate is the substrate for optimizer implementations; GEPA is the first public
27
- local algorithm; GELO is hosted-only in the public package and runs on Synth
28
- hosted optimizer infrastructure.
29
- Hosted GEPA/GELO submission is covered in [`docs/hosted-optimizers.md`](docs/hosted-optimizers.md).
28
+ local algorithm; GELO and SFT are hosted-only in the public package and run on
29
+ Synth hosted optimizer infrastructure. Hosted GEPA, GELO, and SFT submission is
30
+ covered in [`docs/hosted-optimizers.md`](docs/hosted-optimizers.md).
31
+
32
+ ## Future hosted-algorithm compatibility
33
+
34
+ MAPO, OHCO, Online Reflexion, and MARL prompt-optimization identifiers are retained
35
+ in [`future_algorithms.py`](src/synth_optimizers/future_algorithms.py) so clients can
36
+ parse hosted catalogs and historical runs. They are **not supported public optimizer
37
+ algorithms**: they carry no local executor, cookbook, or release commitment. New
38
+ public algorithms graduate into the table above only after their public API contract,
39
+ replay semantics, and end-to-end evidence are ready.
30
40
 
31
41
  ## Install
32
42
 
@@ -151,7 +161,7 @@ policy can stay on OpenAI. See [skills/gepa/SKILL.md](skills/gepa/SKILL.md) for
151
161
 
152
162
  - **OpenAI API key proposer** — run-local Codex home; does not use your host `~/.codex` login.
153
163
  - **OpenRouter proposer** — provider-aware Codex config and base URL; OpenRouter works for policy rollouts too.
154
- - **ChatGPT subscription proposer** — `auth_mode = "chatgpt"` with required `codex_home` (OAuth via [Codex CLI](https://github.com/openai/codex) or [opencode-openai-codex-auth](https://github.com/numman-ali/opencode-openai-codex-auth)); models include `gpt-5.4-mini`, `gpt-5.3-codex`, `gpt-5.3-codex-spark`, `gpt-5.5`; proposer usage is $0, policy rollouts still bill normally.
164
+ - **ChatGPT subscription proposer** — `auth_mode = "chatgpt"` with required `codex_home` (OAuth via [Codex CLI](https://github.com/openai/codex) or [opencode-openai-codex-auth](https://github.com/numman-ali/opencode-openai-codex-auth)); models include `gpt-5.4-mini`, `gpt-5.4`, `gpt-5.3-codex`, `gpt-5.3-codex-spark`, `gpt-5.5`, `gpt-5.6-luna`, `gpt-5.6-sol`, and `gpt-5.6-terra`; proposer usage is $0, policy rollouts still bill normally.
155
165
  - **Nano-Codex proposer harness** — explicit `[proposer.nano_codex]` opt-in keeps one ChatGPT-authenticated app-server session warm across compatible GEPA generations, caches static task/program context by content digest, records monotonic JSONL events and typed turn receipts, and can replay receipts with zero live model or tool calls. See [`dev_examples/nano_codex_gepa/`](dev_examples/nano_codex_gepa/).
156
166
  - **Live usage** — `SYNTH_OPTIMIZERS_TERMINAL=1` prints running token and cost splits (`usage total=… policy=… proposer=…`).
157
167
  - **Docker proposer** — `runtime_substrate = "docker"` with `[proposer.docker].image`; workspaces stage under `~/.cache/synth-gepa-docker-workspaces/`, sync back, then cleanup; image: `docker/codex-gepa-proposer/Dockerfile`.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "synth-optimizers"
3
- version = "0.2.9.dev20260814"
3
+ version = "0.2.11.dev20260816"
4
4
  description = "Public Synth optimizer tooling with a Rust GEPA core."
5
5
  authors = [{name = "Synth Laboratories", email = "josh@usesynth.ai"}]
6
6
  readme = "README.md"
@@ -1252,6 +1252,7 @@ pub const CHATGPT_PROPOSER_MODELS: &[&str] = &[
1252
1252
  "gpt-5.5",
1253
1253
  "gpt-5.6-luna",
1254
1254
  "gpt-5.6-sol",
1255
+ "gpt-5.6-terra",
1255
1256
  ];
1256
1257
 
1257
1258
  pub fn proposer_auth_mode_normalized(auth_mode: &str) -> String {
@@ -2895,8 +2896,8 @@ mod tests {
2895
2896
  use super::*;
2896
2897
 
2897
2898
  #[test]
2898
- fn locked_luna_and_sol_chatgpt_proposers_are_allowed() {
2899
- for model in ["gpt-5.6-luna", "gpt-5.6-sol"] {
2899
+ fn locked_5_6_chatgpt_proposers_are_allowed() {
2900
+ for model in ["gpt-5.6-luna", "gpt-5.6-sol", "gpt-5.6-terra"] {
2900
2901
  assert!(CHATGPT_PROPOSER_MODELS.contains(&model));
2901
2902
  validate_chatgpt_proposer_model(model).expect("locked ChatGPT proposer model");
2902
2903
  validate_chatgpt_proposer_model(&model.to_ascii_uppercase())
@@ -2911,6 +2912,7 @@ mod tests {
2911
2912
  assert!(error.to_string().contains("not allowed"));
2912
2913
  assert!(error.to_string().contains("gpt-5.6-luna"));
2913
2914
  assert!(error.to_string().contains("gpt-5.6-sol"));
2915
+ assert!(error.to_string().contains("gpt-5.6-terra"));
2914
2916
  }
2915
2917
 
2916
2918
  #[test]
@@ -79,10 +79,16 @@ from .hosted import (
79
79
  OptimizerStartupCatalog,
80
80
  RunStatus as HostedRunStatus,
81
81
  submit_mapo,
82
+ submit_sft,
82
83
  submit_online_reflexion,
83
84
  validate_online_reflexion_evidence_notes,
84
85
  )
85
86
  from .hosted_config import HostedOptimizerConfig
87
+ from .future_algorithms import (
88
+ FUTURE_HOSTED_ALGORITHMS,
89
+ FutureHostedAlgorithm,
90
+ FutureHostedAlgorithmSlug,
91
+ )
86
92
  from .o11y import (
87
93
  LiveProgress,
88
94
  RegistryRecord,
@@ -220,6 +226,9 @@ __all__ = [
220
226
  "HostedOptimizerClient",
221
227
  "HostedOptimizerError",
222
228
  "HostedOptimizerConfig",
229
+ "FUTURE_HOSTED_ALGORITHMS",
230
+ "FutureHostedAlgorithm",
231
+ "FutureHostedAlgorithmSlug",
223
232
  "HostedRunStatus",
224
233
  "InvariantError",
225
234
  "InMemoryRunLog",
@@ -287,6 +296,7 @@ __all__ = [
287
296
  "gepa_delete_run_storage",
288
297
  "gepa_serve",
289
298
  "submit_mapo",
299
+ "submit_sft",
290
300
  "submit_online_reflexion",
291
301
  "validate_online_reflexion_evidence_notes",
292
302
  ]
@@ -18,7 +18,7 @@ The proposer is a Codex app-server. Configure it under `[proposer]` (TOML) or
18
18
  | `runtime_substrate` | `local` (host) or `docker` (`[proposer.docker].image`). |
19
19
  | `provider` | `openai`, `openrouter`, `deepseek`. |
20
20
  | `auth_mode` | `auto`, `api_key`, `chatgpt`, or `host`. |
21
- | `model` | e.g. `gpt-5.4-nano`, `gpt-5.4-mini`, `gpt-5.5`. |
21
+ | `model` | e.g. `gpt-5.4-mini`, `gpt-5.5`, `gpt-5.6-luna`, `gpt-5.6-sol`, `gpt-5.6-terra`. |
22
22
  | `reasoning_effort` | `none` / `low` / `medium` / `high`. |
23
23
  | `execution_mode` | `local_process` / `stdio` (JSON-RPC over stdin/stdout) or `websocket` / `ws`. |
24
24
  | `service_tier` | `default` or `fast` (Codex Fast mode; requires ChatGPT auth). |
@@ -0,0 +1,39 @@
1
+ """Compatibility identifiers for hosted algorithms not yet publicly supported.
2
+
3
+ These identifiers let the SDK parse a hosted catalog and preserve run history without
4
+ implying that the package provides a supported local executor, cookbook, or release
5
+ commitment. Promote an entry only when its public contract and end-to-end evidence
6
+ are ready.
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ from dataclasses import dataclass
12
+ from enum import StrEnum
13
+
14
+
15
+ class FutureHostedAlgorithmSlug(StrEnum):
16
+ MAPO = "mapo"
17
+ OHCO = "ohco"
18
+ ONLINE_REFLEXION = "online-reflexion"
19
+ MARL_PROMPTOPT = "marl-promptopt"
20
+
21
+
22
+ @dataclass(frozen=True, slots=True)
23
+ class FutureHostedAlgorithm:
24
+ slug: FutureHostedAlgorithmSlug
25
+ summary: str
26
+
27
+
28
+ FUTURE_HOSTED_ALGORITHMS: tuple[FutureHostedAlgorithm, ...] = (
29
+ FutureHostedAlgorithm(FutureHostedAlgorithmSlug.MAPO, "Private hosted compatibility lane."),
30
+ FutureHostedAlgorithm(FutureHostedAlgorithmSlug.OHCO, "Private hosted compatibility lane."),
31
+ FutureHostedAlgorithm(
32
+ FutureHostedAlgorithmSlug.ONLINE_REFLEXION,
33
+ "Gated hosted compatibility lane pending release evidence.",
34
+ ),
35
+ FutureHostedAlgorithm(
36
+ FutureHostedAlgorithmSlug.MARL_PROMPTOPT,
37
+ "Research executable; not a public hosted product lane.",
38
+ ),
39
+ )
@@ -85,6 +85,7 @@ _USAGE_REGISTRATION_TIMEOUT_SECONDS = 2.0
85
85
  class OptimizerAlgorithmSlug(StrEnum):
86
86
  GEPA = "gepa"
87
87
  GELO = "go-ex"
88
+ SFT = "sft"
88
89
  MAPO = "mapo"
89
90
  OHCO = "ohco"
90
91
  ONLINE_REFLEXION = "online-reflexion"
@@ -392,6 +393,14 @@ class HostedOptimizerClient:
392
393
  ) -> OptimizerRunSubmitResponse:
393
394
  return self._submit(OptimizerAlgorithmSlug.GELO, config, **kwargs)
394
395
 
396
+ def submit_sft(
397
+ self,
398
+ config: Mapping[str, Any] | Any,
399
+ **kwargs: Any,
400
+ ) -> OptimizerRunSubmitResponse:
401
+ """Submit a hosted SFT run executed by the Optimizers-beta backend."""
402
+ return self._submit(OptimizerAlgorithmSlug.SFT, config, **kwargs)
403
+
395
404
  def submit_mapo(
396
405
  self,
397
406
  config: Mapping[str, Any] | Any,
@@ -983,6 +992,17 @@ def submit_mapo(
983
992
  return active_client.submit_mapo(config, **kwargs)
984
993
 
985
994
 
995
+ def submit_sft(
996
+ config: Mapping[str, Any] | Any,
997
+ *,
998
+ client: HostedOptimizerClient | None = None,
999
+ **kwargs: Any,
1000
+ ) -> OptimizerRunSubmitResponse:
1001
+ """Submit an SFT run through the public hosted Optimizers API."""
1002
+ active_client = client or HostedOptimizerClient()
1003
+ return active_client.submit_sft(config, **kwargs)
1004
+
1005
+
986
1006
  def submit_online_reflexion(
987
1007
  config: Mapping[str, Any] | Any,
988
1008
  *,