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,17 @@
1
+ """Scientific policies for turning raw measurements into decision values."""
2
+
3
+ from agent_evolve.policies.objective_resolution.fixed_grid import (
4
+ FIXED_GRID_OBJECTIVE_RESOLUTION_POLICY_ID,
5
+ FIXED_GRID_OBJECTIVE_RESOLUTION_POLICY_VERSION,
6
+ FixedGridMetricSpec,
7
+ FixedGridObjectiveResolution,
8
+ FixedGridRoundingLaw,
9
+ )
10
+
11
+ __all__ = [
12
+ "FIXED_GRID_OBJECTIVE_RESOLUTION_POLICY_ID",
13
+ "FIXED_GRID_OBJECTIVE_RESOLUTION_POLICY_VERSION",
14
+ "FixedGridMetricSpec",
15
+ "FixedGridObjectiveResolution",
16
+ "FixedGridRoundingLaw",
17
+ ]
@@ -0,0 +1,364 @@
1
+ """Workload-neutral fixed-decimal-grid objective resolution.
2
+
3
+ Evaluators retain authority over raw physical measurements. This policy only
4
+ defines the coarser values on which optimization decisions are made. Each
5
+ metric has a prospectively declared decimal origin, positive decimal quantum,
6
+ and nearest-neighbour tie law. Candidate configuration and objective goal are
7
+ deliberately outside the transform, so neither can silently change resolution.
8
+
9
+ The implementation uses exact integer arithmetic. It first interprets a
10
+ finite Python float through its shortest round-trip decimal text, then rounds
11
+ the resulting exact rational grid index. It therefore does not depend on the
12
+ process-global :mod:`decimal` context.
13
+ """
14
+
15
+ from __future__ import annotations
16
+
17
+ import hashlib
18
+ import json
19
+ import math
20
+ from dataclasses import dataclass, field
21
+ from decimal import Decimal
22
+ from enum import Enum
23
+
24
+ from agent_evolve.domain.typed_json import FrozenJsonObject, freeze_json
25
+ from agent_evolve.ports.objective_resolution import (
26
+ ObjectiveResolutionRequest,
27
+ ObjectiveResolutionResult,
28
+ )
29
+
30
+
31
+ FIXED_GRID_OBJECTIVE_RESOLUTION_POLICY_ID = "fixed_decimal_grid_objectives"
32
+ FIXED_GRID_OBJECTIVE_RESOLUTION_POLICY_VERSION = 1
33
+
34
+ _DEFINITION_DOMAIN = b"agent-evolve:fixed-decimal-grid-objectives:def:v1\x00"
35
+ _FLOAT_DECIMAL_CONVERSION = "python_float_shortest_round_trip_decimal_text_v1"
36
+ _CONFIGURATION_DEPENDENCE = "none"
37
+ _MAX_DECIMAL_DIGITS = 128
38
+ _MAX_DECIMAL_ABS_EXPONENT = 1_024
39
+ _MAX_METRIC_ID_BYTES = 512
40
+
41
+
42
+ def _canonical_json(value: object) -> bytes:
43
+ return json.dumps(
44
+ value,
45
+ allow_nan=False,
46
+ ensure_ascii=True,
47
+ separators=(",", ":"),
48
+ sort_keys=True,
49
+ ).encode("ascii", errors="strict")
50
+
51
+
52
+ def _metric_sort_key(metric_id: str) -> bytes:
53
+ return metric_id.encode("utf-8", errors="strict")
54
+
55
+
56
+ def _require_metric_id(value: object) -> str:
57
+ if type(value) is not str or not value or value != value.strip():
58
+ raise ValueError("metric_id must be a non-empty canonical string")
59
+ try:
60
+ encoded = value.encode("utf-8", errors="strict")
61
+ except UnicodeEncodeError as exc:
62
+ raise ValueError("metric_id must be valid UTF-8 text") from exc
63
+ if len(encoded) > _MAX_METRIC_ID_BYTES:
64
+ raise ValueError("metric_id exceeds the bounded identifier policy")
65
+ return value
66
+
67
+
68
+ def _require_decimal(value: object, *, name: str) -> Decimal:
69
+ if type(value) is not Decimal or not value.is_finite():
70
+ raise TypeError(f"{name} must be an exact finite Decimal")
71
+ decimal_tuple = value.as_tuple()
72
+ if (
73
+ len(decimal_tuple.digits) > _MAX_DECIMAL_DIGITS
74
+ or type(decimal_tuple.exponent) is not int
75
+ or not (
76
+ -_MAX_DECIMAL_ABS_EXPONENT
77
+ <= decimal_tuple.exponent
78
+ <= _MAX_DECIMAL_ABS_EXPONENT
79
+ )
80
+ ):
81
+ raise ValueError(f"{name} exceeds the bounded decimal policy")
82
+ return value
83
+
84
+
85
+ def _decimal_components(value: Decimal) -> tuple[int, int]:
86
+ """Return exact ``coefficient, exponent`` with trailing zeros removed."""
87
+
88
+ decimal_tuple = value.as_tuple()
89
+ exponent = decimal_tuple.exponent
90
+ if type(exponent) is not int: # already rejected at the public boundary
91
+ raise TypeError("finite Decimal exponent must be an exact integer")
92
+ coefficient = 0
93
+ for digit in decimal_tuple.digits:
94
+ coefficient = coefficient * 10 + digit
95
+ if decimal_tuple.sign:
96
+ coefficient = -coefficient
97
+ if coefficient == 0:
98
+ return 0, 0
99
+ while coefficient % 10 == 0:
100
+ coefficient //= 10
101
+ exponent += 1
102
+ return coefficient, exponent
103
+
104
+
105
+ def _canonical_decimal_text(value: Decimal) -> str:
106
+ coefficient, exponent = _decimal_components(value)
107
+ if coefficient == 0:
108
+ return "0"
109
+ sign = "-" if coefficient < 0 else ""
110
+ digits = str(abs(coefficient))
111
+ if exponent >= 0:
112
+ return sign + digits + "0" * exponent
113
+ point = len(digits) + exponent
114
+ if point > 0:
115
+ return sign + digits[:point] + "." + digits[point:]
116
+ return sign + "0." + "0" * (-point) + digits
117
+
118
+
119
+ def _decimal_from_components(coefficient: int, exponent: int) -> Decimal:
120
+ if coefficient == 0:
121
+ return Decimal(0)
122
+ sign = 1 if coefficient < 0 else 0
123
+ digits = tuple(int(digit) for digit in str(abs(coefficient)))
124
+ return Decimal((sign, digits, exponent))
125
+
126
+
127
+ def _common_integer_components(
128
+ *values: Decimal,
129
+ ) -> tuple[tuple[int, ...], int]:
130
+ components = tuple(_decimal_components(value) for value in values)
131
+ common_exponent = min(exponent for _, exponent in components)
132
+ integers = tuple(
133
+ coefficient * 10 ** (exponent - common_exponent)
134
+ for coefficient, exponent in components
135
+ )
136
+ return integers, common_exponent
137
+
138
+
139
+ class FixedGridRoundingLaw(str, Enum):
140
+ """Closed nearest-grid tie semantics.
141
+
142
+ Both laws choose the nearest grid point away from exact ties. At an exact
143
+ half-grid boundary, ``NEAREST_TIES_TO_EVEN`` chooses an even integer grid
144
+ index while ``NEAREST_TIES_AWAY_FROM_ZERO`` increases its magnitude.
145
+ """
146
+
147
+ NEAREST_TIES_TO_EVEN = "nearest_ties_to_even"
148
+ NEAREST_TIES_AWAY_FROM_ZERO = "nearest_ties_away_from_zero"
149
+
150
+
151
+ @dataclass(frozen=True, slots=True)
152
+ class FixedGridMetricSpec:
153
+ """One metric's exact benchmark-declared decision grid."""
154
+
155
+ metric_id: str
156
+ decimal_origin: Decimal
157
+ decimal_quantum: Decimal
158
+ rounding_law: FixedGridRoundingLaw
159
+
160
+ def __post_init__(self) -> None:
161
+ _require_metric_id(self.metric_id)
162
+ _require_decimal(self.decimal_origin, name="decimal_origin")
163
+ quantum = _require_decimal(self.decimal_quantum, name="decimal_quantum")
164
+ if quantum <= 0:
165
+ raise ValueError("decimal_quantum must be strictly positive")
166
+ if type(self.rounding_law) is not FixedGridRoundingLaw:
167
+ raise TypeError("rounding_law must be an exact FixedGridRoundingLaw")
168
+
169
+ def revalidate(self) -> None:
170
+ if type(self) is not FixedGridMetricSpec:
171
+ raise TypeError("metric grid must be an exact FixedGridMetricSpec")
172
+ FixedGridMetricSpec.__post_init__(self)
173
+
174
+ def to_record(self) -> dict[str, str]:
175
+ self.revalidate()
176
+ return {
177
+ "metric_id": self.metric_id,
178
+ "decimal_origin": _canonical_decimal_text(self.decimal_origin),
179
+ "decimal_quantum": _canonical_decimal_text(self.decimal_quantum),
180
+ "rounding_law": self.rounding_law.value,
181
+ }
182
+
183
+
184
+ def _rounded_grid_index(
185
+ *,
186
+ value: Decimal,
187
+ spec: FixedGridMetricSpec,
188
+ ) -> int:
189
+ integers, _ = _common_integer_components(
190
+ value,
191
+ spec.decimal_origin,
192
+ spec.decimal_quantum,
193
+ )
194
+ value_integer, origin_integer, quantum_integer = integers
195
+ numerator = value_integer - origin_integer
196
+ sign = -1 if numerator < 0 else 1
197
+ magnitude, remainder = divmod(abs(numerator), quantum_integer)
198
+ twice_remainder = 2 * remainder
199
+ if twice_remainder > quantum_integer:
200
+ magnitude += 1
201
+ elif twice_remainder == quantum_integer:
202
+ if spec.rounding_law is FixedGridRoundingLaw.NEAREST_TIES_AWAY_FROM_ZERO:
203
+ magnitude += 1
204
+ elif magnitude % 2 == 1:
205
+ magnitude += 1
206
+ return sign * magnitude
207
+
208
+
209
+ def _grid_value(spec: FixedGridMetricSpec, grid_index: int) -> Decimal:
210
+ integers, common_exponent = _common_integer_components(
211
+ spec.decimal_origin,
212
+ spec.decimal_quantum,
213
+ )
214
+ origin_integer, quantum_integer = integers
215
+ return _decimal_from_components(
216
+ origin_integer + grid_index * quantum_integer,
217
+ common_exponent,
218
+ )
219
+
220
+
221
+ @dataclass(frozen=True, slots=True)
222
+ class FixedGridObjectiveResolution:
223
+ """Resolve every declared objective onto a fixed decimal measurement grid.
224
+
225
+ ``metric_specs`` use UTF-8 bytewise metric order. At resolution time they
226
+ must cover exactly the request's objective IDs. Decision values always
227
+ follow the objective declaration order required by the port.
228
+ """
229
+
230
+ metric_specs: tuple[FixedGridMetricSpec, ...]
231
+ policy_id: str = field(
232
+ init=False,
233
+ default=FIXED_GRID_OBJECTIVE_RESOLUTION_POLICY_ID,
234
+ )
235
+ policy_version: int = field(
236
+ init=False,
237
+ default=FIXED_GRID_OBJECTIVE_RESOLUTION_POLICY_VERSION,
238
+ )
239
+ definition_sha256: str = field(init=False, default="")
240
+
241
+ def __post_init__(self) -> None:
242
+ if type(self.metric_specs) is not tuple or not self.metric_specs:
243
+ raise ValueError("metric_specs must be a non-empty exact tuple")
244
+ if any(type(spec) is not FixedGridMetricSpec for spec in self.metric_specs):
245
+ raise TypeError("metric_specs must contain exact FixedGridMetricSpec values")
246
+ for spec in self.metric_specs:
247
+ spec.revalidate()
248
+ metric_ids = tuple(spec.metric_id for spec in self.metric_specs)
249
+ if len(set(metric_ids)) != len(metric_ids):
250
+ raise ValueError("metric_specs cannot repeat a metric_id")
251
+ if metric_ids != tuple(sorted(metric_ids, key=_metric_sort_key)):
252
+ raise ValueError("metric_specs must use canonical UTF-8 metric order")
253
+ definition = {
254
+ "schema_version": 1,
255
+ "policy_id": self.policy_id,
256
+ "policy_version": self.policy_version,
257
+ "float_decimal_conversion": _FLOAT_DECIMAL_CONVERSION,
258
+ "configuration_dependence": _CONFIGURATION_DEPENDENCE,
259
+ "metric_specs": [spec.to_record() for spec in self.metric_specs],
260
+ }
261
+ computed = hashlib.sha256(
262
+ _DEFINITION_DOMAIN + _canonical_json(definition)
263
+ ).hexdigest()
264
+ if self.definition_sha256 not in ("", computed):
265
+ raise ValueError("definition_sha256 differs from the fixed-grid policy")
266
+ object.__setattr__(self, "definition_sha256", computed)
267
+
268
+ def revalidate(self) -> None:
269
+ if type(self) is not FixedGridObjectiveResolution:
270
+ raise TypeError("policy must be an exact FixedGridObjectiveResolution")
271
+ FixedGridObjectiveResolution.__post_init__(self)
272
+
273
+ def to_record(self) -> dict[str, object]:
274
+ self.revalidate()
275
+ return {
276
+ "policy_id": self.policy_id,
277
+ "policy_version": self.policy_version,
278
+ "definition_sha256": self.definition_sha256,
279
+ "float_decimal_conversion": _FLOAT_DECIMAL_CONVERSION,
280
+ "configuration_dependence": _CONFIGURATION_DEPENDENCE,
281
+ "metric_specs": [spec.to_record() for spec in self.metric_specs],
282
+ }
283
+
284
+ def resolve(
285
+ self,
286
+ request: ObjectiveResolutionRequest,
287
+ ) -> ObjectiveResolutionResult:
288
+ self.revalidate()
289
+ if type(request) is not ObjectiveResolutionRequest:
290
+ raise TypeError("request must be an exact ObjectiveResolutionRequest")
291
+ ObjectiveResolutionRequest.__post_init__(request)
292
+ requested_ids = tuple(objective.name for objective in request.objectives)
293
+ configured_ids = tuple(spec.metric_id for spec in self.metric_specs)
294
+ requested_set = set(requested_ids)
295
+ configured_set = set(configured_ids)
296
+ if requested_set != configured_set:
297
+ missing = sorted(requested_set - configured_set, key=_metric_sort_key)
298
+ extra = sorted(configured_set - requested_set, key=_metric_sort_key)
299
+ details: list[str] = []
300
+ if missing:
301
+ details.append("missing=" + ",".join(missing))
302
+ if extra:
303
+ details.append("extra=" + ",".join(extra))
304
+ raise ValueError(
305
+ "metric_specs must cover every objective exactly ("
306
+ + "; ".join(details)
307
+ + ")"
308
+ )
309
+ spec_by_metric = {spec.metric_id: spec for spec in self.metric_specs}
310
+ raw_by_metric = dict(request.raw_objectives)
311
+ decision_values: list[tuple[str, float]] = []
312
+ metric_evidence: list[dict[str, object]] = []
313
+ for metric_id in requested_ids:
314
+ spec = spec_by_metric[metric_id]
315
+ raw_value = raw_by_metric[metric_id]
316
+ input_decimal = Decimal(str(raw_value))
317
+ grid_index = _rounded_grid_index(value=input_decimal, spec=spec)
318
+ resolved_decimal = _grid_value(spec, grid_index)
319
+ decision_value = float(resolved_decimal)
320
+ if not math.isfinite(decision_value):
321
+ raise ValueError(
322
+ f"resolved grid value for {metric_id!r} is not a finite float"
323
+ )
324
+ if resolved_decimal.is_zero():
325
+ decision_value = 0.0
326
+ decision_values.append((metric_id, decision_value))
327
+ metric_evidence.append(
328
+ {
329
+ **spec.to_record(),
330
+ "raw_value_hex": raw_value.hex(),
331
+ "input_decimal": _canonical_decimal_text(input_decimal),
332
+ "grid_index": str(grid_index),
333
+ "resolved_decimal": _canonical_decimal_text(resolved_decimal),
334
+ "decision_value_hex": decision_value.hex(),
335
+ "changed": raw_value.hex() != decision_value.hex(),
336
+ }
337
+ )
338
+ evidence = freeze_json(
339
+ {
340
+ "schema_version": 1,
341
+ "policy_id": self.policy_id,
342
+ "policy_version": self.policy_version,
343
+ "definition_sha256": self.definition_sha256,
344
+ "float_decimal_conversion": _FLOAT_DECIMAL_CONVERSION,
345
+ "configuration_dependence": _CONFIGURATION_DEPENDENCE,
346
+ "metrics": metric_evidence,
347
+ }
348
+ )
349
+ if type(evidence) is not FrozenJsonObject:
350
+ raise TypeError("fixed-grid evidence must freeze to an object")
351
+ return ObjectiveResolutionResult(
352
+ request_sha256=request.request_sha256,
353
+ decision_objectives=tuple(decision_values),
354
+ evidence=evidence,
355
+ )
356
+
357
+
358
+ __all__ = [
359
+ "FIXED_GRID_OBJECTIVE_RESOLUTION_POLICY_ID",
360
+ "FIXED_GRID_OBJECTIVE_RESOLUTION_POLICY_VERSION",
361
+ "FixedGridMetricSpec",
362
+ "FixedGridObjectiveResolution",
363
+ "FixedGridRoundingLaw",
364
+ ]