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.
- agent_evolve/__init__.py +722 -0
- agent_evolve/agentic.py +2800 -0
- agent_evolve/api.py +767 -0
- agent_evolve/application/__init__.py +1580 -0
- agent_evolve/application/action_allocation.py +744 -0
- agent_evolve/application/action_allocation_frame.py +347 -0
- agent_evolve/application/action_allocation_frame_commit.py +185 -0
- agent_evolve/application/action_allocation_frame_commit_v3.py +184 -0
- agent_evolve/application/action_allocation_frame_v3.py +338 -0
- agent_evolve/application/action_archive_value.py +497 -0
- agent_evolve/application/action_evidence_consistency.py +455 -0
- agent_evolve/application/action_forecast_partitioning.py +1471 -0
- agent_evolve/application/action_metric_projection.py +211 -0
- agent_evolve/application/action_role_value.py +680 -0
- agent_evolve/application/action_score_authorities.py +363 -0
- agent_evolve/application/action_structural_signature.py +116 -0
- agent_evolve/application/action_target_realization.py +402 -0
- agent_evolve/application/agentic_evolution.py +7734 -0
- agent_evolve/application/agentic_portfolio_residual_expert.py +835 -0
- agent_evolve/application/anchor_residual_identification.py +463 -0
- agent_evolve/application/archive_conditioned_action_target.py +208 -0
- agent_evolve/application/artifact_journal.py +246 -0
- agent_evolve/application/artifact_replay.py +347 -0
- agent_evolve/application/budgeted_optimizer.py +1828 -0
- agent_evolve/application/calibrated_campaign.py +485 -0
- agent_evolve/application/calibrated_current_prefix_forecast_opportunity.py +322 -0
- agent_evolve/application/calibrated_positive_gain_opportunity.py +1581 -0
- agent_evolve/application/campaign_capacity_recourse.py +254 -0
- agent_evolve/application/campaign_contextual_outcomes.py +119 -0
- agent_evolve/application/campaign_diagnostic_blocks.py +930 -0
- agent_evolve/application/campaign_evidence_registry.py +262 -0
- agent_evolve/application/campaign_execution.py +2537 -0
- agent_evolve/application/campaign_generation_audit.py +942 -0
- agent_evolve/application/campaign_learning.py +1812 -0
- agent_evolve/application/campaign_learning_runtime.py +1977 -0
- agent_evolve/application/campaign_search_phase.py +227 -0
- agent_evolve/application/campaign_selector_context_extension.py +220 -0
- agent_evolve/application/campaign_variation_envelope.py +649 -0
- agent_evolve/application/campaign_variation_trace.py +451 -0
- agent_evolve/application/candidate_archive_consequence.py +128 -0
- agent_evolve/application/causal_opportunity_portfolio_gate.py +385 -0
- agent_evolve/application/composite_outcome_updater.py +145 -0
- agent_evolve/application/composition_portfolio_selection.py +363 -0
- agent_evolve/application/concurrent_stage.py +144 -0
- agent_evolve/application/contextual_action_allocation.py +181 -0
- agent_evolve/application/contextual_campaign_outcomes.py +267 -0
- agent_evolve/application/contextual_campaign_planning.py +1366 -0
- agent_evolve/application/contextual_delayed_credit.py +651 -0
- agent_evolve/application/contextual_search_controller.py +2374 -0
- agent_evolve/application/current_prefix_forecast_opportunity.py +714 -0
- agent_evolve/application/decision_metric_projection.py +112 -0
- agent_evolve/application/derived_action_semantics.py +129 -0
- agent_evolve/application/detailed_evaluation.py +449 -0
- agent_evolve/application/earned_lineage.py +1011 -0
- agent_evolve/application/effective_choice_audit.py +484 -0
- agent_evolve/application/empirical_consequence_calibration.py +908 -0
- agent_evolve/application/evaluation_accounting.py +325 -0
- agent_evolve/application/evaluation_cache.py +199 -0
- agent_evolve/application/evaluation_escrow.py +547 -0
- agent_evolve/application/evaluation_recourse.py +253 -0
- agent_evolve/application/event_recorder.py +151 -0
- agent_evolve/application/evolution_campaign.py +1840 -0
- agent_evolve/application/executable_hypothesis.py +323 -0
- agent_evolve/application/factorial_branch_pilot.py +772 -0
- agent_evolve/application/finite_acquisition_capacity_recourse.py +672 -0
- agent_evolve/application/finite_acquisition_residual_expert.py +373 -0
- agent_evolve/application/finite_acquisition_variation_envelope.py +802 -0
- agent_evolve/application/finite_action_hypothesis_semantics.py +446 -0
- agent_evolve/application/finite_action_selection.py +188 -0
- agent_evolve/application/finite_action_set.py +306 -0
- agent_evolve/application/finite_action_transition.py +537 -0
- agent_evolve/application/finite_variation_eligibility.py +296 -0
- agent_evolve/application/forecast_geometry_portfolio.py +799 -0
- agent_evolve/application/forecast_opportunity_shadow_calibration.py +316 -0
- agent_evolve/application/front_proximity_admission.py +311 -0
- agent_evolve/application/front_proximity_parent_basis.py +458 -0
- agent_evolve/application/frozen_hurdle_score.py +659 -0
- agent_evolve/application/g3_causal_screen.py +2257 -0
- agent_evolve/application/g3_causal_validation.py +1046 -0
- agent_evolve/application/g3_postseal_curation.py +818 -0
- agent_evolve/application/gated_agentic_generator.py +205 -0
- agent_evolve/application/generation_feedback.py +293 -0
- agent_evolve/application/generative_proposal_journal.py +185 -0
- agent_evolve/application/geometry_conditional_elasticity.py +453 -0
- agent_evolve/application/global_wave_action_allocation.py +1151 -0
- agent_evolve/application/head_mass_conditional_seat.py +268 -0
- agent_evolve/application/identifiable_reflection_evidence.py +1147 -0
- agent_evolve/application/identifiable_reflection_learning.py +395 -0
- agent_evolve/application/identifiable_reflection_request.py +364 -0
- agent_evolve/application/in_memory_residual_archive.py +341 -0
- agent_evolve/application/insight_memory.py +1804 -0
- agent_evolve/application/live_runtime_manifest.py +758 -0
- agent_evolve/application/llm_task_queue.py +769 -0
- agent_evolve/application/matched_finite_action_block.py +409 -0
- agent_evolve/application/materialized_action_broker.py +2328 -0
- agent_evolve/application/materialized_action_constraints.py +83 -0
- agent_evolve/application/materialized_variation.py +211 -0
- agent_evolve/application/multi_option_evolution.py +1536 -0
- agent_evolve/application/outcome_adaptive_action_racing.py +2827 -0
- agent_evolve/application/outcome_adaptive_residual_campaign_runtime.py +580 -0
- agent_evolve/application/outcome_adaptive_residual_portfolio_evolution.py +3671 -0
- agent_evolve/application/outcome_conditioned_portfolio_selection.py +1374 -0
- agent_evolve/application/outcome_relation.py +193 -0
- agent_evolve/application/paired_allocation_comparison.py +241 -0
- agent_evolve/application/paired_block_schedule.py +127 -0
- agent_evolve/application/parent_measurement.py +226 -0
- agent_evolve/application/pareto_archive.py +811 -0
- agent_evolve/application/portfolio_campaign_runtime.py +4739 -0
- agent_evolve/application/portfolio_evolution.py +2950 -0
- agent_evolve/application/portfolio_hypothesis_observations.py +814 -0
- agent_evolve/application/portfolio_memory_attribution.py +581 -0
- agent_evolve/application/portfolio_memory_dose.py +788 -0
- agent_evolve/application/portfolio_memory_matched_control.py +938 -0
- agent_evolve/application/portfolio_memory_transfer.py +297 -0
- agent_evolve/application/portfolio_optimization_memory.py +363 -0
- agent_evolve/application/portfolio_outcome_feedback.py +1613 -0
- agent_evolve/application/portfolio_projection.py +335 -0
- agent_evolve/application/portfolio_recombination.py +2032 -0
- agent_evolve/application/post_evolution_reflection.py +834 -0
- agent_evolve/application/postcommit_rank_authority.py +245 -0
- agent_evolve/application/precommitted_portfolio_racing.py +2762 -0
- agent_evolve/application/prequential_archive_opportunity_calibration.py +1154 -0
- agent_evolve/application/prequential_residual_exploration.py +343 -0
- agent_evolve/application/prequential_score_portfolio.py +954 -0
- agent_evolve/application/projections.py +292 -0
- agent_evolve/application/protected_action_committee.py +1027 -0
- agent_evolve/application/protected_branch_pilot.py +376 -0
- agent_evolve/application/protected_current_prefix_forecast_opportunity.py +552 -0
- agent_evolve/application/provider_replay.py +910 -0
- agent_evolve/application/rank_balanced_causal_pilot.py +1372 -0
- agent_evolve/application/recombination_residual_expert.py +403 -0
- agent_evolve/application/reflection_workflow.py +571 -0
- agent_evolve/application/region_conditional_credit.py +911 -0
- agent_evolve/application/residual_campaign_runtime.py +531 -0
- agent_evolve/application/residual_headroom_campaign_runtime.py +459 -0
- agent_evolve/application/residual_headroom_ledger.py +1544 -0
- agent_evolve/application/residual_learning_transaction.py +396 -0
- agent_evolve/application/residual_portfolio_evolution.py +1228 -0
- agent_evolve/application/residual_reachability.py +749 -0
- agent_evolve/application/residual_stage_credit.py +499 -0
- agent_evolve/application/same_prefix_paired_audit.py +1580 -0
- agent_evolve/application/semantic_coverage_score_portfolio.py +838 -0
- agent_evolve/application/sequential_lineage_allocation.py +1017 -0
- agent_evolve/application/sequential_market_replay.py +1395 -0
- agent_evolve/application/sequential_residual_campaign_runtime.py +305 -0
- agent_evolve/application/sequential_residual_portfolio_evolution.py +940 -0
- agent_evolve/application/single_score_action_allocation.py +299 -0
- agent_evolve/application/source_exposure_allocation.py +906 -0
- agent_evolve/application/staged_memory.py +210 -0
- agent_evolve/application/stratified_cold_start_allocation.py +732 -0
- agent_evolve/application/support_guarded_hurdle_score.py +549 -0
- agent_evolve/application/target_conditioned_action_forecast.py +595 -0
- agent_evolve/application/target_conditioned_campaign.py +566 -0
- agent_evolve/application/treatment_assignment.py +201 -0
- agent_evolve/application/trusted_objective_evidence.py +217 -0
- agent_evolve/application/two_stage_action_evolution.py +1131 -0
- agent_evolve/application/v8lite_allocation_policy.py +1083 -0
- agent_evolve/application/v9_candidate_policy.py +1303 -0
- agent_evolve/bootstrap.py +108 -0
- agent_evolve/campaign_presets.py +517 -0
- agent_evolve/campaign_profiles.py +452 -0
- agent_evolve/campaign_variation_topology.py +288 -0
- agent_evolve/campaign_workload.py +950 -0
- agent_evolve/cli.py +797 -0
- agent_evolve/contract.py +241 -0
- agent_evolve/core/__init__.py +91 -0
- agent_evolve/core/action_semantics.py +411 -0
- agent_evolve/core/authored.py +105 -0
- agent_evolve/core/formatting.py +286 -0
- agent_evolve/core/optimization_semantics.py +324 -0
- agent_evolve/core/problem.py +167 -0
- agent_evolve/core/results.py +323 -0
- agent_evolve/core/stats.py +70 -0
- agent_evolve/core/telemetry.py +100 -0
- agent_evolve/domain/__init__.py +89 -0
- agent_evolve/domain/artifact.py +162 -0
- agent_evolve/domain/durable_text.py +68 -0
- agent_evolve/domain/event.py +1454 -0
- agent_evolve/domain/finite_action_set.py +426 -0
- agent_evolve/domain/finite_variation.py +526 -0
- agent_evolve/domain/generative_emission.py +559 -0
- agent_evolve/domain/ids.py +163 -0
- agent_evolve/domain/inline_text.py +106 -0
- agent_evolve/domain/insight.py +27 -0
- agent_evolve/domain/lineage.py +737 -0
- agent_evolve/domain/llm_task_queue.py +960 -0
- agent_evolve/domain/outcome.py +96 -0
- agent_evolve/domain/patch.py +854 -0
- agent_evolve/domain/typed_json.py +542 -0
- agent_evolve/domain/variation_space.py +158 -0
- agent_evolve/driver.py +1014 -0
- agent_evolve/harness/__init__.py +29 -0
- agent_evolve/harness/base.py +242 -0
- agent_evolve/harness/directives.py +163 -0
- agent_evolve/harness/generative_seal.py +479 -0
- agent_evolve/harness/registry.py +41 -0
- agent_evolve/infrastructure/__init__.py +39 -0
- agent_evolve/infrastructure/artifacts/__init__.py +6 -0
- agent_evolve/infrastructure/artifacts/_verification.py +67 -0
- agent_evolve/infrastructure/artifacts/filesystem.py +343 -0
- agent_evolve/infrastructure/artifacts/in_memory.py +73 -0
- agent_evolve/infrastructure/asyncio_runtime.py +109 -0
- agent_evolve/infrastructure/authored_runtime.py +188 -0
- agent_evolve/infrastructure/authored_worker.py +171 -0
- agent_evolve/infrastructure/clock.py +53 -0
- agent_evolve/infrastructure/events/__init__.py +6 -0
- agent_evolve/infrastructure/events/_validation.py +89 -0
- agent_evolve/infrastructure/events/in_memory.py +56 -0
- agent_evolve/infrastructure/events/jsonl.py +193 -0
- agent_evolve/infrastructure/exception_provenance.py +215 -0
- agent_evolve/infrastructure/ids.py +118 -0
- agent_evolve/infrastructure/lineage_codec.py +1836 -0
- agent_evolve/infrastructure/outcome_adaptive_phase_journal.py +170 -0
- agent_evolve/infrastructure/residual_headroom_journal.py +221 -0
- agent_evolve/infrastructure/resource_lease.py +370 -0
- agent_evolve/infrastructure/sanitization/__init__.py +8 -0
- agent_evolve/infrastructure/sanitization/strict_json.py +484 -0
- agent_evolve/infrastructure/sequential_phase_journal.py +170 -0
- agent_evolve/infrastructure/stream_liveness.py +383 -0
- agent_evolve/infrastructure/subprocess_boundary.py +136 -0
- agent_evolve/integrations/__init__.py +1 -0
- agent_evolve/integrations/botorch/__init__.py +28 -0
- agent_evolve/integrations/botorch/finite_qlognehvi.py +190 -0
- agent_evolve/integrations/botorch/finite_qlognehvi_batch.py +155 -0
- agent_evolve/integrations/botorch/finite_qlognehvi_batch_identity.py +20 -0
- agent_evolve/integrations/botorch/finite_qlognehvi_batch_worker.py +55 -0
- agent_evolve/integrations/botorch/finite_qlognehvi_identity.py +22 -0
- agent_evolve/integrations/botorch/finite_qlognehvi_worker.py +55 -0
- agent_evolve/integrations/botorch/subprocess_qlognehvi.py +261 -0
- agent_evolve/integrations/botorch/subprocess_qlognehvi_batch.py +273 -0
- agent_evolve/integrations/completion.py +242 -0
- agent_evolve/integrations/pydantic_ai/__init__.py +441 -0
- agent_evolve/integrations/pydantic_ai/action_forecast.py +1068 -0
- agent_evolve/integrations/pydantic_ai/agentic_generator.py +2308 -0
- agent_evolve/integrations/pydantic_ai/async_generator.py +1604 -0
- agent_evolve/integrations/pydantic_ai/boundary_codec.py +1526 -0
- agent_evolve/integrations/pydantic_ai/calibrated_portfolio_campaign.py +756 -0
- agent_evolve/integrations/pydantic_ai/calibrated_portfolio_selection.py +7537 -0
- agent_evolve/integrations/pydantic_ai/campaign_acquisition.py +609 -0
- agent_evolve/integrations/pydantic_ai/execution_binding.py +138 -0
- agent_evolve/integrations/pydantic_ai/forecast_geometry_action_committee.py +217 -0
- agent_evolve/integrations/pydantic_ai/harness.py +159 -0
- agent_evolve/integrations/pydantic_ai/heterogeneous_model_execution.py +306 -0
- agent_evolve/integrations/pydantic_ai/hierarchical_residual_adaptive_semantic_view.py +179 -0
- agent_evolve/integrations/pydantic_ai/json_schema_dialect.py +108 -0
- agent_evolve/integrations/pydantic_ai/materialized_hierarchical_residual_expert.py +952 -0
- agent_evolve/integrations/pydantic_ai/materialized_portfolio_judge.py +520 -0
- agent_evolve/integrations/pydantic_ai/model_execution_profile.py +659 -0
- agent_evolve/integrations/pydantic_ai/outbound_request_manifest.py +1170 -0
- agent_evolve/integrations/pydantic_ai/portable_residual_consequence_features.py +575 -0
- agent_evolve/integrations/pydantic_ai/portfolio_selection.py +422 -0
- agent_evolve/integrations/pydantic_ai/progress_aware_openrouter.py +416 -0
- agent_evolve/integrations/pydantic_ai/provider_attempt_join.py +1523 -0
- agent_evolve/integrations/pydantic_ai/provider_free_calibrated_runner.py +607 -0
- agent_evolve/integrations/pydantic_ai/queued_runner.py +2634 -0
- agent_evolve/integrations/pydantic_ai/reconciled_residual_reachability.py +1417 -0
- agent_evolve/integrations/pydantic_ai/residual_forecast_geometry.py +445 -0
- agent_evolve/integrations/pydantic_ai/residual_reachability.py +674 -0
- agent_evolve/integrations/pydantic_ai/residual_semantic_cells.py +239 -0
- agent_evolve/integrations/pydantic_ai/sealed_output_replay.py +1068 -0
- agent_evolve/integrations/pydantic_ai/semantic_coverage_residual_portfolio.py +770 -0
- agent_evolve/integrations/pydantic_ai/semantic_decision_replay.py +383 -0
- agent_evolve/integrations/pydantic_ai/support_adaptive_residual_portfolio.py +135 -0
- agent_evolve/integrations/pydantic_ai/trusted_residual_prompt_context.py +143 -0
- agent_evolve/integrations/pydantic_ai/validated_openrouter_model.py +107 -0
- agent_evolve/integrations/pymoo_adapter.py +242 -0
- agent_evolve/policies/__init__.py +17 -0
- agent_evolve/policies/check.py +469 -0
- agent_evolve/policies/emit_scaffold.py +451 -0
- agent_evolve/policies/feedback/__init__.py +37 -0
- agent_evolve/policies/feedback/held_out_asn.py +1325 -0
- agent_evolve/policies/genetic.py +607 -0
- agent_evolve/policies/llm_backoff.py +183 -0
- agent_evolve/policies/llm_chooser.py +226 -0
- agent_evolve/policies/llm_generator.py +1760 -0
- agent_evolve/policies/llm_init.py +267 -0
- agent_evolve/policies/llm_operator.py +109 -0
- agent_evolve/policies/llm_prior.py +194 -0
- agent_evolve/policies/llm_surrogate.py +334 -0
- agent_evolve/policies/measurement_evidence.py +704 -0
- agent_evolve/policies/memory/__init__.py +223 -0
- agent_evolve/policies/memory/balanced_subset_blocks.py +707 -0
- agent_evolve/policies/memory/compatibility_matching.py +593 -0
- agent_evolve/policies/memory/global_falsification.py +1841 -0
- agent_evolve/policies/memory/prompt_shape.py +503 -0
- agent_evolve/policies/memory/randomized_subset.py +714 -0
- agent_evolve/policies/memory/staged_causal.py +1270 -0
- agent_evolve/policies/memory/treatment_compliance.py +759 -0
- agent_evolve/policies/objective_resolution/__init__.py +17 -0
- agent_evolve/policies/objective_resolution/fixed_grid.py +364 -0
- agent_evolve/policies/operator_portfolio.py +407 -0
- agent_evolve/policies/reguidance.py +1133 -0
- agent_evolve/policies/reward/__init__.py +83 -0
- agent_evolve/policies/reward/affine_candidate_consequence.py +156 -0
- agent_evolve/policies/reward/affine_candidate_consequence_3d.py +159 -0
- agent_evolve/policies/reward/affine_hypervolume.py +490 -0
- agent_evolve/policies/reward/affine_hypervolume_3d.py +567 -0
- agent_evolve/policies/reward/contextual_marginal_utility.py +318 -0
- agent_evolve/policies/reward/frozen_archive.py +360 -0
- agent_evolve/policies/reward/frozen_wave_archive.py +368 -0
- agent_evolve/policies/search_state.py +208 -0
- agent_evolve/policies/selection/__init__.py +345 -0
- agent_evolve/policies/selection/acquisition_certified_slate.py +684 -0
- agent_evolve/policies/selection/affine_frontier_context.py +330 -0
- agent_evolve/policies/selection/affine_frontier_target.py +473 -0
- agent_evolve/policies/selection/archive_elite.py +1346 -0
- agent_evolve/policies/selection/calibrated_portfolio_binding.py +640 -0
- agent_evolve/policies/selection/calibrated_slate.py +1394 -0
- agent_evolve/policies/selection/calibrated_slate_codec.py +579 -0
- agent_evolve/policies/selection/common_candidate_pool.py +685 -0
- agent_evolve/policies/selection/diagnostic_sampling.py +319 -0
- agent_evolve/policies/selection/disjoint_pairs.py +479 -0
- agent_evolve/policies/selection/elite_explorer.py +719 -0
- agent_evolve/policies/selection/finite_action.py +187 -0
- agent_evolve/policies/selection/finite_option_prompt_projection.py +377 -0
- agent_evolve/policies/selection/finite_palette_evidence.py +247 -0
- agent_evolve/policies/selection/forecast_calibration.py +922 -0
- agent_evolve/policies/selection/frontier_probe_slate.py +814 -0
- agent_evolve/policies/selection/frozen_archive_pairs.py +762 -0
- agent_evolve/policies/selection/full_support_slate.py +91 -0
- agent_evolve/policies/selection/meaningful_direction.py +240 -0
- agent_evolve/policies/selection/memory_dose_feasibility.py +259 -0
- agent_evolve/policies/selection/model_anchored_slate.py +826 -0
- agent_evolve/policies/selection/phenotype_recourse.py +979 -0
- agent_evolve/policies/selection/proposal_support.py +368 -0
- agent_evolve/policies/selection/random_portfolio.py +254 -0
- agent_evolve/policies/selection/regret_bounded_slate.py +1084 -0
- agent_evolve/policies/selection/residual_frontier.py +463 -0
- agent_evolve/policies/selection/residual_frontier_target.py +605 -0
- agent_evolve/policies/selection/structural_posterior_slate.py +1571 -0
- agent_evolve/policies/selection/target_conditioned_allocator.py +648 -0
- agent_evolve/policies/selection/target_conditioned_features.py +812 -0
- agent_evolve/policies/selection/target_conditioned_prequential.py +1527 -0
- agent_evolve/policies/selection/task_keyed_palette.py +906 -0
- agent_evolve/policies/semantics.py +147 -0
- agent_evolve/policies/structure.py +362 -0
- agent_evolve/policies/structured_output_budget.py +62 -0
- agent_evolve/policies/surrogate.py +696 -0
- agent_evolve/policies/variation/__init__.py +1 -0
- agent_evolve/policies/variation/compositional_finite_catalog.py +426 -0
- agent_evolve/policies/variation/crossover_inheritance.py +575 -0
- agent_evolve/policies/variation/disjoint_recombination.py +611 -0
- agent_evolve/policies/variation/exact_composition_capacity.py +214 -0
- agent_evolve/policies/variation/exact_parent_crossover.py +950 -0
- agent_evolve/policies/variation/multiscale_restart_catalog.py +372 -0
- agent_evolve/policies/variation/source_union_finite_catalog.py +403 -0
- agent_evolve/policies/variation/typed_patch.py +1981 -0
- agent_evolve/policies/weighted_prior.py +394 -0
- agent_evolve/ports/__init__.py +383 -0
- agent_evolve/ports/action_allocation.py +733 -0
- agent_evolve/ports/action_allocation_frame.py +1153 -0
- agent_evolve/ports/action_allocation_frame_commit.py +294 -0
- agent_evolve/ports/action_allocation_frame_commit_v3.py +432 -0
- agent_evolve/ports/action_allocation_frame_v3.py +995 -0
- agent_evolve/ports/action_forecast.py +1568 -0
- agent_evolve/ports/action_metric_projection.py +165 -0
- agent_evolve/ports/agentic_generator.py +1561 -0
- agent_evolve/ports/archive_context.py +136 -0
- agent_evolve/ports/artifact_sanitizer.py +44 -0
- agent_evolve/ports/artifact_store.py +225 -0
- agent_evolve/ports/clock.py +13 -0
- agent_evolve/ports/contextual_search_allocation.py +827 -0
- agent_evolve/ports/decision_metric_projection.py +258 -0
- agent_evolve/ports/event_store.py +55 -0
- agent_evolve/ports/executable_hypothesis.py +557 -0
- agent_evolve/ports/finite_acquisition.py +377 -0
- agent_evolve/ports/finite_acquisition_batch.py +296 -0
- agent_evolve/ports/finite_acquisition_batch_json.py +164 -0
- agent_evolve/ports/finite_acquisition_json.py +247 -0
- agent_evolve/ports/finite_acquisition_space.py +168 -0
- agent_evolve/ports/finite_action_selection.py +348 -0
- agent_evolve/ports/finite_action_set.py +256 -0
- agent_evolve/ports/frontier_target.py +396 -0
- agent_evolve/ports/generation_failure.py +43 -0
- agent_evolve/ports/hard_feasibility.py +233 -0
- agent_evolve/ports/id_factory.py +34 -0
- agent_evolve/ports/llm_task_queue.py +93 -0
- agent_evolve/ports/objective_resolution.py +419 -0
- agent_evolve/ports/paired_allocation_comparison.py +401 -0
- agent_evolve/ports/paired_block_schedule.py +475 -0
- agent_evolve/ports/parent_measurement.py +336 -0
- agent_evolve/ports/portfolio_memory_dose.py +643 -0
- agent_evolve/ports/portfolio_selection.py +3169 -0
- agent_evolve/ports/postcommit_rank_authority.py +467 -0
- agent_evolve/ports/presented_action_evidence.py +794 -0
- agent_evolve/ports/resource_lease.py +162 -0
- agent_evolve/ports/structured_generator.py +734 -0
- agent_evolve/ports/structured_output_budget.py +120 -0
- agent_evolve/ports/subprocess_boundary.py +138 -0
- agent_evolve/ports/treatment_assignment.py +466 -0
- agent_evolve/ports/variation_catalog.py +76 -0
- agent_evolve/ports/variation_source.py +226 -0
- agent_evolve/proposal_mode.py +157 -0
- agent_evolve/proposers/__init__.py +10 -0
- agent_evolve/proposers/random_proposer.py +188 -0
- agent_evolve/provider_accounting.py +163 -0
- agent_evolve/py.typed +0 -0
- agent_evolve/reference_method.py +1570 -0
- agent_evolve/session/__init__.py +11 -0
- agent_evolve/session/authorship.py +864 -0
- agent_evolve/session/evaluate.py +236 -0
- agent_evolve/session/fidelity.py +237 -0
- agent_evolve/session/genetic_loop.py +742 -0
- agent_evolve/session/loop.py +803 -0
- agent_evolve/session/screening.py +671 -0
- agent_evolve/settings.py +376 -0
- agent_evolve/workload_kit.py +368 -0
- agent_evolve/workload_prompt.py +398 -0
- agentevolve_optimizer-0.5.0.dist-info/METADATA +599 -0
- agentevolve_optimizer-0.5.0.dist-info/RECORD +414 -0
- agentevolve_optimizer-0.5.0.dist-info/WHEEL +5 -0
- agentevolve_optimizer-0.5.0.dist-info/entry_points.txt +2 -0
- agentevolve_optimizer-0.5.0.dist-info/licenses/LICENSE +21 -0
- agentevolve_optimizer-0.5.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
"""Benchmark-owned projection of sealed outcomes into forecast metric space.
|
|
2
|
+
|
|
3
|
+
Optimization semantics describe more than the Pareto objective vector. A
|
|
4
|
+
calibrated selector may also need to forecast violations or constraint
|
|
5
|
+
projections which live only in the sealed detailed evaluation. This module
|
|
6
|
+
defines the immutable, provider-neutral binding between those two spaces.
|
|
7
|
+
|
|
8
|
+
Objective-only benchmarks retain their historical unprefixed metric IDs. As
|
|
9
|
+
soon as a violation or constraint participates, every decision metric uses its
|
|
10
|
+
role-prefixed semantic ID. That compatibility rule is deterministic and part
|
|
11
|
+
of the projection definition rather than a workload-specific convention.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
import hashlib
|
|
17
|
+
import json
|
|
18
|
+
import math
|
|
19
|
+
import re
|
|
20
|
+
from dataclasses import dataclass, field
|
|
21
|
+
from enum import Enum
|
|
22
|
+
|
|
23
|
+
from agent_evolve.core.optimization_semantics import (
|
|
24
|
+
MetricRole,
|
|
25
|
+
MetricSense,
|
|
26
|
+
OptimizationSemantics,
|
|
27
|
+
)
|
|
28
|
+
from agent_evolve.domain.patch import require_sha256
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
_METRIC = re.compile(r"^[a-z][a-z0-9_.:-]{0,191}$")
|
|
32
|
+
_NAME = re.compile(r"^[a-z][a-z0-9_.-]{0,95}$")
|
|
33
|
+
_DEFINITION_DOMAIN = b"agent-evolve:decision-metric-projection:def:v1\x00"
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class DecisionMetricValueSource(str, Enum):
|
|
37
|
+
"""Closed sealed-outcome location from which a value is read."""
|
|
38
|
+
|
|
39
|
+
CANDIDATE_OBJECTIVE = "candidate_objective"
|
|
40
|
+
DETAILED_VIOLATION_OR_CONSTRAINT = "detailed_violation_or_constraint"
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
@dataclass(frozen=True, slots=True)
|
|
44
|
+
class DecisionMetricBinding:
|
|
45
|
+
"""One semantic metric and its exact forecast/evaluation value binding."""
|
|
46
|
+
|
|
47
|
+
metric_id: str
|
|
48
|
+
semantic_metric_id: str
|
|
49
|
+
value_name: str
|
|
50
|
+
role: MetricRole
|
|
51
|
+
sense: MetricSense
|
|
52
|
+
source: DecisionMetricValueSource
|
|
53
|
+
absolute_tolerance: float | None
|
|
54
|
+
|
|
55
|
+
def __post_init__(self) -> None:
|
|
56
|
+
if type(self.metric_id) is not str or _METRIC.fullmatch(self.metric_id) is None:
|
|
57
|
+
raise ValueError("metric_id must use the closed metric grammar")
|
|
58
|
+
if (
|
|
59
|
+
type(self.semantic_metric_id) is not str
|
|
60
|
+
or _METRIC.fullmatch(self.semantic_metric_id) is None
|
|
61
|
+
):
|
|
62
|
+
raise ValueError("semantic_metric_id must use the closed metric grammar")
|
|
63
|
+
if type(self.value_name) is not str or _NAME.fullmatch(self.value_name) is None:
|
|
64
|
+
raise ValueError("value_name must use the closed metric-name grammar")
|
|
65
|
+
if type(self.role) is not MetricRole or self.role not in {
|
|
66
|
+
MetricRole.OBJECTIVE,
|
|
67
|
+
MetricRole.VIOLATION,
|
|
68
|
+
MetricRole.CONSTRAINT,
|
|
69
|
+
}:
|
|
70
|
+
raise ValueError(
|
|
71
|
+
"decision metrics require objective/violation/constraint role"
|
|
72
|
+
)
|
|
73
|
+
if type(self.sense) is not MetricSense:
|
|
74
|
+
raise TypeError("sense must be an exact MetricSense")
|
|
75
|
+
if type(self.source) is not DecisionMetricValueSource:
|
|
76
|
+
raise TypeError("source must be an exact DecisionMetricValueSource")
|
|
77
|
+
expected_source = (
|
|
78
|
+
DecisionMetricValueSource.CANDIDATE_OBJECTIVE
|
|
79
|
+
if self.role is MetricRole.OBJECTIVE
|
|
80
|
+
else DecisionMetricValueSource.DETAILED_VIOLATION_OR_CONSTRAINT
|
|
81
|
+
)
|
|
82
|
+
if self.source is not expected_source:
|
|
83
|
+
raise ValueError("decision metric role and sealed value source differ")
|
|
84
|
+
tolerance = self.absolute_tolerance
|
|
85
|
+
if tolerance is not None and (
|
|
86
|
+
type(tolerance) is not float
|
|
87
|
+
or not math.isfinite(tolerance)
|
|
88
|
+
or tolerance < 0.0
|
|
89
|
+
):
|
|
90
|
+
raise ValueError(
|
|
91
|
+
"absolute_tolerance must be a finite non-negative float or None"
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
def to_record(self) -> dict[str, object]:
|
|
95
|
+
self.__post_init__()
|
|
96
|
+
return {
|
|
97
|
+
"metric_id": self.metric_id,
|
|
98
|
+
"semantic_metric_id": self.semantic_metric_id,
|
|
99
|
+
"value_name": self.value_name,
|
|
100
|
+
"role": self.role.value,
|
|
101
|
+
"sense": self.sense.value,
|
|
102
|
+
"source": self.source.value,
|
|
103
|
+
"absolute_tolerance_hex": (
|
|
104
|
+
None
|
|
105
|
+
if self.absolute_tolerance is None
|
|
106
|
+
else self.absolute_tolerance.hex()
|
|
107
|
+
),
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
@dataclass(frozen=True, slots=True)
|
|
112
|
+
class DecisionMetricProjection:
|
|
113
|
+
"""Immutable projection contract derived from benchmark semantics.
|
|
114
|
+
|
|
115
|
+
The projection owns no evaluator and contains no model-authored data. The
|
|
116
|
+
application layer applies it to an ``EvolutionCandidate`` after evaluation.
|
|
117
|
+
"""
|
|
118
|
+
|
|
119
|
+
optimization_semantics_definition_sha256: str
|
|
120
|
+
metrics: tuple[DecisionMetricBinding, ...]
|
|
121
|
+
objective_only_legacy_metric_ids: bool
|
|
122
|
+
definition_sha256: str = field(init=False, default="")
|
|
123
|
+
|
|
124
|
+
def __post_init__(self) -> None:
|
|
125
|
+
require_sha256(
|
|
126
|
+
self.optimization_semantics_definition_sha256,
|
|
127
|
+
"optimization_semantics_definition_sha256",
|
|
128
|
+
)
|
|
129
|
+
if (
|
|
130
|
+
type(self.metrics) is not tuple
|
|
131
|
+
or not self.metrics
|
|
132
|
+
or any(type(value) is not DecisionMetricBinding for value in self.metrics)
|
|
133
|
+
):
|
|
134
|
+
raise ValueError("metrics must contain exact decision metric bindings")
|
|
135
|
+
for value in self.metrics:
|
|
136
|
+
value.__post_init__()
|
|
137
|
+
metric_ids = tuple(value.metric_id for value in self.metrics)
|
|
138
|
+
semantic_ids = tuple(value.semantic_metric_id for value in self.metrics)
|
|
139
|
+
if metric_ids != tuple(sorted(set(metric_ids))):
|
|
140
|
+
raise ValueError("decision metric IDs must be unique and canonical")
|
|
141
|
+
if len(set(semantic_ids)) != len(semantic_ids):
|
|
142
|
+
raise ValueError("semantic decision metric IDs must be unique")
|
|
143
|
+
if type(self.objective_only_legacy_metric_ids) is not bool:
|
|
144
|
+
raise TypeError("objective_only_legacy_metric_ids must be exact bool")
|
|
145
|
+
all_objectives = all(
|
|
146
|
+
value.role is MetricRole.OBJECTIVE for value in self.metrics
|
|
147
|
+
)
|
|
148
|
+
if self.objective_only_legacy_metric_ids != all_objectives:
|
|
149
|
+
raise ValueError(
|
|
150
|
+
"legacy metric IDs apply exactly to objective-only projections"
|
|
151
|
+
)
|
|
152
|
+
if self.objective_only_legacy_metric_ids and any(
|
|
153
|
+
value.metric_id != value.value_name for value in self.metrics
|
|
154
|
+
):
|
|
155
|
+
raise ValueError("objective-only compatibility IDs must equal value names")
|
|
156
|
+
if not self.objective_only_legacy_metric_ids and any(
|
|
157
|
+
value.metric_id != value.semantic_metric_id for value in self.metrics
|
|
158
|
+
):
|
|
159
|
+
raise ValueError("mixed-role projections must use semantic metric IDs")
|
|
160
|
+
definition = {
|
|
161
|
+
"schema_version": 1,
|
|
162
|
+
"optimization_semantics_definition_sha256": (
|
|
163
|
+
self.optimization_semantics_definition_sha256
|
|
164
|
+
),
|
|
165
|
+
"objective_only_legacy_metric_ids": (self.objective_only_legacy_metric_ids),
|
|
166
|
+
"metrics": [value.to_record() for value in self.metrics],
|
|
167
|
+
}
|
|
168
|
+
encoded = json.dumps(
|
|
169
|
+
definition,
|
|
170
|
+
allow_nan=False,
|
|
171
|
+
ensure_ascii=True,
|
|
172
|
+
separators=(",", ":"),
|
|
173
|
+
sort_keys=True,
|
|
174
|
+
).encode("ascii", errors="strict")
|
|
175
|
+
computed = hashlib.sha256(_DEFINITION_DOMAIN + encoded).hexdigest()
|
|
176
|
+
if self.definition_sha256 not in ("", computed):
|
|
177
|
+
raise ValueError("definition_sha256 differs from decision projection")
|
|
178
|
+
object.__setattr__(self, "definition_sha256", computed)
|
|
179
|
+
|
|
180
|
+
@classmethod
|
|
181
|
+
def from_optimization_semantics(
|
|
182
|
+
cls,
|
|
183
|
+
semantics: OptimizationSemantics,
|
|
184
|
+
) -> "DecisionMetricProjection":
|
|
185
|
+
"""Project all objective/violation/constraint metrics, never diagnostics."""
|
|
186
|
+
|
|
187
|
+
if type(semantics) is not OptimizationSemantics:
|
|
188
|
+
raise TypeError("semantics must be exact OptimizationSemantics")
|
|
189
|
+
semantics.__post_init__()
|
|
190
|
+
decision_metrics = tuple(
|
|
191
|
+
metric
|
|
192
|
+
for metric in semantics.metrics
|
|
193
|
+
if metric.role
|
|
194
|
+
in {
|
|
195
|
+
MetricRole.OBJECTIVE,
|
|
196
|
+
MetricRole.VIOLATION,
|
|
197
|
+
MetricRole.CONSTRAINT,
|
|
198
|
+
}
|
|
199
|
+
)
|
|
200
|
+
if not decision_metrics:
|
|
201
|
+
raise ValueError("optimization semantics publish no decision metrics")
|
|
202
|
+
objective_only = all(
|
|
203
|
+
metric.role is MetricRole.OBJECTIVE for metric in decision_metrics
|
|
204
|
+
)
|
|
205
|
+
bindings = tuple(
|
|
206
|
+
sorted(
|
|
207
|
+
(
|
|
208
|
+
DecisionMetricBinding(
|
|
209
|
+
metric_id=(metric.name if objective_only else metric.metric_id),
|
|
210
|
+
semantic_metric_id=metric.metric_id,
|
|
211
|
+
value_name=metric.name,
|
|
212
|
+
role=metric.role,
|
|
213
|
+
sense=metric.sense,
|
|
214
|
+
source=(
|
|
215
|
+
DecisionMetricValueSource.CANDIDATE_OBJECTIVE
|
|
216
|
+
if metric.role is MetricRole.OBJECTIVE
|
|
217
|
+
else DecisionMetricValueSource.DETAILED_VIOLATION_OR_CONSTRAINT
|
|
218
|
+
),
|
|
219
|
+
absolute_tolerance=(
|
|
220
|
+
None
|
|
221
|
+
if metric.tolerance is None
|
|
222
|
+
else float(metric.tolerance)
|
|
223
|
+
),
|
|
224
|
+
)
|
|
225
|
+
for metric in decision_metrics
|
|
226
|
+
),
|
|
227
|
+
key=lambda value: value.metric_id,
|
|
228
|
+
)
|
|
229
|
+
)
|
|
230
|
+
return cls(
|
|
231
|
+
optimization_semantics_definition_sha256=semantics.definition_sha256,
|
|
232
|
+
metrics=bindings,
|
|
233
|
+
objective_only_legacy_metric_ids=objective_only,
|
|
234
|
+
)
|
|
235
|
+
|
|
236
|
+
@property
|
|
237
|
+
def metric_ids(self) -> tuple[str, ...]:
|
|
238
|
+
self.__post_init__()
|
|
239
|
+
return tuple(value.metric_id for value in self.metrics)
|
|
240
|
+
|
|
241
|
+
def to_record(self) -> dict[str, object]:
|
|
242
|
+
self.__post_init__()
|
|
243
|
+
return {
|
|
244
|
+
"schema_version": 1,
|
|
245
|
+
"optimization_semantics_definition_sha256": (
|
|
246
|
+
self.optimization_semantics_definition_sha256
|
|
247
|
+
),
|
|
248
|
+
"objective_only_legacy_metric_ids": (self.objective_only_legacy_metric_ids),
|
|
249
|
+
"metrics": [value.to_record() for value in self.metrics],
|
|
250
|
+
"definition_sha256": self.definition_sha256,
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
__all__ = [
|
|
255
|
+
"DecisionMetricBinding",
|
|
256
|
+
"DecisionMetricProjection",
|
|
257
|
+
"DecisionMetricValueSource",
|
|
258
|
+
]
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"""Append-only event-store port and shared contract errors."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Iterable, Protocol, runtime_checkable
|
|
6
|
+
|
|
7
|
+
from agent_evolve.domain.event import EventEnvelope
|
|
8
|
+
from agent_evolve.domain.ids import RunId
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class EventStoreError(RuntimeError):
|
|
12
|
+
pass
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class EventSequenceError(EventStoreError):
|
|
16
|
+
pass
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class OptimisticConcurrencyError(EventSequenceError):
|
|
20
|
+
pass
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class EventRunMismatchError(EventStoreError):
|
|
24
|
+
pass
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class DuplicateEventIdError(EventStoreError):
|
|
28
|
+
pass
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class EventCausationError(EventSequenceError):
|
|
32
|
+
"""A causation link is dangling, forward-pointing, or cross-run."""
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class CorruptEventLogError(EventStoreError):
|
|
36
|
+
pass
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@runtime_checkable
|
|
40
|
+
class EventStore(Protocol):
|
|
41
|
+
"""Store immutable events using optimistic per-run sequencing."""
|
|
42
|
+
|
|
43
|
+
def append(
|
|
44
|
+
self,
|
|
45
|
+
event: EventEnvelope,
|
|
46
|
+
*,
|
|
47
|
+
expected_previous_sequence: int,
|
|
48
|
+
) -> None: ...
|
|
49
|
+
|
|
50
|
+
def read(
|
|
51
|
+
self,
|
|
52
|
+
run_id: RunId,
|
|
53
|
+
*,
|
|
54
|
+
after_sequence: int = 0,
|
|
55
|
+
) -> Iterable[EventEnvelope]: ...
|