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,368 @@
|
|
|
1
|
+
"""Small public integration surface for campaign-capable workloads.
|
|
2
|
+
|
|
3
|
+
The strict campaign ports deliberately authenticate every boundary. Benchmark
|
|
4
|
+
authors should not need to assemble those ports directly, however. A
|
|
5
|
+
``WorkloadKit`` names the four facts a new domain must provide:
|
|
6
|
+
|
|
7
|
+
1. an :class:`~agent_evolve.agentic.AgenticBenchmark`;
|
|
8
|
+
2. one or more canonical seeds;
|
|
9
|
+
3. a finite variation catalog (selected by ID only when several exist); and
|
|
10
|
+
4. externally acquired evaluator/resource admission receipts.
|
|
11
|
+
|
|
12
|
+
Evidence projections and workload semantics prompting are optional extension
|
|
13
|
+
points. Omitting evidence selects a workload-neutral, schema-derived empty
|
|
14
|
+
memory/context projection. The optional prompt extension remains governed by
|
|
15
|
+
``workload_prompt`` provenance and ablation rules.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
from __future__ import annotations
|
|
19
|
+
|
|
20
|
+
import hashlib
|
|
21
|
+
import json
|
|
22
|
+
import re
|
|
23
|
+
from dataclasses import dataclass
|
|
24
|
+
|
|
25
|
+
from pydantic import BaseModel
|
|
26
|
+
|
|
27
|
+
from agent_evolve.agentic import AgenticBenchmark
|
|
28
|
+
from agent_evolve.application.evolution_campaign import CampaignSeed
|
|
29
|
+
from agent_evolve.campaign_workload import (
|
|
30
|
+
AgenticCampaignEvidenceProjections,
|
|
31
|
+
AgenticCampaignWorkloadConfig,
|
|
32
|
+
)
|
|
33
|
+
from agent_evolve.domain.typed_json import (
|
|
34
|
+
FrozenJsonObject,
|
|
35
|
+
freeze_json,
|
|
36
|
+
thaw_json,
|
|
37
|
+
typed_json_sha256,
|
|
38
|
+
)
|
|
39
|
+
from agent_evolve.workload_prompt import WorkloadPromptExtensionView
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
_TOKEN = re.compile(r"^[a-z][a-z0-9_.:-]{0,127}$")
|
|
43
|
+
_WORKLOAD_DEFINITION_DOMAIN = b"agent-evolve:workload-kit-definition:v1\x00"
|
|
44
|
+
_INTEGRATION_RECEIPT_DOMAIN = b"agent-evolve:workload-kit-receipt:v1\x00"
|
|
45
|
+
GENERIC_SCHEMA_EVIDENCE_PROJECTION_ID = "generic_schema_evidence"
|
|
46
|
+
# v2: the default projection now emits ONE schema-derived bootstrap card.
|
|
47
|
+
#
|
|
48
|
+
# v1 returned no cards, and `CampaignPortfolioWaveContext` requires
|
|
49
|
+
# `evidence_cards` to be a non-empty tuple, so **every workload that omitted an
|
|
50
|
+
# evidence projection was unable to run a portfolio campaign at all** -- it
|
|
51
|
+
# raised "portfolio context requires evidence cards" at the first stage. That
|
|
52
|
+
# is four shipped workloads, not one: analog_sizing, heat2d, pybamm_fastcharge
|
|
53
|
+
# and scip_miplib all report `uses_default_schema_evidence`. It stayed
|
|
54
|
+
# invisible because every workload with a hand-written runner supplies its own
|
|
55
|
+
# projection, so the default was never driven to a portfolio stage until a
|
|
56
|
+
# second workload went through the generic driver.
|
|
57
|
+
#
|
|
58
|
+
# The card is derived entirely from material already in scope -- the benchmark
|
|
59
|
+
# descriptor, the finite variation contract and the parent/memory hashes -- so
|
|
60
|
+
# the projection remains workload-neutral and carries no workload constant.
|
|
61
|
+
GENERIC_SCHEMA_EVIDENCE_PROJECTION_VERSION = 2
|
|
62
|
+
GENERIC_SCHEMA_EVIDENCE_PROJECTION_DEFINITION_SHA256 = hashlib.sha256(
|
|
63
|
+
b"agent-evolve:generic-schema-evidence:v2;"
|
|
64
|
+
b"empty-bootstrap-memory=true;objective-declarations=true;"
|
|
65
|
+
b"catalog-identity-and-cardinality=true;parent-and-memory-hashes=true;"
|
|
66
|
+
b"workload-prose=false;cards=one-schema-derived-bootstrap-card"
|
|
67
|
+
).hexdigest()
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def _canonical_bytes(value: object) -> bytes:
|
|
71
|
+
return json.dumps(
|
|
72
|
+
value,
|
|
73
|
+
allow_nan=False,
|
|
74
|
+
ensure_ascii=True,
|
|
75
|
+
separators=(",", ":"),
|
|
76
|
+
sort_keys=True,
|
|
77
|
+
).encode("ascii", errors="strict")
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def _hash(domain: bytes, value: object) -> str:
|
|
81
|
+
return hashlib.sha256(domain + _canonical_bytes(value)).hexdigest()
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def campaign_seed(
|
|
85
|
+
seed_id: str,
|
|
86
|
+
candidate: BaseModel | FrozenJsonObject | dict[str, object],
|
|
87
|
+
) -> CampaignSeed:
|
|
88
|
+
"""Freeze one named candidate into the strict campaign seed type."""
|
|
89
|
+
|
|
90
|
+
if isinstance(candidate, BaseModel):
|
|
91
|
+
candidate = candidate.model_dump(mode="python", by_alias=False)
|
|
92
|
+
if type(candidate) not in {dict, FrozenJsonObject}:
|
|
93
|
+
raise TypeError(
|
|
94
|
+
"candidate must be an exact dict, FrozenJsonObject, or Pydantic model"
|
|
95
|
+
)
|
|
96
|
+
frozen = freeze_json(candidate)
|
|
97
|
+
if type(frozen) is not FrozenJsonObject:
|
|
98
|
+
raise TypeError("a campaign seed candidate must be a JSON object")
|
|
99
|
+
return CampaignSeed(seed_id=seed_id, configuration=frozen)
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def _generic_memory(benchmark, session, seeds) -> FrozenJsonObject:
|
|
103
|
+
del benchmark
|
|
104
|
+
descriptor = thaw_json(session.benchmark)
|
|
105
|
+
record = {
|
|
106
|
+
"schema_version": 1,
|
|
107
|
+
"projection_id": GENERIC_SCHEMA_EVIDENCE_PROJECTION_ID,
|
|
108
|
+
"workload_id": descriptor["workload_id"],
|
|
109
|
+
"objective_ids": [item["name"] for item in descriptor["objectives"]],
|
|
110
|
+
"seed_configuration_sha256s": [
|
|
111
|
+
seed.configuration_sha256 for seed in seeds.seeds
|
|
112
|
+
],
|
|
113
|
+
"insights": [],
|
|
114
|
+
}
|
|
115
|
+
frozen = freeze_json(record)
|
|
116
|
+
if type(frozen) is not FrozenJsonObject: # pragma: no cover
|
|
117
|
+
raise AssertionError("generic memory did not freeze as an object")
|
|
118
|
+
return frozen
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def _generic_context(
|
|
122
|
+
benchmark,
|
|
123
|
+
session,
|
|
124
|
+
parent,
|
|
125
|
+
variation,
|
|
126
|
+
memory,
|
|
127
|
+
) -> FrozenJsonObject:
|
|
128
|
+
del benchmark
|
|
129
|
+
descriptor = thaw_json(session.benchmark)
|
|
130
|
+
record = {
|
|
131
|
+
"schema_version": 1,
|
|
132
|
+
"projection_id": GENERIC_SCHEMA_EVIDENCE_PROJECTION_ID,
|
|
133
|
+
"workload_id": descriptor["workload_id"],
|
|
134
|
+
"objectives": descriptor["objectives"],
|
|
135
|
+
"optimization_semantics_identity": descriptor.get(
|
|
136
|
+
"optimization_semantics_identity"
|
|
137
|
+
),
|
|
138
|
+
"action_semantics_identity": descriptor.get("action_semantics_identity"),
|
|
139
|
+
"parent_configuration_sha256": typed_json_sha256(parent),
|
|
140
|
+
"memory_sha256": typed_json_sha256(memory),
|
|
141
|
+
"finite_variation": {
|
|
142
|
+
"catalog_id": variation.contract.catalog_id,
|
|
143
|
+
"catalog_version": variation.contract.catalog_version,
|
|
144
|
+
"catalog_definition_sha256": (
|
|
145
|
+
variation.contract.catalog_definition_sha256
|
|
146
|
+
),
|
|
147
|
+
"contract_identity_sha256": variation.contract.identity_sha256,
|
|
148
|
+
"eligible_option_count": len(variation.contract.options),
|
|
149
|
+
},
|
|
150
|
+
}
|
|
151
|
+
frozen = freeze_json(record)
|
|
152
|
+
if type(frozen) is not FrozenJsonObject: # pragma: no cover
|
|
153
|
+
raise AssertionError("generic context did not freeze as an object")
|
|
154
|
+
return frozen
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
def _generic_cards(
|
|
158
|
+
benchmark,
|
|
159
|
+
session,
|
|
160
|
+
parent,
|
|
161
|
+
variation,
|
|
162
|
+
memory,
|
|
163
|
+
) -> tuple[FrozenJsonObject, ...]:
|
|
164
|
+
"""One schema-derived bootstrap card.
|
|
165
|
+
|
|
166
|
+
The portfolio wave context requires at least one evidence card, so a
|
|
167
|
+
projection that returns none cannot reach a portfolio stage. This card
|
|
168
|
+
states only what the schema already declares: which objectives are being
|
|
169
|
+
optimized, which finite catalogue the options come from, how many options
|
|
170
|
+
are eligible, and which parent and memory the selection is conditioned on.
|
|
171
|
+
It asserts nothing about the workload's semantics and contains no workload
|
|
172
|
+
constant -- a workload that wants richer evidence supplies its own
|
|
173
|
+
projection, which is what every hand-written runner already does.
|
|
174
|
+
"""
|
|
175
|
+
|
|
176
|
+
del benchmark
|
|
177
|
+
descriptor = thaw_json(session.benchmark)
|
|
178
|
+
contract = variation.contract
|
|
179
|
+
record = {
|
|
180
|
+
"schema_version": 1,
|
|
181
|
+
"card_kind": "schema_bootstrap",
|
|
182
|
+
"projection_id": GENERIC_SCHEMA_EVIDENCE_PROJECTION_ID,
|
|
183
|
+
"claim": (
|
|
184
|
+
"Selection is conditioned on the declared objectives and the sealed "
|
|
185
|
+
"finite option contract below; no workload-specific evidence has "
|
|
186
|
+
"been supplied by this projection."
|
|
187
|
+
),
|
|
188
|
+
"workload_id": descriptor["workload_id"],
|
|
189
|
+
"objectives": descriptor["objectives"],
|
|
190
|
+
"finite_variation": {
|
|
191
|
+
"catalog_id": contract.catalog_id,
|
|
192
|
+
"catalog_version": contract.catalog_version,
|
|
193
|
+
"catalog_definition_sha256": contract.catalog_definition_sha256,
|
|
194
|
+
"contract_identity_sha256": contract.identity_sha256,
|
|
195
|
+
"eligible_option_count": len(contract.options),
|
|
196
|
+
},
|
|
197
|
+
"parent_configuration_sha256": typed_json_sha256(parent),
|
|
198
|
+
"memory_sha256": typed_json_sha256(memory),
|
|
199
|
+
}
|
|
200
|
+
frozen = freeze_json(record)
|
|
201
|
+
if type(frozen) is not FrozenJsonObject: # pragma: no cover
|
|
202
|
+
raise AssertionError("generic card did not freeze as an object")
|
|
203
|
+
return (frozen,)
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
def generic_schema_evidence_projections() -> AgenticCampaignEvidenceProjections:
|
|
207
|
+
"""Return the workload-neutral default evidence implementation."""
|
|
208
|
+
|
|
209
|
+
return AgenticCampaignEvidenceProjections(
|
|
210
|
+
projection_id=GENERIC_SCHEMA_EVIDENCE_PROJECTION_ID,
|
|
211
|
+
projection_version=GENERIC_SCHEMA_EVIDENCE_PROJECTION_VERSION,
|
|
212
|
+
definition_sha256=(
|
|
213
|
+
GENERIC_SCHEMA_EVIDENCE_PROJECTION_DEFINITION_SHA256
|
|
214
|
+
),
|
|
215
|
+
initialize_memory=_generic_memory,
|
|
216
|
+
context=_generic_context,
|
|
217
|
+
cards=_generic_cards,
|
|
218
|
+
)
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
@dataclass(frozen=True, slots=True)
|
|
222
|
+
class WorkloadKit:
|
|
223
|
+
"""Declarative high-level adapter compiled into authenticated campaign ports."""
|
|
224
|
+
|
|
225
|
+
workload_id: str
|
|
226
|
+
workload_version: int
|
|
227
|
+
benchmark: AgenticBenchmark
|
|
228
|
+
seeds: tuple[CampaignSeed, ...]
|
|
229
|
+
evaluator_concurrency_cap: int
|
|
230
|
+
evaluator_preflight_receipt: FrozenJsonObject
|
|
231
|
+
resource_lease_receipt: FrozenJsonObject
|
|
232
|
+
finite_catalog_id: str | None = None
|
|
233
|
+
evidence: AgenticCampaignEvidenceProjections | None = None
|
|
234
|
+
prompt_extension: WorkloadPromptExtensionView | None = None
|
|
235
|
+
|
|
236
|
+
def __post_init__(self) -> None:
|
|
237
|
+
if type(self.workload_id) is not str or _TOKEN.fullmatch(
|
|
238
|
+
self.workload_id
|
|
239
|
+
) is None:
|
|
240
|
+
raise ValueError("workload_id must use the closed campaign token grammar")
|
|
241
|
+
if type(self.workload_version) is not int or self.workload_version <= 0:
|
|
242
|
+
raise ValueError("workload_version must be a positive exact integer")
|
|
243
|
+
if type(self.benchmark) is not AgenticBenchmark:
|
|
244
|
+
raise TypeError("benchmark must be an exact AgenticBenchmark")
|
|
245
|
+
self.benchmark.validate_binding()
|
|
246
|
+
if type(self.seeds) is not tuple or not self.seeds:
|
|
247
|
+
raise ValueError("seeds must be a non-empty exact tuple")
|
|
248
|
+
if any(type(seed) is not CampaignSeed for seed in self.seeds):
|
|
249
|
+
raise TypeError("seeds must contain exact CampaignSeed values")
|
|
250
|
+
if (
|
|
251
|
+
type(self.evaluator_concurrency_cap) is not int
|
|
252
|
+
or self.evaluator_concurrency_cap <= 0
|
|
253
|
+
):
|
|
254
|
+
raise ValueError("evaluator_concurrency_cap must be positive")
|
|
255
|
+
for name in (
|
|
256
|
+
"evaluator_preflight_receipt",
|
|
257
|
+
"resource_lease_receipt",
|
|
258
|
+
):
|
|
259
|
+
value = getattr(self, name)
|
|
260
|
+
if type(value) is not FrozenJsonObject or freeze_json(value) is not value:
|
|
261
|
+
raise TypeError(f"{name} must be an exact frozen typed-JSON object")
|
|
262
|
+
if self.finite_catalog_id is not None and type(
|
|
263
|
+
self.finite_catalog_id
|
|
264
|
+
) is not str:
|
|
265
|
+
raise TypeError("finite_catalog_id must be an exact string or None")
|
|
266
|
+
if self.evidence is not None and type(
|
|
267
|
+
self.evidence
|
|
268
|
+
) is not AgenticCampaignEvidenceProjections:
|
|
269
|
+
raise TypeError(
|
|
270
|
+
"evidence must be exact AgenticCampaignEvidenceProjections or None"
|
|
271
|
+
)
|
|
272
|
+
if self.prompt_extension is not None and type(
|
|
273
|
+
self.prompt_extension
|
|
274
|
+
) is not WorkloadPromptExtensionView:
|
|
275
|
+
raise TypeError(
|
|
276
|
+
"prompt_extension must be exact WorkloadPromptExtensionView or None"
|
|
277
|
+
)
|
|
278
|
+
# Compile eagerly so ambiguous catalogs and noncanonical seeds fail at
|
|
279
|
+
# the public construction boundary rather than during a paid run.
|
|
280
|
+
self.to_campaign_workload()
|
|
281
|
+
|
|
282
|
+
@property
|
|
283
|
+
def selected_finite_catalog_id(self) -> str:
|
|
284
|
+
identities = self.benchmark.finite_variation_catalog_identities
|
|
285
|
+
if self.finite_catalog_id is not None:
|
|
286
|
+
return self.finite_catalog_id
|
|
287
|
+
if len(identities) != 1:
|
|
288
|
+
raise ValueError(
|
|
289
|
+
"finite_catalog_id is required when the benchmark publishes "
|
|
290
|
+
"zero or multiple catalogs"
|
|
291
|
+
)
|
|
292
|
+
return identities[0][0]
|
|
293
|
+
|
|
294
|
+
@property
|
|
295
|
+
def workload_definition_sha256(self) -> str:
|
|
296
|
+
"""Identity of this versioned public integration contract."""
|
|
297
|
+
|
|
298
|
+
return _hash(
|
|
299
|
+
_WORKLOAD_DEFINITION_DOMAIN,
|
|
300
|
+
{
|
|
301
|
+
"schema_version": 1,
|
|
302
|
+
"workload_id": self.workload_id,
|
|
303
|
+
"workload_version": self.workload_version,
|
|
304
|
+
"adapter": "workload_kit",
|
|
305
|
+
},
|
|
306
|
+
)
|
|
307
|
+
|
|
308
|
+
def to_campaign_workload(self) -> AgenticCampaignWorkloadConfig:
|
|
309
|
+
"""Compile the small public declaration into the strict inverted API."""
|
|
310
|
+
|
|
311
|
+
evidence = self.evidence or generic_schema_evidence_projections()
|
|
312
|
+
return AgenticCampaignWorkloadConfig(
|
|
313
|
+
workload_id=self.workload_id,
|
|
314
|
+
workload_version=self.workload_version,
|
|
315
|
+
definition_sha256=self.workload_definition_sha256,
|
|
316
|
+
benchmark=self.benchmark,
|
|
317
|
+
seeds=self.seeds,
|
|
318
|
+
finite_catalog_id=self.selected_finite_catalog_id,
|
|
319
|
+
evaluator_concurrency_cap=self.evaluator_concurrency_cap,
|
|
320
|
+
evaluator_preflight_receipt=self.evaluator_preflight_receipt,
|
|
321
|
+
resource_lease_receipt=self.resource_lease_receipt,
|
|
322
|
+
evidence=evidence,
|
|
323
|
+
prompt_extension=self.prompt_extension,
|
|
324
|
+
)
|
|
325
|
+
|
|
326
|
+
def integration_receipt(self) -> FrozenJsonObject:
|
|
327
|
+
"""Publish the inspectable adapter obligations and extension usage."""
|
|
328
|
+
|
|
329
|
+
config = self.to_campaign_workload()
|
|
330
|
+
record: dict[str, object] = {
|
|
331
|
+
"schema_version": 1,
|
|
332
|
+
"adapter": "workload_kit",
|
|
333
|
+
"workload_id": self.workload_id,
|
|
334
|
+
"workload_version": self.workload_version,
|
|
335
|
+
"required_obligations": [
|
|
336
|
+
"agentic_benchmark",
|
|
337
|
+
"canonical_seeds",
|
|
338
|
+
"finite_variation_catalog",
|
|
339
|
+
"evaluator_resource_admission",
|
|
340
|
+
],
|
|
341
|
+
"required_obligation_count": 4,
|
|
342
|
+
"seed_count": len(self.seeds),
|
|
343
|
+
"finite_catalog_id": self.selected_finite_catalog_id,
|
|
344
|
+
"uses_default_schema_evidence": self.evidence is None,
|
|
345
|
+
"uses_custom_evidence_projection": self.evidence is not None,
|
|
346
|
+
"uses_optional_prompt_extension": self.prompt_extension is not None,
|
|
347
|
+
"prompt_extension_view_sha256": (
|
|
348
|
+
None
|
|
349
|
+
if self.prompt_extension is None
|
|
350
|
+
else self.prompt_extension.view_sha256
|
|
351
|
+
),
|
|
352
|
+
"campaign_configuration_sha256": config.configuration_sha256,
|
|
353
|
+
}
|
|
354
|
+
record["receipt_sha256"] = _hash(_INTEGRATION_RECEIPT_DOMAIN, record)
|
|
355
|
+
frozen = freeze_json(record)
|
|
356
|
+
if type(frozen) is not FrozenJsonObject: # pragma: no cover
|
|
357
|
+
raise AssertionError("integration receipt did not freeze as an object")
|
|
358
|
+
return frozen
|
|
359
|
+
|
|
360
|
+
|
|
361
|
+
__all__ = [
|
|
362
|
+
"GENERIC_SCHEMA_EVIDENCE_PROJECTION_DEFINITION_SHA256",
|
|
363
|
+
"GENERIC_SCHEMA_EVIDENCE_PROJECTION_ID",
|
|
364
|
+
"GENERIC_SCHEMA_EVIDENCE_PROJECTION_VERSION",
|
|
365
|
+
"WorkloadKit",
|
|
366
|
+
"campaign_seed",
|
|
367
|
+
"generic_schema_evidence_projections",
|
|
368
|
+
]
|