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,253 @@
1
+ """Application projection for phenotype-aware bounded evaluation recourse.
2
+
3
+ The policy layer intentionally knows nothing about engine outcomes. This
4
+ adapter classifies immutable optimizer receipts into occurrence/status facts,
5
+ applies one run-wide phenotype identity policy, and invokes the objective-blind
6
+ recourse policy. Objective values, rewards, and Pareto decisions never cross
7
+ the decision call.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ from collections.abc import Callable, Mapping, Sequence
13
+ from dataclasses import dataclass
14
+
15
+ from agent_evolve.application.agentic_evolution import InvocationOutcome
16
+ from agent_evolve.application.budgeted_optimizer import (
17
+ GenerationReceipt,
18
+ validate_generation_receipt_integrity,
19
+ )
20
+ from agent_evolve.policies.selection.phenotype_recourse import (
21
+ BoundedEvaluationRecoursePolicy,
22
+ EvaluationOccurrenceRole,
23
+ EvaluationOccurrenceStatus,
24
+ EvaluationRecourseDecision,
25
+ PhenotypeIdentity,
26
+ PhenotypeIdentityPolicy,
27
+ PhenotypeOccurrence,
28
+ PhenotypeOccurrenceLedger,
29
+ PresealedRecoursePool,
30
+ RecourseBudgetSnapshot,
31
+ )
32
+
33
+
34
+ EvaluationRecourseTraceSink = Callable[[Mapping[str, object]], None]
35
+
36
+
37
+ def _require_identity_policy(policy: PhenotypeIdentityPolicy) -> None:
38
+ if not callable(getattr(policy, "identify", None)):
39
+ raise TypeError("identity_policy must implement identify")
40
+ if type(getattr(policy, "policy_id", None)) is not str:
41
+ raise TypeError("identity_policy must expose a string policy_id")
42
+ if type(getattr(policy, "policy_version", None)) is not int:
43
+ raise TypeError("identity_policy must expose an integer policy_version")
44
+
45
+
46
+ def phenotype_occurrence(
47
+ outcome: InvocationOutcome,
48
+ *,
49
+ role: EvaluationOccurrenceRole,
50
+ identity_policy: PhenotypeIdentityPolicy,
51
+ ) -> PhenotypeOccurrence:
52
+ """Project one terminal engine outcome without reading reward/objectives."""
53
+
54
+ if type(outcome) is not InvocationOutcome:
55
+ raise TypeError("outcome must be an exact InvocationOutcome")
56
+ if type(role) is not EvaluationOccurrenceRole:
57
+ raise TypeError("role must be an exact EvaluationOccurrenceRole")
58
+ _require_identity_policy(identity_policy)
59
+ candidate = outcome.candidate
60
+
61
+ if outcome.failure_stage == "llm":
62
+ status = EvaluationOccurrenceStatus.MODEL_FAILURE
63
+ elif outcome.failure_stage == "infrastructure":
64
+ status = EvaluationOccurrenceStatus.INFRASTRUCTURE_FAILURE
65
+ elif outcome.failure_stage == "materialization":
66
+ status = EvaluationOccurrenceStatus.SYSTEM_FAILURE
67
+ elif outcome.failure_stage == "candidate":
68
+ status = EvaluationOccurrenceStatus.CANDIDATE_FAILURE
69
+ elif outcome.failure_stage == "treatment_noncompliance":
70
+ status = EvaluationOccurrenceStatus.CANDIDATE_FAILURE
71
+ elif outcome.failure_stage is None:
72
+ if candidate is None:
73
+ raise ValueError("successful invocation has no candidate")
74
+ status = (
75
+ EvaluationOccurrenceStatus.SUCCESS
76
+ if candidate.valid
77
+ and candidate.operator_compliant
78
+ and candidate.evidence_compliant
79
+ else EvaluationOccurrenceStatus.CANDIDATE_FAILURE
80
+ )
81
+ else:
82
+ raise ValueError("outcome has an unsupported failure stage")
83
+
84
+ if candidate is None:
85
+ candidate_id = None
86
+ identity = None
87
+ else:
88
+ candidate_id = candidate.candidate_id
89
+ identity = identity_policy.identify(candidate.configuration)
90
+ if type(identity) is not PhenotypeIdentity:
91
+ raise TypeError("identity policy must return an exact PhenotypeIdentity")
92
+ if (
93
+ identity.policy_id != identity_policy.policy_id
94
+ or identity.policy_version != identity_policy.policy_version
95
+ ):
96
+ raise ValueError("identity policy returned inconsistent metadata")
97
+ return PhenotypeOccurrence(
98
+ trial_id=outcome.prepared.operator_invocation_id,
99
+ role=role,
100
+ status=status,
101
+ candidate_id=candidate_id,
102
+ phenotype=identity,
103
+ )
104
+
105
+
106
+ def phenotype_ledger_from_generation(
107
+ receipt: GenerationReceipt,
108
+ *,
109
+ role: EvaluationOccurrenceRole,
110
+ identity_policy: PhenotypeIdentityPolicy,
111
+ included_slot_ids: Sequence[str] | None = None,
112
+ ) -> PhenotypeOccurrenceLedger:
113
+ """Build a canonical ledger from all or an explicit subset of receipt slots."""
114
+
115
+ if type(receipt) is not GenerationReceipt:
116
+ raise TypeError("receipt must be an exact GenerationReceipt")
117
+ validate_generation_receipt_integrity(receipt)
118
+ if type(role) is not EvaluationOccurrenceRole:
119
+ raise TypeError("role must be an exact EvaluationOccurrenceRole")
120
+ _require_identity_policy(identity_policy)
121
+ available = {result.slot.slot_id: result for result in receipt.slot_results}
122
+ if included_slot_ids is None:
123
+ selected_ids = tuple(available)
124
+ else:
125
+ if isinstance(included_slot_ids, (str, bytes)) or not isinstance(
126
+ included_slot_ids, Sequence
127
+ ):
128
+ raise TypeError("included_slot_ids must be a sequence")
129
+ selected_ids = tuple(included_slot_ids)
130
+ if any(type(value) is not str or not value for value in selected_ids):
131
+ raise ValueError("included_slot_ids must contain non-empty strings")
132
+ if len(set(selected_ids)) != len(selected_ids):
133
+ raise ValueError("included_slot_ids cannot contain duplicates")
134
+ if not set(selected_ids).issubset(available):
135
+ raise ValueError("included_slot_ids contains an unknown slot")
136
+ occurrences = tuple(
137
+ phenotype_occurrence(
138
+ available[slot_id].outcome,
139
+ role=role,
140
+ identity_policy=identity_policy,
141
+ )
142
+ for slot_id in selected_ids
143
+ )
144
+ return PhenotypeOccurrenceLedger.build(
145
+ occurrences,
146
+ identity_policy=identity_policy,
147
+ )
148
+
149
+
150
+ @dataclass(frozen=True, slots=True)
151
+ class EvaluationRecourseApplicationService:
152
+ """Project a primary wave and make one trace-complete recourse decision."""
153
+
154
+ identity_policy: PhenotypeIdentityPolicy
155
+ recourse_policy: BoundedEvaluationRecoursePolicy
156
+ trace_sink: EvaluationRecourseTraceSink | None = None
157
+
158
+ def __post_init__(self) -> None:
159
+ _require_identity_policy(self.identity_policy)
160
+ if type(self.recourse_policy) is not BoundedEvaluationRecoursePolicy:
161
+ raise TypeError(
162
+ "recourse_policy must be an exact BoundedEvaluationRecoursePolicy"
163
+ )
164
+ if self.trace_sink is not None and not callable(self.trace_sink):
165
+ raise TypeError("trace_sink must be callable")
166
+
167
+ def decide(
168
+ self,
169
+ *,
170
+ primary_receipt: GenerationReceipt,
171
+ pool: PresealedRecoursePool,
172
+ budget: RecourseBudgetSnapshot,
173
+ primary_slot_ids: Sequence[str] | None = None,
174
+ ) -> EvaluationRecourseDecision:
175
+ ledger = phenotype_ledger_from_generation(
176
+ primary_receipt,
177
+ role=EvaluationOccurrenceRole.PRIMARY,
178
+ identity_policy=self.identity_policy,
179
+ included_slot_ids=primary_slot_ids,
180
+ )
181
+ decision = self.recourse_policy.decide(
182
+ ledger=ledger,
183
+ pool=pool,
184
+ budget=budget,
185
+ )
186
+ if self.trace_sink is not None:
187
+ for cluster in ledger.clusters:
188
+ if cluster.successful_primary_collision_credit <= 0:
189
+ continue
190
+ self.trace_sink(
191
+ {
192
+ "event_type": "phenotype_collision",
193
+ "ledger_sha256": ledger.ledger_sha256,
194
+ "phenotype_identity_sha256": (
195
+ cluster.phenotype.identity_sha256
196
+ ),
197
+ "trial_ids": [
198
+ item.trial_id.value for item in cluster.occurrences
199
+ ],
200
+ "collision_credit": (
201
+ cluster.successful_primary_collision_credit
202
+ ),
203
+ "zero_identity_contrast_pairs": [
204
+ [left.value, right.value]
205
+ for left, right in cluster.zero_identity_contrast_pairs
206
+ ],
207
+ }
208
+ )
209
+ self.trace_sink(decision.to_trace_record())
210
+ return decision
211
+
212
+ def append_recourse_receipt(
213
+ self,
214
+ primary_ledger: PhenotypeOccurrenceLedger,
215
+ recourse_receipt: GenerationReceipt,
216
+ *,
217
+ recourse_slot_ids: Sequence[str] | None = None,
218
+ ) -> PhenotypeOccurrenceLedger:
219
+ """Publish recourse outcomes without granting them collision credit."""
220
+
221
+ if type(primary_ledger) is not PhenotypeOccurrenceLedger:
222
+ raise TypeError("primary_ledger must be an exact PhenotypeOccurrenceLedger")
223
+ recourse = phenotype_ledger_from_generation(
224
+ recourse_receipt,
225
+ role=EvaluationOccurrenceRole.RECOURSE,
226
+ identity_policy=self.identity_policy,
227
+ included_slot_ids=recourse_slot_ids,
228
+ )
229
+ combined = PhenotypeOccurrenceLedger.build(
230
+ (*primary_ledger.occurrences, *recourse.occurrences),
231
+ identity_policy=self.identity_policy,
232
+ )
233
+ if self.trace_sink is not None:
234
+ self.trace_sink(
235
+ {
236
+ "event_type": "evaluation_recourse_completed",
237
+ "primary_ledger_sha256": primary_ledger.ledger_sha256,
238
+ "combined_ledger_sha256": combined.ledger_sha256,
239
+ "experiment_block_valid": combined.experiment_block_valid,
240
+ "recourse_trial_ids": [
241
+ value.value for value in combined.ignored_recourse_trial_ids
242
+ ],
243
+ }
244
+ )
245
+ return combined
246
+
247
+
248
+ __all__ = [
249
+ "EvaluationRecourseApplicationService",
250
+ "EvaluationRecourseTraceSink",
251
+ "phenotype_ledger_from_generation",
252
+ "phenotype_occurrence",
253
+ ]
@@ -0,0 +1,151 @@
1
+ """Single append-before-publish authority for one run's event sequence."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import threading
6
+ from typing import Callable, Iterable, Optional, Tuple
7
+
8
+ from agent_evolve.domain.event import (
9
+ CURRENT_EVENT_SCHEMA_VERSION,
10
+ EventEnvelope,
11
+ EventPayload,
12
+ )
13
+ from agent_evolve.domain.ids import CorrelationId, EventId, RunId
14
+ from agent_evolve.ports.clock import Clock
15
+ from agent_evolve.ports.event_store import EventStore, EventStoreError
16
+ from agent_evolve.ports.id_factory import IdFactory
17
+
18
+ EventSink = Callable[[EventEnvelope], None]
19
+
20
+
21
+ class EventAppendObservedError(EventStoreError):
22
+ """Append raised, but the exact event is readable as the stream tail.
23
+
24
+ The recorder reconciles its sequence state but does not publish to sinks.
25
+ The caller still receives an error because the adapter could not affirm its
26
+ complete durability contract (for example, a directory fsync may have failed).
27
+ """
28
+
29
+
30
+ class EventAppendReconciliationError(EventStoreError):
31
+ """A failed append could not be reconciled to an unambiguous stream state."""
32
+
33
+
34
+ class EventRecorder:
35
+ """Create, append, then publish immutable events for exactly one run.
36
+
37
+ Sink exceptions intentionally propagate, but only after the event is durable.
38
+ This preserves scientific history while making observer failures visible.
39
+ """
40
+
41
+ def __init__(
42
+ self,
43
+ *,
44
+ run_id: RunId,
45
+ event_store: EventStore,
46
+ id_factory: IdFactory,
47
+ clock: Clock,
48
+ sinks: Iterable[EventSink] = (),
49
+ ) -> None:
50
+ self.run_id = run_id
51
+ self._store = event_store
52
+ self._ids = id_factory
53
+ self._clock = clock
54
+ self._sinks: Tuple[EventSink, ...] = tuple(sinks)
55
+ self._lock = threading.RLock()
56
+
57
+ existing = tuple(event_store.read(run_id))
58
+ self._last_sequence = existing[-1].sequence_number if existing else 0
59
+ self._last_offset = existing[-1].monotonic_offset_ns if existing else -1
60
+ self._clock_origin_ns = clock.monotonic_ns()
61
+ # A reopened recorder cannot reconstruct a previous process's monotonic
62
+ # origin. Continue strictly after the durable offset; M2 resume will also
63
+ # project elapsed wall time across process boundaries.
64
+ self._offset_origin = self._last_offset + 1 if existing else 0
65
+
66
+ @property
67
+ def last_sequence(self) -> int:
68
+ with self._lock:
69
+ return self._last_sequence
70
+
71
+ def events(self, *, after_sequence: int = 0) -> Tuple[EventEnvelope, ...]:
72
+ return tuple(self._store.read(self.run_id, after_sequence=after_sequence))
73
+
74
+ def _reconcile_failed_append(self, event: EventEnvelope) -> bool:
75
+ """Return whether *event* is the exact readable tail after append failed."""
76
+
77
+ try:
78
+ observed = tuple(self._store.read(self.run_id))
79
+ except Exception:
80
+ raise EventAppendReconciliationError(
81
+ "failed event append has an unreadable or ambiguous outcome"
82
+ ) from None
83
+
84
+ at_sequence = tuple(
85
+ item
86
+ for item in observed
87
+ if item.sequence_number == event.sequence_number
88
+ )
89
+ if not at_sequence:
90
+ if observed and observed[-1].sequence_number >= event.sequence_number:
91
+ raise EventAppendReconciliationError(
92
+ "failed event append conflicts with the readable stream"
93
+ )
94
+ return False
95
+ if len(at_sequence) != 1 or at_sequence[0] != event or observed[-1] != event:
96
+ raise EventAppendReconciliationError(
97
+ "failed event append conflicts with the readable stream"
98
+ )
99
+ return True
100
+
101
+ def record(
102
+ self,
103
+ payload: EventPayload,
104
+ *,
105
+ correlation_id: Optional[CorrelationId] = None,
106
+ causation_event_id: Optional[EventId] = None,
107
+ ) -> EventEnvelope:
108
+ if not isinstance(payload, EventPayload):
109
+ raise TypeError("payload must be an EventPayload")
110
+ with self._lock:
111
+ now_monotonic = self._clock.monotonic_ns()
112
+ delta = now_monotonic - self._clock_origin_ns
113
+ if delta < 0:
114
+ raise RuntimeError("injected monotonic clock moved backwards")
115
+ offset = self._offset_origin + delta
116
+ sequence = self._last_sequence + 1
117
+ event = EventEnvelope(
118
+ schema_version=CURRENT_EVENT_SCHEMA_VERSION,
119
+ event_id=self._ids.new_event_id(),
120
+ run_id=self.run_id,
121
+ sequence_number=sequence,
122
+ event_type=payload.EVENT_TYPE,
123
+ wall_timestamp_utc=self._clock.utc_now(),
124
+ monotonic_offset_ns=offset,
125
+ correlation_id=correlation_id,
126
+ causation_event_id=causation_event_id,
127
+ payload=payload,
128
+ )
129
+ try:
130
+ self._store.append(
131
+ event,
132
+ expected_previous_sequence=self._last_sequence,
133
+ )
134
+ except Exception:
135
+ if not self._reconcile_failed_append(event):
136
+ raise
137
+ # Make a subsequent operation continue at the observed stream
138
+ # tail instead of retrying/reusing an already-recorded sequence.
139
+ self._last_sequence = sequence
140
+ self._last_offset = offset
141
+ raise EventAppendObservedError(
142
+ "event append reported failure after the exact event became readable; "
143
+ "observer sinks were not invoked"
144
+ ) from None
145
+ # Advance before observers run: a failing observer cannot make a later
146
+ # append reuse an already-durable sequence number.
147
+ self._last_sequence = sequence
148
+ self._last_offset = offset
149
+ for sink in self._sinks:
150
+ sink(event)
151
+ return event