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,336 @@
1
+ """Provider-neutral contracts for prompt-visible parent measurements.
2
+
3
+ The selector may reason about an already evaluated parent, but it must not
4
+ infer whether a displayed number is a raw physical observation or a value
5
+ resolved for optimization. These immutable values bind both views to one
6
+ candidate occurrence, evaluator, objective-resolution law, and decision-metric
7
+ schema. They contain no provider or workload vocabulary.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ import hashlib
13
+ import json
14
+ import math
15
+ import re
16
+ from dataclasses import dataclass, field
17
+
18
+ from agent_evolve.core.optimization_semantics import MetricRole
19
+ from agent_evolve.domain.patch import require_sha256
20
+ from agent_evolve.ports.decision_metric_projection import DecisionMetricProjection
21
+
22
+
23
+ _TOKEN = re.compile(r"^[a-z][a-z0-9_.-]{0,127}$")
24
+ _CANDIDATE_ID = re.compile(r"^[A-Za-z0-9][A-Za-z0-9_.:-]{0,255}$")
25
+ _METRIC_ID = re.compile(r"^[a-z][a-z0-9_.:-]{0,191}$")
26
+ _CANDIDATE_DOMAIN = b"agent-evolve:parent-measurement-candidate:v1\x00"
27
+ _PROJECTION_DOMAIN = b"agent-evolve:parent-measurement-projection:v1\x00"
28
+ _BINDING_DOMAIN = b"agent-evolve:parent-measurement-binding:v1\x00"
29
+
30
+
31
+ def _canonical_json(value: object) -> bytes:
32
+ return json.dumps(
33
+ value,
34
+ allow_nan=False,
35
+ ensure_ascii=True,
36
+ separators=(",", ":"),
37
+ sort_keys=True,
38
+ ).encode("ascii", errors="strict")
39
+
40
+
41
+ def _hash(domain: bytes, value: object) -> str:
42
+ return hashlib.sha256(domain + _canonical_json(value)).hexdigest()
43
+
44
+
45
+ def _token(value: object, name: str) -> str:
46
+ if type(value) is not str or _TOKEN.fullmatch(value) is None:
47
+ raise ValueError(f"{name} must use the closed token grammar")
48
+ return value
49
+
50
+
51
+ def _metric_id(value: object, name: str) -> str:
52
+ if type(value) is not str or _METRIC_ID.fullmatch(value) is None:
53
+ raise ValueError(f"{name} must use the closed metric grammar")
54
+ return value
55
+
56
+
57
+ def _finite(value: object, name: str) -> float:
58
+ if type(value) is not float or not math.isfinite(value):
59
+ raise TypeError(f"{name} must be a finite canonical float")
60
+ return value
61
+
62
+
63
+ @dataclass(frozen=True, slots=True)
64
+ class ParentMeasurementProjection:
65
+ """Authority and metric schema under which parent values are projected."""
66
+
67
+ benchmark_sha256: str
68
+ session_sha256: str
69
+ decision_metrics: DecisionMetricProjection
70
+ evaluator_id: str
71
+ evaluator_version: int
72
+ evaluator_context_sha256: str
73
+ objective_resolution_policy_id: str
74
+ objective_resolution_policy_version: int
75
+ objective_resolution_definition_sha256: str
76
+ definition_sha256: str = field(init=False, default="")
77
+
78
+ def __post_init__(self) -> None:
79
+ require_sha256(self.benchmark_sha256, "benchmark_sha256")
80
+ require_sha256(self.session_sha256, "session_sha256")
81
+ if type(self.decision_metrics) is not DecisionMetricProjection:
82
+ raise TypeError("decision_metrics must be exact DecisionMetricProjection")
83
+ self.decision_metrics.__post_init__()
84
+ _token(self.evaluator_id, "evaluator_id")
85
+ if type(self.evaluator_version) is not int or self.evaluator_version <= 0:
86
+ raise ValueError("evaluator_version must be a positive exact integer")
87
+ require_sha256(self.evaluator_context_sha256, "evaluator_context_sha256")
88
+ _token(
89
+ self.objective_resolution_policy_id,
90
+ "objective_resolution_policy_id",
91
+ )
92
+ if (
93
+ type(self.objective_resolution_policy_version) is not int
94
+ or self.objective_resolution_policy_version <= 0
95
+ ):
96
+ raise ValueError("objective_resolution_policy_version must be positive")
97
+ require_sha256(
98
+ self.objective_resolution_definition_sha256,
99
+ "objective_resolution_definition_sha256",
100
+ )
101
+ computed = _hash(_PROJECTION_DOMAIN, self._unsigned_record())
102
+ if self.definition_sha256 not in ("", computed):
103
+ raise ValueError("definition_sha256 differs from parent projection")
104
+ object.__setattr__(self, "definition_sha256", computed)
105
+
106
+ @property
107
+ def evaluator_identity(self) -> tuple[str, int, str]:
108
+ self.__post_init__()
109
+ return (
110
+ self.evaluator_id,
111
+ self.evaluator_version,
112
+ self.evaluator_context_sha256,
113
+ )
114
+
115
+ @property
116
+ def objective_resolution_identity(self) -> tuple[str, int, str]:
117
+ self.__post_init__()
118
+ return (
119
+ self.objective_resolution_policy_id,
120
+ self.objective_resolution_policy_version,
121
+ self.objective_resolution_definition_sha256,
122
+ )
123
+
124
+ def _unsigned_record(self) -> dict[str, object]:
125
+ return {
126
+ "schema_version": 1,
127
+ "benchmark_sha256": self.benchmark_sha256,
128
+ "session_sha256": self.session_sha256,
129
+ "decision_metric_projection": self.decision_metrics.to_record(),
130
+ "evaluator": {
131
+ "evaluator_id": self.evaluator_id,
132
+ "evaluator_version": self.evaluator_version,
133
+ "evaluator_context_sha256": self.evaluator_context_sha256,
134
+ },
135
+ "objective_resolution": {
136
+ "policy_id": self.objective_resolution_policy_id,
137
+ "policy_version": self.objective_resolution_policy_version,
138
+ "definition_sha256": (self.objective_resolution_definition_sha256),
139
+ },
140
+ }
141
+
142
+ def to_record(self) -> dict[str, object]:
143
+ self.__post_init__()
144
+ return {**self._unsigned_record(), "definition_sha256": self.definition_sha256}
145
+
146
+
147
+ @dataclass(frozen=True, slots=True)
148
+ class ParentCandidateMeasurementIdentity:
149
+ """Exact selected occurrence whose completed measurement is displayed."""
150
+
151
+ candidate_id: str
152
+ configuration_sha256: str
153
+ configuration_artifact_sha256: str
154
+ proposal_sequence: int
155
+ operator_invocation_id: str | None
156
+ identity_sha256: str = field(init=False, default="")
157
+
158
+ def __post_init__(self) -> None:
159
+ if (
160
+ type(self.candidate_id) is not str
161
+ or _CANDIDATE_ID.fullmatch(self.candidate_id) is None
162
+ ):
163
+ raise ValueError("candidate_id must use the closed candidate grammar")
164
+ require_sha256(self.configuration_sha256, "configuration_sha256")
165
+ require_sha256(
166
+ self.configuration_artifact_sha256,
167
+ "configuration_artifact_sha256",
168
+ )
169
+ if type(self.proposal_sequence) is not int or self.proposal_sequence < 0:
170
+ raise ValueError("proposal_sequence must be a non-negative exact integer")
171
+ if self.operator_invocation_id is not None and (
172
+ type(self.operator_invocation_id) is not str
173
+ or _CANDIDATE_ID.fullmatch(self.operator_invocation_id) is None
174
+ ):
175
+ raise ValueError("operator_invocation_id must be canonical or None")
176
+ computed = _hash(_CANDIDATE_DOMAIN, self._unsigned_record())
177
+ if self.identity_sha256 not in ("", computed):
178
+ raise ValueError("identity_sha256 differs from parent occurrence")
179
+ object.__setattr__(self, "identity_sha256", computed)
180
+
181
+ def _unsigned_record(self) -> dict[str, object]:
182
+ return {
183
+ "candidate_id": self.candidate_id,
184
+ "configuration_sha256": self.configuration_sha256,
185
+ "configuration_artifact_sha256": self.configuration_artifact_sha256,
186
+ "proposal_sequence": self.proposal_sequence,
187
+ "operator_invocation_id": self.operator_invocation_id,
188
+ }
189
+
190
+ def to_record(self) -> dict[str, object]:
191
+ self.__post_init__()
192
+ return {**self._unsigned_record(), "identity_sha256": self.identity_sha256}
193
+
194
+
195
+ @dataclass(frozen=True, slots=True)
196
+ class ParentRawScientificMetricValue:
197
+ """One evaluator-scale observation before objective resolution."""
198
+
199
+ metric_id: str
200
+ semantic_metric_id: str
201
+ value_name: str
202
+ role: MetricRole
203
+ value: float
204
+
205
+ def __post_init__(self) -> None:
206
+ _metric_id(self.metric_id, "metric_id")
207
+ _metric_id(self.semantic_metric_id, "semantic_metric_id")
208
+ _token(self.value_name, "value_name")
209
+ if type(self.role) is not MetricRole or self.role is MetricRole.DIAGNOSTIC:
210
+ raise TypeError("role must be a decision-relevant exact MetricRole")
211
+ _finite(self.value, "raw scientific value")
212
+
213
+ def to_record(self) -> dict[str, object]:
214
+ self.__post_init__()
215
+ return {
216
+ "metric_id": self.metric_id,
217
+ "semantic_metric_id": self.semantic_metric_id,
218
+ "value_name": self.value_name,
219
+ "role": self.role.value,
220
+ "value_hex": self.value.hex(),
221
+ }
222
+
223
+
224
+ @dataclass(frozen=True, slots=True)
225
+ class ParentDecisionMetricValue:
226
+ """One value consumed by optimization after declared resolution."""
227
+
228
+ metric_id: str
229
+ value: float
230
+
231
+ def __post_init__(self) -> None:
232
+ _metric_id(self.metric_id, "metric_id")
233
+ _finite(self.value, "decision metric value")
234
+
235
+ def to_record(self) -> dict[str, str]:
236
+ self.__post_init__()
237
+ return {"metric_id": self.metric_id, "value_hex": self.value.hex()}
238
+
239
+
240
+ @dataclass(frozen=True, slots=True)
241
+ class ParentMeasurementBinding:
242
+ """Self-authenticating completed-parent measurement shown to a selector."""
243
+
244
+ projection: ParentMeasurementProjection
245
+ candidate: ParentCandidateMeasurementIdentity
246
+ detailed_evaluation_sha256: str
247
+ objective_resolution_receipt_sha256: str | None
248
+ raw_scientific_metrics: tuple[ParentRawScientificMetricValue, ...]
249
+ decision_metrics: tuple[ParentDecisionMetricValue, ...]
250
+ binding_sha256: str = field(init=False, default="")
251
+
252
+ def __post_init__(self) -> None:
253
+ if type(self.projection) is not ParentMeasurementProjection:
254
+ raise TypeError("projection must be exact ParentMeasurementProjection")
255
+ self.projection.__post_init__()
256
+ if type(self.candidate) is not ParentCandidateMeasurementIdentity:
257
+ raise TypeError("candidate must be exact parent candidate identity")
258
+ self.candidate.__post_init__()
259
+ require_sha256(
260
+ self.detailed_evaluation_sha256,
261
+ "detailed_evaluation_sha256",
262
+ )
263
+ if self.objective_resolution_receipt_sha256 is not None:
264
+ require_sha256(
265
+ self.objective_resolution_receipt_sha256,
266
+ "objective_resolution_receipt_sha256",
267
+ )
268
+ if type(self.raw_scientific_metrics) is not tuple or any(
269
+ type(value) is not ParentRawScientificMetricValue
270
+ for value in self.raw_scientific_metrics
271
+ ):
272
+ raise TypeError("raw_scientific_metrics must contain exact values")
273
+ if type(self.decision_metrics) is not tuple or any(
274
+ type(value) is not ParentDecisionMetricValue
275
+ for value in self.decision_metrics
276
+ ):
277
+ raise TypeError("decision_metrics must contain exact values")
278
+ for value in self.raw_scientific_metrics:
279
+ value.__post_init__()
280
+ for value in self.decision_metrics:
281
+ value.__post_init__()
282
+ expected = self.projection.decision_metrics.metrics
283
+ expected_ids = tuple(value.metric_id for value in expected)
284
+ raw_ids = tuple(value.metric_id for value in self.raw_scientific_metrics)
285
+ decision_ids = tuple(value.metric_id for value in self.decision_metrics)
286
+ if raw_ids != expected_ids or decision_ids != expected_ids:
287
+ raise ValueError("parent measurement metric schema differs from projection")
288
+ for raw, metric in zip(self.raw_scientific_metrics, expected, strict=True):
289
+ if (
290
+ raw.semantic_metric_id != metric.semantic_metric_id
291
+ or raw.value_name != metric.value_name
292
+ or raw.role is not metric.role
293
+ ):
294
+ raise ValueError("raw metric metadata differs from decision projection")
295
+ computed = _hash(_BINDING_DOMAIN, self._unsigned_record())
296
+ if self.binding_sha256 not in ("", computed):
297
+ raise ValueError("binding_sha256 differs from parent measurement")
298
+ object.__setattr__(self, "binding_sha256", computed)
299
+
300
+ def _unsigned_record(self) -> dict[str, object]:
301
+ return {
302
+ "schema_version": 1,
303
+ "visibility": "completed_selected_parent_before_current_wave",
304
+ "projection": self.projection.to_record(),
305
+ "candidate": self.candidate.to_record(),
306
+ "detailed_evaluation_sha256": self.detailed_evaluation_sha256,
307
+ "objective_resolution_receipt_sha256": (
308
+ self.objective_resolution_receipt_sha256
309
+ ),
310
+ "raw_scientific_metrics": [
311
+ value.to_record() for value in self.raw_scientific_metrics
312
+ ],
313
+ "decision_metrics": [value.to_record() for value in self.decision_metrics],
314
+ "interpretation": {
315
+ "raw_scientific_metrics": (
316
+ "evaluator-scale observations retained without replacement"
317
+ ),
318
+ "decision_metrics": (
319
+ "values consumed by optimization under the bound resolution law"
320
+ ),
321
+ "current_wave_outcomes_included": False,
322
+ },
323
+ }
324
+
325
+ def to_record(self) -> dict[str, object]:
326
+ self.__post_init__()
327
+ return {**self._unsigned_record(), "binding_sha256": self.binding_sha256}
328
+
329
+
330
+ __all__ = [
331
+ "ParentCandidateMeasurementIdentity",
332
+ "ParentDecisionMetricValue",
333
+ "ParentMeasurementBinding",
334
+ "ParentMeasurementProjection",
335
+ "ParentRawScientificMetricValue",
336
+ ]