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,262 @@
|
|
|
1
|
+
"""Transactional registry for authenticated campaign hypothesis evidence.
|
|
2
|
+
|
|
3
|
+
The global falsification policy consumes immutable registry snapshots, while a
|
|
4
|
+
campaign stage is published only after candidate evaluation, memory credit,
|
|
5
|
+
outcome feedback, and lifecycle preparation have all succeeded. This module
|
|
6
|
+
bridges those requirements: observations are validated and sealed into a
|
|
7
|
+
prospective snapshot during the fallible prepare phase, then appended by a
|
|
8
|
+
synchronous commit that performs no I/O.
|
|
9
|
+
|
|
10
|
+
The registry is deliberately ignorant of benchmark configurations, objective
|
|
11
|
+
semantics, LLM providers, and insight text. Workload/application adapters are
|
|
12
|
+
responsible for constructing :class:`AuthenticatedHypothesisObservation`
|
|
13
|
+
values; this component owns only append order, uniqueness, and snapshot
|
|
14
|
+
identity.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
from __future__ import annotations
|
|
18
|
+
|
|
19
|
+
import hashlib
|
|
20
|
+
import json
|
|
21
|
+
from dataclasses import dataclass, field
|
|
22
|
+
|
|
23
|
+
from agent_evolve.domain.patch import require_sha256
|
|
24
|
+
from agent_evolve.policies.memory.global_falsification import (
|
|
25
|
+
AuthenticatedHypothesisObservation,
|
|
26
|
+
GlobalEvidenceRegistrySnapshot,
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
_PREPARATION_DOMAIN = b"agent-evolve:campaign-evidence-append-preparation:v1\x00"
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def _canonical_json(value: object) -> bytes:
|
|
34
|
+
return json.dumps(
|
|
35
|
+
value,
|
|
36
|
+
allow_nan=False,
|
|
37
|
+
ensure_ascii=True,
|
|
38
|
+
separators=(",", ":"),
|
|
39
|
+
sort_keys=True,
|
|
40
|
+
).encode("ascii", errors="strict")
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def _hash(value: object) -> str:
|
|
44
|
+
return hashlib.sha256(_PREPARATION_DOMAIN + _canonical_json(value)).hexdigest()
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
@dataclass(frozen=True, slots=True)
|
|
48
|
+
class CampaignEvidenceAppendPreparation:
|
|
49
|
+
"""Pure append proposal bound to the exact before/after registry states."""
|
|
50
|
+
|
|
51
|
+
prior_snapshot_sha256: str
|
|
52
|
+
prior_observation_count: int
|
|
53
|
+
observations: tuple[AuthenticatedHypothesisObservation, ...]
|
|
54
|
+
prospective_snapshot: GlobalEvidenceRegistrySnapshot
|
|
55
|
+
preparation_sha256: str = field(init=False)
|
|
56
|
+
|
|
57
|
+
def __post_init__(self) -> None:
|
|
58
|
+
require_sha256(self.prior_snapshot_sha256, "prior_snapshot_sha256")
|
|
59
|
+
if (
|
|
60
|
+
type(self.prior_observation_count) is not int
|
|
61
|
+
or self.prior_observation_count < 0
|
|
62
|
+
):
|
|
63
|
+
raise ValueError("prior_observation_count must be non-negative")
|
|
64
|
+
if type(self.observations) is not tuple or any(
|
|
65
|
+
type(value) is not AuthenticatedHypothesisObservation
|
|
66
|
+
for value in self.observations
|
|
67
|
+
):
|
|
68
|
+
raise TypeError(
|
|
69
|
+
"observations must contain exact authenticated observations"
|
|
70
|
+
)
|
|
71
|
+
for value in self.observations:
|
|
72
|
+
AuthenticatedHypothesisObservation.__post_init__(value)
|
|
73
|
+
source_ids = tuple(value.source_evidence_id for value in self.observations)
|
|
74
|
+
if source_ids != tuple(sorted(set(source_ids))):
|
|
75
|
+
raise ValueError("observations must use canonical unique source IDs")
|
|
76
|
+
if type(self.prospective_snapshot) is not GlobalEvidenceRegistrySnapshot:
|
|
77
|
+
raise TypeError("prospective_snapshot must be exact")
|
|
78
|
+
GlobalEvidenceRegistrySnapshot.__post_init__(self.prospective_snapshot)
|
|
79
|
+
prospective = self.prospective_snapshot.observations
|
|
80
|
+
if len(prospective) != self.prior_observation_count + len(self.observations):
|
|
81
|
+
raise ValueError("prospective snapshot does not close the append count")
|
|
82
|
+
if self.observations and (
|
|
83
|
+
tuple(value.source_evidence_id for value in prospective)[
|
|
84
|
+
-len(self.observations) :
|
|
85
|
+
]
|
|
86
|
+
!= source_ids
|
|
87
|
+
):
|
|
88
|
+
# The registry snapshot is globally sorted by source ID, so the new
|
|
89
|
+
# observations need not be a physical suffix. Compare sets below;
|
|
90
|
+
# this fast path merely avoids accepting a malformed count join.
|
|
91
|
+
prospective_ids = {value.source_evidence_id for value in prospective}
|
|
92
|
+
if not set(source_ids).issubset(prospective_ids):
|
|
93
|
+
raise ValueError("prospective snapshot omitted appended observations")
|
|
94
|
+
object.__setattr__(
|
|
95
|
+
self,
|
|
96
|
+
"preparation_sha256",
|
|
97
|
+
_hash(self._unsigned_record()),
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
def _unsigned_record(self) -> dict[str, object]:
|
|
101
|
+
return {
|
|
102
|
+
"schema_version": 1,
|
|
103
|
+
"prior_snapshot_sha256": self.prior_snapshot_sha256,
|
|
104
|
+
"prior_observation_count": self.prior_observation_count,
|
|
105
|
+
"observation_sha256s": [
|
|
106
|
+
value.observation_sha256 for value in self.observations
|
|
107
|
+
],
|
|
108
|
+
"prospective_snapshot_sha256": self.prospective_snapshot.snapshot_sha256,
|
|
109
|
+
"prospective_captured_through_event_index": (
|
|
110
|
+
self.prospective_snapshot.captured_through_event_index
|
|
111
|
+
),
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
def to_record(self) -> dict[str, object]:
|
|
115
|
+
self.__post_init__()
|
|
116
|
+
return {
|
|
117
|
+
**self._unsigned_record(),
|
|
118
|
+
"preparation_sha256": self.preparation_sha256,
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
@dataclass(slots=True)
|
|
123
|
+
class CampaignEvidenceRegistry:
|
|
124
|
+
"""Append-only in-memory registry with prepare/commit/abort publication."""
|
|
125
|
+
|
|
126
|
+
_observations: list[AuthenticatedHypothesisObservation] = field(
|
|
127
|
+
init=False,
|
|
128
|
+
default_factory=list,
|
|
129
|
+
)
|
|
130
|
+
_captured_through_event_index: int = field(init=False, default=0)
|
|
131
|
+
_prepared: dict[str, CampaignEvidenceAppendPreparation] = field(
|
|
132
|
+
init=False,
|
|
133
|
+
default_factory=dict,
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
@property
|
|
137
|
+
def observations(self) -> tuple[AuthenticatedHypothesisObservation, ...]:
|
|
138
|
+
return tuple(self._observations)
|
|
139
|
+
|
|
140
|
+
@property
|
|
141
|
+
def captured_through_event_index(self) -> int:
|
|
142
|
+
return self._captured_through_event_index
|
|
143
|
+
|
|
144
|
+
def snapshot(
|
|
145
|
+
self,
|
|
146
|
+
*,
|
|
147
|
+
captured_through_event_index: int | None = None,
|
|
148
|
+
) -> GlobalEvidenceRegistrySnapshot:
|
|
149
|
+
cutoff = (
|
|
150
|
+
self.captured_through_event_index
|
|
151
|
+
if captured_through_event_index is None
|
|
152
|
+
else captured_through_event_index
|
|
153
|
+
)
|
|
154
|
+
if type(cutoff) is not int or cutoff < self.captured_through_event_index:
|
|
155
|
+
raise ValueError("snapshot cutoff cannot precede committed evidence")
|
|
156
|
+
return GlobalEvidenceRegistrySnapshot.seal(
|
|
157
|
+
captured_through_event_index=cutoff,
|
|
158
|
+
observations=self._observations,
|
|
159
|
+
)
|
|
160
|
+
|
|
161
|
+
def prepare_append(
|
|
162
|
+
self,
|
|
163
|
+
observations: tuple[AuthenticatedHypothesisObservation, ...],
|
|
164
|
+
*,
|
|
165
|
+
captured_through_event_index: int | None = None,
|
|
166
|
+
) -> CampaignEvidenceAppendPreparation:
|
|
167
|
+
if type(observations) is not tuple or any(
|
|
168
|
+
type(value) is not AuthenticatedHypothesisObservation
|
|
169
|
+
for value in observations
|
|
170
|
+
):
|
|
171
|
+
raise TypeError(
|
|
172
|
+
"observations must contain exact authenticated observations"
|
|
173
|
+
)
|
|
174
|
+
for value in observations:
|
|
175
|
+
AuthenticatedHypothesisObservation.__post_init__(value)
|
|
176
|
+
canonical = tuple(
|
|
177
|
+
sorted(observations, key=lambda value: value.source_evidence_id)
|
|
178
|
+
)
|
|
179
|
+
source_ids = tuple(value.source_evidence_id for value in canonical)
|
|
180
|
+
if len(set(source_ids)) != len(source_ids):
|
|
181
|
+
raise ValueError("one append cannot repeat a source evidence ID")
|
|
182
|
+
committed_ids = {value.source_evidence_id for value in self._observations}
|
|
183
|
+
if committed_ids.intersection(source_ids):
|
|
184
|
+
raise ValueError("source evidence ID is already committed")
|
|
185
|
+
prior_cutoff = self.captured_through_event_index
|
|
186
|
+
if any(value.event_index <= prior_cutoff for value in canonical):
|
|
187
|
+
raise ValueError("new observations must follow the committed event cutoff")
|
|
188
|
+
inferred_cutoff = max(
|
|
189
|
+
(value.event_index for value in canonical),
|
|
190
|
+
default=prior_cutoff,
|
|
191
|
+
)
|
|
192
|
+
cutoff = (
|
|
193
|
+
inferred_cutoff
|
|
194
|
+
if captured_through_event_index is None
|
|
195
|
+
else captured_through_event_index
|
|
196
|
+
)
|
|
197
|
+
if type(cutoff) is not int or cutoff < inferred_cutoff:
|
|
198
|
+
raise ValueError("prospective cutoff does not cover appended evidence")
|
|
199
|
+
if not canonical and captured_through_event_index is None:
|
|
200
|
+
raise ValueError(
|
|
201
|
+
"an empty evidence append requires an explicit event cutoff"
|
|
202
|
+
)
|
|
203
|
+
if not canonical and cutoff <= prior_cutoff:
|
|
204
|
+
raise ValueError(
|
|
205
|
+
"an empty evidence append must advance the committed event cutoff"
|
|
206
|
+
)
|
|
207
|
+
prior = self.snapshot()
|
|
208
|
+
prospective = GlobalEvidenceRegistrySnapshot.seal(
|
|
209
|
+
captured_through_event_index=cutoff,
|
|
210
|
+
observations=(*self._observations, *canonical),
|
|
211
|
+
)
|
|
212
|
+
preparation = CampaignEvidenceAppendPreparation(
|
|
213
|
+
prior_snapshot_sha256=prior.snapshot_sha256,
|
|
214
|
+
prior_observation_count=len(self._observations),
|
|
215
|
+
observations=canonical,
|
|
216
|
+
prospective_snapshot=prospective,
|
|
217
|
+
)
|
|
218
|
+
if preparation.preparation_sha256 in self._prepared:
|
|
219
|
+
raise ValueError("evidence append preparation already exists")
|
|
220
|
+
self._prepared[preparation.preparation_sha256] = preparation
|
|
221
|
+
return preparation
|
|
222
|
+
|
|
223
|
+
def commit_append(
|
|
224
|
+
self,
|
|
225
|
+
preparation: CampaignEvidenceAppendPreparation,
|
|
226
|
+
) -> GlobalEvidenceRegistrySnapshot:
|
|
227
|
+
if type(preparation) is not CampaignEvidenceAppendPreparation:
|
|
228
|
+
raise TypeError("preparation must be exact")
|
|
229
|
+
CampaignEvidenceAppendPreparation.__post_init__(preparation)
|
|
230
|
+
stored = self._prepared.get(preparation.preparation_sha256)
|
|
231
|
+
if stored is not preparation:
|
|
232
|
+
raise ValueError("evidence append preparation is unavailable")
|
|
233
|
+
current = self.snapshot()
|
|
234
|
+
if (
|
|
235
|
+
current.snapshot_sha256 != preparation.prior_snapshot_sha256
|
|
236
|
+
or len(self._observations) != preparation.prior_observation_count
|
|
237
|
+
):
|
|
238
|
+
raise RuntimeError("evidence registry changed after preparation")
|
|
239
|
+
self._observations.extend(preparation.observations)
|
|
240
|
+
self._observations.sort(key=lambda value: value.source_evidence_id)
|
|
241
|
+
self._captured_through_event_index = (
|
|
242
|
+
preparation.prospective_snapshot.captured_through_event_index
|
|
243
|
+
)
|
|
244
|
+
committed = self.snapshot()
|
|
245
|
+
if (
|
|
246
|
+
committed.snapshot_sha256
|
|
247
|
+
!= preparation.prospective_snapshot.snapshot_sha256
|
|
248
|
+
):
|
|
249
|
+
raise RuntimeError("committed evidence differs from preparation")
|
|
250
|
+
del self._prepared[preparation.preparation_sha256]
|
|
251
|
+
return committed
|
|
252
|
+
|
|
253
|
+
def abort_append(self, preparation: CampaignEvidenceAppendPreparation) -> None:
|
|
254
|
+
if type(preparation) is not CampaignEvidenceAppendPreparation:
|
|
255
|
+
raise TypeError("preparation must be exact")
|
|
256
|
+
self._prepared.pop(preparation.preparation_sha256, None)
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
__all__ = [
|
|
260
|
+
"CampaignEvidenceAppendPreparation",
|
|
261
|
+
"CampaignEvidenceRegistry",
|
|
262
|
+
]
|