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,455 @@
|
|
|
1
|
+
"""Join prompt-visible action evidence to exact resolved forecast cells.
|
|
2
|
+
|
|
3
|
+
The benchmark injects :class:`PresentedActionEvidenceCell` values. This
|
|
4
|
+
application service validates their prompt provenance and performs only a pure
|
|
5
|
+
join and arithmetic projection. It has no outcome-store, evaluator, provider,
|
|
6
|
+
or benchmark dependency and therefore cannot silently turn presented evidence
|
|
7
|
+
into a truth or calibration claim.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
import hashlib
|
|
13
|
+
|
|
14
|
+
from agent_evolve.domain.finite_variation import FiniteActionEvidenceBinding
|
|
15
|
+
from agent_evolve.ports.action_forecast import (
|
|
16
|
+
ActionForecastBlockRequest,
|
|
17
|
+
ResolvedActionForecast,
|
|
18
|
+
ResolvedActionForecastBlock,
|
|
19
|
+
ResolvedActionMetricForecast,
|
|
20
|
+
validate_resolved_action_forecast_block,
|
|
21
|
+
)
|
|
22
|
+
from agent_evolve.ports.portfolio_selection import PortfolioCard
|
|
23
|
+
from agent_evolve.ports.presented_action_evidence import (
|
|
24
|
+
PresentedActionEvidenceCell,
|
|
25
|
+
PresentedActionEvidenceCellAssessment,
|
|
26
|
+
PresentedActionEvidenceConsistencyAssessment,
|
|
27
|
+
PresentedActionEvidenceConsistencyFrameKind,
|
|
28
|
+
PresentedActionEvidenceConsistencyPolicyBinding,
|
|
29
|
+
PresentedActionEvidenceProvenanceKind,
|
|
30
|
+
PresentedActionEvidenceSubsetBinding,
|
|
31
|
+
PresentedActionEvidenceSubsetPolicyBinding,
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
PRESENTED_ACTION_EVIDENCE_CONSISTENCY_POLICY_ID = (
|
|
36
|
+
"descriptive_presented_action_evidence_consistency"
|
|
37
|
+
)
|
|
38
|
+
PRESENTED_ACTION_EVIDENCE_CONSISTENCY_POLICY_VERSION = 1
|
|
39
|
+
PRESENTED_ACTION_EVIDENCE_CONSISTENCY_POLICY_DEFINITION_SHA256 = hashlib.sha256(
|
|
40
|
+
b"agent-evolve:descriptive-presented-action-evidence-consistency:v1;"
|
|
41
|
+
b"authenticated-prompt-provenance-required=true;"
|
|
42
|
+
b"maximum-normalized-absolute-error=none;"
|
|
43
|
+
b"require-direction-agreement=false;"
|
|
44
|
+
b"require-interval-coverage=false;"
|
|
45
|
+
b"scope=presented-evidence-not-truth-or-calibration"
|
|
46
|
+
).hexdigest()
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def descriptive_presented_action_evidence_consistency_policy(
|
|
50
|
+
) -> PresentedActionEvidenceConsistencyPolicyBinding:
|
|
51
|
+
"""Return the default authenticated, descriptive-only policy binding."""
|
|
52
|
+
|
|
53
|
+
return PresentedActionEvidenceConsistencyPolicyBinding(
|
|
54
|
+
policy_id=PRESENTED_ACTION_EVIDENCE_CONSISTENCY_POLICY_ID,
|
|
55
|
+
policy_version=PRESENTED_ACTION_EVIDENCE_CONSISTENCY_POLICY_VERSION,
|
|
56
|
+
policy_definition_sha256=(
|
|
57
|
+
PRESENTED_ACTION_EVIDENCE_CONSISTENCY_POLICY_DEFINITION_SHA256
|
|
58
|
+
),
|
|
59
|
+
maximum_normalized_absolute_error=None,
|
|
60
|
+
require_direction_agreement=False,
|
|
61
|
+
require_interval_coverage=False,
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def _validate_block(
|
|
66
|
+
block_request: ActionForecastBlockRequest,
|
|
67
|
+
block: ResolvedActionForecastBlock,
|
|
68
|
+
) -> None:
|
|
69
|
+
if type(block_request) is not ActionForecastBlockRequest:
|
|
70
|
+
raise TypeError("block_request must be an exact ActionForecastBlockRequest")
|
|
71
|
+
if type(block) is not ResolvedActionForecastBlock:
|
|
72
|
+
raise TypeError("block must be an exact ResolvedActionForecastBlock")
|
|
73
|
+
validate_resolved_action_forecast_block(block_request, block)
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def bind_presented_action_evidence_subset(
|
|
77
|
+
block_request: ActionForecastBlockRequest,
|
|
78
|
+
block: ResolvedActionForecastBlock,
|
|
79
|
+
*,
|
|
80
|
+
subset_policy: PresentedActionEvidenceSubsetPolicyBinding,
|
|
81
|
+
included_global_row_indices: tuple[int, ...],
|
|
82
|
+
) -> PresentedActionEvidenceSubsetBinding:
|
|
83
|
+
"""Bind an identified exact row subset to one resolved block receipt."""
|
|
84
|
+
|
|
85
|
+
_validate_block(block_request, block)
|
|
86
|
+
if type(subset_policy) is not PresentedActionEvidenceSubsetPolicyBinding:
|
|
87
|
+
raise TypeError("subset_policy must be an exact subset-policy binding")
|
|
88
|
+
subset_policy.__post_init__()
|
|
89
|
+
if type(included_global_row_indices) is not tuple or not (
|
|
90
|
+
included_global_row_indices
|
|
91
|
+
) or any(type(value) is not int for value in included_global_row_indices):
|
|
92
|
+
raise ValueError(
|
|
93
|
+
"included_global_row_indices must be a non-empty exact tuple"
|
|
94
|
+
)
|
|
95
|
+
if included_global_row_indices != tuple(
|
|
96
|
+
sorted(set(included_global_row_indices))
|
|
97
|
+
):
|
|
98
|
+
raise ValueError("included global rows must be unique and canonical")
|
|
99
|
+
spec = block_request.block
|
|
100
|
+
if any(
|
|
101
|
+
value < spec.global_row_start or value >= spec.global_row_stop
|
|
102
|
+
for value in included_global_row_indices
|
|
103
|
+
):
|
|
104
|
+
raise ValueError("an included global row is outside the exact block")
|
|
105
|
+
option_identity_sha256s = tuple(
|
|
106
|
+
block.forecasts[value - spec.global_row_start].option_identity_sha256
|
|
107
|
+
for value in included_global_row_indices
|
|
108
|
+
)
|
|
109
|
+
return PresentedActionEvidenceSubsetBinding(
|
|
110
|
+
subset_policy=subset_policy,
|
|
111
|
+
request_sha256=block_request.request.request_sha256,
|
|
112
|
+
layout_sha256=block_request.layout.layout_sha256,
|
|
113
|
+
block_request_sha256=block_request.block_request_sha256,
|
|
114
|
+
block_spec_sha256=spec.block_spec_sha256,
|
|
115
|
+
forecast_block_receipt_sha256=block.receipt_sha256,
|
|
116
|
+
block_index=spec.block_index,
|
|
117
|
+
included_global_row_indices=included_global_row_indices,
|
|
118
|
+
included_option_identity_sha256s=option_identity_sha256s,
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
def _validate_subset(
|
|
123
|
+
block_request: ActionForecastBlockRequest,
|
|
124
|
+
block: ResolvedActionForecastBlock,
|
|
125
|
+
subset: PresentedActionEvidenceSubsetBinding,
|
|
126
|
+
) -> None:
|
|
127
|
+
if type(subset) is not PresentedActionEvidenceSubsetBinding:
|
|
128
|
+
raise TypeError("subset must be an exact presented-evidence subset binding")
|
|
129
|
+
subset.__post_init__()
|
|
130
|
+
try:
|
|
131
|
+
expected = bind_presented_action_evidence_subset(
|
|
132
|
+
block_request,
|
|
133
|
+
block,
|
|
134
|
+
subset_policy=subset.subset_policy,
|
|
135
|
+
included_global_row_indices=subset.included_global_row_indices,
|
|
136
|
+
)
|
|
137
|
+
except (TypeError, ValueError) as error:
|
|
138
|
+
raise ValueError("subset is invalid for the exact forecast block") from error
|
|
139
|
+
if subset != expected:
|
|
140
|
+
raise ValueError("subset differs from its exact forecast block binding")
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
def _prompt_binding_index(
|
|
144
|
+
block_request: ActionForecastBlockRequest,
|
|
145
|
+
) -> dict[
|
|
146
|
+
tuple[str, str],
|
|
147
|
+
tuple[PortfolioCard, FiniteActionEvidenceBinding],
|
|
148
|
+
]:
|
|
149
|
+
request = block_request.request
|
|
150
|
+
index: dict[
|
|
151
|
+
tuple[str, str],
|
|
152
|
+
tuple[PortfolioCard, FiniteActionEvidenceBinding],
|
|
153
|
+
] = {}
|
|
154
|
+
for card in request.cards:
|
|
155
|
+
card.__post_init__()
|
|
156
|
+
for binding in card.finite_action_evidence:
|
|
157
|
+
binding.__post_init__()
|
|
158
|
+
key = (card.card_key, binding.identity_sha256)
|
|
159
|
+
if key in index:
|
|
160
|
+
raise ValueError(
|
|
161
|
+
"request has an ambiguous prompt-visible action binding"
|
|
162
|
+
)
|
|
163
|
+
index[key] = (card, binding)
|
|
164
|
+
return index
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
def _validate_cell_provenance(
|
|
168
|
+
*,
|
|
169
|
+
block_request: ActionForecastBlockRequest,
|
|
170
|
+
cell: PresentedActionEvidenceCell,
|
|
171
|
+
card: PortfolioCard,
|
|
172
|
+
) -> None:
|
|
173
|
+
source_binding = card.source_binding
|
|
174
|
+
if source_binding is None:
|
|
175
|
+
raise ValueError("presented evidence requires a source-bound prompt card")
|
|
176
|
+
if (
|
|
177
|
+
cell.provenance_kind
|
|
178
|
+
is PresentedActionEvidenceProvenanceKind.CARD_SOURCE_RECEIPT
|
|
179
|
+
):
|
|
180
|
+
expected = source_binding.source_receipt_sha256
|
|
181
|
+
elif (
|
|
182
|
+
cell.provenance_kind
|
|
183
|
+
is PresentedActionEvidenceProvenanceKind.CARD_VIEW_RECEIPT
|
|
184
|
+
):
|
|
185
|
+
if card.derived_view_receipt is None:
|
|
186
|
+
raise ValueError(
|
|
187
|
+
"card-view provenance requires an exact derived-view receipt"
|
|
188
|
+
)
|
|
189
|
+
expected = card.derived_view_receipt.receipt_sha256
|
|
190
|
+
else:
|
|
191
|
+
expected = block_request.request.card_snapshot_sha256
|
|
192
|
+
if cell.provenance_sha256 != expected:
|
|
193
|
+
raise ValueError("presented evidence names foreign prompt provenance")
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
def _same_direction(left: float, right: float) -> bool:
|
|
197
|
+
if left == 0.0 or right == 0.0:
|
|
198
|
+
return left == right
|
|
199
|
+
return (left > 0.0) == (right > 0.0)
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
def _cell_assessment(
|
|
203
|
+
*,
|
|
204
|
+
block_request: ActionForecastBlockRequest,
|
|
205
|
+
cell: PresentedActionEvidenceCell,
|
|
206
|
+
global_row_index: int,
|
|
207
|
+
forecast: ResolvedActionForecast,
|
|
208
|
+
metric: ResolvedActionMetricForecast,
|
|
209
|
+
card: PortfolioCard,
|
|
210
|
+
binding: FiniteActionEvidenceBinding,
|
|
211
|
+
) -> PresentedActionEvidenceCellAssessment:
|
|
212
|
+
scale = next(
|
|
213
|
+
value
|
|
214
|
+
for value in block_request.request.metric_scales
|
|
215
|
+
if value.metric_id == cell.metric_id
|
|
216
|
+
)
|
|
217
|
+
source_binding = card.source_binding
|
|
218
|
+
if source_binding is None: # Defensive after request and provenance validation.
|
|
219
|
+
raise ValueError("presented evidence card lost its source binding")
|
|
220
|
+
action_identity = cell.action_evidence_binding_identity_sha256
|
|
221
|
+
cites = any(
|
|
222
|
+
citation.card_key == cell.card_key
|
|
223
|
+
and citation.action_binding_identity_sha256 == action_identity
|
|
224
|
+
for citation in metric.citations
|
|
225
|
+
)
|
|
226
|
+
return PresentedActionEvidenceCellAssessment(
|
|
227
|
+
presented_cell_sha256=cell.cell_sha256,
|
|
228
|
+
global_row_index=global_row_index,
|
|
229
|
+
option_id=forecast.option_id,
|
|
230
|
+
option_identity_sha256=forecast.option_identity_sha256,
|
|
231
|
+
metric_id=metric.metric_id,
|
|
232
|
+
presented_delta=cell.presented_delta,
|
|
233
|
+
p10_delta=metric.p10_delta,
|
|
234
|
+
p50_delta=metric.p50_delta,
|
|
235
|
+
p90_delta=metric.p90_delta,
|
|
236
|
+
direction_agreement=_same_direction(
|
|
237
|
+
metric.p50_delta,
|
|
238
|
+
cell.presented_delta,
|
|
239
|
+
),
|
|
240
|
+
interval_coverage=(
|
|
241
|
+
metric.p10_delta <= cell.presented_delta <= metric.p90_delta
|
|
242
|
+
),
|
|
243
|
+
normalized_absolute_error=(
|
|
244
|
+
abs(metric.p50_delta - cell.presented_delta) / scale.delta_scale
|
|
245
|
+
),
|
|
246
|
+
metric_delta_scale=scale.delta_scale,
|
|
247
|
+
metric_scale_definition_sha256=scale.definition_sha256,
|
|
248
|
+
card_key=cell.card_key,
|
|
249
|
+
card_source_binding_sha256=source_binding.binding_sha256,
|
|
250
|
+
card_source_receipt_sha256=source_binding.source_receipt_sha256,
|
|
251
|
+
card_view_receipt_sha256=(
|
|
252
|
+
None
|
|
253
|
+
if card.derived_view_receipt is None
|
|
254
|
+
else card.derived_view_receipt.receipt_sha256
|
|
255
|
+
),
|
|
256
|
+
action_evidence_binding_identity_sha256=action_identity,
|
|
257
|
+
source_contrast_id=binding.contrast_id,
|
|
258
|
+
source_option_id=binding.option_id,
|
|
259
|
+
source_family=binding.family,
|
|
260
|
+
source_option_identity_sha256=binding.option_identity_sha256,
|
|
261
|
+
source_contract_identity_sha256=binding.contract_identity_sha256,
|
|
262
|
+
provenance_kind=cell.provenance_kind,
|
|
263
|
+
provenance_sha256=cell.provenance_sha256,
|
|
264
|
+
forecast_cites_presented_binding=cites,
|
|
265
|
+
)
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
def _assess_presented_action_evidence_consistency(
|
|
269
|
+
block_request: ActionForecastBlockRequest,
|
|
270
|
+
block: ResolvedActionForecastBlock,
|
|
271
|
+
cells: tuple[PresentedActionEvidenceCell, ...],
|
|
272
|
+
*,
|
|
273
|
+
subset: PresentedActionEvidenceSubsetBinding | None,
|
|
274
|
+
policy: PresentedActionEvidenceConsistencyPolicyBinding | None,
|
|
275
|
+
) -> PresentedActionEvidenceConsistencyAssessment:
|
|
276
|
+
_validate_block(block_request, block)
|
|
277
|
+
if type(cells) is not tuple or not cells or any(
|
|
278
|
+
type(value) is not PresentedActionEvidenceCell for value in cells
|
|
279
|
+
):
|
|
280
|
+
raise ValueError("cells must be a non-empty exact presented-evidence tuple")
|
|
281
|
+
for value in cells:
|
|
282
|
+
value.__post_init__()
|
|
283
|
+
keys = tuple(value.sort_key for value in cells)
|
|
284
|
+
if keys != tuple(sorted(set(keys))):
|
|
285
|
+
raise ValueError("presented evidence cells must be unique and canonical")
|
|
286
|
+
join_keys = tuple(value.join_key for value in cells)
|
|
287
|
+
if len(set(join_keys)) != len(join_keys):
|
|
288
|
+
raise ValueError("presented evidence cells cannot repeat an evidence join")
|
|
289
|
+
resolved_policy = (
|
|
290
|
+
descriptive_presented_action_evidence_consistency_policy()
|
|
291
|
+
if policy is None
|
|
292
|
+
else policy
|
|
293
|
+
)
|
|
294
|
+
if type(resolved_policy) is not PresentedActionEvidenceConsistencyPolicyBinding:
|
|
295
|
+
raise TypeError("policy must be an exact consistency-policy binding")
|
|
296
|
+
resolved_policy.__post_init__()
|
|
297
|
+
if subset is not None:
|
|
298
|
+
_validate_subset(block_request, block, subset)
|
|
299
|
+
|
|
300
|
+
spec = block_request.block
|
|
301
|
+
forecast_index = {
|
|
302
|
+
forecast.option_identity_sha256: (
|
|
303
|
+
spec.global_row_start + local_index,
|
|
304
|
+
forecast,
|
|
305
|
+
)
|
|
306
|
+
for local_index, forecast in enumerate(block.forecasts)
|
|
307
|
+
}
|
|
308
|
+
allowed_option_identities = (
|
|
309
|
+
frozenset(forecast_index)
|
|
310
|
+
if subset is None
|
|
311
|
+
else frozenset(subset.included_option_identity_sha256s)
|
|
312
|
+
)
|
|
313
|
+
prompt_bindings = _prompt_binding_index(block_request)
|
|
314
|
+
assessed: list[PresentedActionEvidenceCellAssessment] = []
|
|
315
|
+
for cell in cells:
|
|
316
|
+
target = forecast_index.get(cell.option_identity_sha256)
|
|
317
|
+
if target is None:
|
|
318
|
+
raise ValueError("presented evidence targets a row outside the block")
|
|
319
|
+
if cell.option_identity_sha256 not in allowed_option_identities:
|
|
320
|
+
raise ValueError("presented evidence targets a row outside the subset")
|
|
321
|
+
global_row_index, forecast = target
|
|
322
|
+
metrics = {
|
|
323
|
+
value.metric_id: value for value in forecast.metric_forecasts
|
|
324
|
+
}
|
|
325
|
+
metric = metrics.get(cell.metric_id)
|
|
326
|
+
if metric is None:
|
|
327
|
+
raise ValueError(
|
|
328
|
+
"presented evidence targets a metric outside the resolved row"
|
|
329
|
+
)
|
|
330
|
+
prompt_binding = prompt_bindings.get(
|
|
331
|
+
(
|
|
332
|
+
cell.card_key,
|
|
333
|
+
cell.action_evidence_binding_identity_sha256,
|
|
334
|
+
)
|
|
335
|
+
)
|
|
336
|
+
if prompt_binding is None:
|
|
337
|
+
raise ValueError(
|
|
338
|
+
"presented evidence names a foreign prompt-visible binding"
|
|
339
|
+
)
|
|
340
|
+
card, binding = prompt_binding
|
|
341
|
+
_validate_cell_provenance(
|
|
342
|
+
block_request=block_request,
|
|
343
|
+
cell=cell,
|
|
344
|
+
card=card,
|
|
345
|
+
)
|
|
346
|
+
assessed.append(
|
|
347
|
+
_cell_assessment(
|
|
348
|
+
block_request=block_request,
|
|
349
|
+
cell=cell,
|
|
350
|
+
global_row_index=global_row_index,
|
|
351
|
+
forecast=forecast,
|
|
352
|
+
metric=metric,
|
|
353
|
+
card=card,
|
|
354
|
+
binding=binding,
|
|
355
|
+
)
|
|
356
|
+
)
|
|
357
|
+
canonical_assessments = tuple(sorted(assessed, key=lambda value: value.sort_key))
|
|
358
|
+
decision_applied = resolved_policy.decision_applied
|
|
359
|
+
passes = (
|
|
360
|
+
None
|
|
361
|
+
if not decision_applied
|
|
362
|
+
else all(
|
|
363
|
+
(
|
|
364
|
+
resolved_policy.maximum_normalized_absolute_error is None
|
|
365
|
+
or value.normalized_absolute_error
|
|
366
|
+
<= resolved_policy.maximum_normalized_absolute_error
|
|
367
|
+
)
|
|
368
|
+
and (
|
|
369
|
+
not resolved_policy.require_direction_agreement
|
|
370
|
+
or value.direction_agreement
|
|
371
|
+
)
|
|
372
|
+
and (
|
|
373
|
+
not resolved_policy.require_interval_coverage
|
|
374
|
+
or value.interval_coverage
|
|
375
|
+
)
|
|
376
|
+
for value in canonical_assessments
|
|
377
|
+
)
|
|
378
|
+
)
|
|
379
|
+
experimental_view_receipt = block_request.request.experimental_view_receipt
|
|
380
|
+
if experimental_view_receipt is None:
|
|
381
|
+
raise ValueError(
|
|
382
|
+
"presented evidence requires an authenticated experimental view"
|
|
383
|
+
)
|
|
384
|
+
return PresentedActionEvidenceConsistencyAssessment(
|
|
385
|
+
frame_kind=(
|
|
386
|
+
PresentedActionEvidenceConsistencyFrameKind.BLOCK
|
|
387
|
+
if subset is None
|
|
388
|
+
else PresentedActionEvidenceConsistencyFrameKind.SUBSET
|
|
389
|
+
),
|
|
390
|
+
request_sha256=block_request.request.request_sha256,
|
|
391
|
+
request_card_snapshot_sha256=(
|
|
392
|
+
block_request.request.card_snapshot_sha256
|
|
393
|
+
),
|
|
394
|
+
experimental_view_receipt_sha256=(
|
|
395
|
+
experimental_view_receipt.receipt_sha256
|
|
396
|
+
),
|
|
397
|
+
layout_sha256=block_request.layout.layout_sha256,
|
|
398
|
+
block_request_sha256=block_request.block_request_sha256,
|
|
399
|
+
block_spec_sha256=spec.block_spec_sha256,
|
|
400
|
+
block_index=spec.block_index,
|
|
401
|
+
forecast_block_receipt_sha256=block.receipt_sha256,
|
|
402
|
+
subset_binding=subset,
|
|
403
|
+
policy=resolved_policy,
|
|
404
|
+
cell_assessments=canonical_assessments,
|
|
405
|
+
decision_applied=decision_applied,
|
|
406
|
+
passes=passes,
|
|
407
|
+
)
|
|
408
|
+
|
|
409
|
+
|
|
410
|
+
def assess_presented_action_evidence_block_consistency(
|
|
411
|
+
block_request: ActionForecastBlockRequest,
|
|
412
|
+
block: ResolvedActionForecastBlock,
|
|
413
|
+
cells: tuple[PresentedActionEvidenceCell, ...],
|
|
414
|
+
*,
|
|
415
|
+
policy: PresentedActionEvidenceConsistencyPolicyBinding | None = None,
|
|
416
|
+
) -> PresentedActionEvidenceConsistencyAssessment:
|
|
417
|
+
"""Assess injected prompt evidence against one complete resolved block."""
|
|
418
|
+
|
|
419
|
+
return _assess_presented_action_evidence_consistency(
|
|
420
|
+
block_request,
|
|
421
|
+
block,
|
|
422
|
+
cells,
|
|
423
|
+
subset=None,
|
|
424
|
+
policy=policy,
|
|
425
|
+
)
|
|
426
|
+
|
|
427
|
+
|
|
428
|
+
def assess_presented_action_evidence_subset_consistency(
|
|
429
|
+
block_request: ActionForecastBlockRequest,
|
|
430
|
+
block: ResolvedActionForecastBlock,
|
|
431
|
+
cells: tuple[PresentedActionEvidenceCell, ...],
|
|
432
|
+
*,
|
|
433
|
+
subset: PresentedActionEvidenceSubsetBinding,
|
|
434
|
+
policy: PresentedActionEvidenceConsistencyPolicyBinding | None = None,
|
|
435
|
+
) -> PresentedActionEvidenceConsistencyAssessment:
|
|
436
|
+
"""Assess injected prompt evidence inside one authenticated row subset."""
|
|
437
|
+
|
|
438
|
+
return _assess_presented_action_evidence_consistency(
|
|
439
|
+
block_request,
|
|
440
|
+
block,
|
|
441
|
+
cells,
|
|
442
|
+
subset=subset,
|
|
443
|
+
policy=policy,
|
|
444
|
+
)
|
|
445
|
+
|
|
446
|
+
|
|
447
|
+
__all__ = [
|
|
448
|
+
"PRESENTED_ACTION_EVIDENCE_CONSISTENCY_POLICY_DEFINITION_SHA256",
|
|
449
|
+
"PRESENTED_ACTION_EVIDENCE_CONSISTENCY_POLICY_ID",
|
|
450
|
+
"PRESENTED_ACTION_EVIDENCE_CONSISTENCY_POLICY_VERSION",
|
|
451
|
+
"assess_presented_action_evidence_block_consistency",
|
|
452
|
+
"assess_presented_action_evidence_subset_consistency",
|
|
453
|
+
"bind_presented_action_evidence_subset",
|
|
454
|
+
"descriptive_presented_action_evidence_consistency_policy",
|
|
455
|
+
]
|