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,605 @@
1
+ """Parent-reachable residual-cell targets for workload-neutral Pareto search.
2
+
3
+ The allocator reconstructs prior-only residual-frontier geometry, restricts it
4
+ to cells whose two anchors are exactly covered by the supplied parent lanes,
5
+ and chooses the largest remaining opportunity. A globally matched parent
6
+ selector therefore retains the global-best behavior, while other generic
7
+ parent policies receive the best target they can actually act upon. Each lane
8
+ gets the canonical affine direction that improves the coordinates in which its
9
+ anchor is worse than the cell midpoint, plus the shared aspiration and signed
10
+ transition in its authenticated payload.
11
+ """
12
+
13
+ from __future__ import annotations
14
+
15
+ import hashlib
16
+ import math
17
+ from dataclasses import dataclass
18
+ from itertools import permutations
19
+
20
+ from agent_evolve.domain.typed_json import (
21
+ FrozenJsonObject,
22
+ freeze_json,
23
+ thaw_json,
24
+ )
25
+ from agent_evolve.policies.selection.affine_frontier_target import (
26
+ GloballyMatchedDirectionCoveredAffineFrontierTargetAllocator,
27
+ )
28
+ from agent_evolve.policies.selection.residual_frontier import (
29
+ RESIDUAL_FRONTIER_POLICY_DEFINITION_SHA256,
30
+ normalized_candidate_point,
31
+ residual_frontier_geometry,
32
+ )
33
+ from agent_evolve.ports.frontier_target import CampaignPortfolioFrontierTarget
34
+
35
+
36
+ RESIDUAL_TARGET_ALLOCATOR_ID = "residual_hypervolume_frontier_target"
37
+ RESIDUAL_TARGET_ALLOCATOR_VERSION = 4
38
+ RESIDUAL_TARGET_ALLOCATOR_DEFINITION_SHA256 = hashlib.sha256(
39
+ b"agent-evolve:residual-hypervolume-frontier-target:v4;"
40
+ b"input=authenticated-affine-prior-archive-plus-two-evaluated-parent-lanes;"
41
+ b"cell=largest-positive-pairwise-midpoint-hypervolume-residual-exactly-"
42
+ b"covered-by-the-supplied-parent-lanes;"
43
+ b"global-opportunity-rank=authenticated;"
44
+ b"binding=exact-minimum-two-anchor-distance;"
45
+ b"lane-direction=canonical-reference-direction-over-needed-improvement-axes;"
46
+ b"payload=shared-aspiration-plus-signed-parent-transition-in-normalized-and-"
47
+ b"objective-space-with-explicit-axis-orientation-and-target-realization-contract;"
48
+ b"fallback=directional-affine-bootstrap-with-raw-target-when-no-positive-"
49
+ b"covered-cell;"
50
+ b"current-future-outcomes=false;workload-model-provider-action-fields=false"
51
+ ).hexdigest()
52
+ DIRECTIONAL_BOOTSTRAP_TARGET_ALLOCATOR_ID = (
53
+ "directional_bootstrap_affine_frontier_target"
54
+ )
55
+ DIRECTIONAL_BOOTSTRAP_TARGET_ALLOCATOR_VERSION = 1
56
+ DIRECTIONAL_BOOTSTRAP_TARGET_ALLOCATOR_DEFINITION_SHA256 = hashlib.sha256(
57
+ b"agent-evolve:directional-bootstrap-affine-frontier-target:v1;"
58
+ b"input=authenticated-affine-prior-archive-plus-evaluated-parent-lanes;"
59
+ b"direction=globally-matched-phase-covered-affine-reference-direction;"
60
+ b"active-axis-aspiration=ten-percent-parent-to-fixed-ideal-normalized;"
61
+ b"inactive-axis-bound=fixed-reference;"
62
+ b"payload=raw-parent-to-aspiration-axis-target-plus-identifiability-facts;"
63
+ b"purpose=bootstrap-before-positive-covered-residual-cell-exists;"
64
+ b"current-future-outcomes=false;workload-model-provider-action-fields=false"
65
+ ).hexdigest()
66
+ _BOOTSTRAP_STRIDE = 0.10
67
+
68
+
69
+ def _object(value: dict[str, object]) -> FrozenJsonObject:
70
+ result = freeze_json(value)
71
+ if type(result) is not FrozenJsonObject: # pragma: no cover - closed root.
72
+ raise AssertionError("residual target payload did not freeze to an object")
73
+ return result
74
+
75
+
76
+ def _decimal(value: float) -> str:
77
+ if type(value) is not float or not math.isfinite(value):
78
+ raise TypeError("residual target values must be finite exact floats")
79
+ return format(0.0 if value == 0.0 else value, ".17g")
80
+
81
+
82
+ def _achievement(point: tuple[float, ...], weights: tuple[float, ...]) -> float:
83
+ active = tuple(
84
+ (value, weight)
85
+ for value, weight in zip(point, weights, strict=True)
86
+ if weight > 0.0
87
+ )
88
+ if not active:
89
+ raise ValueError("residual target direction must activate an axis")
90
+ maximum = max(weight * value for value, weight in active)
91
+ weighted_mean = sum(weight * value for value, weight in active) / sum(
92
+ weight for _, weight in active
93
+ )
94
+ return maximum + 0.05 * weighted_mean
95
+
96
+
97
+ def _direction_for_transition(
98
+ parent: tuple[float, ...],
99
+ aspiration: tuple[float, ...],
100
+ ) -> tuple[str, tuple[float, ...], tuple[int, ...]]:
101
+ if len(parent) != len(aspiration) or len(parent) not in (2, 3):
102
+ raise ValueError("residual transition requires equal 2-D or 3-D points")
103
+ improvement_axes = tuple(
104
+ index
105
+ for index, (source, target) in enumerate(zip(parent, aspiration, strict=True))
106
+ if target < source
107
+ )
108
+ if not improvement_axes:
109
+ raise ValueError("positive residual anchor has no improving transition")
110
+ weights = tuple(
111
+ 1.0 if index in improvement_axes else 0.0 for index in range(len(parent))
112
+ )
113
+ if len(improvement_axes) == 1:
114
+ direction_id = f"axis_{improvement_axes[0] + 1}_extreme"
115
+ elif len(improvement_axes) == 2 and len(parent) == 3:
116
+ direction_id = (
117
+ f"axes_{improvement_axes[0] + 1}_{improvement_axes[1] + 1}_tradeoff"
118
+ )
119
+ else:
120
+ direction_id = "balanced_tradeoff"
121
+ return direction_id, weights, improvement_axes
122
+
123
+
124
+ @dataclass(frozen=True, slots=True)
125
+ class DirectionalBootstrapAffineFrontierTargetAllocator(
126
+ GloballyMatchedDirectionCoveredAffineFrontierTargetAllocator
127
+ ):
128
+ """Expose an identifiable raw target before a residual cell exists.
129
+
130
+ A single nondominated point identifies affine directions but not a
131
+ pairwise residual cell. This allocator preserves direction coverage and
132
+ exact lane matching, then turns each active direction into a bounded
133
+ parent-to-ideal step. Inactive axes may trade off only as far as the fixed
134
+ reference. The rule uses no workload semantics or outcome oracle.
135
+ """
136
+
137
+ allocator_id: str = DIRECTIONAL_BOOTSTRAP_TARGET_ALLOCATOR_ID
138
+ allocator_version: int = DIRECTIONAL_BOOTSTRAP_TARGET_ALLOCATOR_VERSION
139
+ definition_sha256: str = DIRECTIONAL_BOOTSTRAP_TARGET_ALLOCATOR_DEFINITION_SHA256
140
+
141
+ def __post_init__(self) -> None:
142
+ if (
143
+ self.allocator_id != DIRECTIONAL_BOOTSTRAP_TARGET_ALLOCATOR_ID
144
+ or self.allocator_version != DIRECTIONAL_BOOTSTRAP_TARGET_ALLOCATOR_VERSION
145
+ or self.definition_sha256
146
+ != DIRECTIONAL_BOOTSTRAP_TARGET_ALLOCATOR_DEFINITION_SHA256
147
+ ):
148
+ raise ValueError("directional bootstrap allocator identity drifted")
149
+
150
+ def allocate(self, *, archive_utility, lanes):
151
+ base_targets = (
152
+ GloballyMatchedDirectionCoveredAffineFrontierTargetAllocator.allocate(
153
+ self,
154
+ archive_utility=archive_utility,
155
+ lanes=lanes,
156
+ )
157
+ )
158
+ geometry = residual_frontier_geometry(archive_utility)
159
+ dimension = len(geometry.axes)
160
+ results: list[CampaignPortfolioFrontierTarget] = []
161
+ for base in base_targets:
162
+ payload = thaw_json(base.payload)
163
+ if type(payload) is not dict:
164
+ raise TypeError("bootstrap base payload must be an object")
165
+ direction = payload.get("target_direction")
166
+ assigned_parent = payload.get("assigned_parent")
167
+ if type(direction) is not dict or type(assigned_parent) is not dict:
168
+ raise ValueError("bootstrap base target omitted affine evidence")
169
+ raw_weights = direction.get("normalized_weights_decimal")
170
+ raw_parent_point = assigned_parent.get("normalized_point_decimal")
171
+ if (
172
+ type(raw_weights) is not list
173
+ or type(raw_parent_point) is not list
174
+ or len(raw_weights) != dimension
175
+ or len(raw_parent_point) != dimension
176
+ ):
177
+ raise ValueError("bootstrap affine evidence has invalid dimension")
178
+ weights = tuple(float(value) for value in raw_weights)
179
+ parent_point = tuple(float(value) for value in raw_parent_point)
180
+ if (
181
+ any(not math.isfinite(value) or value < 0.0 for value in weights)
182
+ or max(weights) <= 0.0
183
+ or any(not math.isfinite(value) for value in parent_point)
184
+ ):
185
+ raise ValueError("bootstrap affine evidence is invalid")
186
+
187
+ aspiration_point = tuple(
188
+ (
189
+ max(0.0, parent * (1.0 - _BOOTSTRAP_STRIDE))
190
+ if weight > 0.0 and parent > 0.0
191
+ else parent
192
+ if weight > 0.0
193
+ else 1.0
194
+ )
195
+ for parent, weight in zip(parent_point, weights, strict=True)
196
+ )
197
+ normalized_delta = tuple(
198
+ target - parent
199
+ for parent, target in zip(
200
+ parent_point,
201
+ aspiration_point,
202
+ strict=True,
203
+ )
204
+ )
205
+ raw_parent = tuple(
206
+ axis.denormalize(value)
207
+ for axis, value in zip(
208
+ geometry.axes,
209
+ parent_point,
210
+ strict=True,
211
+ )
212
+ )
213
+ raw_aspiration = tuple(
214
+ axis.denormalize(value)
215
+ for axis, value in zip(
216
+ geometry.axes,
217
+ aspiration_point,
218
+ strict=True,
219
+ )
220
+ )
221
+ raw_delta = tuple(
222
+ target - parent
223
+ for parent, target in zip(
224
+ raw_parent,
225
+ raw_aspiration,
226
+ strict=True,
227
+ )
228
+ )
229
+ improve_axes = tuple(
230
+ index for index, value in enumerate(normalized_delta) if value < 0.0
231
+ )
232
+ tradeoff_axes = tuple(
233
+ index for index, value in enumerate(normalized_delta) if value > 0.0
234
+ )
235
+ metric_ids = tuple(axis.metric_id for axis in geometry.axes)
236
+ payload["schema_version"] = 2
237
+ payload["frontier_bootstrap"] = {
238
+ "target_kind": "directional_affine_bootstrap",
239
+ "eligibility_reason": "no_positive_covered_residual_frontier_cell",
240
+ "geometry_sha256": geometry.geometry_sha256,
241
+ "active_axis_parent_to_ideal_stride_decimal": _decimal(
242
+ _BOOTSTRAP_STRIDE
243
+ ),
244
+ "inactive_axis_bound": "fixed_affine_reference",
245
+ "normalized_aspiration_point_decimal": [
246
+ _decimal(value) for value in aspiration_point
247
+ ],
248
+ "residual_frontier_cell_asserted": False,
249
+ }
250
+ payload["objective_space_target"] = {
251
+ "purpose": (
252
+ "make_directional_bootstrap_magnitude_explicit_without_"
253
+ "predicting_evaluator_outcomes"
254
+ ),
255
+ "axes": [
256
+ {
257
+ "metric_id": axis.metric_id,
258
+ "goal": axis.goal,
259
+ "ideal_decimal": _decimal(axis.ideal),
260
+ "reference_decimal": _decimal(axis.reference),
261
+ "parent_value_decimal": _decimal(parent_value),
262
+ "aspiration_value_decimal": _decimal(aspiration_value),
263
+ "signed_parent_to_aspiration_delta_decimal": _decimal(delta),
264
+ "improving_raw_delta_sign": (
265
+ "negative" if axis.goal == "min" else "positive"
266
+ ),
267
+ }
268
+ for axis, parent_value, aspiration_value, delta in zip(
269
+ geometry.axes,
270
+ raw_parent,
271
+ raw_aspiration,
272
+ raw_delta,
273
+ strict=True,
274
+ )
275
+ ],
276
+ }
277
+ payload["lane_transition"] = {
278
+ "normalized_signed_delta_decimal": [
279
+ _decimal(value) for value in normalized_delta
280
+ ],
281
+ "improve_metric_ids": [metric_ids[index] for index in improve_axes],
282
+ "permitted_tradeoff_metric_ids": [
283
+ metric_ids[index] for index in tradeoff_axes
284
+ ],
285
+ "negative_delta_means_improvement": True,
286
+ }
287
+ instruction = payload.get("acquisition_instruction")
288
+ if type(instruction) is not dict:
289
+ raise ValueError("bootstrap base target omitted acquisition evidence")
290
+ instruction.update(
291
+ {
292
+ "objective": "close_the_directional_affine_bootstrap_target",
293
+ "target_realization_is_magnitude_sensitive": True,
294
+ "compare_action_magnitude_to_raw_parent_to_aspiration_deltas": (
295
+ True
296
+ ),
297
+ "direction_only_forecasts_are_insufficient": True,
298
+ "avoid_candidates_outside_the_fixed_reference_box": True,
299
+ }
300
+ )
301
+ results.append(
302
+ CampaignPortfolioFrontierTarget(
303
+ allocator_id=self.allocator_id,
304
+ allocator_version=self.allocator_version,
305
+ definition_sha256=self.definition_sha256,
306
+ archive_utility_snapshot_sha256=(
307
+ base.archive_utility_snapshot_sha256
308
+ ),
309
+ lane_id=base.lane_id,
310
+ parent_configuration_sha256=(base.parent_configuration_sha256),
311
+ direction_id=base.direction_id,
312
+ opportunity_rank=base.opportunity_rank,
313
+ payload=_object(payload),
314
+ )
315
+ )
316
+ return tuple(sorted(results, key=lambda value: value.lane_id))
317
+
318
+
319
+ @dataclass(frozen=True, slots=True)
320
+ class ResidualHypervolumeFrontierTargetAllocator:
321
+ """Bind two parent lanes to one maximum-residual frontier aspiration."""
322
+
323
+ allocator_id: str = RESIDUAL_TARGET_ALLOCATOR_ID
324
+ allocator_version: int = RESIDUAL_TARGET_ALLOCATOR_VERSION
325
+ definition_sha256: str = RESIDUAL_TARGET_ALLOCATOR_DEFINITION_SHA256
326
+
327
+ def __post_init__(self) -> None:
328
+ if (
329
+ self.allocator_id != RESIDUAL_TARGET_ALLOCATOR_ID
330
+ or self.allocator_version != RESIDUAL_TARGET_ALLOCATOR_VERSION
331
+ or self.definition_sha256 != RESIDUAL_TARGET_ALLOCATOR_DEFINITION_SHA256
332
+ ):
333
+ raise ValueError("residual frontier target allocator identity drifted")
334
+
335
+ def allocate(self, *, archive_utility, lanes):
336
+ from agent_evolve.application.agentic_evolution import EvolutionCandidate
337
+ from agent_evolve.application.evolution_campaign import ArchiveUtilitySnapshot
338
+
339
+ self.__post_init__()
340
+ if type(archive_utility) is not ArchiveUtilitySnapshot:
341
+ raise TypeError("archive_utility must be an exact frozen snapshot")
342
+ archive_utility.__post_init__()
343
+ if type(lanes) is not tuple or len(lanes) != 2:
344
+ raise ValueError("residual frontier targeting requires exactly two lanes")
345
+ lane_ids = tuple(value[0] for value in lanes)
346
+ if lane_ids != tuple(sorted(set(lane_ids))):
347
+ raise ValueError("residual target lanes must be unique and canonical")
348
+ if any(
349
+ type(lane_id) is not str
350
+ or not lane_id
351
+ or type(parent) is not EvolutionCandidate
352
+ for lane_id, parent in lanes
353
+ ):
354
+ raise TypeError("residual target lanes must contain exact candidates")
355
+ for _, parent in lanes:
356
+ parent.__post_init__()
357
+
358
+ geometry = residual_frontier_geometry(archive_utility)
359
+ if not geometry.cells:
360
+ return DirectionalBootstrapAffineFrontierTargetAllocator().allocate(
361
+ archive_utility=archive_utility,
362
+ lanes=lanes,
363
+ )
364
+
365
+ parent_points = tuple(
366
+ (lane_id, parent, normalized_candidate_point(geometry, parent))
367
+ for lane_id, parent in lanes
368
+ )
369
+ tolerance = 64.0 * math.ulp(1.0)
370
+ covered = []
371
+ for opportunity_rank, candidate_cell in enumerate(geometry.cells, start=1):
372
+ candidate_assignments = min(
373
+ permutations(parent_points),
374
+ key=lambda ordered: (
375
+ sum(
376
+ abs(value - target)
377
+ for (_, _, point), anchor in zip(
378
+ ordered,
379
+ candidate_cell.anchor_points,
380
+ strict=True,
381
+ )
382
+ for value, target in zip(point, anchor, strict=True)
383
+ ),
384
+ tuple(value[0] for value in ordered),
385
+ ),
386
+ )
387
+ candidate_distance = sum(
388
+ abs(value - target)
389
+ for (_, _, point), anchor in zip(
390
+ candidate_assignments,
391
+ candidate_cell.anchor_points,
392
+ strict=True,
393
+ )
394
+ for value, target in zip(point, anchor, strict=True)
395
+ )
396
+ if candidate_distance <= tolerance:
397
+ covered.append(
398
+ (
399
+ opportunity_rank,
400
+ candidate_cell,
401
+ candidate_assignments,
402
+ candidate_distance,
403
+ )
404
+ )
405
+ if not covered:
406
+ return DirectionalBootstrapAffineFrontierTargetAllocator().allocate(
407
+ archive_utility=archive_utility,
408
+ lanes=lanes,
409
+ )
410
+ opportunity_rank, cell, assignments, binding_distance = covered[0]
411
+
412
+ metric_ids = tuple(axis.metric_id for axis in geometry.axes)
413
+ raw_aspiration = tuple(
414
+ axis.denormalize(value)
415
+ for axis, value in zip(
416
+ geometry.axes,
417
+ cell.aspiration_point,
418
+ strict=True,
419
+ )
420
+ )
421
+ results: list[CampaignPortfolioFrontierTarget] = []
422
+ for lane_id, parent, point in assignments:
423
+ direction_id, weights, improvement_axes = _direction_for_transition(
424
+ point,
425
+ cell.aspiration_point,
426
+ )
427
+ archive_best = min(
428
+ _achievement(value, weights)
429
+ for value in geometry.normalized_archive_points
430
+ )
431
+ parent_achievement = _achievement(point, weights)
432
+ signed_delta = tuple(
433
+ target - source
434
+ for source, target in zip(
435
+ point,
436
+ cell.aspiration_point,
437
+ strict=True,
438
+ )
439
+ )
440
+ tradeoff_axes = tuple(
441
+ index for index, value in enumerate(signed_delta) if value > 0.0
442
+ )
443
+ raw_parent = tuple(
444
+ axis.denormalize(value)
445
+ for axis, value in zip(geometry.axes, point, strict=True)
446
+ )
447
+ raw_signed_delta = tuple(
448
+ target - source
449
+ for source, target in zip(
450
+ raw_parent,
451
+ raw_aspiration,
452
+ strict=True,
453
+ )
454
+ )
455
+ results.append(
456
+ CampaignPortfolioFrontierTarget(
457
+ allocator_id=self.allocator_id,
458
+ allocator_version=self.allocator_version,
459
+ definition_sha256=self.definition_sha256,
460
+ archive_utility_snapshot_sha256=archive_utility.snapshot_sha256,
461
+ lane_id=lane_id,
462
+ parent_configuration_sha256=(parent.occurrence.configuration_hash),
463
+ direction_id=direction_id,
464
+ opportunity_rank=opportunity_rank,
465
+ payload=_object(
466
+ {
467
+ "schema_version": 2,
468
+ "epistemic_cutoff": {
469
+ "generation": archive_utility.generation,
470
+ "archive_utility_snapshot_sha256": (
471
+ archive_utility.snapshot_sha256
472
+ ),
473
+ "current_or_future_candidate_outcomes_consulted": False,
474
+ },
475
+ "normalized_orientation": ("lower_is_better_on_every_axis"),
476
+ "target_direction": {
477
+ "direction_id": direction_id,
478
+ "normalized_weights_decimal": [
479
+ _decimal(value) for value in weights
480
+ ],
481
+ "opportunity_rank": opportunity_rank,
482
+ "archive_best_achievement_decimal": _decimal(
483
+ archive_best
484
+ ),
485
+ "opportunity_from_ideal_decimal": _decimal(
486
+ max(0.0, archive_best)
487
+ ),
488
+ },
489
+ "assigned_parent": {
490
+ "normalized_point_decimal": [
491
+ _decimal(value) for value in point
492
+ ],
493
+ "achievement_decimal": _decimal(parent_achievement),
494
+ "regret_above_archive_best_decimal": _decimal(
495
+ max(0.0, parent_achievement - archive_best)
496
+ ),
497
+ },
498
+ "residual_frontier_cell": {
499
+ "cell_sha256": cell.cell_sha256,
500
+ "geometry_sha256": geometry.geometry_sha256,
501
+ "policy_definition_sha256": (
502
+ RESIDUAL_FRONTIER_POLICY_DEFINITION_SHA256
503
+ ),
504
+ "normalized_anchor_points_decimal": [
505
+ [_decimal(value) for value in anchor]
506
+ for anchor in cell.anchor_points
507
+ ],
508
+ "normalized_aspiration_point_decimal": [
509
+ _decimal(value) for value in cell.aspiration_point
510
+ ],
511
+ "potential_hypervolume_gain_decimal": _decimal(
512
+ cell.potential_hypervolume_gain
513
+ ),
514
+ "parent_anchor_binding_distance_decimal": _decimal(
515
+ binding_distance
516
+ ),
517
+ "selection_scope": "supplied_parent_lane_anchors",
518
+ "global_opportunity_rank": opportunity_rank,
519
+ },
520
+ "objective_space_target": {
521
+ "purpose": (
522
+ "make_target_realization_magnitude_explicit_"
523
+ "without_predicting_evaluator_outcomes"
524
+ ),
525
+ "axes": [
526
+ {
527
+ "metric_id": axis.metric_id,
528
+ "goal": axis.goal,
529
+ "ideal_decimal": _decimal(axis.ideal),
530
+ "reference_decimal": _decimal(axis.reference),
531
+ "parent_value_decimal": _decimal(parent_value),
532
+ "aspiration_value_decimal": _decimal(
533
+ aspiration_value
534
+ ),
535
+ "signed_parent_to_aspiration_delta_decimal": (
536
+ _decimal(raw_delta)
537
+ ),
538
+ "improving_raw_delta_sign": (
539
+ "negative"
540
+ if axis.goal == "min"
541
+ else "positive"
542
+ ),
543
+ }
544
+ for axis, parent_value, aspiration_value, raw_delta in zip(
545
+ geometry.axes,
546
+ raw_parent,
547
+ raw_aspiration,
548
+ raw_signed_delta,
549
+ strict=True,
550
+ )
551
+ ],
552
+ },
553
+ "lane_transition": {
554
+ "normalized_signed_delta_decimal": [
555
+ _decimal(value) for value in signed_delta
556
+ ],
557
+ "improve_metric_ids": [
558
+ metric_ids[index] for index in improvement_axes
559
+ ],
560
+ "permitted_tradeoff_metric_ids": [
561
+ metric_ids[index] for index in tradeoff_axes
562
+ ],
563
+ "negative_delta_means_improvement": True,
564
+ },
565
+ "acquisition_instruction": {
566
+ "objective": (
567
+ "approach_the_shared_residual_frontier_aspiration"
568
+ ),
569
+ "maximize_actual_fixed_reference_hypervolume_gain": True,
570
+ "avoid_candidates_dominated_by_the_prior_archive": True,
571
+ "tradeoffs_can_be_frontier_improving": True,
572
+ "simultaneous_improvement_on_every_axis_required": False,
573
+ "propose_semantically_distinct_finite_actions": True,
574
+ "target_realization_is_magnitude_sensitive": True,
575
+ "reserve_multiple_semantically_distinct_"
576
+ "target_bridge_hypotheses": True,
577
+ "compare_action_magnitude_to_raw_parent_to_"
578
+ "aspiration_deltas": True,
579
+ "direction_only_forecasts_are_insufficient": True,
580
+ "evaluator_outcomes_remain_unknown": True,
581
+ },
582
+ "achievement_scalar": {
583
+ "kind": "augmented_weighted_chebyshev",
584
+ "rho_decimal": "0.050000000000000003",
585
+ "weights_rescaled_to_max_one": True,
586
+ },
587
+ "workload_identifiers_consulted": False,
588
+ "model_or_provider_fields_consulted": False,
589
+ }
590
+ ),
591
+ )
592
+ )
593
+ return tuple(sorted(results, key=lambda value: value.lane_id))
594
+
595
+
596
+ __all__ = [
597
+ "DIRECTIONAL_BOOTSTRAP_TARGET_ALLOCATOR_DEFINITION_SHA256",
598
+ "DIRECTIONAL_BOOTSTRAP_TARGET_ALLOCATOR_ID",
599
+ "DIRECTIONAL_BOOTSTRAP_TARGET_ALLOCATOR_VERSION",
600
+ "DirectionalBootstrapAffineFrontierTargetAllocator",
601
+ "RESIDUAL_TARGET_ALLOCATOR_DEFINITION_SHA256",
602
+ "RESIDUAL_TARGET_ALLOCATOR_ID",
603
+ "RESIDUAL_TARGET_ALLOCATOR_VERSION",
604
+ "ResidualHypervolumeFrontierTargetAllocator",
605
+ ]