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,396 @@
1
+ """Atomic learning-state publication for residual portfolio evolution.
2
+
3
+ One residual decision produces two coupled learning products:
4
+
5
+ * immediate, conserved action outcomes for the workload-blind broker; and
6
+ * proposal provenance, stage credit, and earned reproduction tickets.
7
+
8
+ Publishing those products into independent mutable ledgers can expose a
9
+ half-committed state after an exception or concurrent update. This module
10
+ instead prepares both products against private ledger copies and commits them
11
+ with one compare-and-swap of a versioned aggregate state. Proposal experts,
12
+ archive utilities, workloads, models, and providers remain outside this
13
+ boundary.
14
+ """
15
+
16
+ from __future__ import annotations
17
+
18
+ import copy
19
+ import hashlib
20
+ import json
21
+ from collections.abc import Iterable
22
+ from dataclasses import dataclass, field
23
+
24
+ from agent_evolve.application.earned_lineage import (
25
+ CandidateProposalProvenance,
26
+ EarnedLineageLedger,
27
+ ReproductionTicketIssuance,
28
+ )
29
+ from agent_evolve.application.evolution_campaign import ArchiveUtilitySnapshot
30
+ from agent_evolve.application.materialized_action_broker import (
31
+ MaterializedActionEvidenceLedger,
32
+ )
33
+ from agent_evolve.application.residual_portfolio_evolution import (
34
+ ResidualPortfolioEvolutionResult,
35
+ )
36
+ from agent_evolve.application.residual_stage_credit import (
37
+ ConservedResidualStageProjection,
38
+ ResidualStageCreditProjector,
39
+ )
40
+ from agent_evolve.domain.patch import require_sha256
41
+
42
+
43
+ RESIDUAL_LEARNING_TRANSACTION_ID = "atomic_residual_learning_state"
44
+ RESIDUAL_LEARNING_TRANSACTION_VERSION = 1
45
+ RESIDUAL_LEARNING_TRANSACTION_DEFINITION_SHA256 = hashlib.sha256(
46
+ b"agent-evolve:atomic-residual-learning-state:v1;"
47
+ b"prepare=private-exact-ledger-copies;"
48
+ b"publication=single-versioned-state-compare-and-swap;"
49
+ b"products=broker-outcomes-plus-provenance-credit-and-earned-tickets;"
50
+ b"cutoff=authenticated-conserved-residual-stage-projection;"
51
+ b"stale-preparations=fail-closed;"
52
+ b"workload-model-provider-branches=false"
53
+ ).hexdigest()
54
+
55
+ _STATE_DOMAIN = b"agent-evolve:residual-learning-state:v1\x00"
56
+ _PREPARATION_DOMAIN = b"agent-evolve:residual-learning-preparation:v1\x00"
57
+ _COMMIT_DOMAIN = b"agent-evolve:residual-learning-commit:v1\x00"
58
+
59
+
60
+ def _canonical_json(value: object) -> bytes:
61
+ return json.dumps(
62
+ value,
63
+ allow_nan=False,
64
+ ensure_ascii=True,
65
+ separators=(",", ":"),
66
+ sort_keys=True,
67
+ ).encode("ascii", errors="strict")
68
+
69
+
70
+ def _hash(domain: bytes, value: object) -> str:
71
+ return hashlib.sha256(domain + _canonical_json(value)).hexdigest()
72
+
73
+
74
+ def _broker_record(ledger: MaterializedActionEvidenceLedger) -> dict[str, object]:
75
+ if type(ledger) is not MaterializedActionEvidenceLedger:
76
+ raise TypeError("broker evidence must be an exact ledger")
77
+ return {
78
+ "outcomes": [value.to_record() for value in ledger.outcomes],
79
+ "delayed_credits": [
80
+ value.to_record() for value in ledger.delayed_credits
81
+ ],
82
+ "resolved_returns": [
83
+ value.to_record() for value in ledger.resolved_returns
84
+ ],
85
+ }
86
+
87
+
88
+ @dataclass(frozen=True, slots=True)
89
+ class ResidualLearningState:
90
+ """One immutable-by-ownership broker and earned-lineage state revision."""
91
+
92
+ broker_evidence: MaterializedActionEvidenceLedger = field(
93
+ repr=False,
94
+ compare=False,
95
+ )
96
+ earned_lineage: EarnedLineageLedger = field(
97
+ repr=False,
98
+ compare=False,
99
+ )
100
+ current_generation: int
101
+ revision: int
102
+ state_sha256: str = field(init=False)
103
+
104
+ def __post_init__(self) -> None:
105
+ if type(self.broker_evidence) is not MaterializedActionEvidenceLedger:
106
+ raise TypeError("broker_evidence must be an exact ledger")
107
+ if type(self.earned_lineage) is not EarnedLineageLedger:
108
+ raise TypeError("earned_lineage must be an exact ledger")
109
+ self.earned_lineage.__post_init__()
110
+ for name in ("current_generation", "revision"):
111
+ value = getattr(self, name)
112
+ if type(value) is not int or value < 0:
113
+ raise ValueError(f"{name} must be a non-negative exact integer")
114
+ object.__setattr__(
115
+ self,
116
+ "state_sha256",
117
+ _hash(_STATE_DOMAIN, self._unsigned_record()),
118
+ )
119
+
120
+ @classmethod
121
+ def empty(cls) -> "ResidualLearningState":
122
+ return cls(
123
+ broker_evidence=MaterializedActionEvidenceLedger(),
124
+ earned_lineage=EarnedLineageLedger(),
125
+ current_generation=0,
126
+ revision=0,
127
+ )
128
+
129
+ def _unsigned_record(self) -> dict[str, object]:
130
+ return {
131
+ "schema_version": 1,
132
+ "revision": self.revision,
133
+ "current_generation": self.current_generation,
134
+ "broker_evidence": _broker_record(self.broker_evidence),
135
+ "earned_lineage": self.earned_lineage.to_record(
136
+ current_generation=self.current_generation
137
+ ),
138
+ "workload_model_provider_fields_present": False,
139
+ }
140
+
141
+ def to_record(self) -> dict[str, object]:
142
+ self.__post_init__()
143
+ return {
144
+ **self._unsigned_record(),
145
+ "state_sha256": self.state_sha256,
146
+ }
147
+
148
+
149
+ @dataclass(frozen=True, slots=True)
150
+ class ResidualLearningPublicationPreparation:
151
+ """Fully validated successor state that has not yet been published."""
152
+
153
+ base_state_sha256: str
154
+ projection: ConservedResidualStageProjection
155
+ ticket_issuance: ReproductionTicketIssuance
156
+ next_state: ResidualLearningState = field(repr=False, compare=False)
157
+ transaction_definition_sha256: str = (
158
+ RESIDUAL_LEARNING_TRANSACTION_DEFINITION_SHA256
159
+ )
160
+ preparation_sha256: str = field(init=False)
161
+
162
+ def __post_init__(self) -> None:
163
+ require_sha256(self.base_state_sha256, "base_state_sha256")
164
+ require_sha256(
165
+ self.transaction_definition_sha256,
166
+ "transaction_definition_sha256",
167
+ )
168
+ if type(self.projection) is not ConservedResidualStageProjection:
169
+ raise TypeError("projection must be exact")
170
+ self.projection.__post_init__()
171
+ if type(self.ticket_issuance) is not ReproductionTicketIssuance:
172
+ raise TypeError("ticket_issuance must be exact")
173
+ self.ticket_issuance.__post_init__()
174
+ if type(self.next_state) is not ResidualLearningState:
175
+ raise TypeError("next_state must be exact")
176
+ self.next_state.__post_init__()
177
+ if self.next_state.state_sha256 == self.base_state_sha256:
178
+ raise ValueError("learning publication must advance state")
179
+ if (
180
+ self.ticket_issuance.stage_credit_receipt_sha256
181
+ != self.projection.stage_credit.receipt_sha256
182
+ ):
183
+ raise ValueError("ticket issuance differs from projected stage credit")
184
+ if (
185
+ self.ticket_issuance.generation
186
+ != self.projection.stage_credit.generation
187
+ or self.next_state.current_generation
188
+ != self.projection.stage_credit.generation
189
+ ):
190
+ raise ValueError("learning publication mixes generations")
191
+ object.__setattr__(
192
+ self,
193
+ "preparation_sha256",
194
+ _hash(_PREPARATION_DOMAIN, self._unsigned_record()),
195
+ )
196
+
197
+ def _unsigned_record(self) -> dict[str, object]:
198
+ return {
199
+ "schema_version": 1,
200
+ "transaction": {
201
+ "transaction_id": RESIDUAL_LEARNING_TRANSACTION_ID,
202
+ "transaction_version": RESIDUAL_LEARNING_TRANSACTION_VERSION,
203
+ "definition_sha256": self.transaction_definition_sha256,
204
+ },
205
+ "base_state_sha256": self.base_state_sha256,
206
+ "projection_sha256": self.projection.projection_sha256,
207
+ "ticket_issuance_sha256": self.ticket_issuance.issuance_sha256,
208
+ "next_state_sha256": self.next_state.state_sha256,
209
+ "publication_performed": False,
210
+ }
211
+
212
+ def to_record(self) -> dict[str, object]:
213
+ self.__post_init__()
214
+ return {
215
+ **self._unsigned_record(),
216
+ "projection": self.projection.to_record(),
217
+ "ticket_issuance": self.ticket_issuance.to_record(),
218
+ "preparation_sha256": self.preparation_sha256,
219
+ }
220
+
221
+
222
+ @dataclass(frozen=True, slots=True)
223
+ class ResidualLearningPublicationCommit:
224
+ """Receipt for one successful aggregate-state compare-and-swap."""
225
+
226
+ preparation_sha256: str
227
+ prior_state_sha256: str
228
+ committed_state_sha256: str
229
+ committed_revision: int
230
+ commit_sha256: str = field(init=False)
231
+
232
+ def __post_init__(self) -> None:
233
+ for name in (
234
+ "preparation_sha256",
235
+ "prior_state_sha256",
236
+ "committed_state_sha256",
237
+ ):
238
+ require_sha256(getattr(self, name), name)
239
+ if self.prior_state_sha256 == self.committed_state_sha256:
240
+ raise ValueError("commit must advance learning state")
241
+ if type(self.committed_revision) is not int or self.committed_revision <= 0:
242
+ raise ValueError("committed_revision must be positive")
243
+ object.__setattr__(
244
+ self,
245
+ "commit_sha256",
246
+ _hash(_COMMIT_DOMAIN, self._unsigned_record()),
247
+ )
248
+
249
+ def _unsigned_record(self) -> dict[str, object]:
250
+ return {
251
+ "schema_version": 1,
252
+ "preparation_sha256": self.preparation_sha256,
253
+ "prior_state_sha256": self.prior_state_sha256,
254
+ "committed_state_sha256": self.committed_state_sha256,
255
+ "committed_revision": self.committed_revision,
256
+ "publication": "single_aggregate_state_compare_and_swap",
257
+ }
258
+
259
+ def to_record(self) -> dict[str, object]:
260
+ self.__post_init__()
261
+ return {**self._unsigned_record(), "commit_sha256": self.commit_sha256}
262
+
263
+
264
+ @dataclass(slots=True)
265
+ class TransactionalResidualLearningStore:
266
+ """Prepare complete stage learning state and publish it atomically."""
267
+
268
+ projector: ResidualStageCreditProjector
269
+ _state: ResidualLearningState = field(
270
+ default_factory=ResidualLearningState.empty,
271
+ )
272
+ _prepared: dict[str, ResidualLearningPublicationPreparation] = field(
273
+ init=False,
274
+ default_factory=dict,
275
+ )
276
+
277
+ def __post_init__(self) -> None:
278
+ if type(self.projector) is not ResidualStageCreditProjector:
279
+ raise TypeError("projector must be an exact ResidualStageCreditProjector")
280
+ self.projector.__post_init__()
281
+ if type(self._state) is not ResidualLearningState:
282
+ raise TypeError("_state must be an exact ResidualLearningState")
283
+ self._state.__post_init__()
284
+
285
+ @property
286
+ def state(self) -> ResidualLearningState:
287
+ """Return the current read-only-by-ownership state revision."""
288
+
289
+ return self._state
290
+
291
+ def register_prior_provenance(
292
+ self,
293
+ values: Iterable[CandidateProposalProvenance],
294
+ ) -> ResidualLearningState:
295
+ """Atomically register seed or imported provenance before a stage."""
296
+
297
+ if self._prepared:
298
+ raise RuntimeError("cannot register provenance with an open preparation")
299
+ batch = tuple(values)
300
+ if not batch:
301
+ raise ValueError("prior provenance batch cannot be empty")
302
+ next_lineage = copy.deepcopy(self._state.earned_lineage)
303
+ next_lineage.register(batch)
304
+ next_state = ResidualLearningState(
305
+ broker_evidence=copy.deepcopy(self._state.broker_evidence),
306
+ earned_lineage=next_lineage,
307
+ current_generation=self._state.current_generation,
308
+ revision=self._state.revision + 1,
309
+ )
310
+ self._state = next_state
311
+ return next_state
312
+
313
+ def prepare(
314
+ self,
315
+ *,
316
+ pre_snapshot: ArchiveUtilitySnapshot,
317
+ post_snapshot: ArchiveUtilitySnapshot,
318
+ result: ResidualPortfolioEvolutionResult,
319
+ ) -> ResidualLearningPublicationPreparation:
320
+ """Project, preflight, and stage both learning ledgers without publishing."""
321
+
322
+ if self._prepared:
323
+ raise RuntimeError("only one residual learning preparation may be open")
324
+ base = self._state
325
+ projection = self.projector.project(
326
+ pre_snapshot=pre_snapshot,
327
+ post_snapshot=post_snapshot,
328
+ result=result,
329
+ )
330
+ generation = projection.stage_credit.generation
331
+ if generation <= base.current_generation:
332
+ raise ValueError("residual learning generations must increase strictly")
333
+
334
+ next_broker = copy.deepcopy(base.broker_evidence)
335
+ for outcome in projection.action_outcomes:
336
+ next_broker.append_outcome(outcome)
337
+ next_lineage = copy.deepcopy(base.earned_lineage)
338
+ next_lineage.register(projection.candidate_provenance)
339
+ issuance = next_lineage.observe(projection.stage_credit)
340
+ next_state = ResidualLearningState(
341
+ broker_evidence=next_broker,
342
+ earned_lineage=next_lineage,
343
+ current_generation=generation,
344
+ revision=base.revision + 1,
345
+ )
346
+ preparation = ResidualLearningPublicationPreparation(
347
+ base_state_sha256=base.state_sha256,
348
+ projection=projection,
349
+ ticket_issuance=issuance,
350
+ next_state=next_state,
351
+ )
352
+ if preparation.preparation_sha256 in self._prepared:
353
+ raise RuntimeError("learning preparation identity collision")
354
+ self._prepared[preparation.preparation_sha256] = preparation
355
+ return preparation
356
+
357
+ def abort(self, preparation: ResidualLearningPublicationPreparation) -> None:
358
+ preparation.__post_init__()
359
+ known = self._prepared.pop(preparation.preparation_sha256, None)
360
+ if known is not preparation:
361
+ raise ValueError("preparation is absent, stale, or already closed")
362
+
363
+ def commit(
364
+ self,
365
+ preparation: ResidualLearningPublicationPreparation,
366
+ ) -> ResidualLearningPublicationCommit:
367
+ """Publish one fully prepared successor state with a stale-state guard."""
368
+
369
+ preparation.__post_init__()
370
+ known = self._prepared.get(preparation.preparation_sha256)
371
+ if known is not preparation:
372
+ raise ValueError("preparation is absent, stale, or already closed")
373
+ if self._state.state_sha256 != preparation.base_state_sha256:
374
+ raise RuntimeError("learning state advanced after preparation")
375
+ prior = self._state
376
+ # This assignment is the only publication mutation. Both underlying
377
+ # ledgers were already validated on private copies in ``prepare``.
378
+ self._state = preparation.next_state
379
+ del self._prepared[preparation.preparation_sha256]
380
+ return ResidualLearningPublicationCommit(
381
+ preparation_sha256=preparation.preparation_sha256,
382
+ prior_state_sha256=prior.state_sha256,
383
+ committed_state_sha256=self._state.state_sha256,
384
+ committed_revision=self._state.revision,
385
+ )
386
+
387
+
388
+ __all__ = [
389
+ "RESIDUAL_LEARNING_TRANSACTION_DEFINITION_SHA256",
390
+ "RESIDUAL_LEARNING_TRANSACTION_ID",
391
+ "RESIDUAL_LEARNING_TRANSACTION_VERSION",
392
+ "ResidualLearningPublicationCommit",
393
+ "ResidualLearningPublicationPreparation",
394
+ "ResidualLearningState",
395
+ "TransactionalResidualLearningStore",
396
+ ]