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,395 @@
|
|
|
1
|
+
"""Canonical learning projection for identifiable campaign reflection.
|
|
2
|
+
|
|
3
|
+
The provider-facing reflection request deliberately receives only sealed,
|
|
4
|
+
direct, single-mutation evidence. This module closes the other side of that
|
|
5
|
+
boundary: it joins the exact request and validated provider result back to the
|
|
6
|
+
typed campaign input, then emits the one canonical learning envelope consumed
|
|
7
|
+
by :mod:`agent_evolve.application.campaign_learning_runtime`.
|
|
8
|
+
|
|
9
|
+
The projection is workload-neutral and side-effect free. In particular it
|
|
10
|
+
does not inspect a source-stage payload, consume recombination results, call a
|
|
11
|
+
provider, evaluate a candidate, or mutate campaign memory.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
from agent_evolve.application.campaign_learning_runtime import (
|
|
17
|
+
CampaignReflectionLearningRecord,
|
|
18
|
+
CampaignReflectionLearningRecordCodec,
|
|
19
|
+
)
|
|
20
|
+
from agent_evolve.application.identifiable_reflection_evidence import (
|
|
21
|
+
IdentifiableMutationReflectionContrast,
|
|
22
|
+
)
|
|
23
|
+
from agent_evolve.application.identifiable_reflection_request import (
|
|
24
|
+
IDENTIFIABLE_REFLECTION_FACT_SCHEMA_DEFINITION_SHA256,
|
|
25
|
+
IDENTIFIABLE_REFLECTION_FACT_SCHEMA_ID,
|
|
26
|
+
IDENTIFIABLE_REFLECTION_FACT_SCHEMA_VERSION,
|
|
27
|
+
build_identifiable_reflection_generation_request,
|
|
28
|
+
identifiable_reflection_request_construction_record,
|
|
29
|
+
)
|
|
30
|
+
from agent_evolve.application.insight_memory import EmpiricalEvidenceSnapshot
|
|
31
|
+
from agent_evolve.application.portfolio_campaign_runtime import (
|
|
32
|
+
CampaignIdentifiableReflectionInput,
|
|
33
|
+
)
|
|
34
|
+
from agent_evolve.core.optimization_semantics import OptimizationSemantics
|
|
35
|
+
from agent_evolve.domain.finite_variation import FiniteActionEvidenceBinding
|
|
36
|
+
from agent_evolve.domain.patch import require_sha256
|
|
37
|
+
from agent_evolve.domain.typed_json import FrozenJsonObject, freeze_json, thaw_json
|
|
38
|
+
from agent_evolve.ports.agentic_generator import (
|
|
39
|
+
AgenticCallTelemetry,
|
|
40
|
+
ReflectionGenerationRequest,
|
|
41
|
+
ReflectionGenerationResult,
|
|
42
|
+
ReflectionInsightKind,
|
|
43
|
+
validate_reflection_evidence_catalog_result,
|
|
44
|
+
validate_reflection_insight_draft,
|
|
45
|
+
)
|
|
46
|
+
from agent_evolve.ports.decision_metric_projection import DecisionMetricProjection
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def _object(value: dict[str, object]) -> FrozenJsonObject:
|
|
50
|
+
frozen = freeze_json(value)
|
|
51
|
+
if type(frozen) is not FrozenJsonObject: # pragma: no cover - closed root.
|
|
52
|
+
raise AssertionError("identifiable empirical facts did not freeze to an object")
|
|
53
|
+
return frozen
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def _validate_exact_request(
|
|
57
|
+
*,
|
|
58
|
+
reflection_input: CampaignIdentifiableReflectionInput,
|
|
59
|
+
request: ReflectionGenerationRequest,
|
|
60
|
+
optimization_semantics: OptimizationSemantics,
|
|
61
|
+
) -> dict[str, object]:
|
|
62
|
+
"""Replay request construction and return its authenticated identity record."""
|
|
63
|
+
|
|
64
|
+
if type(reflection_input) is not CampaignIdentifiableReflectionInput:
|
|
65
|
+
raise TypeError("reflection_input must be exact")
|
|
66
|
+
CampaignIdentifiableReflectionInput.__post_init__(reflection_input)
|
|
67
|
+
if type(request) is not ReflectionGenerationRequest:
|
|
68
|
+
raise TypeError("request must be an exact ReflectionGenerationRequest")
|
|
69
|
+
ReflectionGenerationRequest.__post_init__(request)
|
|
70
|
+
if type(optimization_semantics) is not OptimizationSemantics:
|
|
71
|
+
raise TypeError("optimization_semantics must be exact")
|
|
72
|
+
OptimizationSemantics.__post_init__(optimization_semantics)
|
|
73
|
+
contract = request.insight_contract
|
|
74
|
+
catalog = request.evidence_catalog
|
|
75
|
+
if contract is None or catalog is None:
|
|
76
|
+
raise ValueError(
|
|
77
|
+
"identifiable reflection learning requires request contracts"
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
# Rebuilding through the only supported constructor rejects a handcrafted
|
|
81
|
+
# prompt, an overstated epistemic contract, reordered evidence, or foreign
|
|
82
|
+
# optimization semantics even when the outer dataclass remains well typed.
|
|
83
|
+
replay = build_identifiable_reflection_generation_request(
|
|
84
|
+
call_id=request.call_id,
|
|
85
|
+
evidence=reflection_input.evidence,
|
|
86
|
+
insight_contract=contract,
|
|
87
|
+
optimization_semantics=optimization_semantics,
|
|
88
|
+
max_output_tokens=request.max_output_tokens,
|
|
89
|
+
temperature=request.temperature,
|
|
90
|
+
max_insights=request.max_insights,
|
|
91
|
+
min_insights=request.min_insights,
|
|
92
|
+
)
|
|
93
|
+
if replay != request:
|
|
94
|
+
raise ValueError(
|
|
95
|
+
"reflection request differs from canonical identifiable construction"
|
|
96
|
+
)
|
|
97
|
+
return identifiable_reflection_request_construction_record(
|
|
98
|
+
request,
|
|
99
|
+
reflection_input.evidence,
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def _validate_result(
|
|
104
|
+
request: ReflectionGenerationRequest,
|
|
105
|
+
result: ReflectionGenerationResult,
|
|
106
|
+
) -> None:
|
|
107
|
+
if type(result) is not ReflectionGenerationResult:
|
|
108
|
+
raise TypeError("result must be an exact ReflectionGenerationResult")
|
|
109
|
+
ReflectionGenerationResult.__post_init__(result)
|
|
110
|
+
if type(result.telemetry) is not AgenticCallTelemetry:
|
|
111
|
+
raise TypeError("result telemetry must be exact AgenticCallTelemetry")
|
|
112
|
+
AgenticCallTelemetry.__post_init__(result.telemetry)
|
|
113
|
+
validate_reflection_evidence_catalog_result(request, result)
|
|
114
|
+
if not result.insights:
|
|
115
|
+
raise ValueError(
|
|
116
|
+
"identifiable reflection abstention is unsupported until campaign "
|
|
117
|
+
"memory accepts a typed empty-batch receipt"
|
|
118
|
+
)
|
|
119
|
+
if not request.min_insights <= len(result.insights) <= request.max_insights:
|
|
120
|
+
raise ValueError("reflection result insight count escaped request bounds")
|
|
121
|
+
normalized_claims = tuple(
|
|
122
|
+
" ".join(draft.claim.strip().casefold().split())
|
|
123
|
+
for draft in result.insights
|
|
124
|
+
)
|
|
125
|
+
if len(set(normalized_claims)) != len(normalized_claims):
|
|
126
|
+
raise ValueError("identifiable reflection produced duplicate normalized claims")
|
|
127
|
+
contract = request.insight_contract
|
|
128
|
+
if contract is None: # pragma: no cover - exact request validation precedes this.
|
|
129
|
+
raise AssertionError("validated identifiable request lost its contract")
|
|
130
|
+
for draft in result.insights:
|
|
131
|
+
validate_reflection_insight_draft(draft, contract)
|
|
132
|
+
if draft.insight_kind is not ReflectionInsightKind.EMPIRICAL_PREDICTIVE_RULE:
|
|
133
|
+
raise ValueError("identifiable mutation reflection is empirical-only")
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
def _finite_binding(
|
|
137
|
+
contrast: IdentifiableMutationReflectionContrast,
|
|
138
|
+
) -> FiniteActionEvidenceBinding:
|
|
139
|
+
contrast.__post_init__()
|
|
140
|
+
# Finite-contract identity is mandatory in the identifiable contrast v2
|
|
141
|
+
# schema. Do not silently emit an unbound card if an older projection is
|
|
142
|
+
# injected at runtime.
|
|
143
|
+
require_sha256(
|
|
144
|
+
contrast.finite_contract_identity_sha256,
|
|
145
|
+
"finite_contract_identity_sha256",
|
|
146
|
+
)
|
|
147
|
+
return FiniteActionEvidenceBinding(
|
|
148
|
+
contrast_id=contrast.contrast_id,
|
|
149
|
+
option_id=contrast.option_id,
|
|
150
|
+
family=contrast.option_family,
|
|
151
|
+
option_identity_sha256=contrast.option_identity_sha256,
|
|
152
|
+
contract_identity_sha256=contrast.finite_contract_identity_sha256,
|
|
153
|
+
)
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
def _empirical_snapshot(
|
|
157
|
+
*,
|
|
158
|
+
contrast: IdentifiableMutationReflectionContrast,
|
|
159
|
+
citation_key: str,
|
|
160
|
+
reflection_input: CampaignIdentifiableReflectionInput,
|
|
161
|
+
request: ReflectionGenerationRequest,
|
|
162
|
+
request_identity_sha256: str,
|
|
163
|
+
optimization_semantics: OptimizationSemantics,
|
|
164
|
+
decision_metrics: DecisionMetricProjection,
|
|
165
|
+
action_semantics_compiler_id: str,
|
|
166
|
+
action_semantics_compiler_version: int,
|
|
167
|
+
action_semantics_definition_sha256: str,
|
|
168
|
+
) -> EmpiricalEvidenceSnapshot:
|
|
169
|
+
contract = request.insight_contract
|
|
170
|
+
catalog = request.evidence_catalog
|
|
171
|
+
if contract is None or catalog is None: # pragma: no cover - validated first.
|
|
172
|
+
raise AssertionError("validated identifiable request lost its contracts")
|
|
173
|
+
facts = _object(
|
|
174
|
+
{
|
|
175
|
+
"schema_version": 1,
|
|
176
|
+
"design_kind": "direct_single_mutation",
|
|
177
|
+
"comparison_anchor": "current_parent",
|
|
178
|
+
"mechanism_identifying_design": False,
|
|
179
|
+
"permitted_insight_kinds": [
|
|
180
|
+
ReflectionInsightKind.EMPIRICAL_PREDICTIVE_RULE.value
|
|
181
|
+
],
|
|
182
|
+
"request_binding": {
|
|
183
|
+
"campaign_identifiable_reflection_input_sha256": (
|
|
184
|
+
reflection_input.input_sha256
|
|
185
|
+
),
|
|
186
|
+
"identifiable_reflection_request_identity_sha256": (
|
|
187
|
+
request_identity_sha256
|
|
188
|
+
),
|
|
189
|
+
"evidence_snapshot_sha256": (
|
|
190
|
+
reflection_input.evidence.snapshot_sha256
|
|
191
|
+
),
|
|
192
|
+
"evidence_catalog_identity_sha256": (
|
|
193
|
+
catalog.catalog_identity_sha256
|
|
194
|
+
),
|
|
195
|
+
"insight_contract_identity_sha256": contract.identity_sha256,
|
|
196
|
+
"decision_metric_projection_definition_sha256": (
|
|
197
|
+
decision_metrics.definition_sha256
|
|
198
|
+
),
|
|
199
|
+
"action_semantics_compiler": {
|
|
200
|
+
"compiler_id": action_semantics_compiler_id,
|
|
201
|
+
"compiler_version": action_semantics_compiler_version,
|
|
202
|
+
"definition_sha256": action_semantics_definition_sha256,
|
|
203
|
+
},
|
|
204
|
+
},
|
|
205
|
+
"source_scope": {
|
|
206
|
+
"source_observation_sha256": (
|
|
207
|
+
contrast.source_observation_sha256
|
|
208
|
+
),
|
|
209
|
+
"source_evidence_id": contrast.source_evidence_id,
|
|
210
|
+
"event_index": contrast.event_index,
|
|
211
|
+
"workload_instance_sha256": contrast.workload_instance_sha256,
|
|
212
|
+
"evaluator_contract_sha256": contrast.evaluator_contract_sha256,
|
|
213
|
+
"campaign_sha256": contrast.campaign_sha256,
|
|
214
|
+
"evidence_citation_key": citation_key,
|
|
215
|
+
},
|
|
216
|
+
"occurrence_lineage": {
|
|
217
|
+
"parent_candidate_id": contrast.parent_candidate_id.value,
|
|
218
|
+
"child_candidate_id": contrast.child_candidate_id.value,
|
|
219
|
+
"operator_invocation_id": contrast.operator_invocation_id.value,
|
|
220
|
+
},
|
|
221
|
+
"finite_action": {
|
|
222
|
+
"option_id": contrast.option_id,
|
|
223
|
+
"option_identity_sha256": contrast.option_identity_sha256,
|
|
224
|
+
"option_family": contrast.option_family,
|
|
225
|
+
"finite_contract_identity_sha256": (
|
|
226
|
+
contrast.finite_contract_identity_sha256
|
|
227
|
+
),
|
|
228
|
+
},
|
|
229
|
+
"local_intervention": {
|
|
230
|
+
"affected_path": contrast.affected_path,
|
|
231
|
+
"parent_value": thaw_json(contrast.parent_local_value),
|
|
232
|
+
"child_value": thaw_json(contrast.child_local_value),
|
|
233
|
+
},
|
|
234
|
+
"configuration_lineage": {
|
|
235
|
+
"parent_configuration_sha256": (
|
|
236
|
+
contrast.parent_configuration_sha256
|
|
237
|
+
),
|
|
238
|
+
"child_configuration_sha256": contrast.child_configuration_sha256,
|
|
239
|
+
},
|
|
240
|
+
"outcome_lineage": {
|
|
241
|
+
"parent_outcome_sha256": contrast.parent_outcome_sha256,
|
|
242
|
+
"child_outcome_sha256": contrast.child_outcome_sha256,
|
|
243
|
+
},
|
|
244
|
+
"observed_metric_effects": [
|
|
245
|
+
value.to_record() for value in contrast.metrics
|
|
246
|
+
],
|
|
247
|
+
}
|
|
248
|
+
)
|
|
249
|
+
return EmpiricalEvidenceSnapshot(
|
|
250
|
+
contrast_id=contrast.contrast_id,
|
|
251
|
+
fact_schema_id=IDENTIFIABLE_REFLECTION_FACT_SCHEMA_ID,
|
|
252
|
+
fact_schema_version=IDENTIFIABLE_REFLECTION_FACT_SCHEMA_VERSION,
|
|
253
|
+
fact_schema_definition_sha256=(
|
|
254
|
+
IDENTIFIABLE_REFLECTION_FACT_SCHEMA_DEFINITION_SHA256
|
|
255
|
+
),
|
|
256
|
+
facts=facts,
|
|
257
|
+
optimization_semantics_definition_sha256=(
|
|
258
|
+
optimization_semantics.definition_sha256
|
|
259
|
+
),
|
|
260
|
+
action_semantics_definition_sha256=action_semantics_definition_sha256,
|
|
261
|
+
)
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
def build_identifiable_campaign_reflection_learning_record(
|
|
265
|
+
*,
|
|
266
|
+
reflection_input: CampaignIdentifiableReflectionInput,
|
|
267
|
+
request: ReflectionGenerationRequest,
|
|
268
|
+
result: ReflectionGenerationResult,
|
|
269
|
+
optimization_semantics: OptimizationSemantics,
|
|
270
|
+
) -> CampaignReflectionLearningRecord:
|
|
271
|
+
"""Join one completed identifiable reflection to canonical campaign learning.
|
|
272
|
+
|
|
273
|
+
The trusted action-semantics compiler identity is derived from the
|
|
274
|
+
authenticated contrasts and must be identical across the evidence cohort.
|
|
275
|
+
It is intentionally not inferred from a decision projection, provider
|
|
276
|
+
request, or finite contract; those are distinct authorities.
|
|
277
|
+
"""
|
|
278
|
+
construction = _validate_exact_request(
|
|
279
|
+
reflection_input=reflection_input,
|
|
280
|
+
request=request,
|
|
281
|
+
optimization_semantics=optimization_semantics,
|
|
282
|
+
)
|
|
283
|
+
_validate_result(request, result)
|
|
284
|
+
request_identity = construction["request_identity_sha256"]
|
|
285
|
+
if type(request_identity) is not str: # pragma: no cover - closed helper.
|
|
286
|
+
raise AssertionError("request construction emitted a non-string identity")
|
|
287
|
+
require_sha256(request_identity, "request_identity_sha256")
|
|
288
|
+
evidence = reflection_input.evidence
|
|
289
|
+
catalog = request.evidence_catalog
|
|
290
|
+
contract = request.insight_contract
|
|
291
|
+
if catalog is None or contract is None: # pragma: no cover - validated first.
|
|
292
|
+
raise AssertionError("validated identifiable request lost its contracts")
|
|
293
|
+
contrasts = evidence.contrasts
|
|
294
|
+
contrast_ids = tuple(value.contrast_id for value in contrasts)
|
|
295
|
+
if contrast_ids != catalog.contrast_ids:
|
|
296
|
+
raise ValueError("evidence catalog order differs from identifiable evidence")
|
|
297
|
+
decision_metrics = DecisionMetricProjection.from_optimization_semantics(
|
|
298
|
+
optimization_semantics
|
|
299
|
+
)
|
|
300
|
+
action_semantics_identities = {
|
|
301
|
+
(
|
|
302
|
+
value.action_semantics_compiler_id,
|
|
303
|
+
value.action_semantics_compiler_version,
|
|
304
|
+
value.action_semantics_definition_sha256,
|
|
305
|
+
)
|
|
306
|
+
for value in contrasts
|
|
307
|
+
}
|
|
308
|
+
if len(action_semantics_identities) != 1:
|
|
309
|
+
raise ValueError(
|
|
310
|
+
"identifiable evidence mixes action-semantics compiler identities"
|
|
311
|
+
)
|
|
312
|
+
(
|
|
313
|
+
action_semantics_compiler_id,
|
|
314
|
+
action_semantics_compiler_version,
|
|
315
|
+
action_semantics_definition_sha256,
|
|
316
|
+
) = next(iter(action_semantics_identities))
|
|
317
|
+
require_sha256(
|
|
318
|
+
action_semantics_definition_sha256,
|
|
319
|
+
"action_semantics_definition_sha256",
|
|
320
|
+
)
|
|
321
|
+
bindings = tuple(_finite_binding(value) for value in contrasts)
|
|
322
|
+
if tuple(value.contrast_id for value in bindings) != catalog.contrast_ids:
|
|
323
|
+
raise AssertionError("finite binding projection lost canonical catalog order")
|
|
324
|
+
empirical = tuple(
|
|
325
|
+
_empirical_snapshot(
|
|
326
|
+
contrast=value,
|
|
327
|
+
citation_key=catalog.citation_key_for_contrast_id(value.contrast_id),
|
|
328
|
+
reflection_input=reflection_input,
|
|
329
|
+
request=request,
|
|
330
|
+
request_identity_sha256=request_identity,
|
|
331
|
+
optimization_semantics=optimization_semantics,
|
|
332
|
+
decision_metrics=decision_metrics,
|
|
333
|
+
action_semantics_compiler_id=action_semantics_compiler_id,
|
|
334
|
+
action_semantics_compiler_version=(
|
|
335
|
+
action_semantics_compiler_version
|
|
336
|
+
),
|
|
337
|
+
action_semantics_definition_sha256=(
|
|
338
|
+
action_semantics_definition_sha256
|
|
339
|
+
),
|
|
340
|
+
)
|
|
341
|
+
for value in contrasts
|
|
342
|
+
)
|
|
343
|
+
query = reflection_input.query
|
|
344
|
+
return CampaignReflectionLearningRecord(
|
|
345
|
+
reflection_generation_request_sha256=request_identity,
|
|
346
|
+
reflection_call_id=request.call_id,
|
|
347
|
+
source_generation=query.wave.source_generation,
|
|
348
|
+
source_stage_receipt_sha256=query.source_stage_receipt_sha256,
|
|
349
|
+
origin_cutoff_event_index=query.sealed_cutoff_event_index_inclusive,
|
|
350
|
+
source_operator_invocation_ids=tuple(
|
|
351
|
+
sorted({value.operator_invocation_id for value in contrasts})
|
|
352
|
+
),
|
|
353
|
+
source_candidate_ids=tuple(
|
|
354
|
+
sorted(
|
|
355
|
+
{
|
|
356
|
+
candidate_id
|
|
357
|
+
for value in contrasts
|
|
358
|
+
for candidate_id in (
|
|
359
|
+
value.parent_candidate_id,
|
|
360
|
+
value.child_candidate_id,
|
|
361
|
+
)
|
|
362
|
+
}
|
|
363
|
+
)
|
|
364
|
+
),
|
|
365
|
+
evidence_catalog=catalog,
|
|
366
|
+
insight_contract=contract,
|
|
367
|
+
insights=result.insights,
|
|
368
|
+
finite_action_bindings=bindings,
|
|
369
|
+
empirical_evidence=empirical,
|
|
370
|
+
)
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
def build_identifiable_campaign_reflection_learning_envelope(
|
|
374
|
+
*,
|
|
375
|
+
reflection_input: CampaignIdentifiableReflectionInput,
|
|
376
|
+
request: ReflectionGenerationRequest,
|
|
377
|
+
result: ReflectionGenerationResult,
|
|
378
|
+
optimization_semantics: OptimizationSemantics,
|
|
379
|
+
) -> FrozenJsonObject:
|
|
380
|
+
"""Return the strict codec envelope expected by campaign memory learning."""
|
|
381
|
+
|
|
382
|
+
return CampaignReflectionLearningRecordCodec.encode(
|
|
383
|
+
build_identifiable_campaign_reflection_learning_record(
|
|
384
|
+
reflection_input=reflection_input,
|
|
385
|
+
request=request,
|
|
386
|
+
result=result,
|
|
387
|
+
optimization_semantics=optimization_semantics,
|
|
388
|
+
)
|
|
389
|
+
)
|
|
390
|
+
|
|
391
|
+
|
|
392
|
+
__all__ = [
|
|
393
|
+
"build_identifiable_campaign_reflection_learning_envelope",
|
|
394
|
+
"build_identifiable_campaign_reflection_learning_record",
|
|
395
|
+
]
|