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,609 @@
|
|
|
1
|
+
"""Workload-neutral composition for K-slate acquisition experiments.
|
|
2
|
+
|
|
3
|
+
Workload launchers choose an explicit mode; this module owns the matching
|
|
4
|
+
allocator and outer selector identity. Keeping that decision out of workload
|
|
5
|
+
code prevents Airfoil, BOiLS, Heat, and Timeloop adapters from silently giving
|
|
6
|
+
the same method name to different K8-to-K4 behavior.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
import math
|
|
12
|
+
from dataclasses import dataclass
|
|
13
|
+
from enum import Enum
|
|
14
|
+
from typing import Mapping
|
|
15
|
+
|
|
16
|
+
from agent_evolve.integrations.pydantic_ai.calibrated_portfolio_selection import (
|
|
17
|
+
ACQUISITION_CERTIFIED_RESIDUAL_PORTFOLIO_SELECTION_POLICY_DEFINITION_SHA256,
|
|
18
|
+
REGRET_BOUNDED_INFORMATION_PORTFOLIO_SELECTION_POLICY_DEFINITION_SHA256,
|
|
19
|
+
CONSTRAINT_DECOUPLED_HORIZON_PORTFOLIO_SELECTION_POLICY_DEFINITION_SHA256,
|
|
20
|
+
CONSTRAINT_DECOUPLED_TARGET_CONDITIONED_PORTFOLIO_SELECTION_POLICY_DEFINITION_SHA256,
|
|
21
|
+
CONTEXTUAL_SEARCH_ALLOCATION_PORTFOLIO_SELECTION_POLICY_DEFINITION_SHA256,
|
|
22
|
+
EVIDENCE_CALIBRATED_SOURCE_MIX_PORTFOLIO_SELECTION_POLICY_DEFINITION_SHA256,
|
|
23
|
+
FULL_SUPPORT_CALIBRATED_PORTFOLIO_SELECTION_POLICY_DEFINITION_SHA256,
|
|
24
|
+
HORIZON_BOUNDED_CALIBRATED_PORTFOLIO_SELECTION_POLICY_DEFINITION_SHA256,
|
|
25
|
+
MINIMUM_INTERVENTION_HORIZON_PORTFOLIO_SELECTION_POLICY_DEFINITION_SHA256,
|
|
26
|
+
MODEL_ANCHORED_CALIBRATED_PORTFOLIO_SELECTION_POLICY_DEFINITION_SHA256,
|
|
27
|
+
OPERATOR_STRATIFIED_CALIBRATED_PORTFOLIO_SELECTION_POLICY_DEFINITION_SHA256,
|
|
28
|
+
STRUCTURAL_POSTERIOR_CALIBRATED_PORTFOLIO_SELECTION_POLICY_DEFINITION_SHA256,
|
|
29
|
+
TARGET_CONDITIONED_CALIBRATED_PORTFOLIO_SELECTION_POLICY_DEFINITION_SHA256,
|
|
30
|
+
CalibratedPortfolioAllocator,
|
|
31
|
+
)
|
|
32
|
+
from agent_evolve.policies.selection.acquisition_certified_slate import (
|
|
33
|
+
AcquisitionCertifiedSlateContextProvider,
|
|
34
|
+
AcquisitionCertifiedSlatePolicy,
|
|
35
|
+
)
|
|
36
|
+
from agent_evolve.policies.selection.regret_bounded_slate import (
|
|
37
|
+
RegretBoundedSlatePolicy,
|
|
38
|
+
ResidualInformationAssayValuePolicy,
|
|
39
|
+
SlateFutureValuePolicy,
|
|
40
|
+
ZeroSlateFutureValuePolicy,
|
|
41
|
+
)
|
|
42
|
+
from agent_evolve.policies.selection.full_support_slate import FullSupportSlatePolicy
|
|
43
|
+
from agent_evolve.policies.selection.model_anchored_slate import (
|
|
44
|
+
ModelAnchoredCalibratedSlatePolicy,
|
|
45
|
+
)
|
|
46
|
+
from agent_evolve.policies.selection.structural_posterior_slate import (
|
|
47
|
+
FamilyExposurePhase,
|
|
48
|
+
HorizonBoundedStructuralPosteriorSlatePolicy,
|
|
49
|
+
OperatorStratifiedStructuralPosteriorSlatePolicy,
|
|
50
|
+
StructuralPosteriorSlatePolicy,
|
|
51
|
+
)
|
|
52
|
+
from agent_evolve.policies.selection.proposal_support import (
|
|
53
|
+
StructuralProposalSupportPolicy,
|
|
54
|
+
)
|
|
55
|
+
from agent_evolve.policies.selection.target_conditioned_allocator import (
|
|
56
|
+
RegisteredTargetConditionedAllocationContextProvider,
|
|
57
|
+
TargetConditionedAllocationContextProvider,
|
|
58
|
+
TargetConditionedSlateAllocatorAdapter,
|
|
59
|
+
)
|
|
60
|
+
from agent_evolve.policies.selection.target_conditioned_prequential import (
|
|
61
|
+
TargetConditionedAcquisitionProfile,
|
|
62
|
+
)
|
|
63
|
+
from agent_evolve.policies.variation.compositional_finite_catalog import (
|
|
64
|
+
COMPOSITE_OPTION_FAMILY,
|
|
65
|
+
)
|
|
66
|
+
from agent_evolve.ports.finite_acquisition_batch import (
|
|
67
|
+
FiniteAcquisitionBatchScorePolicy,
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
class CampaignAcquisitionMode(str, Enum):
|
|
72
|
+
"""Closed acquisition treatments shared by every workload launcher."""
|
|
73
|
+
|
|
74
|
+
FULL_SUPPORT = "full_support"
|
|
75
|
+
MODEL_TOP_K = "model_top_k"
|
|
76
|
+
CALIBRATED_FRONTIER = "calibrated_frontier"
|
|
77
|
+
HIERARCHICAL_SUPPORT = "hierarchical_support"
|
|
78
|
+
OPERATOR_STRATIFIED = "operator_stratified"
|
|
79
|
+
HORIZON_BOUNDED = "horizon_bounded"
|
|
80
|
+
TARGET_CONDITIONED = "target_conditioned"
|
|
81
|
+
ACQUISITION_CERTIFIED = "acquisition_certified"
|
|
82
|
+
REGRET_BOUNDED_INFORMATION = "regret_bounded_information"
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
OPERATOR_ASSAY_MINIMUM_ENV = "AGENT_EVOLVE_OPERATOR_ASSAY_MINIMUM"
|
|
86
|
+
CONSTRAINT_DECOUPLED_ACQUISITION_ENV = (
|
|
87
|
+
"AGENT_EVOLVE_CONSTRAINT_DECOUPLED_ACQUISITION"
|
|
88
|
+
)
|
|
89
|
+
MINIMUM_INTERVENTION_PROJECTION_ENV = (
|
|
90
|
+
"AGENT_EVOLVE_MINIMUM_INTERVENTION_PROJECTION"
|
|
91
|
+
)
|
|
92
|
+
EVIDENCE_CALIBRATED_SOURCE_MIX_ENV = (
|
|
93
|
+
"AGENT_EVOLVE_EVIDENCE_CALIBRATED_SOURCE_MIX"
|
|
94
|
+
)
|
|
95
|
+
CONTEXTUAL_SEARCH_ALLOCATION_ENV = "AGENT_EVOLVE_CONTEXTUAL_SEARCH_ALLOCATION"
|
|
96
|
+
RESIDUAL_FRONTIER_PLANNING_ENV = "AGENT_EVOLVE_RESIDUAL_FRONTIER_PLANNING"
|
|
97
|
+
REGRET_MINIMUM_ACQUISITION_RETENTION_RATIO_ENV = (
|
|
98
|
+
"AGENT_EVOLVE_REGRET_MINIMUM_ACQUISITION_RETENTION_RATIO"
|
|
99
|
+
)
|
|
100
|
+
REGRET_MINIMUM_RESIDUAL_AUDIT_MEMBERS_ENV = (
|
|
101
|
+
"AGENT_EVOLVE_REGRET_MINIMUM_RESIDUAL_AUDIT_MEMBERS"
|
|
102
|
+
)
|
|
103
|
+
REGRET_RESIDUAL_ASSAY_VALUE_ENV = "AGENT_EVOLVE_REGRET_RESIDUAL_ASSAY_VALUE"
|
|
104
|
+
REGRET_ALLOW_DEVELOPMENT_ASSAY_ENV = (
|
|
105
|
+
"AGENT_EVOLVE_REGRET_ALLOW_DEVELOPMENT_ASSAY"
|
|
106
|
+
)
|
|
107
|
+
REGRET_CALIBRATION_ERROR_BOUND_ENV = (
|
|
108
|
+
"AGENT_EVOLVE_REGRET_CALIBRATION_ERROR_BOUND"
|
|
109
|
+
)
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
def _finite_environment_float(
|
|
113
|
+
environ: Mapping[str, str],
|
|
114
|
+
name: str,
|
|
115
|
+
*,
|
|
116
|
+
default: float | None,
|
|
117
|
+
) -> float | None:
|
|
118
|
+
raw = environ.get(name)
|
|
119
|
+
if raw is None:
|
|
120
|
+
return default
|
|
121
|
+
try:
|
|
122
|
+
value = float(raw)
|
|
123
|
+
except ValueError as error:
|
|
124
|
+
raise ValueError(f"{name} must be a finite decimal number") from error
|
|
125
|
+
if not math.isfinite(value):
|
|
126
|
+
raise ValueError(f"{name} must be a finite decimal number")
|
|
127
|
+
return value
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
@dataclass(frozen=True, slots=True)
|
|
131
|
+
class RegretBoundedInformationControls:
|
|
132
|
+
"""Workload-neutral, explicit authority for one RBIE treatment arm."""
|
|
133
|
+
|
|
134
|
+
minimum_acquisition_retention_ratio: float
|
|
135
|
+
minimum_residual_audit_members: int
|
|
136
|
+
future_value_policy: SlateFutureValuePolicy
|
|
137
|
+
calibration_error_bound: float | None
|
|
138
|
+
allow_development_assay: bool
|
|
139
|
+
|
|
140
|
+
def __post_init__(self) -> None:
|
|
141
|
+
if (
|
|
142
|
+
type(self.minimum_acquisition_retention_ratio) is not float
|
|
143
|
+
or not math.isfinite(self.minimum_acquisition_retention_ratio)
|
|
144
|
+
or not 0.0 < self.minimum_acquisition_retention_ratio <= 1.0
|
|
145
|
+
):
|
|
146
|
+
raise ValueError("regret retention ratio must lie in (0, 1]")
|
|
147
|
+
if (
|
|
148
|
+
type(self.minimum_residual_audit_members) is not int
|
|
149
|
+
or self.minimum_residual_audit_members < 0
|
|
150
|
+
):
|
|
151
|
+
raise ValueError("minimum residual audit members must be non-negative")
|
|
152
|
+
if not isinstance(self.future_value_policy, SlateFutureValuePolicy):
|
|
153
|
+
raise TypeError("future_value_policy must implement its exact port")
|
|
154
|
+
if self.calibration_error_bound is not None and (
|
|
155
|
+
type(self.calibration_error_bound) is not float
|
|
156
|
+
or not math.isfinite(self.calibration_error_bound)
|
|
157
|
+
or self.calibration_error_bound < 0.0
|
|
158
|
+
):
|
|
159
|
+
raise ValueError("regret calibration error must be non-negative")
|
|
160
|
+
if type(self.allow_development_assay) is not bool:
|
|
161
|
+
raise TypeError("allow_development_assay must be exact")
|
|
162
|
+
is_assay = type(self.future_value_policy) is ResidualInformationAssayValuePolicy
|
|
163
|
+
if is_assay != self.allow_development_assay:
|
|
164
|
+
raise ValueError(
|
|
165
|
+
"development assay authority and assay future-value policy must agree"
|
|
166
|
+
)
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
def campaign_regret_bounded_information_controls_from_environment(
|
|
170
|
+
environ: Mapping[str, str],
|
|
171
|
+
) -> RegretBoundedInformationControls:
|
|
172
|
+
"""Read a safe-by-default RBIE arm without workload-specific knowledge."""
|
|
173
|
+
|
|
174
|
+
ratio = _finite_environment_float(
|
|
175
|
+
environ,
|
|
176
|
+
REGRET_MINIMUM_ACQUISITION_RETENTION_RATIO_ENV,
|
|
177
|
+
default=1.0,
|
|
178
|
+
)
|
|
179
|
+
assert ratio is not None
|
|
180
|
+
residual_audit_raw = environ.get(
|
|
181
|
+
REGRET_MINIMUM_RESIDUAL_AUDIT_MEMBERS_ENV,
|
|
182
|
+
"0",
|
|
183
|
+
)
|
|
184
|
+
if not residual_audit_raw.isascii() or not residual_audit_raw.isdigit():
|
|
185
|
+
raise ValueError(
|
|
186
|
+
f"{REGRET_MINIMUM_RESIDUAL_AUDIT_MEMBERS_ENV} must contain decimal digits"
|
|
187
|
+
)
|
|
188
|
+
residual_audit_members = int(residual_audit_raw)
|
|
189
|
+
assay_value = _finite_environment_float(
|
|
190
|
+
environ,
|
|
191
|
+
REGRET_RESIDUAL_ASSAY_VALUE_ENV,
|
|
192
|
+
default=None,
|
|
193
|
+
)
|
|
194
|
+
calibration_error = _finite_environment_float(
|
|
195
|
+
environ,
|
|
196
|
+
REGRET_CALIBRATION_ERROR_BOUND_ENV,
|
|
197
|
+
default=None,
|
|
198
|
+
)
|
|
199
|
+
allow_raw = environ.get(REGRET_ALLOW_DEVELOPMENT_ASSAY_ENV, "0")
|
|
200
|
+
if allow_raw not in {"0", "1"}:
|
|
201
|
+
raise ValueError(
|
|
202
|
+
f"{REGRET_ALLOW_DEVELOPMENT_ASSAY_ENV} must be exactly 0 or 1"
|
|
203
|
+
)
|
|
204
|
+
allow_assay = allow_raw == "1"
|
|
205
|
+
if assay_value is not None and assay_value <= 0.0:
|
|
206
|
+
raise ValueError(f"{REGRET_RESIDUAL_ASSAY_VALUE_ENV} must be positive")
|
|
207
|
+
future_value_policy: SlateFutureValuePolicy = (
|
|
208
|
+
ZeroSlateFutureValuePolicy()
|
|
209
|
+
if assay_value is None
|
|
210
|
+
else ResidualInformationAssayValuePolicy(float(assay_value))
|
|
211
|
+
)
|
|
212
|
+
return RegretBoundedInformationControls(
|
|
213
|
+
minimum_acquisition_retention_ratio=float(ratio),
|
|
214
|
+
minimum_residual_audit_members=residual_audit_members,
|
|
215
|
+
future_value_policy=future_value_policy,
|
|
216
|
+
calibration_error_bound=(
|
|
217
|
+
None if calibration_error is None else float(calibration_error)
|
|
218
|
+
),
|
|
219
|
+
allow_development_assay=allow_assay,
|
|
220
|
+
)
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
def campaign_constraint_decoupled_acquisition_from_environment(
|
|
224
|
+
environ: Mapping[str, str],
|
|
225
|
+
) -> bool:
|
|
226
|
+
"""Read the shared opt-in for engine-reconciled semantic proposals."""
|
|
227
|
+
|
|
228
|
+
raw = environ.get(CONSTRAINT_DECOUPLED_ACQUISITION_ENV, "0")
|
|
229
|
+
if raw not in {"0", "1"}:
|
|
230
|
+
raise ValueError(
|
|
231
|
+
f"{CONSTRAINT_DECOUPLED_ACQUISITION_ENV} must be exactly 0 or 1"
|
|
232
|
+
)
|
|
233
|
+
return raw == "1"
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
def campaign_minimum_intervention_projection_from_environment(
|
|
237
|
+
environ: Mapping[str, str],
|
|
238
|
+
) -> bool:
|
|
239
|
+
"""Read the shared opt-in for minimum-intervention semantic projection."""
|
|
240
|
+
|
|
241
|
+
raw = environ.get(MINIMUM_INTERVENTION_PROJECTION_ENV, "0")
|
|
242
|
+
if raw not in {"0", "1"}:
|
|
243
|
+
raise ValueError(
|
|
244
|
+
f"{MINIMUM_INTERVENTION_PROJECTION_ENV} must be exactly 0 or 1"
|
|
245
|
+
)
|
|
246
|
+
return raw == "1"
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
def campaign_evidence_calibrated_source_mix_from_environment(
|
|
250
|
+
environ: Mapping[str, str],
|
|
251
|
+
) -> bool:
|
|
252
|
+
"""Read the shared opt-in for a protected global proposal source."""
|
|
253
|
+
|
|
254
|
+
raw = environ.get(EVIDENCE_CALIBRATED_SOURCE_MIX_ENV, "0")
|
|
255
|
+
if raw not in {"0", "1"}:
|
|
256
|
+
raise ValueError(
|
|
257
|
+
f"{EVIDENCE_CALIBRATED_SOURCE_MIX_ENV} must be exactly 0 or 1"
|
|
258
|
+
)
|
|
259
|
+
return raw == "1"
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
def campaign_contextual_search_allocation_from_environment(
|
|
263
|
+
environ: Mapping[str, str],
|
|
264
|
+
) -> bool:
|
|
265
|
+
"""Read the shared opt-in for prior-only source/operator allocation."""
|
|
266
|
+
|
|
267
|
+
raw = environ.get(CONTEXTUAL_SEARCH_ALLOCATION_ENV, "0")
|
|
268
|
+
if raw not in {"0", "1"}:
|
|
269
|
+
raise ValueError(
|
|
270
|
+
f"{CONTEXTUAL_SEARCH_ALLOCATION_ENV} must be exactly 0 or 1"
|
|
271
|
+
)
|
|
272
|
+
return raw == "1"
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
def campaign_residual_frontier_planning_from_environment(
|
|
276
|
+
environ: Mapping[str, str],
|
|
277
|
+
) -> bool:
|
|
278
|
+
"""Read the shared opt-in for joint residual-cell search planning."""
|
|
279
|
+
|
|
280
|
+
raw = environ.get(RESIDUAL_FRONTIER_PLANNING_ENV, "0")
|
|
281
|
+
if raw not in {"0", "1"}:
|
|
282
|
+
raise ValueError(
|
|
283
|
+
f"{RESIDUAL_FRONTIER_PLANNING_ENV} must be exactly 0 or 1"
|
|
284
|
+
)
|
|
285
|
+
return raw == "1"
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
def campaign_operator_assay_minimum_from_environment(
|
|
289
|
+
environ: Mapping[str, str],
|
|
290
|
+
) -> int:
|
|
291
|
+
"""Read the workload-neutral evaluator exposure floor."""
|
|
292
|
+
|
|
293
|
+
raw = environ.get(OPERATOR_ASSAY_MINIMUM_ENV, "1")
|
|
294
|
+
if not raw.isascii() or not raw.isdigit():
|
|
295
|
+
raise ValueError(f"{OPERATOR_ASSAY_MINIMUM_ENV} must be decimal digits")
|
|
296
|
+
value = int(raw)
|
|
297
|
+
if not 1 <= value <= 4:
|
|
298
|
+
raise ValueError(f"{OPERATOR_ASSAY_MINIMUM_ENV} must lie in [1, 4]")
|
|
299
|
+
return value
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
def build_campaign_acquisition_allocator(
|
|
303
|
+
mode: CampaignAcquisitionMode,
|
|
304
|
+
*,
|
|
305
|
+
common_pool_enabled: bool,
|
|
306
|
+
operator_assay_minimum: int = 1,
|
|
307
|
+
family_exposure_phases: tuple[FamilyExposurePhase, ...] | None = None,
|
|
308
|
+
target_conditioned_profile: TargetConditionedAcquisitionProfile | None = None,
|
|
309
|
+
target_conditioned_context_provider: (
|
|
310
|
+
TargetConditionedAllocationContextProvider | None
|
|
311
|
+
) = None,
|
|
312
|
+
acquisition_certification_context_provider: (
|
|
313
|
+
AcquisitionCertifiedSlateContextProvider | None
|
|
314
|
+
) = None,
|
|
315
|
+
acquisition_batch_scorer: FiniteAcquisitionBatchScorePolicy | None = None,
|
|
316
|
+
regret_minimum_acquisition_retention_ratio: float = 1.0,
|
|
317
|
+
regret_minimum_residual_audit_members: int = 0,
|
|
318
|
+
regret_future_value_policy: SlateFutureValuePolicy | None = None,
|
|
319
|
+
regret_calibration_error_bound: float | None = None,
|
|
320
|
+
regret_allow_development_assay: bool = False,
|
|
321
|
+
) -> CalibratedPortfolioAllocator:
|
|
322
|
+
"""Build one exact allocator without benchmark-specific parameters."""
|
|
323
|
+
|
|
324
|
+
if type(mode) is not CampaignAcquisitionMode:
|
|
325
|
+
raise TypeError("mode must be an exact CampaignAcquisitionMode")
|
|
326
|
+
if type(common_pool_enabled) is not bool:
|
|
327
|
+
raise TypeError("common_pool_enabled must be an exact bool")
|
|
328
|
+
if (
|
|
329
|
+
type(operator_assay_minimum) is not int
|
|
330
|
+
or not 1 <= operator_assay_minimum <= 4
|
|
331
|
+
):
|
|
332
|
+
raise ValueError("operator_assay_minimum must lie in [1, 4]")
|
|
333
|
+
if (
|
|
334
|
+
mode is not CampaignAcquisitionMode.OPERATOR_STRATIFIED
|
|
335
|
+
and operator_assay_minimum != 1
|
|
336
|
+
):
|
|
337
|
+
raise ValueError(
|
|
338
|
+
"operator_assay_minimum is configurable only for operator_stratified"
|
|
339
|
+
)
|
|
340
|
+
if (
|
|
341
|
+
mode is CampaignAcquisitionMode.HORIZON_BOUNDED
|
|
342
|
+
and family_exposure_phases is None
|
|
343
|
+
):
|
|
344
|
+
raise ValueError("horizon_bounded requires explicit family_exposure_phases")
|
|
345
|
+
if (
|
|
346
|
+
mode is not CampaignAcquisitionMode.HORIZON_BOUNDED
|
|
347
|
+
and family_exposure_phases is not None
|
|
348
|
+
):
|
|
349
|
+
raise ValueError(
|
|
350
|
+
"family_exposure_phases are configurable only for horizon_bounded"
|
|
351
|
+
)
|
|
352
|
+
if mode is CampaignAcquisitionMode.TARGET_CONDITIONED:
|
|
353
|
+
if not common_pool_enabled:
|
|
354
|
+
raise ValueError(
|
|
355
|
+
"target-conditioned K8-to-K4 acquisition requires a common pool"
|
|
356
|
+
)
|
|
357
|
+
if type(target_conditioned_profile) is not (
|
|
358
|
+
TargetConditionedAcquisitionProfile
|
|
359
|
+
):
|
|
360
|
+
raise TypeError("target-conditioned mode requires one exact profile")
|
|
361
|
+
if target_conditioned_context_provider is None:
|
|
362
|
+
target_conditioned_context_provider = (
|
|
363
|
+
RegisteredTargetConditionedAllocationContextProvider()
|
|
364
|
+
)
|
|
365
|
+
return TargetConditionedSlateAllocatorAdapter(
|
|
366
|
+
context_provider=target_conditioned_context_provider,
|
|
367
|
+
profile=target_conditioned_profile,
|
|
368
|
+
)
|
|
369
|
+
if mode in {
|
|
370
|
+
CampaignAcquisitionMode.ACQUISITION_CERTIFIED,
|
|
371
|
+
CampaignAcquisitionMode.REGRET_BOUNDED_INFORMATION,
|
|
372
|
+
}:
|
|
373
|
+
if not common_pool_enabled:
|
|
374
|
+
raise ValueError(
|
|
375
|
+
"acquisition-certified K8-to-K4 allocation requires a common pool"
|
|
376
|
+
)
|
|
377
|
+
if not isinstance(
|
|
378
|
+
acquisition_certification_context_provider,
|
|
379
|
+
AcquisitionCertifiedSlateContextProvider,
|
|
380
|
+
):
|
|
381
|
+
raise TypeError(
|
|
382
|
+
"acquisition-certified mode requires its context provider"
|
|
383
|
+
)
|
|
384
|
+
if not isinstance(acquisition_batch_scorer, FiniteAcquisitionBatchScorePolicy):
|
|
385
|
+
raise TypeError("acquisition-certified mode requires its batch scorer")
|
|
386
|
+
if mode is CampaignAcquisitionMode.ACQUISITION_CERTIFIED:
|
|
387
|
+
if (
|
|
388
|
+
regret_minimum_acquisition_retention_ratio != 1.0
|
|
389
|
+
or regret_minimum_residual_audit_members != 0
|
|
390
|
+
or regret_future_value_policy is not None
|
|
391
|
+
or regret_calibration_error_bound is not None
|
|
392
|
+
or regret_allow_development_assay
|
|
393
|
+
):
|
|
394
|
+
raise ValueError("regret controls require regret-bounded mode")
|
|
395
|
+
return AcquisitionCertifiedSlatePolicy(
|
|
396
|
+
context_provider=acquisition_certification_context_provider,
|
|
397
|
+
scorer=acquisition_batch_scorer,
|
|
398
|
+
)
|
|
399
|
+
return RegretBoundedSlatePolicy(
|
|
400
|
+
context_provider=acquisition_certification_context_provider,
|
|
401
|
+
scorer=acquisition_batch_scorer,
|
|
402
|
+
future_value_policy=(
|
|
403
|
+
ZeroSlateFutureValuePolicy()
|
|
404
|
+
if regret_future_value_policy is None
|
|
405
|
+
else regret_future_value_policy
|
|
406
|
+
),
|
|
407
|
+
minimum_acquisition_retention_ratio=(
|
|
408
|
+
regret_minimum_acquisition_retention_ratio
|
|
409
|
+
),
|
|
410
|
+
minimum_residual_audit_members=(
|
|
411
|
+
regret_minimum_residual_audit_members
|
|
412
|
+
),
|
|
413
|
+
calibration_error_bound=regret_calibration_error_bound,
|
|
414
|
+
allow_development_assay=regret_allow_development_assay,
|
|
415
|
+
)
|
|
416
|
+
if (
|
|
417
|
+
target_conditioned_profile is not None
|
|
418
|
+
or target_conditioned_context_provider is not None
|
|
419
|
+
):
|
|
420
|
+
raise ValueError(
|
|
421
|
+
"target-conditioned components are valid only for their exact mode"
|
|
422
|
+
)
|
|
423
|
+
if (
|
|
424
|
+
acquisition_certification_context_provider is not None
|
|
425
|
+
or acquisition_batch_scorer is not None
|
|
426
|
+
):
|
|
427
|
+
raise ValueError(
|
|
428
|
+
"certified-acquisition components are valid only for their exact mode"
|
|
429
|
+
)
|
|
430
|
+
if (
|
|
431
|
+
regret_minimum_acquisition_retention_ratio != 1.0
|
|
432
|
+
or regret_minimum_residual_audit_members != 0
|
|
433
|
+
or regret_future_value_policy is not None
|
|
434
|
+
or regret_calibration_error_bound is not None
|
|
435
|
+
or regret_allow_development_assay
|
|
436
|
+
):
|
|
437
|
+
raise ValueError("regret controls require regret-bounded mode")
|
|
438
|
+
if not common_pool_enabled:
|
|
439
|
+
if mode is not CampaignAcquisitionMode.FULL_SUPPORT:
|
|
440
|
+
raise ValueError(
|
|
441
|
+
"K8-to-K4 acquisition requires the common candidate-pool contract"
|
|
442
|
+
)
|
|
443
|
+
return FullSupportSlatePolicy()
|
|
444
|
+
if mode is CampaignAcquisitionMode.FULL_SUPPORT:
|
|
445
|
+
raise ValueError("full-support K8 evaluation is incompatible with K4 width")
|
|
446
|
+
if mode is CampaignAcquisitionMode.MODEL_TOP_K:
|
|
447
|
+
return ModelAnchoredCalibratedSlatePolicy(model_anchor_count=4)
|
|
448
|
+
if mode is CampaignAcquisitionMode.OPERATOR_STRATIFIED:
|
|
449
|
+
return OperatorStratifiedStructuralPosteriorSlatePolicy(
|
|
450
|
+
((COMPOSITE_OPTION_FAMILY, operator_assay_minimum),)
|
|
451
|
+
)
|
|
452
|
+
if mode is CampaignAcquisitionMode.HORIZON_BOUNDED:
|
|
453
|
+
assert family_exposure_phases is not None
|
|
454
|
+
return HorizonBoundedStructuralPosteriorSlatePolicy(
|
|
455
|
+
family_exposure_phases
|
|
456
|
+
)
|
|
457
|
+
return StructuralPosteriorSlatePolicy()
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
def build_campaign_proposal_support_policy(
|
|
461
|
+
mode: CampaignAcquisitionMode,
|
|
462
|
+
*,
|
|
463
|
+
common_pool_enabled: bool,
|
|
464
|
+
) -> StructuralProposalSupportPolicy | None:
|
|
465
|
+
"""Build the proposal-support stage paired with one acquisition mode."""
|
|
466
|
+
|
|
467
|
+
if type(mode) is not CampaignAcquisitionMode:
|
|
468
|
+
raise TypeError("mode must be an exact CampaignAcquisitionMode")
|
|
469
|
+
if type(common_pool_enabled) is not bool:
|
|
470
|
+
raise TypeError("common_pool_enabled must be an exact bool")
|
|
471
|
+
if mode in {
|
|
472
|
+
CampaignAcquisitionMode.HIERARCHICAL_SUPPORT,
|
|
473
|
+
CampaignAcquisitionMode.OPERATOR_STRATIFIED,
|
|
474
|
+
CampaignAcquisitionMode.HORIZON_BOUNDED,
|
|
475
|
+
CampaignAcquisitionMode.TARGET_CONDITIONED,
|
|
476
|
+
}:
|
|
477
|
+
if not common_pool_enabled:
|
|
478
|
+
raise ValueError(
|
|
479
|
+
"hierarchical proposal support requires the common candidate pool"
|
|
480
|
+
)
|
|
481
|
+
return StructuralProposalSupportPolicy()
|
|
482
|
+
return None
|
|
483
|
+
|
|
484
|
+
|
|
485
|
+
def campaign_selector_policy_definition_sha256(
|
|
486
|
+
allocator: CalibratedPortfolioAllocator,
|
|
487
|
+
*,
|
|
488
|
+
constraint_decoupled: bool = False,
|
|
489
|
+
minimum_intervention_projection: bool = False,
|
|
490
|
+
evidence_calibrated_source_mix: bool = False,
|
|
491
|
+
contextual_search_allocation: bool = False,
|
|
492
|
+
) -> str:
|
|
493
|
+
"""Return the outer adapter identity paired with an exact allocator."""
|
|
494
|
+
|
|
495
|
+
if type(constraint_decoupled) is not bool:
|
|
496
|
+
raise TypeError("constraint_decoupled must be an exact bool")
|
|
497
|
+
if type(minimum_intervention_projection) is not bool:
|
|
498
|
+
raise TypeError("minimum_intervention_projection must be an exact bool")
|
|
499
|
+
if type(evidence_calibrated_source_mix) is not bool:
|
|
500
|
+
raise TypeError("evidence_calibrated_source_mix must be an exact bool")
|
|
501
|
+
if type(contextual_search_allocation) is not bool:
|
|
502
|
+
raise TypeError("contextual_search_allocation must be an exact bool")
|
|
503
|
+
if contextual_search_allocation and not evidence_calibrated_source_mix:
|
|
504
|
+
raise ValueError(
|
|
505
|
+
"contextual search allocation requires evidence-calibrated source mix"
|
|
506
|
+
)
|
|
507
|
+
if evidence_calibrated_source_mix and not minimum_intervention_projection:
|
|
508
|
+
raise ValueError(
|
|
509
|
+
"evidence-calibrated source mix requires minimum intervention"
|
|
510
|
+
)
|
|
511
|
+
if minimum_intervention_projection and not constraint_decoupled:
|
|
512
|
+
raise ValueError(
|
|
513
|
+
"minimum intervention requires constraint-decoupled acquisition"
|
|
514
|
+
)
|
|
515
|
+
if contextual_search_allocation:
|
|
516
|
+
if type(allocator) is not HorizonBoundedStructuralPosteriorSlatePolicy:
|
|
517
|
+
raise ValueError(
|
|
518
|
+
"contextual search allocation requires the horizon-bounded "
|
|
519
|
+
"allocator"
|
|
520
|
+
)
|
|
521
|
+
return (
|
|
522
|
+
CONTEXTUAL_SEARCH_ALLOCATION_PORTFOLIO_SELECTION_POLICY_DEFINITION_SHA256
|
|
523
|
+
)
|
|
524
|
+
if evidence_calibrated_source_mix:
|
|
525
|
+
if type(allocator) is not HorizonBoundedStructuralPosteriorSlatePolicy:
|
|
526
|
+
raise ValueError(
|
|
527
|
+
"evidence-calibrated source mix requires the horizon-bounded "
|
|
528
|
+
"allocator"
|
|
529
|
+
)
|
|
530
|
+
return (
|
|
531
|
+
EVIDENCE_CALIBRATED_SOURCE_MIX_PORTFOLIO_SELECTION_POLICY_DEFINITION_SHA256
|
|
532
|
+
)
|
|
533
|
+
if minimum_intervention_projection:
|
|
534
|
+
if type(allocator) is not HorizonBoundedStructuralPosteriorSlatePolicy:
|
|
535
|
+
raise ValueError(
|
|
536
|
+
"minimum intervention requires the horizon-bounded allocator"
|
|
537
|
+
)
|
|
538
|
+
return (
|
|
539
|
+
MINIMUM_INTERVENTION_HORIZON_PORTFOLIO_SELECTION_POLICY_DEFINITION_SHA256
|
|
540
|
+
)
|
|
541
|
+
if constraint_decoupled:
|
|
542
|
+
if type(allocator) is AcquisitionCertifiedSlatePolicy:
|
|
543
|
+
return (
|
|
544
|
+
ACQUISITION_CERTIFIED_RESIDUAL_PORTFOLIO_SELECTION_POLICY_DEFINITION_SHA256
|
|
545
|
+
)
|
|
546
|
+
if type(allocator) is RegretBoundedSlatePolicy:
|
|
547
|
+
return (
|
|
548
|
+
REGRET_BOUNDED_INFORMATION_PORTFOLIO_SELECTION_POLICY_DEFINITION_SHA256
|
|
549
|
+
)
|
|
550
|
+
if type(allocator) is TargetConditionedSlateAllocatorAdapter:
|
|
551
|
+
return (
|
|
552
|
+
CONSTRAINT_DECOUPLED_TARGET_CONDITIONED_PORTFOLIO_SELECTION_POLICY_DEFINITION_SHA256
|
|
553
|
+
)
|
|
554
|
+
if type(allocator) is not HorizonBoundedStructuralPosteriorSlatePolicy:
|
|
555
|
+
raise ValueError(
|
|
556
|
+
"constraint-decoupled acquisition requires the horizon-bounded "
|
|
557
|
+
"or target-conditioned allocator"
|
|
558
|
+
)
|
|
559
|
+
return (
|
|
560
|
+
CONSTRAINT_DECOUPLED_HORIZON_PORTFOLIO_SELECTION_POLICY_DEFINITION_SHA256
|
|
561
|
+
)
|
|
562
|
+
|
|
563
|
+
if type(allocator) is FullSupportSlatePolicy:
|
|
564
|
+
return FULL_SUPPORT_CALIBRATED_PORTFOLIO_SELECTION_POLICY_DEFINITION_SHA256
|
|
565
|
+
if type(allocator) is ModelAnchoredCalibratedSlatePolicy:
|
|
566
|
+
return MODEL_ANCHORED_CALIBRATED_PORTFOLIO_SELECTION_POLICY_DEFINITION_SHA256
|
|
567
|
+
if type(allocator) is StructuralPosteriorSlatePolicy:
|
|
568
|
+
return (
|
|
569
|
+
STRUCTURAL_POSTERIOR_CALIBRATED_PORTFOLIO_SELECTION_POLICY_DEFINITION_SHA256
|
|
570
|
+
)
|
|
571
|
+
if type(allocator) is OperatorStratifiedStructuralPosteriorSlatePolicy:
|
|
572
|
+
return (
|
|
573
|
+
OPERATOR_STRATIFIED_CALIBRATED_PORTFOLIO_SELECTION_POLICY_DEFINITION_SHA256
|
|
574
|
+
)
|
|
575
|
+
if type(allocator) is HorizonBoundedStructuralPosteriorSlatePolicy:
|
|
576
|
+
return (
|
|
577
|
+
HORIZON_BOUNDED_CALIBRATED_PORTFOLIO_SELECTION_POLICY_DEFINITION_SHA256
|
|
578
|
+
)
|
|
579
|
+
if type(allocator) is TargetConditionedSlateAllocatorAdapter:
|
|
580
|
+
return (
|
|
581
|
+
TARGET_CONDITIONED_CALIBRATED_PORTFOLIO_SELECTION_POLICY_DEFINITION_SHA256
|
|
582
|
+
)
|
|
583
|
+
raise TypeError("allocator is not a supported campaign acquisition policy")
|
|
584
|
+
|
|
585
|
+
|
|
586
|
+
__all__ = [
|
|
587
|
+
"CampaignAcquisitionMode",
|
|
588
|
+
"CONSTRAINT_DECOUPLED_ACQUISITION_ENV",
|
|
589
|
+
"CONTEXTUAL_SEARCH_ALLOCATION_ENV",
|
|
590
|
+
"EVIDENCE_CALIBRATED_SOURCE_MIX_ENV",
|
|
591
|
+
"MINIMUM_INTERVENTION_PROJECTION_ENV",
|
|
592
|
+
"OPERATOR_ASSAY_MINIMUM_ENV",
|
|
593
|
+
"RESIDUAL_FRONTIER_PLANNING_ENV",
|
|
594
|
+
"REGRET_ALLOW_DEVELOPMENT_ASSAY_ENV",
|
|
595
|
+
"REGRET_CALIBRATION_ERROR_BOUND_ENV",
|
|
596
|
+
"REGRET_MINIMUM_ACQUISITION_RETENTION_RATIO_ENV",
|
|
597
|
+
"REGRET_RESIDUAL_ASSAY_VALUE_ENV",
|
|
598
|
+
"RegretBoundedInformationControls",
|
|
599
|
+
"build_campaign_acquisition_allocator",
|
|
600
|
+
"build_campaign_proposal_support_policy",
|
|
601
|
+
"campaign_constraint_decoupled_acquisition_from_environment",
|
|
602
|
+
"campaign_contextual_search_allocation_from_environment",
|
|
603
|
+
"campaign_evidence_calibrated_source_mix_from_environment",
|
|
604
|
+
"campaign_minimum_intervention_projection_from_environment",
|
|
605
|
+
"campaign_operator_assay_minimum_from_environment",
|
|
606
|
+
"campaign_residual_frontier_planning_from_environment",
|
|
607
|
+
"campaign_regret_bounded_information_controls_from_environment",
|
|
608
|
+
"campaign_selector_policy_definition_sha256",
|
|
609
|
+
]
|