agentevolve-optimizer 0.5.0__py3-none-any.whl

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 (414) hide show
  1. agent_evolve/__init__.py +722 -0
  2. agent_evolve/agentic.py +2800 -0
  3. agent_evolve/api.py +767 -0
  4. agent_evolve/application/__init__.py +1580 -0
  5. agent_evolve/application/action_allocation.py +744 -0
  6. agent_evolve/application/action_allocation_frame.py +347 -0
  7. agent_evolve/application/action_allocation_frame_commit.py +185 -0
  8. agent_evolve/application/action_allocation_frame_commit_v3.py +184 -0
  9. agent_evolve/application/action_allocation_frame_v3.py +338 -0
  10. agent_evolve/application/action_archive_value.py +497 -0
  11. agent_evolve/application/action_evidence_consistency.py +455 -0
  12. agent_evolve/application/action_forecast_partitioning.py +1471 -0
  13. agent_evolve/application/action_metric_projection.py +211 -0
  14. agent_evolve/application/action_role_value.py +680 -0
  15. agent_evolve/application/action_score_authorities.py +363 -0
  16. agent_evolve/application/action_structural_signature.py +116 -0
  17. agent_evolve/application/action_target_realization.py +402 -0
  18. agent_evolve/application/agentic_evolution.py +7734 -0
  19. agent_evolve/application/agentic_portfolio_residual_expert.py +835 -0
  20. agent_evolve/application/anchor_residual_identification.py +463 -0
  21. agent_evolve/application/archive_conditioned_action_target.py +208 -0
  22. agent_evolve/application/artifact_journal.py +246 -0
  23. agent_evolve/application/artifact_replay.py +347 -0
  24. agent_evolve/application/budgeted_optimizer.py +1828 -0
  25. agent_evolve/application/calibrated_campaign.py +485 -0
  26. agent_evolve/application/calibrated_current_prefix_forecast_opportunity.py +322 -0
  27. agent_evolve/application/calibrated_positive_gain_opportunity.py +1581 -0
  28. agent_evolve/application/campaign_capacity_recourse.py +254 -0
  29. agent_evolve/application/campaign_contextual_outcomes.py +119 -0
  30. agent_evolve/application/campaign_diagnostic_blocks.py +930 -0
  31. agent_evolve/application/campaign_evidence_registry.py +262 -0
  32. agent_evolve/application/campaign_execution.py +2537 -0
  33. agent_evolve/application/campaign_generation_audit.py +942 -0
  34. agent_evolve/application/campaign_learning.py +1812 -0
  35. agent_evolve/application/campaign_learning_runtime.py +1977 -0
  36. agent_evolve/application/campaign_search_phase.py +227 -0
  37. agent_evolve/application/campaign_selector_context_extension.py +220 -0
  38. agent_evolve/application/campaign_variation_envelope.py +649 -0
  39. agent_evolve/application/campaign_variation_trace.py +451 -0
  40. agent_evolve/application/candidate_archive_consequence.py +128 -0
  41. agent_evolve/application/causal_opportunity_portfolio_gate.py +385 -0
  42. agent_evolve/application/composite_outcome_updater.py +145 -0
  43. agent_evolve/application/composition_portfolio_selection.py +363 -0
  44. agent_evolve/application/concurrent_stage.py +144 -0
  45. agent_evolve/application/contextual_action_allocation.py +181 -0
  46. agent_evolve/application/contextual_campaign_outcomes.py +267 -0
  47. agent_evolve/application/contextual_campaign_planning.py +1366 -0
  48. agent_evolve/application/contextual_delayed_credit.py +651 -0
  49. agent_evolve/application/contextual_search_controller.py +2374 -0
  50. agent_evolve/application/current_prefix_forecast_opportunity.py +714 -0
  51. agent_evolve/application/decision_metric_projection.py +112 -0
  52. agent_evolve/application/derived_action_semantics.py +129 -0
  53. agent_evolve/application/detailed_evaluation.py +449 -0
  54. agent_evolve/application/earned_lineage.py +1011 -0
  55. agent_evolve/application/effective_choice_audit.py +484 -0
  56. agent_evolve/application/empirical_consequence_calibration.py +908 -0
  57. agent_evolve/application/evaluation_accounting.py +325 -0
  58. agent_evolve/application/evaluation_cache.py +199 -0
  59. agent_evolve/application/evaluation_escrow.py +547 -0
  60. agent_evolve/application/evaluation_recourse.py +253 -0
  61. agent_evolve/application/event_recorder.py +151 -0
  62. agent_evolve/application/evolution_campaign.py +1840 -0
  63. agent_evolve/application/executable_hypothesis.py +323 -0
  64. agent_evolve/application/factorial_branch_pilot.py +772 -0
  65. agent_evolve/application/finite_acquisition_capacity_recourse.py +672 -0
  66. agent_evolve/application/finite_acquisition_residual_expert.py +373 -0
  67. agent_evolve/application/finite_acquisition_variation_envelope.py +802 -0
  68. agent_evolve/application/finite_action_hypothesis_semantics.py +446 -0
  69. agent_evolve/application/finite_action_selection.py +188 -0
  70. agent_evolve/application/finite_action_set.py +306 -0
  71. agent_evolve/application/finite_action_transition.py +537 -0
  72. agent_evolve/application/finite_variation_eligibility.py +296 -0
  73. agent_evolve/application/forecast_geometry_portfolio.py +799 -0
  74. agent_evolve/application/forecast_opportunity_shadow_calibration.py +316 -0
  75. agent_evolve/application/front_proximity_admission.py +311 -0
  76. agent_evolve/application/front_proximity_parent_basis.py +458 -0
  77. agent_evolve/application/frozen_hurdle_score.py +659 -0
  78. agent_evolve/application/g3_causal_screen.py +2257 -0
  79. agent_evolve/application/g3_causal_validation.py +1046 -0
  80. agent_evolve/application/g3_postseal_curation.py +818 -0
  81. agent_evolve/application/gated_agentic_generator.py +205 -0
  82. agent_evolve/application/generation_feedback.py +293 -0
  83. agent_evolve/application/generative_proposal_journal.py +185 -0
  84. agent_evolve/application/geometry_conditional_elasticity.py +453 -0
  85. agent_evolve/application/global_wave_action_allocation.py +1151 -0
  86. agent_evolve/application/head_mass_conditional_seat.py +268 -0
  87. agent_evolve/application/identifiable_reflection_evidence.py +1147 -0
  88. agent_evolve/application/identifiable_reflection_learning.py +395 -0
  89. agent_evolve/application/identifiable_reflection_request.py +364 -0
  90. agent_evolve/application/in_memory_residual_archive.py +341 -0
  91. agent_evolve/application/insight_memory.py +1804 -0
  92. agent_evolve/application/live_runtime_manifest.py +758 -0
  93. agent_evolve/application/llm_task_queue.py +769 -0
  94. agent_evolve/application/matched_finite_action_block.py +409 -0
  95. agent_evolve/application/materialized_action_broker.py +2328 -0
  96. agent_evolve/application/materialized_action_constraints.py +83 -0
  97. agent_evolve/application/materialized_variation.py +211 -0
  98. agent_evolve/application/multi_option_evolution.py +1536 -0
  99. agent_evolve/application/outcome_adaptive_action_racing.py +2827 -0
  100. agent_evolve/application/outcome_adaptive_residual_campaign_runtime.py +580 -0
  101. agent_evolve/application/outcome_adaptive_residual_portfolio_evolution.py +3671 -0
  102. agent_evolve/application/outcome_conditioned_portfolio_selection.py +1374 -0
  103. agent_evolve/application/outcome_relation.py +193 -0
  104. agent_evolve/application/paired_allocation_comparison.py +241 -0
  105. agent_evolve/application/paired_block_schedule.py +127 -0
  106. agent_evolve/application/parent_measurement.py +226 -0
  107. agent_evolve/application/pareto_archive.py +811 -0
  108. agent_evolve/application/portfolio_campaign_runtime.py +4739 -0
  109. agent_evolve/application/portfolio_evolution.py +2950 -0
  110. agent_evolve/application/portfolio_hypothesis_observations.py +814 -0
  111. agent_evolve/application/portfolio_memory_attribution.py +581 -0
  112. agent_evolve/application/portfolio_memory_dose.py +788 -0
  113. agent_evolve/application/portfolio_memory_matched_control.py +938 -0
  114. agent_evolve/application/portfolio_memory_transfer.py +297 -0
  115. agent_evolve/application/portfolio_optimization_memory.py +363 -0
  116. agent_evolve/application/portfolio_outcome_feedback.py +1613 -0
  117. agent_evolve/application/portfolio_projection.py +335 -0
  118. agent_evolve/application/portfolio_recombination.py +2032 -0
  119. agent_evolve/application/post_evolution_reflection.py +834 -0
  120. agent_evolve/application/postcommit_rank_authority.py +245 -0
  121. agent_evolve/application/precommitted_portfolio_racing.py +2762 -0
  122. agent_evolve/application/prequential_archive_opportunity_calibration.py +1154 -0
  123. agent_evolve/application/prequential_residual_exploration.py +343 -0
  124. agent_evolve/application/prequential_score_portfolio.py +954 -0
  125. agent_evolve/application/projections.py +292 -0
  126. agent_evolve/application/protected_action_committee.py +1027 -0
  127. agent_evolve/application/protected_branch_pilot.py +376 -0
  128. agent_evolve/application/protected_current_prefix_forecast_opportunity.py +552 -0
  129. agent_evolve/application/provider_replay.py +910 -0
  130. agent_evolve/application/rank_balanced_causal_pilot.py +1372 -0
  131. agent_evolve/application/recombination_residual_expert.py +403 -0
  132. agent_evolve/application/reflection_workflow.py +571 -0
  133. agent_evolve/application/region_conditional_credit.py +911 -0
  134. agent_evolve/application/residual_campaign_runtime.py +531 -0
  135. agent_evolve/application/residual_headroom_campaign_runtime.py +459 -0
  136. agent_evolve/application/residual_headroom_ledger.py +1544 -0
  137. agent_evolve/application/residual_learning_transaction.py +396 -0
  138. agent_evolve/application/residual_portfolio_evolution.py +1228 -0
  139. agent_evolve/application/residual_reachability.py +749 -0
  140. agent_evolve/application/residual_stage_credit.py +499 -0
  141. agent_evolve/application/same_prefix_paired_audit.py +1580 -0
  142. agent_evolve/application/semantic_coverage_score_portfolio.py +838 -0
  143. agent_evolve/application/sequential_lineage_allocation.py +1017 -0
  144. agent_evolve/application/sequential_market_replay.py +1395 -0
  145. agent_evolve/application/sequential_residual_campaign_runtime.py +305 -0
  146. agent_evolve/application/sequential_residual_portfolio_evolution.py +940 -0
  147. agent_evolve/application/single_score_action_allocation.py +299 -0
  148. agent_evolve/application/source_exposure_allocation.py +906 -0
  149. agent_evolve/application/staged_memory.py +210 -0
  150. agent_evolve/application/stratified_cold_start_allocation.py +732 -0
  151. agent_evolve/application/support_guarded_hurdle_score.py +549 -0
  152. agent_evolve/application/target_conditioned_action_forecast.py +595 -0
  153. agent_evolve/application/target_conditioned_campaign.py +566 -0
  154. agent_evolve/application/treatment_assignment.py +201 -0
  155. agent_evolve/application/trusted_objective_evidence.py +217 -0
  156. agent_evolve/application/two_stage_action_evolution.py +1131 -0
  157. agent_evolve/application/v8lite_allocation_policy.py +1083 -0
  158. agent_evolve/application/v9_candidate_policy.py +1303 -0
  159. agent_evolve/bootstrap.py +108 -0
  160. agent_evolve/campaign_presets.py +517 -0
  161. agent_evolve/campaign_profiles.py +452 -0
  162. agent_evolve/campaign_variation_topology.py +288 -0
  163. agent_evolve/campaign_workload.py +950 -0
  164. agent_evolve/cli.py +797 -0
  165. agent_evolve/contract.py +241 -0
  166. agent_evolve/core/__init__.py +91 -0
  167. agent_evolve/core/action_semantics.py +411 -0
  168. agent_evolve/core/authored.py +105 -0
  169. agent_evolve/core/formatting.py +286 -0
  170. agent_evolve/core/optimization_semantics.py +324 -0
  171. agent_evolve/core/problem.py +167 -0
  172. agent_evolve/core/results.py +323 -0
  173. agent_evolve/core/stats.py +70 -0
  174. agent_evolve/core/telemetry.py +100 -0
  175. agent_evolve/domain/__init__.py +89 -0
  176. agent_evolve/domain/artifact.py +162 -0
  177. agent_evolve/domain/durable_text.py +68 -0
  178. agent_evolve/domain/event.py +1454 -0
  179. agent_evolve/domain/finite_action_set.py +426 -0
  180. agent_evolve/domain/finite_variation.py +526 -0
  181. agent_evolve/domain/generative_emission.py +559 -0
  182. agent_evolve/domain/ids.py +163 -0
  183. agent_evolve/domain/inline_text.py +106 -0
  184. agent_evolve/domain/insight.py +27 -0
  185. agent_evolve/domain/lineage.py +737 -0
  186. agent_evolve/domain/llm_task_queue.py +960 -0
  187. agent_evolve/domain/outcome.py +96 -0
  188. agent_evolve/domain/patch.py +854 -0
  189. agent_evolve/domain/typed_json.py +542 -0
  190. agent_evolve/domain/variation_space.py +158 -0
  191. agent_evolve/driver.py +1014 -0
  192. agent_evolve/harness/__init__.py +29 -0
  193. agent_evolve/harness/base.py +242 -0
  194. agent_evolve/harness/directives.py +163 -0
  195. agent_evolve/harness/generative_seal.py +479 -0
  196. agent_evolve/harness/registry.py +41 -0
  197. agent_evolve/infrastructure/__init__.py +39 -0
  198. agent_evolve/infrastructure/artifacts/__init__.py +6 -0
  199. agent_evolve/infrastructure/artifacts/_verification.py +67 -0
  200. agent_evolve/infrastructure/artifacts/filesystem.py +343 -0
  201. agent_evolve/infrastructure/artifacts/in_memory.py +73 -0
  202. agent_evolve/infrastructure/asyncio_runtime.py +109 -0
  203. agent_evolve/infrastructure/authored_runtime.py +188 -0
  204. agent_evolve/infrastructure/authored_worker.py +171 -0
  205. agent_evolve/infrastructure/clock.py +53 -0
  206. agent_evolve/infrastructure/events/__init__.py +6 -0
  207. agent_evolve/infrastructure/events/_validation.py +89 -0
  208. agent_evolve/infrastructure/events/in_memory.py +56 -0
  209. agent_evolve/infrastructure/events/jsonl.py +193 -0
  210. agent_evolve/infrastructure/exception_provenance.py +215 -0
  211. agent_evolve/infrastructure/ids.py +118 -0
  212. agent_evolve/infrastructure/lineage_codec.py +1836 -0
  213. agent_evolve/infrastructure/outcome_adaptive_phase_journal.py +170 -0
  214. agent_evolve/infrastructure/residual_headroom_journal.py +221 -0
  215. agent_evolve/infrastructure/resource_lease.py +370 -0
  216. agent_evolve/infrastructure/sanitization/__init__.py +8 -0
  217. agent_evolve/infrastructure/sanitization/strict_json.py +484 -0
  218. agent_evolve/infrastructure/sequential_phase_journal.py +170 -0
  219. agent_evolve/infrastructure/stream_liveness.py +383 -0
  220. agent_evolve/infrastructure/subprocess_boundary.py +136 -0
  221. agent_evolve/integrations/__init__.py +1 -0
  222. agent_evolve/integrations/botorch/__init__.py +28 -0
  223. agent_evolve/integrations/botorch/finite_qlognehvi.py +190 -0
  224. agent_evolve/integrations/botorch/finite_qlognehvi_batch.py +155 -0
  225. agent_evolve/integrations/botorch/finite_qlognehvi_batch_identity.py +20 -0
  226. agent_evolve/integrations/botorch/finite_qlognehvi_batch_worker.py +55 -0
  227. agent_evolve/integrations/botorch/finite_qlognehvi_identity.py +22 -0
  228. agent_evolve/integrations/botorch/finite_qlognehvi_worker.py +55 -0
  229. agent_evolve/integrations/botorch/subprocess_qlognehvi.py +261 -0
  230. agent_evolve/integrations/botorch/subprocess_qlognehvi_batch.py +273 -0
  231. agent_evolve/integrations/completion.py +242 -0
  232. agent_evolve/integrations/pydantic_ai/__init__.py +441 -0
  233. agent_evolve/integrations/pydantic_ai/action_forecast.py +1068 -0
  234. agent_evolve/integrations/pydantic_ai/agentic_generator.py +2308 -0
  235. agent_evolve/integrations/pydantic_ai/async_generator.py +1604 -0
  236. agent_evolve/integrations/pydantic_ai/boundary_codec.py +1526 -0
  237. agent_evolve/integrations/pydantic_ai/calibrated_portfolio_campaign.py +756 -0
  238. agent_evolve/integrations/pydantic_ai/calibrated_portfolio_selection.py +7537 -0
  239. agent_evolve/integrations/pydantic_ai/campaign_acquisition.py +609 -0
  240. agent_evolve/integrations/pydantic_ai/execution_binding.py +138 -0
  241. agent_evolve/integrations/pydantic_ai/forecast_geometry_action_committee.py +217 -0
  242. agent_evolve/integrations/pydantic_ai/harness.py +159 -0
  243. agent_evolve/integrations/pydantic_ai/heterogeneous_model_execution.py +306 -0
  244. agent_evolve/integrations/pydantic_ai/hierarchical_residual_adaptive_semantic_view.py +179 -0
  245. agent_evolve/integrations/pydantic_ai/json_schema_dialect.py +108 -0
  246. agent_evolve/integrations/pydantic_ai/materialized_hierarchical_residual_expert.py +952 -0
  247. agent_evolve/integrations/pydantic_ai/materialized_portfolio_judge.py +520 -0
  248. agent_evolve/integrations/pydantic_ai/model_execution_profile.py +659 -0
  249. agent_evolve/integrations/pydantic_ai/outbound_request_manifest.py +1170 -0
  250. agent_evolve/integrations/pydantic_ai/portable_residual_consequence_features.py +575 -0
  251. agent_evolve/integrations/pydantic_ai/portfolio_selection.py +422 -0
  252. agent_evolve/integrations/pydantic_ai/progress_aware_openrouter.py +416 -0
  253. agent_evolve/integrations/pydantic_ai/provider_attempt_join.py +1523 -0
  254. agent_evolve/integrations/pydantic_ai/provider_free_calibrated_runner.py +607 -0
  255. agent_evolve/integrations/pydantic_ai/queued_runner.py +2634 -0
  256. agent_evolve/integrations/pydantic_ai/reconciled_residual_reachability.py +1417 -0
  257. agent_evolve/integrations/pydantic_ai/residual_forecast_geometry.py +445 -0
  258. agent_evolve/integrations/pydantic_ai/residual_reachability.py +674 -0
  259. agent_evolve/integrations/pydantic_ai/residual_semantic_cells.py +239 -0
  260. agent_evolve/integrations/pydantic_ai/sealed_output_replay.py +1068 -0
  261. agent_evolve/integrations/pydantic_ai/semantic_coverage_residual_portfolio.py +770 -0
  262. agent_evolve/integrations/pydantic_ai/semantic_decision_replay.py +383 -0
  263. agent_evolve/integrations/pydantic_ai/support_adaptive_residual_portfolio.py +135 -0
  264. agent_evolve/integrations/pydantic_ai/trusted_residual_prompt_context.py +143 -0
  265. agent_evolve/integrations/pydantic_ai/validated_openrouter_model.py +107 -0
  266. agent_evolve/integrations/pymoo_adapter.py +242 -0
  267. agent_evolve/policies/__init__.py +17 -0
  268. agent_evolve/policies/check.py +469 -0
  269. agent_evolve/policies/emit_scaffold.py +451 -0
  270. agent_evolve/policies/feedback/__init__.py +37 -0
  271. agent_evolve/policies/feedback/held_out_asn.py +1325 -0
  272. agent_evolve/policies/genetic.py +607 -0
  273. agent_evolve/policies/llm_backoff.py +183 -0
  274. agent_evolve/policies/llm_chooser.py +226 -0
  275. agent_evolve/policies/llm_generator.py +1760 -0
  276. agent_evolve/policies/llm_init.py +267 -0
  277. agent_evolve/policies/llm_operator.py +109 -0
  278. agent_evolve/policies/llm_prior.py +194 -0
  279. agent_evolve/policies/llm_surrogate.py +334 -0
  280. agent_evolve/policies/measurement_evidence.py +704 -0
  281. agent_evolve/policies/memory/__init__.py +223 -0
  282. agent_evolve/policies/memory/balanced_subset_blocks.py +707 -0
  283. agent_evolve/policies/memory/compatibility_matching.py +593 -0
  284. agent_evolve/policies/memory/global_falsification.py +1841 -0
  285. agent_evolve/policies/memory/prompt_shape.py +503 -0
  286. agent_evolve/policies/memory/randomized_subset.py +714 -0
  287. agent_evolve/policies/memory/staged_causal.py +1270 -0
  288. agent_evolve/policies/memory/treatment_compliance.py +759 -0
  289. agent_evolve/policies/objective_resolution/__init__.py +17 -0
  290. agent_evolve/policies/objective_resolution/fixed_grid.py +364 -0
  291. agent_evolve/policies/operator_portfolio.py +407 -0
  292. agent_evolve/policies/reguidance.py +1133 -0
  293. agent_evolve/policies/reward/__init__.py +83 -0
  294. agent_evolve/policies/reward/affine_candidate_consequence.py +156 -0
  295. agent_evolve/policies/reward/affine_candidate_consequence_3d.py +159 -0
  296. agent_evolve/policies/reward/affine_hypervolume.py +490 -0
  297. agent_evolve/policies/reward/affine_hypervolume_3d.py +567 -0
  298. agent_evolve/policies/reward/contextual_marginal_utility.py +318 -0
  299. agent_evolve/policies/reward/frozen_archive.py +360 -0
  300. agent_evolve/policies/reward/frozen_wave_archive.py +368 -0
  301. agent_evolve/policies/search_state.py +208 -0
  302. agent_evolve/policies/selection/__init__.py +345 -0
  303. agent_evolve/policies/selection/acquisition_certified_slate.py +684 -0
  304. agent_evolve/policies/selection/affine_frontier_context.py +330 -0
  305. agent_evolve/policies/selection/affine_frontier_target.py +473 -0
  306. agent_evolve/policies/selection/archive_elite.py +1346 -0
  307. agent_evolve/policies/selection/calibrated_portfolio_binding.py +640 -0
  308. agent_evolve/policies/selection/calibrated_slate.py +1394 -0
  309. agent_evolve/policies/selection/calibrated_slate_codec.py +579 -0
  310. agent_evolve/policies/selection/common_candidate_pool.py +685 -0
  311. agent_evolve/policies/selection/diagnostic_sampling.py +319 -0
  312. agent_evolve/policies/selection/disjoint_pairs.py +479 -0
  313. agent_evolve/policies/selection/elite_explorer.py +719 -0
  314. agent_evolve/policies/selection/finite_action.py +187 -0
  315. agent_evolve/policies/selection/finite_option_prompt_projection.py +377 -0
  316. agent_evolve/policies/selection/finite_palette_evidence.py +247 -0
  317. agent_evolve/policies/selection/forecast_calibration.py +922 -0
  318. agent_evolve/policies/selection/frontier_probe_slate.py +814 -0
  319. agent_evolve/policies/selection/frozen_archive_pairs.py +762 -0
  320. agent_evolve/policies/selection/full_support_slate.py +91 -0
  321. agent_evolve/policies/selection/meaningful_direction.py +240 -0
  322. agent_evolve/policies/selection/memory_dose_feasibility.py +259 -0
  323. agent_evolve/policies/selection/model_anchored_slate.py +826 -0
  324. agent_evolve/policies/selection/phenotype_recourse.py +979 -0
  325. agent_evolve/policies/selection/proposal_support.py +368 -0
  326. agent_evolve/policies/selection/random_portfolio.py +254 -0
  327. agent_evolve/policies/selection/regret_bounded_slate.py +1084 -0
  328. agent_evolve/policies/selection/residual_frontier.py +463 -0
  329. agent_evolve/policies/selection/residual_frontier_target.py +605 -0
  330. agent_evolve/policies/selection/structural_posterior_slate.py +1571 -0
  331. agent_evolve/policies/selection/target_conditioned_allocator.py +648 -0
  332. agent_evolve/policies/selection/target_conditioned_features.py +812 -0
  333. agent_evolve/policies/selection/target_conditioned_prequential.py +1527 -0
  334. agent_evolve/policies/selection/task_keyed_palette.py +906 -0
  335. agent_evolve/policies/semantics.py +147 -0
  336. agent_evolve/policies/structure.py +362 -0
  337. agent_evolve/policies/structured_output_budget.py +62 -0
  338. agent_evolve/policies/surrogate.py +696 -0
  339. agent_evolve/policies/variation/__init__.py +1 -0
  340. agent_evolve/policies/variation/compositional_finite_catalog.py +426 -0
  341. agent_evolve/policies/variation/crossover_inheritance.py +575 -0
  342. agent_evolve/policies/variation/disjoint_recombination.py +611 -0
  343. agent_evolve/policies/variation/exact_composition_capacity.py +214 -0
  344. agent_evolve/policies/variation/exact_parent_crossover.py +950 -0
  345. agent_evolve/policies/variation/multiscale_restart_catalog.py +372 -0
  346. agent_evolve/policies/variation/source_union_finite_catalog.py +403 -0
  347. agent_evolve/policies/variation/typed_patch.py +1981 -0
  348. agent_evolve/policies/weighted_prior.py +394 -0
  349. agent_evolve/ports/__init__.py +383 -0
  350. agent_evolve/ports/action_allocation.py +733 -0
  351. agent_evolve/ports/action_allocation_frame.py +1153 -0
  352. agent_evolve/ports/action_allocation_frame_commit.py +294 -0
  353. agent_evolve/ports/action_allocation_frame_commit_v3.py +432 -0
  354. agent_evolve/ports/action_allocation_frame_v3.py +995 -0
  355. agent_evolve/ports/action_forecast.py +1568 -0
  356. agent_evolve/ports/action_metric_projection.py +165 -0
  357. agent_evolve/ports/agentic_generator.py +1561 -0
  358. agent_evolve/ports/archive_context.py +136 -0
  359. agent_evolve/ports/artifact_sanitizer.py +44 -0
  360. agent_evolve/ports/artifact_store.py +225 -0
  361. agent_evolve/ports/clock.py +13 -0
  362. agent_evolve/ports/contextual_search_allocation.py +827 -0
  363. agent_evolve/ports/decision_metric_projection.py +258 -0
  364. agent_evolve/ports/event_store.py +55 -0
  365. agent_evolve/ports/executable_hypothesis.py +557 -0
  366. agent_evolve/ports/finite_acquisition.py +377 -0
  367. agent_evolve/ports/finite_acquisition_batch.py +296 -0
  368. agent_evolve/ports/finite_acquisition_batch_json.py +164 -0
  369. agent_evolve/ports/finite_acquisition_json.py +247 -0
  370. agent_evolve/ports/finite_acquisition_space.py +168 -0
  371. agent_evolve/ports/finite_action_selection.py +348 -0
  372. agent_evolve/ports/finite_action_set.py +256 -0
  373. agent_evolve/ports/frontier_target.py +396 -0
  374. agent_evolve/ports/generation_failure.py +43 -0
  375. agent_evolve/ports/hard_feasibility.py +233 -0
  376. agent_evolve/ports/id_factory.py +34 -0
  377. agent_evolve/ports/llm_task_queue.py +93 -0
  378. agent_evolve/ports/objective_resolution.py +419 -0
  379. agent_evolve/ports/paired_allocation_comparison.py +401 -0
  380. agent_evolve/ports/paired_block_schedule.py +475 -0
  381. agent_evolve/ports/parent_measurement.py +336 -0
  382. agent_evolve/ports/portfolio_memory_dose.py +643 -0
  383. agent_evolve/ports/portfolio_selection.py +3169 -0
  384. agent_evolve/ports/postcommit_rank_authority.py +467 -0
  385. agent_evolve/ports/presented_action_evidence.py +794 -0
  386. agent_evolve/ports/resource_lease.py +162 -0
  387. agent_evolve/ports/structured_generator.py +734 -0
  388. agent_evolve/ports/structured_output_budget.py +120 -0
  389. agent_evolve/ports/subprocess_boundary.py +138 -0
  390. agent_evolve/ports/treatment_assignment.py +466 -0
  391. agent_evolve/ports/variation_catalog.py +76 -0
  392. agent_evolve/ports/variation_source.py +226 -0
  393. agent_evolve/proposal_mode.py +157 -0
  394. agent_evolve/proposers/__init__.py +10 -0
  395. agent_evolve/proposers/random_proposer.py +188 -0
  396. agent_evolve/provider_accounting.py +163 -0
  397. agent_evolve/py.typed +0 -0
  398. agent_evolve/reference_method.py +1570 -0
  399. agent_evolve/session/__init__.py +11 -0
  400. agent_evolve/session/authorship.py +864 -0
  401. agent_evolve/session/evaluate.py +236 -0
  402. agent_evolve/session/fidelity.py +237 -0
  403. agent_evolve/session/genetic_loop.py +742 -0
  404. agent_evolve/session/loop.py +803 -0
  405. agent_evolve/session/screening.py +671 -0
  406. agent_evolve/settings.py +376 -0
  407. agent_evolve/workload_kit.py +368 -0
  408. agent_evolve/workload_prompt.py +398 -0
  409. agentevolve_optimizer-0.5.0.dist-info/METADATA +599 -0
  410. agentevolve_optimizer-0.5.0.dist-info/RECORD +414 -0
  411. agentevolve_optimizer-0.5.0.dist-info/WHEEL +5 -0
  412. agentevolve_optimizer-0.5.0.dist-info/entry_points.txt +2 -0
  413. agentevolve_optimizer-0.5.0.dist-info/licenses/LICENSE +21 -0
  414. agentevolve_optimizer-0.5.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,368 @@
