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,401 @@
1
+ """Benchmark-neutral receipts for paired allocator-method comparisons."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import hashlib
6
+ import json
7
+ import re
8
+ from dataclasses import dataclass
9
+ from enum import Enum
10
+
11
+ from agent_evolve.domain.patch import require_sha256
12
+ from agent_evolve.ports.action_allocation_frame import FrameActionAllocationRequest
13
+
14
+
15
+ _METHOD_ID = re.compile(r"^[a-z][a-z0-9_.-]{0,95}$")
16
+ _STRUCTURE_DOMAIN = b"agent-evolve:frame-allocation-comparison-structure:v1\x00"
17
+ _ELIGIBLE_DOMAIN = b"agent-evolve:frame-allocation-comparison-eligible:v1\x00"
18
+ _METHOD_DOMAIN = b"agent-evolve:allocation-comparison-method:v1\x00"
19
+ _COMMITMENT_DOMAIN = b"agent-evolve:paired-allocation-comparison:v1\x00"
20
+
21
+
22
+ def _canonical_json(value: object) -> bytes:
23
+ return json.dumps(
24
+ value,
25
+ allow_nan=False,
26
+ ensure_ascii=True,
27
+ separators=(",", ":"),
28
+ sort_keys=True,
29
+ ).encode("ascii")
30
+
31
+
32
+ def _hash(domain: bytes, value: object) -> str:
33
+ return hashlib.sha256(domain + _canonical_json(value)).hexdigest()
34
+
35
+
36
+ def frame_allocation_comparison_structure_record(
37
+ request: FrameActionAllocationRequest,
38
+ ) -> dict[str, object]:
39
+ """Return treatment-neutral task, protocol, action, and budget structure.
40
+
41
+ Forecast values and source receipts are intentionally excluded. Exact
42
+ method waves bind those separately; this projection compares whether the
43
+ methods faced the same scientific problem.
44
+ """
45
+
46
+ if type(request) is not FrameActionAllocationRequest:
47
+ raise TypeError("request must be an exact frame allocation request")
48
+ request.__post_init__()
49
+ frame = request.frame
50
+ index_by_id = {
51
+ forecast.option_id: index
52
+ for index, forecast in zip(
53
+ frame.global_row_indices,
54
+ frame.forecasts,
55
+ strict=True,
56
+ )
57
+ }
58
+ forecast_by_id = {value.option_id: value for value in frame.forecasts}
59
+ eligible = [
60
+ {
61
+ "global_row_index": index_by_id[option_id],
62
+ "option_id": option_id,
63
+ "option_identity_sha256": (
64
+ forecast_by_id[option_id].option_identity_sha256
65
+ ),
66
+ "child_configuration_sha256": (
67
+ forecast_by_id[option_id].child_configuration_sha256
68
+ ),
69
+ "family": forecast_by_id[option_id].family,
70
+ }
71
+ for option_id in request.eligible_option_ids
72
+ ]
73
+ block = None if frame.block_request is None else frame.block_request.block
74
+ return {
75
+ "schema_version": 1,
76
+ "utility_policy": request.utility.to_record(),
77
+ "portfolio_size": request.portfolio_size,
78
+ "finite_contract_identity_sha256": (
79
+ frame.request.finite_variation_contract.identity_sha256
80
+ ),
81
+ "optimization_semantics": frame.request.optimization_semantics.to_record(),
82
+ "action_semantics": frame.request.action_semantics.to_record(),
83
+ "parent_metric_values": [
84
+ value.to_record() for value in frame.request.parent_metric_values
85
+ ],
86
+ "metric_scales": [
87
+ value.to_record() for value in frame.request.metric_scales
88
+ ],
89
+ "forecast_generation_policy": {
90
+ "policy_id": frame.policy_identity[0],
91
+ "policy_version": frame.policy_identity[1],
92
+ "policy_definition_sha256": frame.policy_identity[2],
93
+ },
94
+ "inference_protocol": {
95
+ "operation": frame.request.operation,
96
+ "max_output_tokens": frame.request.max_output_tokens,
97
+ "temperature_hex": (
98
+ None
99
+ if frame.request.temperature is None
100
+ else float(frame.request.temperature).hex()
101
+ ),
102
+ },
103
+ "frame_kind": frame.frame_kind.value,
104
+ "global_row_indices": list(frame.global_row_indices),
105
+ "eligible_options": eligible,
106
+ "eligible_options_structure_sha256": _hash(_ELIGIBLE_DOMAIN, eligible),
107
+ "subset_policy": (
108
+ None if frame.subset_policy is None else frame.subset_policy.to_record()
109
+ ),
110
+ "partition_structure": (
111
+ None
112
+ if block is None
113
+ else {
114
+ "layout_sha256": frame.block_request.layout.layout_sha256,
115
+ "block_spec_sha256": block.block_spec_sha256,
116
+ "block_index": block.block_index,
117
+ "global_row_start": block.global_row_start,
118
+ "global_row_stop": block.global_row_stop,
119
+ }
120
+ ),
121
+ }
122
+
123
+
124
+ def frame_allocation_comparison_structure_sha256(
125
+ request: FrameActionAllocationRequest,
126
+ ) -> str:
127
+ return _hash(
128
+ _STRUCTURE_DOMAIN,
129
+ frame_allocation_comparison_structure_record(request),
130
+ )
131
+
132
+
133
+ class AllocationComparisonMethodKind(str, Enum):
134
+ AUDITED_FRAME_V2 = "audited_frame_v2"
135
+ OPERATIONAL_FRAME_V3 = "operational_frame_v3"
136
+
137
+
138
+ @dataclass(frozen=True, slots=True)
139
+ class AllocationComparisonSelectedOption:
140
+ treatment_occurrence_id: str
141
+ treatment_id: str
142
+ rank: int
143
+ option_id: str
144
+ option_identity_sha256: str
145
+ child_configuration_sha256: str
146
+ family: str
147
+
148
+ def __post_init__(self) -> None:
149
+ for name in ("treatment_occurrence_id", "treatment_id", "option_id", "family"):
150
+ if type(getattr(self, name)) is not str or not getattr(self, name):
151
+ raise ValueError(f"{name} must be a non-empty exact string")
152
+ if type(self.rank) is not int or self.rank <= 0:
153
+ raise ValueError("rank must be a positive exact integer")
154
+ require_sha256(self.option_identity_sha256, "option_identity_sha256")
155
+ require_sha256(
156
+ self.child_configuration_sha256,
157
+ "child_configuration_sha256",
158
+ )
159
+
160
+ def to_record(self) -> dict[str, object]:
161
+ self.__post_init__()
162
+ return {
163
+ "treatment_occurrence_id": self.treatment_occurrence_id,
164
+ "treatment_id": self.treatment_id,
165
+ "rank": self.rank,
166
+ "option_id": self.option_id,
167
+ "option_identity_sha256": self.option_identity_sha256,
168
+ "child_configuration_sha256": self.child_configuration_sha256,
169
+ "family": self.family,
170
+ }
171
+
172
+
173
+ @dataclass(frozen=True, slots=True, eq=False)
174
+ class AllocationComparisonMethodReceipt:
175
+ comparison_method_id: str
176
+ method_kind: AllocationComparisonMethodKind
177
+ schedule_binding_sha256: str
178
+ allocation_phase_commit_receipt_sha256: str
179
+ allocation_input_sha256: str
180
+ treatment_assignment_receipt_sha256: str
181
+ upstream_input_sha256: str
182
+ terminal_provider_ledger_commitment_sha256: str
183
+ common_comparison_structure_sha256: str
184
+ allocator_policy_id: str
185
+ allocator_policy_version: int
186
+ allocator_definition_sha256: str
187
+ allocator_configuration_sha256: str
188
+ ordered_frame_receipt_sha256s: tuple[str, ...]
189
+ ordered_base_request_sha256s: tuple[str, ...]
190
+ ordered_method_request_sha256s: tuple[str, ...]
191
+ ordered_decision_receipt_sha256s: tuple[str, ...]
192
+ selected_options: tuple[AllocationComparisonSelectedOption, ...]
193
+
194
+ def __post_init__(self) -> None:
195
+ if (
196
+ type(self.comparison_method_id) is not str
197
+ or _METHOD_ID.fullmatch(self.comparison_method_id) is None
198
+ ):
199
+ raise ValueError("comparison_method_id must use the method-ID grammar")
200
+ if type(self.method_kind) is not AllocationComparisonMethodKind:
201
+ raise TypeError("method_kind must be exact")
202
+ for name in (
203
+ "schedule_binding_sha256",
204
+ "allocation_phase_commit_receipt_sha256",
205
+ "allocation_input_sha256",
206
+ "treatment_assignment_receipt_sha256",
207
+ "upstream_input_sha256",
208
+ "terminal_provider_ledger_commitment_sha256",
209
+ "common_comparison_structure_sha256",
210
+ "allocator_definition_sha256",
211
+ "allocator_configuration_sha256",
212
+ ):
213
+ require_sha256(getattr(self, name), name)
214
+ if type(self.allocator_policy_id) is not str or not self.allocator_policy_id:
215
+ raise ValueError("allocator_policy_id must be non-empty")
216
+ if (
217
+ type(self.allocator_policy_version) is not int
218
+ or self.allocator_policy_version <= 0
219
+ ):
220
+ raise ValueError("allocator_policy_version must be positive")
221
+ digest_tuples = (
222
+ self.ordered_frame_receipt_sha256s,
223
+ self.ordered_base_request_sha256s,
224
+ self.ordered_method_request_sha256s,
225
+ self.ordered_decision_receipt_sha256s,
226
+ )
227
+ if any(type(values) is not tuple or not values for values in digest_tuples):
228
+ raise ValueError("ordered method bindings must be non-empty tuples")
229
+ if len({len(values) for values in digest_tuples}) != 1:
230
+ raise ValueError("ordered method bindings must have equal lengths")
231
+ for values in digest_tuples:
232
+ for value in values:
233
+ require_sha256(value, "ordered method binding")
234
+ if type(self.selected_options) is not tuple or not self.selected_options:
235
+ raise ValueError("selected_options must be a non-empty exact tuple")
236
+ for value in self.selected_options:
237
+ if type(value) is not AllocationComparisonSelectedOption:
238
+ raise TypeError("selected_options must contain exact rows")
239
+ value.__post_init__()
240
+
241
+ @property
242
+ def logical_slot_count(self) -> int:
243
+ return len(self.selected_options)
244
+
245
+ def _unsigned_record(self) -> dict[str, object]:
246
+ self.__post_init__()
247
+ return {
248
+ "schema_version": 1,
249
+ "comparison_method_id": self.comparison_method_id,
250
+ "method_kind": self.method_kind.value,
251
+ "schedule_binding_sha256": self.schedule_binding_sha256,
252
+ "allocation_phase_commit_receipt_sha256": (
253
+ self.allocation_phase_commit_receipt_sha256
254
+ ),
255
+ "allocation_input_sha256": self.allocation_input_sha256,
256
+ "treatment_assignment_receipt_sha256": (
257
+ self.treatment_assignment_receipt_sha256
258
+ ),
259
+ "upstream_input_sha256": self.upstream_input_sha256,
260
+ "terminal_provider_ledger_commitment_sha256": (
261
+ self.terminal_provider_ledger_commitment_sha256
262
+ ),
263
+ "common_comparison_structure_sha256": (
264
+ self.common_comparison_structure_sha256
265
+ ),
266
+ "allocator_policy": {
267
+ "policy_id": self.allocator_policy_id,
268
+ "policy_version": self.allocator_policy_version,
269
+ "definition_sha256": self.allocator_definition_sha256,
270
+ "configuration_sha256": self.allocator_configuration_sha256,
271
+ },
272
+ "ordered_frame_receipt_sha256s": list(
273
+ self.ordered_frame_receipt_sha256s
274
+ ),
275
+ "ordered_base_request_sha256s": list(
276
+ self.ordered_base_request_sha256s
277
+ ),
278
+ "ordered_method_request_sha256s": list(
279
+ self.ordered_method_request_sha256s
280
+ ),
281
+ "ordered_decision_receipt_sha256s": list(
282
+ self.ordered_decision_receipt_sha256s
283
+ ),
284
+ "logical_slot_count": self.logical_slot_count,
285
+ "selected_options": [value.to_record() for value in self.selected_options],
286
+ }
287
+
288
+ @property
289
+ def receipt_sha256(self) -> str:
290
+ return _hash(_METHOD_DOMAIN, self._unsigned_record())
291
+
292
+ def to_record(self) -> dict[str, object]:
293
+ return {**self._unsigned_record(), "receipt_sha256": self.receipt_sha256}
294
+
295
+
296
+ @dataclass(frozen=True, slots=True, eq=False)
297
+ class PairedAllocationComparisonCommitment:
298
+ """Exact two-method authority receipt created before outcome access."""
299
+
300
+ methods: tuple[AllocationComparisonMethodReceipt, ...]
301
+
302
+ def __post_init__(self) -> None:
303
+ if type(self.methods) is not tuple or len(self.methods) != 2 or any(
304
+ type(value) is not AllocationComparisonMethodReceipt
305
+ for value in self.methods
306
+ ):
307
+ raise ValueError("paired comparison requires exactly two method receipts")
308
+ for value in self.methods:
309
+ value.__post_init__()
310
+ if self.methods != tuple(
311
+ sorted(self.methods, key=lambda value: value.comparison_method_id)
312
+ ):
313
+ raise ValueError("paired methods must use canonical method-ID order")
314
+ if len({value.comparison_method_id for value in self.methods}) != 2:
315
+ raise ValueError("paired comparison method IDs cannot repeat")
316
+ if {value.method_kind for value in self.methods} != {
317
+ AllocationComparisonMethodKind.AUDITED_FRAME_V2,
318
+ AllocationComparisonMethodKind.OPERATIONAL_FRAME_V3,
319
+ }:
320
+ raise ValueError("paired comparison requires one v2 and one v3 method")
321
+ common_fields = (
322
+ "schedule_binding_sha256",
323
+ "treatment_assignment_receipt_sha256",
324
+ "upstream_input_sha256",
325
+ "terminal_provider_ledger_commitment_sha256",
326
+ "common_comparison_structure_sha256",
327
+ "ordered_frame_receipt_sha256s",
328
+ "ordered_base_request_sha256s",
329
+ )
330
+ for name in common_fields:
331
+ if getattr(self.methods[0], name) != getattr(self.methods[1], name):
332
+ raise ValueError(f"paired methods differ on common {name}")
333
+ identities: dict[str, tuple[str, str, str]] = {}
334
+ for method in self.methods:
335
+ for selected in method.selected_options:
336
+ identity = (
337
+ selected.option_identity_sha256,
338
+ selected.child_configuration_sha256,
339
+ selected.family,
340
+ )
341
+ prior = identities.setdefault(selected.option_id, identity)
342
+ if prior != identity:
343
+ raise ValueError("selected option identity drifts across methods")
344
+
345
+ @property
346
+ def logical_slot_count(self) -> int:
347
+ return sum(value.logical_slot_count for value in self.methods)
348
+
349
+ @property
350
+ def selected_option_ids(self) -> tuple[str, ...]:
351
+ return tuple(
352
+ sorted(
353
+ {
354
+ selected.option_id
355
+ for method in self.methods
356
+ for selected in method.selected_options
357
+ }
358
+ )
359
+ )
360
+
361
+ def _unsigned_record(self) -> dict[str, object]:
362
+ self.__post_init__()
363
+ first = self.methods[0]
364
+ return {
365
+ "schema_version": 1,
366
+ "method_receipts": [value.to_record() for value in self.methods],
367
+ "common_schedule_binding_sha256": first.schedule_binding_sha256,
368
+ "common_treatment_assignment_receipt_sha256": (
369
+ first.treatment_assignment_receipt_sha256
370
+ ),
371
+ "common_upstream_input_sha256": first.upstream_input_sha256,
372
+ "common_terminal_provider_ledger_commitment_sha256": (
373
+ first.terminal_provider_ledger_commitment_sha256
374
+ ),
375
+ "common_comparison_structure_sha256": (
376
+ first.common_comparison_structure_sha256
377
+ ),
378
+ "logical_slot_count": self.logical_slot_count,
379
+ "selected_option_ids": list(self.selected_option_ids),
380
+ "outcomes_read_by_builder": False,
381
+ }
382
+
383
+ @property
384
+ def commitment_sha256(self) -> str:
385
+ return _hash(_COMMITMENT_DOMAIN, self._unsigned_record())
386
+
387
+ def to_record(self) -> dict[str, object]:
388
+ return {
389
+ **self._unsigned_record(),
390
+ "commitment_sha256": self.commitment_sha256,
391
+ }
392
+
393
+
394
+ __all__ = [
395
+ "AllocationComparisonMethodKind",
396
+ "AllocationComparisonMethodReceipt",
397
+ "AllocationComparisonSelectedOption",
398
+ "PairedAllocationComparisonCommitment",
399
+ "frame_allocation_comparison_structure_record",
400
+ "frame_allocation_comparison_structure_sha256",
401
+ ]