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,453 @@
1
+ """Geometry-conditional seat elasticity for pilot lane allocation (R3).
2
+
3
+ Defects D2/D6 (jul28 pareto defect theory): the pilot's fixed per-lane
4
+ coverage floor spends seats on lanes whose archive state makes them
5
+ structurally dead (numerical proposals re-deriving a saturated archive:
6
+ 0/16 positives; coverage lanes whose parents sit >=0.25 normalized off the
7
+ front: 0/13), while the lane holding the positives is under-seated (V70:
8
+ 83% of positives, 1/6 seats). The conditioning variable is archive state,
9
+ not lane identity, so this module replaces the fixed floor with elastic
10
+ per-lane seat bids computed from three state features the receipts already
11
+ expose:
12
+
13
+ * parent distance-to-front of the lane's proposals (outcome-blind,
14
+ additive-epsilon in the normalized objective frame);
15
+ * archive saturation, the lane's predicted self-overlap: the fraction of
16
+ its proposals whose central forecast lands inside the currently
17
+ dominated region (outcome-blind; lanes without forecasts stay at the
18
+ neutral prior); and
19
+ * the lane's conversion posterior over outcomes revealed BEFORE the seat
20
+ (Beta shrinkage toward the global revealed posterior).
21
+
22
+ Seats follow a D'Hondt walk over the bids (bid divided by seats already
23
+ awarded plus one), so far-front, saturated lanes bid low and concede seats
24
+ while a global exploration floor keeps every lane's bid strictly positive;
25
+ the within-engine seat design (band schedule, blocked randomization,
26
+ epsilon-uniform floor, exact rational propensities) is delegated unchanged
27
+ to the existing sequential adaptive pilot. Composition is config-gated in
28
+ ``v9_candidate_policy``; no existing module is modified. The policy knows
29
+ no workload, objective name, model, provider, or prompt.
30
+ """
31
+
32
+ from __future__ import annotations
33
+
34
+ import hashlib
35
+ import json
36
+ import math
37
+ import re
38
+ from dataclasses import dataclass, field
39
+
40
+ from agent_evolve.application.calibrated_positive_gain_opportunity import (
41
+ _beta_posterior_mean,
42
+ )
43
+
44
+ GEOMETRY_CONDITIONAL_ELASTICITY_POLICY_ID = (
45
+ "geometry_conditional_elasticity"
46
+ )
47
+ GEOMETRY_CONDITIONAL_ELASTICITY_POLICY_VERSION = 1
48
+ _TOKEN = re.compile(r"^[a-z][a-z0-9_.:-]{0,255}$")
49
+ _DEFINITION_DOMAIN = (
50
+ b"agent-evolve:geometry-conditional-elasticity-definition:v1\x00"
51
+ )
52
+
53
+
54
+ def _canonical_json(value: object) -> bytes:
55
+ return json.dumps(
56
+ value,
57
+ allow_nan=False,
58
+ ensure_ascii=True,
59
+ separators=(",", ":"),
60
+ sort_keys=True,
61
+ ).encode("ascii", errors="strict")
62
+
63
+
64
+ def _hash(domain: bytes, value: object) -> str:
65
+ return hashlib.sha256(domain + _canonical_json(value)).hexdigest()
66
+
67
+
68
+ def _require_token(value: str, *, name: str) -> None:
69
+ if type(value) is not str or _TOKEN.fullmatch(value) is None:
70
+ raise ValueError(f"{name} must use the closed token grammar")
71
+
72
+
73
+ @dataclass(frozen=True, slots=True)
74
+ class ElasticSeatConfig:
75
+ """All R3 constants; every float is an exact dyadic value."""
76
+
77
+ exploration_floor_bid: float = 0.0625
78
+ distance_weight: float = 4.0
79
+ saturation_weight: float = 1.0
80
+
81
+ def __post_init__(self) -> None:
82
+ if (
83
+ type(self.exploration_floor_bid) is not float
84
+ or not math.isfinite(self.exploration_floor_bid)
85
+ or not 0.0 < self.exploration_floor_bid <= 1.0
86
+ ):
87
+ raise ValueError(
88
+ "exploration_floor_bid must lie in (0, 1]"
89
+ )
90
+ if (
91
+ type(self.distance_weight) is not float
92
+ or not math.isfinite(self.distance_weight)
93
+ or self.distance_weight < 0.0
94
+ ):
95
+ raise ValueError(
96
+ "distance_weight must be finite and non-negative"
97
+ )
98
+ if (
99
+ type(self.saturation_weight) is not float
100
+ or not math.isfinite(self.saturation_weight)
101
+ or not 0.0 <= self.saturation_weight <= 1.0
102
+ ):
103
+ raise ValueError(
104
+ "saturation_weight must lie in [0, 1]"
105
+ )
106
+
107
+ def to_record(self) -> dict[str, object]:
108
+ self.__post_init__()
109
+ return {
110
+ "exploration_floor_bid_hex": (
111
+ self.exploration_floor_bid.hex()
112
+ ),
113
+ "distance_weight_hex": self.distance_weight.hex(),
114
+ "saturation_weight_hex": self.saturation_weight.hex(),
115
+ }
116
+
117
+
118
+ @dataclass(frozen=True, slots=True)
119
+ class LaneGeometryEvidence:
120
+ """Outcome-blind and prequential state features of one lane.
121
+
122
+ ``parent_front_distances`` are additive-epsilon distances of the
123
+ lane's proposals' parents behind the current front (empty when the
124
+ lane records no parents). ``predicted_dominated`` flags, one per
125
+ proposal carrying a forecast, are True when the central forecast
126
+ point adds zero archive gain (the lane re-derives the dominated
127
+ region). ``revealed_positive`` holds the positivity of the lane's
128
+ outcomes revealed strictly before the current seat.
129
+ """
130
+
131
+ engine_id: str
132
+ parent_front_distances: tuple[float, ...] = ()
133
+ predicted_dominated: tuple[bool, ...] = ()
134
+ revealed_positive: tuple[bool, ...] = ()
135
+
136
+ def __post_init__(self) -> None:
137
+ _require_token(self.engine_id, name="engine_id")
138
+ if type(self.parent_front_distances) is not tuple or any(
139
+ type(value) is not float
140
+ or not math.isfinite(value)
141
+ or value < 0.0
142
+ for value in self.parent_front_distances
143
+ ):
144
+ raise ValueError(
145
+ "parent_front_distances must be finite non-negative "
146
+ "exact floats"
147
+ )
148
+ for name in ("predicted_dominated", "revealed_positive"):
149
+ values = getattr(self, name)
150
+ if type(values) is not tuple or any(
151
+ type(value) is not bool for value in values
152
+ ):
153
+ raise TypeError(f"{name} must contain exact booleans")
154
+
155
+
156
+ @dataclass(frozen=True, slots=True)
157
+ class LaneSeatBid:
158
+ """One lane's elastic seat bid with its feature decomposition."""
159
+
160
+ engine_id: str
161
+ conversion_posterior: float
162
+ saturation_posterior: float
163
+ mean_parent_front_distance: float | None
164
+ distance_factor: float
165
+ bid: float
166
+ floored: bool
167
+
168
+ def __post_init__(self) -> None:
169
+ _require_token(self.engine_id, name="engine_id")
170
+ for name in (
171
+ "conversion_posterior",
172
+ "saturation_posterior",
173
+ ):
174
+ value = getattr(self, name)
175
+ if (
176
+ type(value) is not float
177
+ or not math.isfinite(value)
178
+ or not 0.0 <= value <= 1.0
179
+ ):
180
+ raise ValueError(f"{name} must lie in [0, 1]")
181
+ if self.mean_parent_front_distance is not None and (
182
+ type(self.mean_parent_front_distance) is not float
183
+ or not math.isfinite(self.mean_parent_front_distance)
184
+ or self.mean_parent_front_distance < 0.0
185
+ ):
186
+ raise ValueError(
187
+ "mean_parent_front_distance must be finite and "
188
+ "non-negative or None"
189
+ )
190
+ for name in ("distance_factor", "bid"):
191
+ value = getattr(self, name)
192
+ if (
193
+ type(value) is not float
194
+ or not math.isfinite(value)
195
+ or value <= 0.0
196
+ ):
197
+ raise ValueError(f"{name} must be strictly positive")
198
+ if type(self.floored) is not bool:
199
+ raise TypeError("floored must be exact")
200
+
201
+ def to_record(self) -> dict[str, object]:
202
+ self.__post_init__()
203
+ return {
204
+ "engine_id": self.engine_id,
205
+ "conversion_posterior_hex": (
206
+ self.conversion_posterior.hex()
207
+ ),
208
+ "saturation_posterior_hex": (
209
+ self.saturation_posterior.hex()
210
+ ),
211
+ "mean_parent_front_distance_hex": (
212
+ None
213
+ if self.mean_parent_front_distance is None
214
+ else self.mean_parent_front_distance.hex()
215
+ ),
216
+ "distance_factor_hex": self.distance_factor.hex(),
217
+ "bid_hex": self.bid.hex(),
218
+ "floored": self.floored,
219
+ }
220
+
221
+
222
+ @dataclass(frozen=True, slots=True)
223
+ class ElasticSeatBidder:
224
+ """Compute elastic lane bids and walk seats by D'Hondt over them."""
225
+
226
+ config: ElasticSeatConfig = ElasticSeatConfig()
227
+ prior_strength: float = 2.0
228
+ root_prior_probability: float = 0.5
229
+ policy_id: str = GEOMETRY_CONDITIONAL_ELASTICITY_POLICY_ID
230
+ policy_version: int = (
231
+ GEOMETRY_CONDITIONAL_ELASTICITY_POLICY_VERSION
232
+ )
233
+ definition_sha256: str = field(init=False)
234
+
235
+ def __post_init__(self) -> None:
236
+ if type(self.config) is not ElasticSeatConfig:
237
+ raise TypeError("config must be exact")
238
+ self.config.__post_init__()
239
+ if (
240
+ type(self.prior_strength) is not float
241
+ or not math.isfinite(self.prior_strength)
242
+ or self.prior_strength <= 0.0
243
+ ):
244
+ raise ValueError("prior_strength must be positive")
245
+ if (
246
+ type(self.root_prior_probability) is not float
247
+ or not math.isfinite(self.root_prior_probability)
248
+ or not 0.0 < self.root_prior_probability < 1.0
249
+ ):
250
+ raise ValueError(
251
+ "root_prior_probability must lie in (0, 1)"
252
+ )
253
+ _require_token(self.policy_id, name="policy_id")
254
+ if (
255
+ self.policy_id != GEOMETRY_CONDITIONAL_ELASTICITY_POLICY_ID
256
+ or self.policy_version
257
+ != GEOMETRY_CONDITIONAL_ELASTICITY_POLICY_VERSION
258
+ ):
259
+ raise ValueError("policy identity is immutable")
260
+ object.__setattr__(
261
+ self,
262
+ "definition_sha256",
263
+ _hash(
264
+ _DEFINITION_DOMAIN,
265
+ {
266
+ "schema_version": 1,
267
+ "policy_id": self.policy_id,
268
+ "policy_version": self.policy_version,
269
+ "config": self.config.to_record(),
270
+ "prior_strength_hex": self.prior_strength.hex(),
271
+ "root_prior_probability_hex": (
272
+ self.root_prior_probability.hex()
273
+ ),
274
+ "bid": (
275
+ "conversion_posterior_times_exp_neg_weighted_"
276
+ "mean_parent_front_distance_times_one_minus_"
277
+ "weighted_saturation_floored"
278
+ ),
279
+ "conversion_evidence": (
280
+ "revealed_lane_positivity_beta_shrunk_toward_"
281
+ "global_revealed_posterior"
282
+ ),
283
+ "saturation_evidence": (
284
+ "outcome_blind_central_forecast_self_overlap_"
285
+ "per_lane_beta_from_root_prior_no_cross_lane_"
286
+ "pooling"
287
+ ),
288
+ "seat_walk": (
289
+ "dhondt_bid_over_awarded_plus_one_tie_break_"
290
+ "ascending_engine_id"
291
+ ),
292
+ "fixed_per_lane_coverage_floor": False,
293
+ "global_exploration_floor": (
294
+ "strictly_positive_bid_floor_plus_unchanged_"
295
+ "within_engine_epsilon_uniform_propensities"
296
+ ),
297
+ "campaign_level_unexposed_lane_diagnostic_seat": (
298
+ "out_of_scope_for_market_level_composition"
299
+ ),
300
+ "future_outcomes_visible": False,
301
+ "workload_objective_model_provider_prompt_branches": (
302
+ False
303
+ ),
304
+ },
305
+ ),
306
+ )
307
+
308
+ def _posterior(
309
+ self,
310
+ *,
311
+ prior_mean: float,
312
+ successes: float,
313
+ failures: float,
314
+ ) -> float:
315
+ return _beta_posterior_mean(
316
+ prior_mean=prior_mean,
317
+ prior_strength=self.prior_strength,
318
+ successes=successes,
319
+ failures=failures,
320
+ )
321
+
322
+ def lane_bids(
323
+ self,
324
+ lanes: tuple[LaneGeometryEvidence, ...],
325
+ ) -> tuple[LaneSeatBid, ...]:
326
+ """Elastic bids for every lane, in ascending engine order."""
327
+
328
+ self.__post_init__()
329
+ if type(lanes) is not tuple or not lanes:
330
+ raise ValueError("lanes must be a non-empty exact tuple")
331
+ engine_ids = []
332
+ for value in lanes:
333
+ if type(value) is not LaneGeometryEvidence:
334
+ raise TypeError(
335
+ "lanes must contain exact lane evidence"
336
+ )
337
+ value.__post_init__()
338
+ engine_ids.append(value.engine_id)
339
+ if len(engine_ids) != len(set(engine_ids)):
340
+ raise ValueError("lane engines repeat")
341
+ global_revealed = [
342
+ positive
343
+ for value in lanes
344
+ for positive in value.revealed_positive
345
+ ]
346
+ global_conversion = self._posterior(
347
+ prior_mean=self.root_prior_probability,
348
+ successes=float(sum(global_revealed)),
349
+ failures=float(
350
+ len(global_revealed) - sum(global_revealed)
351
+ ),
352
+ )
353
+ bids: list[LaneSeatBid] = []
354
+ for lane in sorted(lanes, key=lambda value: value.engine_id):
355
+ conversion = self._posterior(
356
+ prior_mean=global_conversion,
357
+ successes=float(sum(lane.revealed_positive)),
358
+ failures=float(
359
+ len(lane.revealed_positive)
360
+ - sum(lane.revealed_positive)
361
+ ),
362
+ )
363
+ # Saturation is a lane SELF-overlap feature: a lane without
364
+ # forecast evidence stays at the neutral root prior instead
365
+ # of inheriting another lane's saturation.
366
+ saturation = self._posterior(
367
+ prior_mean=self.root_prior_probability,
368
+ successes=float(sum(lane.predicted_dominated)),
369
+ failures=float(
370
+ len(lane.predicted_dominated)
371
+ - sum(lane.predicted_dominated)
372
+ ),
373
+ )
374
+ if lane.parent_front_distances:
375
+ mean_distance: float | None = float(
376
+ math.fsum(lane.parent_front_distances)
377
+ / len(lane.parent_front_distances)
378
+ )
379
+ distance_factor = math.exp(
380
+ -self.config.distance_weight * mean_distance
381
+ )
382
+ else:
383
+ mean_distance = None
384
+ distance_factor = 1.0
385
+ raw = (
386
+ conversion
387
+ * distance_factor
388
+ * (
389
+ 1.0
390
+ - self.config.saturation_weight * saturation
391
+ )
392
+ )
393
+ floored = raw < self.config.exploration_floor_bid
394
+ bids.append(
395
+ LaneSeatBid(
396
+ engine_id=lane.engine_id,
397
+ conversion_posterior=float(conversion),
398
+ saturation_posterior=float(saturation),
399
+ mean_parent_front_distance=mean_distance,
400
+ distance_factor=float(distance_factor),
401
+ bid=float(
402
+ max(raw, self.config.exploration_floor_bid)
403
+ ),
404
+ floored=floored,
405
+ )
406
+ )
407
+ return tuple(bids)
408
+
409
+ @staticmethod
410
+ def choose_engine(
411
+ *,
412
+ bids: tuple[LaneSeatBid, ...],
413
+ seats_awarded: dict[str, int],
414
+ open_engine_ids: frozenset[str],
415
+ ) -> str:
416
+ """One D'Hondt step over the elastic bids.
417
+
418
+ The winning lane maximizes ``bid / (seats_awarded + 1)`` among
419
+ lanes that still hold a remaining candidate; exact ties break by
420
+ ascending engine id. This REPLACES the fixed coverage floor: a
421
+ lane earns its early seats through its bid, never through mere
422
+ membership.
423
+ """
424
+
425
+ if type(bids) is not tuple or not bids:
426
+ raise ValueError("bids must be a non-empty exact tuple")
427
+ open_bids = [
428
+ value
429
+ for value in bids
430
+ if value.engine_id in open_engine_ids
431
+ ]
432
+ if not open_bids:
433
+ raise ValueError("no open engine holds a remaining candidate")
434
+ return min(
435
+ open_bids,
436
+ key=lambda value: (
437
+ -(
438
+ value.bid
439
+ / (seats_awarded.get(value.engine_id, 0) + 1)
440
+ ),
441
+ value.engine_id,
442
+ ),
443
+ ).engine_id
444
+
445
+
446
+ __all__ = [
447
+ "GEOMETRY_CONDITIONAL_ELASTICITY_POLICY_ID",
448
+ "GEOMETRY_CONDITIONAL_ELASTICITY_POLICY_VERSION",
449
+ "ElasticSeatBidder",
450
+ "ElasticSeatConfig",
451
+ "LaneGeometryEvidence",
452
+ "LaneSeatBid",
453
+ ]