1
+ """Small public integration surface for campaign-capable workloads.
2
+
3
+ The strict campaign ports deliberately authenticate every boundary. Benchmark
4
+ authors should not need to assemble those ports directly, however. A
5
+ ``WorkloadKit`` names the four facts a new domain must provide:
6
+
7
+ 1. an :class:`~agent_evolve.agentic.AgenticBenchmark`;
8
+ 2. one or more canonical seeds;
9
+ 3. a finite variation catalog (selected by ID only when several exist); and
10
+ 4. externally acquired evaluator/resource admission receipts.
11
+
12
+ Evidence projections and workload semantics prompting are optional extension
13
+ points. Omitting evidence selects a workload-neutral, schema-derived empty
14
+ memory/context projection. The optional prompt extension remains governed by
15
+ ``workload_prompt`` provenance and ablation rules.
16
+ """
17
+
18
+ from __future__ import annotations
19
+
20
+ import hashlib
21
+ import json
22
+ import re
23
+ from dataclasses import dataclass
24
+
25
+ from pydantic import BaseModel
26
+
27
+ from agent_evolve.agentic import AgenticBenchmark
28
+ from agent_evolve.application.evolution_campaign import CampaignSeed
29
+ from agent_evolve.campaign_workload import (
30
+ AgenticCampaignEvidenceProjections,
31
+ AgenticCampaignWorkloadConfig,
32
+ )
33
+ from agent_evolve.domain.typed_json import (
34
+ FrozenJsonObject,
35
+ freeze_json,
36
+ thaw_json,
37
+ typed_json_sha256,
38
+ )
39
+ from agent_evolve.workload_prompt import WorkloadPromptExtensionView
40
+
41
+
42
+ _TOKEN = re.compile(r"^[a-z][a-z0-9_.:-]{0,127}$")
43
+ _WORKLOAD_DEFINITION_DOMAIN = b"agent-evolve:workload-kit-definition:v1\x00"
44
+ _INTEGRATION_RECEIPT_DOMAIN = b"agent-evolve:workload-kit-receipt:v1\x00"
45
+ GENERIC_SCHEMA_EVIDENCE_PROJECTION_ID = "generic_schema_evidence"
46
+ # v2: the default projection now emits ONE schema-derived bootstrap card.
47
+ #
48
+ # v1 returned no cards, and `CampaignPortfolioWaveContext` requires
49
+ # `evidence_cards` to be a non-empty tuple, so **every workload that omitted an
50
+ # evidence projection was unable to run a portfolio campaign at all** -- it
51
+ # raised "portfolio context requires evidence cards" at the first stage. That
52
+ # is four shipped workloads, not one: analog_sizing, heat2d, pybamm_fastcharge
53
+ # and scip_miplib all report `uses_default_schema_evidence`. It stayed
54
+ # invisible because every workload with a hand-written runner supplies its own
55
+ # projection, so the default was never driven to a portfolio stage until a
56
+ # second workload went through the generic driver.
57
+ #
58
+ # The card is derived entirely from material already in scope -- the benchmark
59
+ # descriptor, the finite variation contract and the parent/memory hashes -- so
60
+ # the projection remains workload-neutral and carries no workload constant.
61
+ GENERIC_SCHEMA_EVIDENCE_PROJECTION_VERSION = 2
62
+ GENERIC_SCHEMA_EVIDENCE_PROJECTION_DEFINITION_SHA256 = hashlib.sha256(
63
+ b"agent-evolve:generic-schema-evidence:v2;"
64
+ b"empty-bootstrap-memory=true;objective-declarations=true;"
65
+ b"catalog-identity-and-cardinality=true;parent-and-memory-hashes=true;"
66
+ b"workload-prose=false;cards=one-schema-derived-bootstrap-card"
67
+ ).hexdigest()
68
+
69
+
70
+ def _canonical_bytes(value: object) -> bytes:
71
+ return json.dumps(
72
+ value,
73
+ allow_nan=False,
74
+ ensure_ascii=True,
75
+ separators=(",", ":"),
76
+ sort_keys=True,
77
+ ).encode("ascii", errors="strict")
78
+
79
+
80
+ def _hash(domain: bytes, value: object) -> str:
81
+ return hashlib.sha256(domain + _canonical_bytes(value)).hexdigest()
82
+
83
+
84
+ def campaign_seed(
85
+ seed_id: str,
86
+ candidate: BaseModel | FrozenJsonObject | dict[str, object],
87
+ ) -> CampaignSeed:
88
+ """Freeze one named candidate into the strict campaign seed type."""
89
+
90
+ if isinstance(candidate, BaseModel):
91
+ candidate = candidate.model_dump(mode="python", by_alias=False)
92
+ if type(candidate) not in {dict, FrozenJsonObject}:
93
+ raise TypeError(
94
+ "candidate must be an exact dict, FrozenJsonObject, or Pydantic model"
95
+ )
96
+ frozen = freeze_json(candidate)
97
+ if type(frozen) is not FrozenJsonObject:
98
+ raise TypeError("a campaign seed candidate must be a JSON object")
99
+ return CampaignSeed(seed_id=seed_id, configuration=frozen)
100
+
101
+
102
+ def _generic_memory(benchmark, session, seeds) -> FrozenJsonObject:
103
+ del benchmark
104
+ descriptor = thaw_json(session.benchmark)
105
+ record = {
106
+ "schema_version": 1,
107
+ "projection_id": GENERIC_SCHEMA_EVIDENCE_PROJECTION_ID,
108
+ "workload_id": descriptor["workload_id"],
109
+ "objective_ids": [item["name"] for item in descriptor["objectives"]],
110
+ "seed_configuration_sha256s": [
111
+ seed.configuration_sha256 for seed in seeds.seeds
112
+ ],
113
+ "insights": [],
114
+ }
115
+ frozen = freeze_json(record)
116
+ if type(frozen) is not FrozenJsonObject: # pragma: no cover
117
+ raise AssertionError("generic memory did not freeze as an object")
118
+ return frozen
119
+
120
+
121
+ def _generic_context(
122
+ benchmark,
123
+ session,
124
+ parent,
125
+ variation,
126
+ memory,
127
+ ) -> FrozenJsonObject:
128
+ del benchmark
129
+ descriptor = thaw_json(session.benchmark)
130
+ record = {
131
+ "schema_version": 1,
132
+ "projection_id": GENERIC_SCHEMA_EVIDENCE_PROJECTION_ID,
133
+ "workload_id": descriptor["workload_id"],
134
+ "objectives": descriptor["objectives"],
135
+ "optimization_semantics_identity": descriptor.get(
136
+ "optimization_semantics_identity"
137
+ ),
138
+ "action_semantics_identity": descriptor.get("action_semantics_identity"),
139
+ "parent_configuration_sha256": typed_json_sha256(parent),
140
+ "memory_sha256": typed_json_sha256(memory),
141
+ "finite_variation": {
142
+ "catalog_id": variation.contract.catalog_id,
143
+ "catalog_version": variation.contract.catalog_version,
144
+ "catalog_definition_sha256": (
145
+ variation.contract.catalog_definition_sha256
146
+ ),
147
+ "contract_identity_sha256": variation.contract.identity_sha256,
148
+ "eligible_option_count": len(variation.contract.options),
149
+ },
150
+ }
151
+ frozen = freeze_json(record)
152
+ if type(frozen) is not FrozenJsonObject: # pragma: no cover
153
+ raise AssertionError("generic context did not freeze as an object")
154
+ return frozen
155
+
156
+
157
+ def _generic_cards(
158
+ benchmark,
159
+ session,
160
+ parent,
161
+ variation,
162
+ memory,
163
+ ) -> tuple[FrozenJsonObject, ...]:
164
+ """One schema-derived bootstrap card.
165
+
166
+ The portfolio wave context requires at least one evidence card, so a
167
+ projection that returns none cannot reach a portfolio stage. This card
168
+ states only what the schema already declares: which objectives are being
169
+ optimized, which finite catalogue the options come from, how many options
170
+ are eligible, and which parent and memory the selection is conditioned on.
171
+ It asserts nothing about the workload's semantics and contains no workload
172
+ constant -- a workload that wants richer evidence supplies its own
173
+ projection, which is what every hand-written runner already does.
174
+ """
175
+
176
+ del benchmark
177
+ descriptor = thaw_json(session.benchmark)
178
+ contract = variation.contract
179
+ record = {
180
+ "schema_version": 1,
181
+ "card_kind": "schema_bootstrap",
182
+ "projection_id": GENERIC_SCHEMA_EVIDENCE_PROJECTION_ID,
183
+ "claim": (
184
+ "Selection is conditioned on the declared objectives and the sealed "
185
+ "finite option contract below; no workload-specific evidence has "
186
+ "been supplied by this projection."
187
+ ),
188
+ "workload_id": descriptor["workload_id"],
189
+ "objectives": descriptor["objectives"],
190
+ "finite_variation": {
191
+ "catalog_id": contract.catalog_id,
192
+ "catalog_version": contract.catalog_version,
193
+ "catalog_definition_sha256": contract.catalog_definition_sha256,
194
+ "contract_identity_sha256": contract.identity_sha256,
195
+ "eligible_option_count": len(contract.options),
196
+ },
197
+ "parent_configuration_sha256": typed_json_sha256(parent),
198
+ "memory_sha256": typed_json_sha256(memory),
199
+ }
200
+ frozen = freeze_json(record)
201
+ if type(frozen) is not FrozenJsonObject: # pragma: no cover
202
+ raise AssertionError("generic card did not freeze as an object")
203
+ return (frozen,)
204
+
205
+
206
+ def generic_schema_evidence_projections() -> AgenticCampaignEvidenceProjections:
207
+ """Return the workload-neutral default evidence implementation."""
208
+
209
+ return AgenticCampaignEvidenceProjections(
210
+ projection_id=GENERIC_SCHEMA_EVIDENCE_PROJECTION_ID,
211
+ projection_version=GENERIC_SCHEMA_EVIDENCE_PROJECTION_VERSION,
212
+ definition_sha256=(
213
+ GENERIC_SCHEMA_EVIDENCE_PROJECTION_DEFINITION_SHA256
214
+ ),
215
+ initialize_memory=_generic_memory,
216
+ context=_generic_context,
217
+ cards=_generic_cards,
218
+ )
219
+
220
+
221
+ @dataclass(frozen=True, slots=True)
222
+ class WorkloadKit:
223
+ """Declarative high-level adapter compiled into authenticated campaign ports."""
224
+
225
+ workload_id: str
226
+ workload_version: int
227
+ benchmark: AgenticBenchmark
228
+ seeds: tuple[CampaignSeed, ...]
229
+ evaluator_concurrency_cap: int
230
+ evaluator_preflight_receipt: FrozenJsonObject
231
+ resource_lease_receipt: FrozenJsonObject
232
+ finite_catalog_id: str | None = None
233
+ evidence: AgenticCampaignEvidenceProjections | None = None
234
+ prompt_extension: WorkloadPromptExtensionView | None = None
235
+
236
+ def __post_init__(self) -> None:
237
+ if type(self.workload_id) is not str or _TOKEN.fullmatch(
238
+ self.workload_id
239
+ ) is None:
240
+ raise ValueError("workload_id must use the closed campaign token grammar")
241
+ if type(self.workload_version) is not int or self.workload_version <= 0:
242
+ raise ValueError("workload_version must be a positive exact integer")
243
+ if type(self.benchmark) is not AgenticBenchmark:
244
+ raise TypeError("benchmark must be an exact AgenticBenchmark")
245
+ self.benchmark.validate_binding()
246
+ if type(self.seeds) is not tuple or not self.seeds:
247
+ raise ValueError("seeds must be a non-empty exact tuple")
248
+ if any(type(seed) is not CampaignSeed for seed in self.seeds):
249
+ raise TypeError("seeds must contain exact CampaignSeed values")
250
+ if (
251
+ type(self.evaluator_concurrency_cap) is not int
252
+ or self.evaluator_concurrency_cap <= 0
253
+ ):
254
+ raise ValueError("evaluator_concurrency_cap must be positive")
255
+ for name in (
256
+ "evaluator_preflight_receipt",
257
+ "resource_lease_receipt",
258
+ ):
259
+ value = getattr(self, name)
260
+ if type(value) is not FrozenJsonObject or freeze_json(value) is not value:
261
+ raise TypeError(f"{name} must be an exact frozen typed-JSON object")
262
+ if self.finite_catalog_id is not None and type(
263
+ self.finite_catalog_id
264
+ ) is not str:
265
+ raise TypeError("finite_catalog_id must be an exact string or None")
266
+ if self.evidence is not None and type(
267
+ self.evidence
268
+ ) is not AgenticCampaignEvidenceProjections:
269
+ raise TypeError(
270
+ "evidence must be exact AgenticCampaignEvidenceProjections or None"
271
+ )
272
+ if self.prompt_extension is not None and type(
273
+ self.prompt_extension
274
+ ) is not WorkloadPromptExtensionView:
275
+ raise TypeError(
276
+ "prompt_extension must be exact WorkloadPromptExtensionView or None"
277
+ )
278
+ # Compile eagerly so ambiguous catalogs and noncanonical seeds fail at
279
+ # the public construction boundary rather than during a paid run.
280
+ self.to_campaign_workload()
281
+
282
+ @property
283
+ def selected_finite_catalog_id(self) -> str:
284
+ identities = self.benchmark.finite_variation_catalog_identities
285
+ if self.finite_catalog_id is not None:
286
+ return self.finite_catalog_id
287
+ if len(identities) != 1:
288
+ raise ValueError(
289
+ "finite_catalog_id is required when the benchmark publishes "
290
+ "zero or multiple catalogs"
291
+ )
292
+ return identities[0][0]
293
+
294
+ @property
295
+ def workload_definition_sha256(self) -> str:
296
+ """Identity of this versioned public integration contract."""
297
+
298
+ return _hash(
299
+ _WORKLOAD_DEFINITION_DOMAIN,
300
+ {
301
+ "schema_version": 1,
302
+ "workload_id": self.workload_id,
303
+ "workload_version": self.workload_version,
304
+ "adapter": "workload_kit",
305
+ },
306
+ )
307
+
308
+ def to_campaign_workload(self) -> AgenticCampaignWorkloadConfig:
309
+ """Compile the small public declaration into the strict inverted API."""
310
+
311
+ evidence = self.evidence or generic_schema_evidence_projections()
312
+ return AgenticCampaignWorkloadConfig(
313
+ workload_id=self.workload_id,
314
+ workload_version=self.workload_version,
315
+ definition_sha256=self.workload_definition_sha256,
316
+ benchmark=self.benchmark,
317
+ seeds=self.seeds,
318
+ finite_catalog_id=self.selected_finite_catalog_id,
319
+ evaluator_concurrency_cap=self.evaluator_concurrency_cap,
320
+ evaluator_preflight_receipt=self.evaluator_preflight_receipt,
321
+ resource_lease_receipt=self.resource_lease_receipt,
322
+ evidence=evidence,
323
+ prompt_extension=self.prompt_extension,
324
+ )
325
+
326
+ def integration_receipt(self) -> FrozenJsonObject:
327
+ """Publish the inspectable adapter obligations and extension usage."""
328
+
329
+ config = self.to_campaign_workload()
330
+ record: dict[str, object] = {
331
+ "schema_version": 1,
332
+ "adapter": "workload_kit",
333
+ "workload_id": self.workload_id,
334
+ "workload_version": self.workload_version,
335
+ "required_obligations": [
336
+ "agentic_benchmark",
337
+ "canonical_seeds",
338
+ "finite_variation_catalog",
339
+ "evaluator_resource_admission",
340
+ ],
341
+ "required_obligation_count": 4,
342
+ "seed_count": len(self.seeds),
343
+ "finite_catalog_id": self.selected_finite_catalog_id,
344
+ "uses_default_schema_evidence": self.evidence is None,
345
+ "uses_custom_evidence_projection": self.evidence is not None,
346
+ "uses_optional_prompt_extension": self.prompt_extension is not None,
347
+ "prompt_extension_view_sha256": (
348
+ None
349
+ if self.prompt_extension is None
350
+ else self.prompt_extension.view_sha256
351
+ ),
352
+ "campaign_configuration_sha256": config.configuration_sha256,
353
+ }
354
+ record["receipt_sha256"] = _hash(_INTEGRATION_RECEIPT_DOMAIN, record)
355
+ frozen = freeze_json(record)
356
+ if type(frozen) is not FrozenJsonObject: # pragma: no cover
357
+ raise AssertionError("integration receipt did not freeze as an object")
358
+ return frozen
359
+
360
+
361
+ __all__ = [
362
+ "GENERIC_SCHEMA_EVIDENCE_PROJECTION_DEFINITION_SHA256",
363
+ "GENERIC_SCHEMA_EVIDENCE_PROJECTION_ID",
364
+ "GENERIC_SCHEMA_EVIDENCE_PROJECTION_VERSION",
365
+ "WorkloadKit",
366
+ "campaign_seed",
367
+ "generic_schema_evidence_projections",
368
+ ]