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,363 @@
1
+ """Workload-neutral score authorities for sealed materialized actions.
2
+
3
+ These scorers preserve two hypotheses that should not be collapsed into a
4
+ transferred learned model:
5
+
6
+ * the proposal engine's native within-expert semantic ordering; and
7
+ * strictly prior target-campaign empirical archive return.
8
+
9
+ Both implement the same opaque prequential score port used by learned,
10
+ numerical, proxy, and future optimizer-engine authorities.
11
+ """
12
+
13
+ from __future__ import annotations
14
+
15
+ from dataclasses import dataclass, field
16
+ import hashlib
17
+ import json
18
+ import math
19
+ import re
20
+
21
+ from agent_evolve.application.materialized_action_broker import (
22
+ EMPIRICAL_RETURN_ESTIMATOR_DEFINITION_SHA256,
23
+ MATERIALIZED_ACTION_BROKER_DEFINITION_SHA256,
24
+ MaterializedActionDescriptor,
25
+ MaterializedActionEvidenceLedger,
26
+ RegretBrokeredMaterializedActionPolicy,
27
+ )
28
+ from agent_evolve.application.prequential_score_portfolio import (
29
+ MaterializedActionScore,
30
+ MaterializedActionScoreBatch,
31
+ )
32
+ from agent_evolve.application.residual_portfolio_evolution import (
33
+ MaterializedActionProposalBatch,
34
+ ResidualPortfolioDecisionRequest,
35
+ )
36
+ from agent_evolve.domain.patch import require_sha256
37
+
38
+
39
+ NATIVE_RANK_ACTION_SCORER_VERSION = 1
40
+ TARGET_EMPIRICAL_RETURN_ACTION_SCORER_VERSION = 1
41
+ _TOKEN = re.compile(r"^[a-z][a-z0-9_.:-]{0,255}$")
42
+ _NATIVE_DEFINITION_DOMAIN = (
43
+ b"agent-evolve:native-rank-action-score-authority:v1\x00"
44
+ )
45
+ _NATIVE_EVIDENCE_DOMAIN = (
46
+ b"agent-evolve:native-rank-action-score-evidence:v1\x00"
47
+ )
48
+ _EMPIRICAL_DEFINITION_DOMAIN = (
49
+ b"agent-evolve:target-empirical-return-score-authority:v1\x00"
50
+ )
51
+ _EMPIRICAL_EVIDENCE_DOMAIN = (
52
+ b"agent-evolve:target-empirical-return-score-evidence:v1\x00"
53
+ )
54
+
55
+
56
+ def _canonical_json(value: object) -> bytes:
57
+ return json.dumps(
58
+ value,
59
+ allow_nan=False,
60
+ ensure_ascii=True,
61
+ separators=(",", ":"),
62
+ sort_keys=True,
63
+ ).encode("ascii", errors="strict")
64
+
65
+
66
+ def _hash(domain: bytes, value: object) -> str:
67
+ return hashlib.sha256(domain + _canonical_json(value)).hexdigest()
68
+
69
+
70
+ def _token(value: str, *, name: str) -> None:
71
+ if type(value) is not str or _TOKEN.fullmatch(value) is None:
72
+ raise ValueError(f"{name} must use the closed token grammar")
73
+
74
+
75
+ def _sealed_universe(
76
+ request: ResidualPortfolioDecisionRequest,
77
+ proposals: tuple[MaterializedActionProposalBatch, ...],
78
+ ) -> tuple[
79
+ tuple[str, ...],
80
+ tuple[MaterializedActionDescriptor, ...],
81
+ ]:
82
+ if type(request) is not ResidualPortfolioDecisionRequest:
83
+ raise TypeError("request must be exact")
84
+ request.__post_init__()
85
+ if type(proposals) is not tuple or not proposals:
86
+ raise ValueError("proposals must be a non-empty exact tuple")
87
+ for proposal in proposals:
88
+ if type(proposal) is not MaterializedActionProposalBatch:
89
+ raise TypeError("proposals must contain exact batches")
90
+ proposal.__post_init__()
91
+ proposal.require_request(request)
92
+ proposal_sha256s = tuple(
93
+ sorted(value.proposal_sha256 for value in proposals)
94
+ )
95
+ actions = tuple(
96
+ action for proposal in proposals for action in proposal.actions
97
+ )
98
+ if len(actions) != len({value.action_sha256 for value in actions}):
99
+ raise ValueError("proposal union repeats an action identity")
100
+ if any(
101
+ value.context.decision_index != request.decision_index
102
+ for value in actions
103
+ ):
104
+ raise ValueError("action context crosses the decision cutoff")
105
+ return proposal_sha256s, actions
106
+
107
+
108
+ @dataclass(frozen=True, slots=True)
109
+ class NativeRankMaterializedActionScorer:
110
+ """Retain the engine's native rank as an independent cold-start lane."""
111
+
112
+ scorer_id: str = "provider_native_rank"
113
+ scorer_version: int = NATIVE_RANK_ACTION_SCORER_VERSION
114
+ definition_sha256: str = field(init=False)
115
+
116
+ def __post_init__(self) -> None:
117
+ _token(self.scorer_id, name="scorer_id")
118
+ if (
119
+ type(self.scorer_version) is not int
120
+ or self.scorer_version <= 0
121
+ ):
122
+ raise ValueError("scorer_version must be positive")
123
+ object.__setattr__(
124
+ self,
125
+ "definition_sha256",
126
+ _hash(
127
+ _NATIVE_DEFINITION_DOMAIN,
128
+ {
129
+ "schema_version": 1,
130
+ "scorer_id": self.scorer_id,
131
+ "scorer_version": self.scorer_version,
132
+ "score": "reciprocal_positive_exact_native_rank",
133
+ "cross_expert_calibration_claimed": False,
134
+ "candidate_outcomes_observed": False,
135
+ "workload_model_provider_branches": False,
136
+ },
137
+ ),
138
+ )
139
+
140
+ async def score(
141
+ self,
142
+ request: ResidualPortfolioDecisionRequest,
143
+ proposals: tuple[MaterializedActionProposalBatch, ...],
144
+ ) -> MaterializedActionScoreBatch:
145
+ self.__post_init__()
146
+ proposal_sha256s, raw_actions = _sealed_universe(
147
+ request,
148
+ proposals,
149
+ )
150
+ actions = tuple(raw_actions)
151
+ scores = tuple(
152
+ sorted(
153
+ (
154
+ MaterializedActionScore(
155
+ action_sha256=action.action_sha256,
156
+ value=float(1.0 / action.native_rank),
157
+ )
158
+ for action in actions
159
+ ),
160
+ key=lambda value: value.action_sha256,
161
+ )
162
+ )
163
+ evidence_sha256 = _hash(
164
+ _NATIVE_EVIDENCE_DOMAIN,
165
+ {
166
+ "scorer_definition_sha256": self.definition_sha256,
167
+ "residual_request_sha256": request.request_sha256,
168
+ "proposal_sha256s": list(proposal_sha256s),
169
+ "native_ranks": [
170
+ {
171
+ "action_sha256": action.action_sha256,
172
+ "expert_id": action.expert_id,
173
+ "native_rank": action.native_rank,
174
+ }
175
+ for action in sorted(
176
+ actions,
177
+ key=lambda value: value.action_sha256,
178
+ )
179
+ ],
180
+ "candidate_outcomes_observed": False,
181
+ },
182
+ )
183
+ return MaterializedActionScoreBatch(
184
+ scorer_id=self.scorer_id,
185
+ scorer_version=self.scorer_version,
186
+ scorer_definition_sha256=self.definition_sha256,
187
+ residual_request_sha256=request.request_sha256,
188
+ proposal_sha256s=proposal_sha256s,
189
+ scores=scores,
190
+ candidate_outcomes_observed=False,
191
+ evidence_sha256=evidence_sha256,
192
+ )
193
+
194
+
195
+ @dataclass(frozen=True, slots=True)
196
+ class TargetEmpiricalReturnMaterializedActionScorer:
197
+ """Rank by target-campaign empirical return with native-rank cold start."""
198
+
199
+ broker: RegretBrokeredMaterializedActionPolicy = field(
200
+ repr=False,
201
+ compare=False,
202
+ )
203
+ scorer_id: str = "target_empirical_return"
204
+ native_rank_tie_scale: float = 1e-6
205
+ scorer_version: int = TARGET_EMPIRICAL_RETURN_ACTION_SCORER_VERSION
206
+ definition_sha256: str = field(init=False)
207
+
208
+ def __post_init__(self) -> None:
209
+ _token(self.scorer_id, name="scorer_id")
210
+ if (
211
+ type(self.scorer_version) is not int
212
+ or self.scorer_version <= 0
213
+ ):
214
+ raise ValueError("scorer_version must be positive")
215
+ if type(self.broker) is not RegretBrokeredMaterializedActionPolicy:
216
+ raise TypeError("broker must be exact")
217
+ self.broker.__post_init__()
218
+ if self.broker.return_value is not None:
219
+ raise ValueError(
220
+ "target empirical authority cannot contain a transfer prior"
221
+ )
222
+ if type(self.broker.ledger) is not MaterializedActionEvidenceLedger:
223
+ raise TypeError("broker ledger must be exact")
224
+ if (
225
+ type(self.native_rank_tie_scale) is not float
226
+ or not math.isfinite(self.native_rank_tie_scale)
227
+ or not 0.0 < self.native_rank_tie_scale < 1e-3
228
+ ):
229
+ raise ValueError(
230
+ "native_rank_tie_scale must be a finite float in (0, 1e-3)"
231
+ )
232
+ object.__setattr__(
233
+ self,
234
+ "definition_sha256",
235
+ _hash(
236
+ _EMPIRICAL_DEFINITION_DOMAIN,
237
+ {
238
+ "schema_version": 1,
239
+ "scorer_id": self.scorer_id,
240
+ "scorer_version": self.scorer_version,
241
+ "broker_definition_sha256": (
242
+ MATERIALIZED_ACTION_BROKER_DEFINITION_SHA256
243
+ ),
244
+ "return_estimator_definition_sha256": (
245
+ EMPIRICAL_RETURN_ESTIMATOR_DEFINITION_SHA256
246
+ ),
247
+ "hierarchical_kappa_hex": (
248
+ self.broker.hierarchical_kappa.hex()
249
+ ),
250
+ "score": (
251
+ "empirical_return_mean_plus_remaining_unit_interval_"
252
+ "times_native_rank_tie"
253
+ ),
254
+ "native_rank_tie_scale_hex": (
255
+ self.native_rank_tie_scale.hex()
256
+ ),
257
+ "candidate_outcomes_observed": False,
258
+ "strictly_prior_target_outcomes_only": True,
259
+ "workload_model_provider_branches": False,
260
+ },
261
+ ),
262
+ )
263
+
264
+ def _validate_cutoff(
265
+ self,
266
+ request: ResidualPortfolioDecisionRequest,
267
+ ) -> None:
268
+ for outcome in self.broker.ledger.outcomes:
269
+ if (
270
+ outcome.action.context.decision_index
271
+ >= request.decision_index
272
+ ):
273
+ raise ValueError(
274
+ "empirical return ledger crosses the decision cutoff"
275
+ )
276
+ for credit in self.broker.ledger.delayed_credits:
277
+ if credit.available_at_decision_index > request.decision_index:
278
+ raise ValueError(
279
+ "delayed credit is unavailable at the decision cutoff"
280
+ )
281
+ for resolved in self.broker.ledger.resolved_returns:
282
+ if resolved.available_at_decision_index > request.decision_index:
283
+ raise ValueError(
284
+ "resolved return is unavailable at the decision cutoff"
285
+ )
286
+
287
+ async def score(
288
+ self,
289
+ request: ResidualPortfolioDecisionRequest,
290
+ proposals: tuple[MaterializedActionProposalBatch, ...],
291
+ ) -> MaterializedActionScoreBatch:
292
+ self.__post_init__()
293
+ proposal_sha256s, raw_actions = _sealed_universe(
294
+ request,
295
+ proposals,
296
+ )
297
+ self._validate_cutoff(request)
298
+ actions = tuple(raw_actions)
299
+ rows: list[dict[str, object]] = []
300
+ scores: list[MaterializedActionScore] = []
301
+ for action in sorted(
302
+ actions,
303
+ key=lambda value: value.action_sha256,
304
+ ):
305
+ broker_score = self.broker.score(action)
306
+ empirical_mean = broker_score.return_estimate.mean
307
+ value = empirical_mean + (
308
+ (1.0 - empirical_mean)
309
+ * self.native_rank_tie_scale
310
+ / action.native_rank
311
+ )
312
+ scores.append(
313
+ MaterializedActionScore(
314
+ action_sha256=action.action_sha256,
315
+ value=float(value),
316
+ )
317
+ )
318
+ rows.append(
319
+ {
320
+ "action_sha256": action.action_sha256,
321
+ "native_rank": action.native_rank,
322
+ "empirical_mean_hex": empirical_mean.hex(),
323
+ "score_hex": value.hex(),
324
+ "broker_score": broker_score.to_record(),
325
+ }
326
+ )
327
+ evidence_sha256 = _hash(
328
+ _EMPIRICAL_EVIDENCE_DOMAIN,
329
+ {
330
+ "scorer_definition_sha256": self.definition_sha256,
331
+ "residual_request_sha256": request.request_sha256,
332
+ "proposal_sha256s": list(proposal_sha256s),
333
+ "ledger_counts": {
334
+ "outcomes": len(self.broker.ledger.outcomes),
335
+ "delayed_credits": len(
336
+ self.broker.ledger.delayed_credits
337
+ ),
338
+ "resolved_returns": len(
339
+ self.broker.ledger.resolved_returns
340
+ ),
341
+ },
342
+ "rows": rows,
343
+ "candidate_outcomes_observed": False,
344
+ },
345
+ )
346
+ return MaterializedActionScoreBatch(
347
+ scorer_id=self.scorer_id,
348
+ scorer_version=self.scorer_version,
349
+ scorer_definition_sha256=self.definition_sha256,
350
+ residual_request_sha256=request.request_sha256,
351
+ proposal_sha256s=proposal_sha256s,
352
+ scores=tuple(scores),
353
+ candidate_outcomes_observed=False,
354
+ evidence_sha256=evidence_sha256,
355
+ )
356
+
357
+
358
+ __all__ = [
359
+ "NATIVE_RANK_ACTION_SCORER_VERSION",
360
+ "TARGET_EMPIRICAL_RETURN_ACTION_SCORER_VERSION",
361
+ "NativeRankMaterializedActionScorer",
362
+ "TargetEmpiricalReturnMaterializedActionScorer",
363
+ ]
@@ -0,0 +1,116 @@
1
+ """Workload-neutral structural identities for parent-relative finite actions.
2
+
3
+ Option identifiers are intentionally opaque and need not remain stable across
4
+ parents. Search policies that learn or diversify across parent lanes therefore
5
+ need an identity derived from the action itself rather than from its label.
6
+ This module exposes exact changed JSON paths and the coarser ``(family, paths)``
7
+ signature from sealed configurations. It contains no workload names, objective
8
+ values, evaluator outcomes, or prompt text.
9
+ """
10
+
11
+ from __future__ import annotations
12
+
13
+ from agent_evolve.domain.finite_variation import FiniteVariationContract
14
+ from agent_evolve.domain.ids import CandidateId
15
+ from agent_evolve.domain.patch import ArrayIndex, JsonPath, ObjectKey
16
+ from agent_evolve.policies.variation.typed_patch import derive_patch
17
+
18
+
19
+ ActionStructuralSignature = tuple[str, tuple[str, ...]]
20
+
21
+
22
+ def _path_text(path: JsonPath) -> str:
23
+ parts = ["$"]
24
+ for segment in path.segments:
25
+ if type(segment) is ObjectKey:
26
+ parts.append(f".{segment.value}")
27
+ elif type(segment) is ArrayIndex:
28
+ parts.append(f"[{segment.value}]")
29
+ else: # pragma: no cover - JsonPath closes the segment union.
30
+ raise AssertionError("unsupported JSON-path segment")
31
+ return "".join(parts)
32
+
33
+
34
+ def parent_relative_changed_paths_by_option(
35
+ contract: FiniteVariationContract,
36
+ ) -> dict[str, tuple[str, ...]]:
37
+ """Return canonical changed-path sets for every action in ``contract``."""
38
+
39
+ typed_paths = parent_relative_changed_json_paths_by_option(contract)
40
+ return {
41
+ option_id: tuple(sorted(_path_text(path) for path in paths))
42
+ for option_id, paths in typed_paths.items()
43
+ }
44
+
45
+
46
+ def parent_relative_changed_json_paths_by_option(
47
+ contract: FiniteVariationContract,
48
+ ) -> dict[str, tuple[JsonPath, ...]]:
49
+ """Return exact typed parent-relative paths for every sealed action.
50
+
51
+ Keeping this typed projection public lets structural controllers compare
52
+ path overlap once without repeatedly revalidating a large finite contract
53
+ or relying on ambiguous rendered JSON-path strings.
54
+ """
55
+
56
+ if type(contract) is not FiniteVariationContract:
57
+ raise TypeError("contract must be an exact FiniteVariationContract")
58
+ contract.__post_init__()
59
+ base = CandidateId("candidate_action_signature_parent")
60
+ target = CandidateId("candidate_action_signature_child")
61
+ return {
62
+ option.option_id: tuple(
63
+ sorted(
64
+ (
65
+ operation.path
66
+ for operation in derive_patch(
67
+ contract.parent_configuration,
68
+ option.child_configuration,
69
+ base_candidate_id=base,
70
+ target_candidate_id=target,
71
+ ).operations
72
+ ),
73
+ key=lambda path: path.schema_identity,
74
+ )
75
+ )
76
+ for option in contract.options
77
+ }
78
+
79
+
80
+ def parent_relative_path_sets_are_disjoint(
81
+ left: tuple[JsonPath, ...],
82
+ right: tuple[JsonPath, ...],
83
+ ) -> bool:
84
+ """Return whether two already-derived typed patch path sets are disjoint."""
85
+
86
+ if type(left) is not tuple or type(right) is not tuple or not left or not right:
87
+ raise ValueError("path sets must be non-empty exact tuples")
88
+ if any(type(value) is not JsonPath for value in (*left, *right)):
89
+ raise TypeError("path sets must contain exact JsonPath values")
90
+ return not any(
91
+ left_path.segments == right_path.segments[: len(left_path.segments)]
92
+ or right_path.segments == left_path.segments[: len(right_path.segments)]
93
+ for left_path in left
94
+ for right_path in right
95
+ )
96
+
97
+
98
+ def action_structural_signatures_by_option(
99
+ contract: FiniteVariationContract,
100
+ ) -> dict[str, ActionStructuralSignature]:
101
+ """Return canonical family-plus-path identities for every sealed action."""
102
+
103
+ paths = parent_relative_changed_paths_by_option(contract)
104
+ return {
105
+ option.option_id: (option.family, paths[option.option_id])
106
+ for option in contract.options
107
+ }
108
+
109
+
110
+ __all__ = [
111
+ "ActionStructuralSignature",
112
+ "action_structural_signatures_by_option",
113
+ "parent_relative_changed_json_paths_by_option",
114
+ "parent_relative_changed_paths_by_option",
115
+ "parent_relative_path_sets_are_disjoint",
116
+ ]