agent-lifecycle-kit 2.0.0__tar.gz → 2.1.0__tar.gz
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_lifecycle_kit-2.0.0/src/agent_lifecycle_kit.egg-info → agent_lifecycle_kit-2.1.0}/PKG-INFO +6 -6
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/README.md +5 -5
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/pyproject.toml +1 -1
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/_version.py +1 -1
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/audit/proof_integrity.py +8 -0
- agent_lifecycle_kit-2.1.0/src/agent_lifecycle/contracts/independent_evidence_schemas.py +389 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/review_mesh_schemas.py +5 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/schemas.py +2 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/planning/completeness.py +23 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/planning/manifest_contract.py +11 -1
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/review_mesh/__init__.py +41 -29
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/review_mesh/assignments.py +54 -8
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/review_mesh/contracts.py +126 -19
- agent_lifecycle_kit-2.1.0/src/agent_lifecycle/review_mesh/independence.py +94 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/review_mesh/quorum.py +4 -0
- agent_lifecycle_kit-2.1.0/src/agent_lifecycle/workflow/review_mesh_gate.py +164 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0/src/agent_lifecycle_kit.egg-info}/PKG-INFO +6 -6
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle_kit.egg-info/SOURCES.txt +2 -0
- agent_lifecycle_kit-2.0.0/src/agent_lifecycle/workflow/review_mesh_gate.py +0 -93
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/LICENSE +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/NOTICE +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/benchmarks/reference-tasks/README.md +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/benchmarks/reference-tasks/manifest.json +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/benchmarks/reference-tasks/rt01-planning/oracle.json +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/benchmarks/reference-tasks/rt01-planning/task.md +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/benchmarks/reference-tasks/rt02-architecture-review/oracle.json +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/benchmarks/reference-tasks/rt02-architecture-review/task.md +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/benchmarks/reference-tasks/rt03-bug-forensics/oracle.json +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/benchmarks/reference-tasks/rt03-bug-forensics/task.md +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/benchmarks/reference-tasks/rt04-s1-managed-task/oracle.json +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/benchmarks/reference-tasks/rt04-s1-managed-task/task.md +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/benchmarks/reference-tasks/rt05-s2-evidence-task/oracle.json +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/benchmarks/reference-tasks/rt05-s2-evidence-task/task.md +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/setup.cfg +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/__main__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/agent_plugin_probe.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/contracts.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/env.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/external_check.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/launch_execution.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/launch_preflight.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/launcher.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/lifecycle_control.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/local_launch_profile.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/planning_launch.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/planning_session.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/process.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/process_capture.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/process_control.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/process_groups.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/process_telemetry.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/qualification.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/redaction.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/session_store.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/start_input.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/start_receipts.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/start_routing.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/task_intake.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/unified_start.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/workflow_bridge.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/worktree_identity.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/audit/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/audit/bug_forensics.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/audit/external_checks.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/audit/implementation.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/audit/ownership.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/audit/package.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/audit/proof_chain.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/audit/proof_findings.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/audit/review_verdict.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/benchmarks/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/benchmarks/comparison.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/benchmarks/contracts.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/benchmarks/evaluator.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/benchmarks/oracles.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/benchmarks/qualification.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/benchmarks/reporting.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/benchmarks/stratification.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/changesets/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/changesets/git.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/changesets/snapshot.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/adapter.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/benchmarks.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/command_registry.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/dispatch.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/dispatch_adapters.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/dispatch_contracts.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/dispatch_lifecycle.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/dispatch_metrics.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/dispatch_observability.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/dispatch_planning.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/dispatch_research.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/errors.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/followup.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/host_launch.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/lifecycle_parsers.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/main.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/metrics_parser.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/observability_parsers.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/parsers.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/planning_parsers.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/policy.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/progress_hooks.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/project.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/research.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/start.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/strategy.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/worktree.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/compiler/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/compiler/output_contract.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/compiler/small_model_packets.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/compiler/task_packets.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/context/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/context/checkpoint_store.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/context/checkpoints.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/context/episode_retrieval.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/context/external_memory.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/context/profiles.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/context/rendering.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/context/thread_bridge_context.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/adapter_contract_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/adapter_event_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/adapter_session_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/adapter_task_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/agent_plugin_qualification_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/audit_optimization_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/audit_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/benchmark_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/bug_forensics_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/canonical.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/compatibility.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/context_checkpoint_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/context_model_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/core_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/cross_check_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/errors.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/evidence_import_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/execution_strategy_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/external_check_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/finding_check_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/goal_validation.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/host_capability_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/implementation_audit_validation.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/import_dialect_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/launch_qualification.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/legacy_runner_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/lifecycle_action_catalog.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/lifecycle_control_definitions.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/lifecycle_control_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/lifecycle_control_validation.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/local_launch_validation.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/metric_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/ownership_paths.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/paths.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/performance_limits.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/persistence.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/plan_contract_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/plan_delta_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/plan_manifest_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/planning_launch_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/policy_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/process_execution_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/process_redaction.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/progress_bridge_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/progress_hook_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/project_profile_preset_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/project_profile_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/proof_integrity_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/proof_validation.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/public_locators.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/quality_modes.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/redaction.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/release_contract_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/research_evidence_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/review_mesh_recommendation_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/review_quality_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/review_verdict.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/runner_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/runner_worktree_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/sandbox_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/schema_builders.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/status_goal_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/structured_result_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/task_template_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/thread_bridge_schema_definitions.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/thread_bridge_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/thread_bridge_validation.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/token_estimation.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/usage_export_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/validation.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/workflow_artifact_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/workflow_authorization_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/workflow_run_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/workflow_state_schemas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/data/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/data/profiles/external-checks/declared-dependencies.v1.json +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/data/profiles/external-checks/import-boundaries.v1.json +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/data/profiles/external-checks/module-dependencies.v1.json +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/data/profiles/lifecycle-baselines.v1.json +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/data/profiles/model-routing-profile.v1.json +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/feature-implementation.v1.json +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/quick-change.v1.json +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/research-review.v1.json +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/data/profiles/risk-execution-policy.v1.json +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/data/profiles/small-context-profile.v1.json +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/diagnostics/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/diagnostics/bundles.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/diagnostics/installation_catalog.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/diagnostics/readiness.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/evidence_index/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/evidence_index/core.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/evidence_index/episode_index.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/evidence_index/external_context.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/followup/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/followup/records.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/freeze/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/freeze/locks.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/freeze/package_integrity.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/goal/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/goal/records.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/goal/view.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/acp_capability.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/agent_plugin_qualification.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/capabilities.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/context_events.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/contracts.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/event_capture.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/events.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/inspection.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/inspection_claude.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/inspection_codex.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/inspection_common.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/inspection_cursor.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/inspection_gemini_cli.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/inspection_hermes.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/inspection_kimi_code.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/inspection_opencode.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/inspection_profile.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/inspection_qwen_code.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/lifecycle_control.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/lifecycle_control_qualification.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/lifecycle_gate.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/process_port.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/receipts.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/sandbox_receipts.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/scaffold.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/structured_results.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/thread_bridge.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/usage_normalizers.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/validation.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/imports/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/imports/agentskills_profile.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/imports/bmad_profile.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/imports/constitution_adr.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/imports/dialect_profiles.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/imports/external_agent.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/imports/external_dialects.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/imports/external_workflow.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/imports/multi_markdown.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/imports/openspec_profile.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/imports/planning.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/imports/spec_kit_profile.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/imports/spec_kitty_profile.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/metrics/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/metrics/audit_optimization.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/metrics/audit_samples.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/metrics/cost_collection.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/metrics/costs.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/metrics/outcome_index.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/metrics/phase_resources.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/metrics/recommendations.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/metrics/regression_signals.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/metrics/usage_export.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/migration/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/migration/legacy_runner.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/model_routing/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/model_routing/profiles.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/model_routing/receipts.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/model_routing/resolver.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/__main__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/authority.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/canonical.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/cli.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/ed25519.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/errors.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/gate.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/git_objects.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/matching.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/paths.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/policy.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/receipt.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/scanner.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/test_runner.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/planning/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/planning/acceptance_markdown.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/planning/continuity.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/planning/deltas.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/planning/task_compatibility.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/planning/templates.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/planning/tiering.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/planning/traceability.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/planning/validation.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/planning/verification.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/policy/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/policy/adaptive_lifecycle.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/policy/apply.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/policy/execution_strategy.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/policy/proposals.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/policy/quality_floor.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/policy/risk_execution.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/policy/runtime_receipts.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/policy/thread_bridge.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/project/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/project/guidance.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/project/merge.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/project/presets.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/project/principles.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/project/profile.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/py.typed +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/quality/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/quality/bug_forensics.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/quality/bug_forensics_advisor.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/quality/bug_forensics_recipes.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/quality/cross_check.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/quality/external_checks.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/quality/failure_classification.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/quality/packs.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/reporting/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/reporting/change_summary.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/reporting/event_feed.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/reporting/execution_resources.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/reporting/progress_bridge.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/reporting/progress_hooks.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/reporting/progress_terminal.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/reporting/progress_view.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/reporting/status_view.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/reporting/usage_export.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/research/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/research/evidence.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/research/provenance.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/research/validation.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/resources.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/review/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/review/validation.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/review_mesh/operator_templates.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/review_mesh/recommendation.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/review_mesh/results.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/review_mesh/synthesis.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/runner/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/runner/core.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/runner/sandbox_receipts.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/specification/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/specification/completion_check.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/specification/completion_gate.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/specification/completion_signal.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/specification/validation.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/artifacts.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/authorization.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/budget_decisions.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/budget_policy.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/budget_receipts.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/bug_forensics_gates.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/checkpoint_gate.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/controller.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/events.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/final_proof_integrity.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/finalization.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/gates.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/implementation_audit_gate.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/initialization.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/leases.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/lineage.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/managed_runner.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/model_usage.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/next_action.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/operation_kernel.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/plan_adoption.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/query.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/reviews.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/risk_execution_gate.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/run.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/run_transitions.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/sandbox_policy.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/sandbox_receipts.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/selectors.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/state.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/task_outcomes.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/task_transitions.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/transition_contract.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/worktree/__init__.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/worktree/isolation.py +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle_kit.egg-info/dependency_links.txt +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle_kit.egg-info/entry_points.txt +0 -0
- {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle_kit.egg-info/top_level.txt +0 -0
{agent_lifecycle_kit-2.0.0/src/agent_lifecycle_kit.egg-info → agent_lifecycle_kit-2.1.0}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-lifecycle-kit
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.1.0
|
|
4
4
|
Summary: Provider-neutral lifecycle control layer that helps coding agents plan, execute, validate, and prove software tasks to completion.
|
|
5
5
|
Author: Agent Lifecycle Kit contributors
|
|
6
6
|
License: Apache-2.0
|
|
@@ -43,7 +43,7 @@ ALK provides a verifiable finish for external-agent work with proportionate cont
|
|
|
43
43
|
## Quick start
|
|
44
44
|
Start with [install ALK and make the first run](docs/guides/install-and-first-run.md).
|
|
45
45
|
|
|
46
|
-
It includes macOS, Linux and Windows instructions, Python 3.11-3.14, [PyPI](https://pypi.org/project/agent-lifecycle-kit/) installation with `python -m pip install agent-lifecycle-kit==2.
|
|
46
|
+
It includes macOS, Linux and Windows instructions, Python 3.11-3.14, [PyPI](https://pypi.org/project/agent-lifecycle-kit/) installation with `python -m pip install agent-lifecycle-kit==2.1.0`, and common `agent-lifecycle version` errors.
|
|
47
47
|
|
|
48
48
|
For a quick start, run:
|
|
49
49
|
|
|
@@ -187,9 +187,9 @@ Adapter installation and support-level details live in [Adapter install](docs/ad
|
|
|
187
187
|
- Public release claims use tracked source files and redacted evidence summaries.
|
|
188
188
|
- External dialect imports and retrieved episodes enrich context, while reviewed
|
|
189
189
|
ALK artifacts remain the source of truth.
|
|
190
|
-
- Cross-check, Review Mesh and historical runner recovery receipts add evidence
|
|
191
|
-
|
|
192
|
-
|
|
190
|
+
- Cross-check, Review Mesh and historical runner recovery receipts add evidence when a task or plan enables them; legacy runner records are converted
|
|
191
|
+
read-only and the operator chooses the review depth. High-risk criteria can opt into [risk-bound independent verification](docs/reference/risk-bound-independent-verification.md);
|
|
192
|
+
ordinary criteria remain on the standard evidence path.
|
|
193
193
|
|
|
194
194
|
## Documentation
|
|
195
195
|
|
|
@@ -197,6 +197,6 @@ Adapter installation and support-level details live in [Adapter install](docs/ad
|
|
|
197
197
|
- Planning and adapters: [Issue to specification drafts](docs/guides/issue-to-spec.md), [Adapter install](docs/adapters/install.md), and [Adapter support matrix](docs/adapters/support-matrix.md).
|
|
198
198
|
- Reference: [System architecture](docs/architecture/system-architecture.md), [workflow customization and execution controls](docs/reference/workflow-customization.md), [execution strategy](docs/reference/execution-strategy.md), [CLI reference](docs/reference/cli.md), [External verification checks](docs/reference/external-verification-checks.md), [Plan verification](docs/reference/plan-verification.md), [Research evidence](docs/reference/research-evidence.md), [Public locators and redaction](docs/reference/public-locators-and-redaction.md), [Finding-to-check adoption](docs/reference/finding-check-adoption.md), [Source of truth](docs/reference/source-of-truth.md), [Managed lifecycle runner](docs/reference/managed-lifecycle-runner.md), [Managed adapter sessions](docs/reference/managed-adapter-sessions.md), [Portable Agent Plugins](docs/reference/agent-plugins.md), [Plugin publication](docs/reference/plugin-publication.md), [Implementation audit](docs/reference/implementation-audit.md), [Plan completeness](docs/reference/plan-completeness.md), [Public contracts](docs/reference/public-contracts.md), and [Readiness diagnostics](docs/reference/readiness-diagnostics.md).
|
|
199
199
|
- Quality and resources: [Reference-task evaluation](docs/reference/reference-task-evaluation.md), [model routing](docs/reference/model-routing.md), [quality-cost learning](docs/reference/quality-cost-learning.md), [performance and resource budgets](docs/reference/performance-and-resource-budgets.md), [lifecycle cost accounting](docs/reference/lifecycle-cost.md), [host-local token accounting](docs/reference/host-local-token-accounting.md), [process execution observability](docs/reference/process-execution-observability.md), [Usage export](docs/reference/usage-export.md), and [Evidence integrity](docs/reference/evidence-integrity.md).
|
|
200
|
-
- Profiles and operations: [Project workflow presets](docs/reference/workflow-presets.md), [Project workflow profile](docs/reference/project-workflow-profile.md), [Read-only status views](docs/reference/read-only-status-view.md), [Adapter progress bridge](docs/reference/automatic-progress-bridge.md), [Sandbox boundaries](docs/reference/sandbox-boundaries.md), [Import mappers](docs/reference/import-mappers.md), [Episode retrieval](docs/reference/episode-retrieval.md), [Runner migration](docs/guides/runner-migration-2.md), [Runner recovery records](docs/reference/runner-recovery.md), [Cross-check profile](docs/reference/cross-check-profile.md), [Review Mesh](docs/reference/review-mesh.md), [Bug Forensics profile](docs/reference/bug-forensics.md), and [Bug Forensics context budget](docs/reference/bug-forensics-context-budget.md).
|
|
200
|
+
- Profiles and operations: [Project workflow presets](docs/reference/workflow-presets.md), [Project workflow profile](docs/reference/project-workflow-profile.md), [Read-only status views](docs/reference/read-only-status-view.md), [Adapter progress bridge](docs/reference/automatic-progress-bridge.md), [Sandbox boundaries](docs/reference/sandbox-boundaries.md), [Import mappers](docs/reference/import-mappers.md), [Episode retrieval](docs/reference/episode-retrieval.md), [Runner migration](docs/guides/runner-migration-2.md), [Runner recovery records](docs/reference/runner-recovery.md), [Cross-check profile](docs/reference/cross-check-profile.md), [Review Mesh](docs/reference/review-mesh.md), [Risk-bound independent verification](docs/reference/risk-bound-independent-verification.md), [Bug Forensics profile](docs/reference/bug-forensics.md), and [Bug Forensics context budget](docs/reference/bug-forensics-context-budget.md).
|
|
201
201
|
- Release assets: [Task templates](templates/tasks/README.md), [Neutrality scanning](docs/reference/neutrality.md), and [Release security](docs/security/release-security.md).
|
|
202
202
|
Apache-2.0. See [LICENSE](LICENSE).
|
|
@@ -21,7 +21,7 @@ ALK provides a verifiable finish for external-agent work with proportionate cont
|
|
|
21
21
|
## Quick start
|
|
22
22
|
Start with [install ALK and make the first run](docs/guides/install-and-first-run.md).
|
|
23
23
|
|
|
24
|
-
It includes macOS, Linux and Windows instructions, Python 3.11-3.14, [PyPI](https://pypi.org/project/agent-lifecycle-kit/) installation with `python -m pip install agent-lifecycle-kit==2.
|
|
24
|
+
It includes macOS, Linux and Windows instructions, Python 3.11-3.14, [PyPI](https://pypi.org/project/agent-lifecycle-kit/) installation with `python -m pip install agent-lifecycle-kit==2.1.0`, and common `agent-lifecycle version` errors.
|
|
25
25
|
|
|
26
26
|
For a quick start, run:
|
|
27
27
|
|
|
@@ -165,9 +165,9 @@ Adapter installation and support-level details live in [Adapter install](docs/ad
|
|
|
165
165
|
- Public release claims use tracked source files and redacted evidence summaries.
|
|
166
166
|
- External dialect imports and retrieved episodes enrich context, while reviewed
|
|
167
167
|
ALK artifacts remain the source of truth.
|
|
168
|
-
- Cross-check, Review Mesh and historical runner recovery receipts add evidence
|
|
169
|
-
|
|
170
|
-
|
|
168
|
+
- Cross-check, Review Mesh and historical runner recovery receipts add evidence when a task or plan enables them; legacy runner records are converted
|
|
169
|
+
read-only and the operator chooses the review depth. High-risk criteria can opt into [risk-bound independent verification](docs/reference/risk-bound-independent-verification.md);
|
|
170
|
+
ordinary criteria remain on the standard evidence path.
|
|
171
171
|
|
|
172
172
|
## Documentation
|
|
173
173
|
|
|
@@ -175,6 +175,6 @@ Adapter installation and support-level details live in [Adapter install](docs/ad
|
|
|
175
175
|
- Planning and adapters: [Issue to specification drafts](docs/guides/issue-to-spec.md), [Adapter install](docs/adapters/install.md), and [Adapter support matrix](docs/adapters/support-matrix.md).
|
|
176
176
|
- Reference: [System architecture](docs/architecture/system-architecture.md), [workflow customization and execution controls](docs/reference/workflow-customization.md), [execution strategy](docs/reference/execution-strategy.md), [CLI reference](docs/reference/cli.md), [External verification checks](docs/reference/external-verification-checks.md), [Plan verification](docs/reference/plan-verification.md), [Research evidence](docs/reference/research-evidence.md), [Public locators and redaction](docs/reference/public-locators-and-redaction.md), [Finding-to-check adoption](docs/reference/finding-check-adoption.md), [Source of truth](docs/reference/source-of-truth.md), [Managed lifecycle runner](docs/reference/managed-lifecycle-runner.md), [Managed adapter sessions](docs/reference/managed-adapter-sessions.md), [Portable Agent Plugins](docs/reference/agent-plugins.md), [Plugin publication](docs/reference/plugin-publication.md), [Implementation audit](docs/reference/implementation-audit.md), [Plan completeness](docs/reference/plan-completeness.md), [Public contracts](docs/reference/public-contracts.md), and [Readiness diagnostics](docs/reference/readiness-diagnostics.md).
|
|
177
177
|
- Quality and resources: [Reference-task evaluation](docs/reference/reference-task-evaluation.md), [model routing](docs/reference/model-routing.md), [quality-cost learning](docs/reference/quality-cost-learning.md), [performance and resource budgets](docs/reference/performance-and-resource-budgets.md), [lifecycle cost accounting](docs/reference/lifecycle-cost.md), [host-local token accounting](docs/reference/host-local-token-accounting.md), [process execution observability](docs/reference/process-execution-observability.md), [Usage export](docs/reference/usage-export.md), and [Evidence integrity](docs/reference/evidence-integrity.md).
|
|
178
|
-
- Profiles and operations: [Project workflow presets](docs/reference/workflow-presets.md), [Project workflow profile](docs/reference/project-workflow-profile.md), [Read-only status views](docs/reference/read-only-status-view.md), [Adapter progress bridge](docs/reference/automatic-progress-bridge.md), [Sandbox boundaries](docs/reference/sandbox-boundaries.md), [Import mappers](docs/reference/import-mappers.md), [Episode retrieval](docs/reference/episode-retrieval.md), [Runner migration](docs/guides/runner-migration-2.md), [Runner recovery records](docs/reference/runner-recovery.md), [Cross-check profile](docs/reference/cross-check-profile.md), [Review Mesh](docs/reference/review-mesh.md), [Bug Forensics profile](docs/reference/bug-forensics.md), and [Bug Forensics context budget](docs/reference/bug-forensics-context-budget.md).
|
|
178
|
+
- Profiles and operations: [Project workflow presets](docs/reference/workflow-presets.md), [Project workflow profile](docs/reference/project-workflow-profile.md), [Read-only status views](docs/reference/read-only-status-view.md), [Adapter progress bridge](docs/reference/automatic-progress-bridge.md), [Sandbox boundaries](docs/reference/sandbox-boundaries.md), [Import mappers](docs/reference/import-mappers.md), [Episode retrieval](docs/reference/episode-retrieval.md), [Runner migration](docs/guides/runner-migration-2.md), [Runner recovery records](docs/reference/runner-recovery.md), [Cross-check profile](docs/reference/cross-check-profile.md), [Review Mesh](docs/reference/review-mesh.md), [Risk-bound independent verification](docs/reference/risk-bound-independent-verification.md), [Bug Forensics profile](docs/reference/bug-forensics.md), and [Bug Forensics context budget](docs/reference/bug-forensics-context-budget.md).
|
|
179
179
|
- Release assets: [Task templates](templates/tasks/README.md), [Neutrality scanning](docs/reference/neutrality.md), and [Release security](docs/security/release-security.md).
|
|
180
180
|
Apache-2.0. See [LICENSE](LICENSE).
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "agent-lifecycle-kit"
|
|
7
|
-
version = "2.
|
|
7
|
+
version = "2.1.0"
|
|
8
8
|
description = "Provider-neutral lifecycle control layer that helps coding agents plan, execute, validate, and prove software tasks to completion."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11,<3.15"
|
{agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/audit/proof_integrity.py
RENAMED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
from agent_lifecycle.contracts.independent_evidence_schemas import (
|
|
6
|
+
require_independent_evidence_pass,
|
|
7
|
+
validate_independence_requirement,
|
|
8
|
+
validate_independent_evidence,
|
|
9
|
+
)
|
|
5
10
|
from agent_lifecycle.contracts.proof_validation import (
|
|
6
11
|
DEFAULT_LEGACY_EXEMPTIONS,
|
|
7
12
|
FINDING_SCHEMA,
|
|
@@ -46,11 +51,14 @@ __all__ = [
|
|
|
46
51
|
"build_receipt_hash_chain",
|
|
47
52
|
"build_root_cause_evidence",
|
|
48
53
|
"finding_identity_fields",
|
|
54
|
+
"require_independent_evidence_pass",
|
|
49
55
|
"require_proof_integrity_pass",
|
|
50
56
|
"stable_finding_id",
|
|
51
57
|
"validate_finding_identity",
|
|
52
58
|
"validate_fix_impact_receipt",
|
|
53
59
|
"validate_hash_chain_migration_policy",
|
|
60
|
+
"validate_independence_requirement",
|
|
61
|
+
"validate_independent_evidence",
|
|
54
62
|
"validate_proof_integrity_receipt",
|
|
55
63
|
"validate_receipt_hash_chain",
|
|
56
64
|
"validate_root_cause_evidence",
|
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
"""Schemas for criterion-scoped independent evidence."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
from agent_lifecycle.contracts import LifecycleError, canonical_digest
|
|
8
|
+
from agent_lifecycle.contracts.schema_builders import open_object_schema
|
|
9
|
+
|
|
10
|
+
INDEPENDENCE_REQUIREMENT_SCHEMA = "agent-independence-requirement.v1"
|
|
11
|
+
INDEPENDENT_EVIDENCE_SCHEMA = "agent-independent-evidence.v1"
|
|
12
|
+
INDEPENDENT_EVIDENCE_VALIDATION_SCHEMA = "agent-independent-evidence-validation.v1"
|
|
13
|
+
|
|
14
|
+
INDEPENDENCE_DIMENSIONS = ("producer", "implementation", "source")
|
|
15
|
+
INDEPENDENCE_METHODS = ("deterministic-check", "human-review")
|
|
16
|
+
INDEPENDENCE_SOURCE_POLICIES = ("exact-revision", "current-lineage", "any-current")
|
|
17
|
+
INDEPENDENT_EVIDENCE_STATUSES = ("PASS", "FAIL", "UNAVAILABLE")
|
|
18
|
+
|
|
19
|
+
INDEPENDENT_EVIDENCE_SCHEMAS = {
|
|
20
|
+
INDEPENDENCE_REQUIREMENT_SCHEMA: open_object_schema(
|
|
21
|
+
INDEPENDENCE_REQUIREMENT_SCHEMA,
|
|
22
|
+
required=[
|
|
23
|
+
"schemaVersion",
|
|
24
|
+
"required",
|
|
25
|
+
"requiredDimensions",
|
|
26
|
+
"allowedMethods",
|
|
27
|
+
"prohibitedProducerClasses",
|
|
28
|
+
"sourcePolicy",
|
|
29
|
+
"productionPromotionClaimed",
|
|
30
|
+
"requirementDigest",
|
|
31
|
+
],
|
|
32
|
+
properties={
|
|
33
|
+
"required": {"type": "boolean"},
|
|
34
|
+
"requiredDimensions": {"type": "array", "items": {"enum": list(INDEPENDENCE_DIMENSIONS)}},
|
|
35
|
+
"allowedMethods": {"type": "array", "items": {"enum": list(INDEPENDENCE_METHODS)}},
|
|
36
|
+
"prohibitedProducerClasses": {"type": "array", "items": {"type": "string", "minLength": 1}},
|
|
37
|
+
"sourcePolicy": {"enum": list(INDEPENDENCE_SOURCE_POLICIES)},
|
|
38
|
+
"productionPromotionClaimed": {"const": False},
|
|
39
|
+
"requirementDigest": {"type": "string", "minLength": 64, "maxLength": 64},
|
|
40
|
+
},
|
|
41
|
+
),
|
|
42
|
+
INDEPENDENT_EVIDENCE_SCHEMA: open_object_schema(
|
|
43
|
+
INDEPENDENT_EVIDENCE_SCHEMA,
|
|
44
|
+
required=[
|
|
45
|
+
"schemaVersion",
|
|
46
|
+
"status",
|
|
47
|
+
"evidenceId",
|
|
48
|
+
"criterionId",
|
|
49
|
+
"requirementDigest",
|
|
50
|
+
"sourceRevision",
|
|
51
|
+
"sourceLineageDigest",
|
|
52
|
+
"method",
|
|
53
|
+
"producerClass",
|
|
54
|
+
"producerIdentityHash",
|
|
55
|
+
"implementationDigest",
|
|
56
|
+
"findings",
|
|
57
|
+
"unavailableReason",
|
|
58
|
+
"rawReasoningStored",
|
|
59
|
+
"rawTranscriptStored",
|
|
60
|
+
"productionPromotionClaimed",
|
|
61
|
+
"evidenceDigest",
|
|
62
|
+
],
|
|
63
|
+
properties={
|
|
64
|
+
"status": {"enum": list(INDEPENDENT_EVIDENCE_STATUSES)},
|
|
65
|
+
"evidenceId": {"type": "string", "minLength": 1},
|
|
66
|
+
"criterionId": {"type": "string", "minLength": 1},
|
|
67
|
+
"requirementDigest": {"type": "string", "minLength": 64, "maxLength": 64},
|
|
68
|
+
"sourceRevision": {"type": "string", "minLength": 1},
|
|
69
|
+
"sourceLineageDigest": {"type": "string", "minLength": 64, "maxLength": 64},
|
|
70
|
+
"method": {"enum": list(INDEPENDENCE_METHODS)},
|
|
71
|
+
"producerClass": {"type": "string", "minLength": 1},
|
|
72
|
+
"producerIdentityHash": {"type": "string", "minLength": 64, "maxLength": 64},
|
|
73
|
+
"implementationDigest": {"type": "string", "minLength": 64, "maxLength": 64},
|
|
74
|
+
"findings": {"type": "array", "items": {"type": "object"}},
|
|
75
|
+
"unavailableReason": {"type": ["string", "null"]},
|
|
76
|
+
"rawReasoningStored": {"const": False},
|
|
77
|
+
"rawTranscriptStored": {"const": False},
|
|
78
|
+
"productionPromotionClaimed": {"const": False},
|
|
79
|
+
"evidenceDigest": {"type": "string", "minLength": 64, "maxLength": 64},
|
|
80
|
+
},
|
|
81
|
+
),
|
|
82
|
+
INDEPENDENT_EVIDENCE_VALIDATION_SCHEMA: open_object_schema(
|
|
83
|
+
INDEPENDENT_EVIDENCE_VALIDATION_SCHEMA,
|
|
84
|
+
required=[
|
|
85
|
+
"schemaVersion",
|
|
86
|
+
"status",
|
|
87
|
+
"evidenceId",
|
|
88
|
+
"criterionId",
|
|
89
|
+
"evidenceStatus",
|
|
90
|
+
"independenceStatus",
|
|
91
|
+
"blockers",
|
|
92
|
+
"evidenceDigest",
|
|
93
|
+
"validationDigest",
|
|
94
|
+
],
|
|
95
|
+
properties={
|
|
96
|
+
"status": {"enum": ["PASS", "FAIL"]},
|
|
97
|
+
"evidenceId": {"type": ["string", "null"]},
|
|
98
|
+
"criterionId": {"type": ["string", "null"]},
|
|
99
|
+
"evidenceStatus": {"type": ["string", "null"]},
|
|
100
|
+
"independenceStatus": {"enum": ["REQUIRED_PASS", "OPTIONAL_PASS", "NOT_PROVEN", "UNAVAILABLE"]},
|
|
101
|
+
"blockers": {"type": "array", "items": {"type": "object"}},
|
|
102
|
+
"evidenceDigest": {"type": ["string", "null"], "minLength": 0, "maxLength": 64},
|
|
103
|
+
"validationDigest": {"type": "string", "minLength": 64, "maxLength": 64},
|
|
104
|
+
},
|
|
105
|
+
),
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
def build_independence_requirement(
|
|
110
|
+
*,
|
|
111
|
+
required: bool = True,
|
|
112
|
+
required_dimensions: list[str] | None = None,
|
|
113
|
+
allowed_methods: list[str] | None = None,
|
|
114
|
+
prohibited_producer_classes: list[str] | None = None,
|
|
115
|
+
source_policy: str = "exact-revision",
|
|
116
|
+
) -> dict[str, Any]:
|
|
117
|
+
"""Build a criterion-level independence requirement."""
|
|
118
|
+
|
|
119
|
+
body = {
|
|
120
|
+
"schemaVersion": INDEPENDENCE_REQUIREMENT_SCHEMA,
|
|
121
|
+
"required": bool(required),
|
|
122
|
+
"requiredDimensions": list(required_dimensions or INDEPENDENCE_DIMENSIONS),
|
|
123
|
+
"allowedMethods": list(allowed_methods or INDEPENDENCE_METHODS),
|
|
124
|
+
"prohibitedProducerClasses": list(prohibited_producer_classes or []),
|
|
125
|
+
"sourcePolicy": source_policy,
|
|
126
|
+
"productionPromotionClaimed": False,
|
|
127
|
+
}
|
|
128
|
+
body = {**body, "requirementDigest": canonical_digest(body)}
|
|
129
|
+
validation = validate_independence_requirement(body)
|
|
130
|
+
if validation["status"] != "PASS":
|
|
131
|
+
raise LifecycleError(
|
|
132
|
+
"independence-requirement-invalid",
|
|
133
|
+
"independence requirement is invalid",
|
|
134
|
+
{"validation": validation},
|
|
135
|
+
)
|
|
136
|
+
return body
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
def validate_independence_requirement(value: Any) -> dict[str, Any]:
|
|
140
|
+
"""Validate a frozen criterion's explicit independence requirement."""
|
|
141
|
+
|
|
142
|
+
blockers: list[dict[str, Any]] = []
|
|
143
|
+
if not isinstance(value, dict):
|
|
144
|
+
blockers.append({"code": "independence-requirement-object-invalid"})
|
|
145
|
+
return _requirement_validation(value, blockers)
|
|
146
|
+
if value.get("schemaVersion") != INDEPENDENCE_REQUIREMENT_SCHEMA:
|
|
147
|
+
blockers.append({"code": "independence-requirement-schema-invalid"})
|
|
148
|
+
if not isinstance(value.get("required"), bool):
|
|
149
|
+
blockers.append({"code": "independence-requirement-required-invalid"})
|
|
150
|
+
dimensions = value.get("requiredDimensions")
|
|
151
|
+
if (
|
|
152
|
+
not isinstance(dimensions, list)
|
|
153
|
+
or not dimensions
|
|
154
|
+
or not all(isinstance(item, str) and item in INDEPENDENCE_DIMENSIONS for item in dimensions)
|
|
155
|
+
or len(dimensions) != len(set(item for item in dimensions if isinstance(item, str)))
|
|
156
|
+
):
|
|
157
|
+
blockers.append({"code": "independence-requirement-dimensions-invalid"})
|
|
158
|
+
methods = value.get("allowedMethods")
|
|
159
|
+
if (
|
|
160
|
+
not isinstance(methods, list)
|
|
161
|
+
or not methods
|
|
162
|
+
or not all(isinstance(item, str) and item in INDEPENDENCE_METHODS for item in methods)
|
|
163
|
+
or len(methods) != len(set(item for item in methods if isinstance(item, str)))
|
|
164
|
+
):
|
|
165
|
+
blockers.append({"code": "independence-requirement-methods-invalid"})
|
|
166
|
+
producers = value.get("prohibitedProducerClasses")
|
|
167
|
+
if not isinstance(producers, list) or any(not isinstance(item, str) or not item for item in producers):
|
|
168
|
+
blockers.append({"code": "independence-requirement-producer-policy-invalid"})
|
|
169
|
+
if value.get("sourcePolicy") not in INDEPENDENCE_SOURCE_POLICIES:
|
|
170
|
+
blockers.append({"code": "independence-requirement-source-policy-invalid"})
|
|
171
|
+
if value.get("productionPromotionClaimed") is not False:
|
|
172
|
+
blockers.append({"code": "independence-requirement-production-claim"})
|
|
173
|
+
expected_digest = canonical_digest({key: item for key, item in value.items() if key != "requirementDigest"})
|
|
174
|
+
if value.get("requirementDigest") != expected_digest:
|
|
175
|
+
blockers.append({"code": "independence-requirement-digest-mismatch"})
|
|
176
|
+
return _requirement_validation(value, blockers)
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
def build_independent_evidence(
|
|
180
|
+
*,
|
|
181
|
+
evidence_id: str,
|
|
182
|
+
criterion_id: str,
|
|
183
|
+
requirement: dict[str, Any],
|
|
184
|
+
source_revision: str,
|
|
185
|
+
source_lineage_digest: str,
|
|
186
|
+
method: str,
|
|
187
|
+
producer_class: str,
|
|
188
|
+
producer_identity_hash: str,
|
|
189
|
+
implementation_digest: str,
|
|
190
|
+
status: str = "PASS",
|
|
191
|
+
findings: list[dict[str, Any]] | None = None,
|
|
192
|
+
unavailable_reason: str | None = None,
|
|
193
|
+
) -> dict[str, Any]:
|
|
194
|
+
"""Build a bounded evidence record without storing reviewer internals."""
|
|
195
|
+
|
|
196
|
+
requirement_validation = validate_independence_requirement(requirement)
|
|
197
|
+
if requirement_validation["status"] != "PASS":
|
|
198
|
+
raise LifecycleError(
|
|
199
|
+
"independence-requirement-invalid",
|
|
200
|
+
"independence requirement is invalid",
|
|
201
|
+
{"validation": requirement_validation},
|
|
202
|
+
)
|
|
203
|
+
body = {
|
|
204
|
+
"schemaVersion": INDEPENDENT_EVIDENCE_SCHEMA,
|
|
205
|
+
"status": status,
|
|
206
|
+
"evidenceId": evidence_id,
|
|
207
|
+
"criterionId": criterion_id,
|
|
208
|
+
"requirementDigest": requirement["requirementDigest"],
|
|
209
|
+
"sourceRevision": source_revision,
|
|
210
|
+
"sourceLineageDigest": source_lineage_digest,
|
|
211
|
+
"method": method,
|
|
212
|
+
"producerClass": producer_class,
|
|
213
|
+
"producerIdentityHash": producer_identity_hash,
|
|
214
|
+
"implementationDigest": implementation_digest,
|
|
215
|
+
"findings": list(findings or []),
|
|
216
|
+
"unavailableReason": unavailable_reason,
|
|
217
|
+
"rawReasoningStored": False,
|
|
218
|
+
"rawTranscriptStored": False,
|
|
219
|
+
"productionPromotionClaimed": False,
|
|
220
|
+
}
|
|
221
|
+
body = {**body, "evidenceDigest": canonical_digest(body)}
|
|
222
|
+
validation = validate_independent_evidence(body, requirement=requirement)
|
|
223
|
+
if validation["status"] != "PASS":
|
|
224
|
+
raise LifecycleError(
|
|
225
|
+
"independent-evidence-invalid",
|
|
226
|
+
"independent evidence is invalid",
|
|
227
|
+
{"validation": validation},
|
|
228
|
+
)
|
|
229
|
+
return body
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
def validate_independent_evidence(
|
|
233
|
+
evidence: Any,
|
|
234
|
+
*,
|
|
235
|
+
requirement: dict[str, Any] | None = None,
|
|
236
|
+
expected_source_revision: str | None = None,
|
|
237
|
+
expected_source_lineage_digest: str | None = None,
|
|
238
|
+
primary_producer_class: str | None = None,
|
|
239
|
+
primary_implementation_digest: str | None = None,
|
|
240
|
+
) -> dict[str, Any]:
|
|
241
|
+
"""Validate evidence and fail closed only when its criterion requires it."""
|
|
242
|
+
|
|
243
|
+
blockers: list[dict[str, Any]] = []
|
|
244
|
+
if not isinstance(evidence, dict):
|
|
245
|
+
blockers.append({"code": "independent-evidence-object-invalid"})
|
|
246
|
+
return _evidence_validation(evidence, blockers, "UNAVAILABLE")
|
|
247
|
+
if evidence.get("schemaVersion") != INDEPENDENT_EVIDENCE_SCHEMA:
|
|
248
|
+
blockers.append({"code": "independent-evidence-schema-invalid"})
|
|
249
|
+
_required_text(evidence.get("evidenceId"), "independent-evidence-id-missing", blockers)
|
|
250
|
+
_required_text(evidence.get("criterionId"), "independent-evidence-criterion-id-missing", blockers)
|
|
251
|
+
_required_text(evidence.get("sourceRevision"), "independent-evidence-source-revision-missing", blockers)
|
|
252
|
+
_digest(evidence.get("requirementDigest"), "independent-evidence-requirement-digest-invalid", blockers)
|
|
253
|
+
_digest(evidence.get("sourceLineageDigest"), "independent-evidence-source-lineage-invalid", blockers)
|
|
254
|
+
_digest(evidence.get("producerIdentityHash"), "independent-evidence-producer-identity-invalid", blockers)
|
|
255
|
+
_digest(evidence.get("implementationDigest"), "independent-evidence-implementation-digest-invalid", blockers)
|
|
256
|
+
if evidence.get("status") not in INDEPENDENT_EVIDENCE_STATUSES:
|
|
257
|
+
blockers.append({"code": "independent-evidence-status-invalid"})
|
|
258
|
+
if evidence.get("method") not in INDEPENDENCE_METHODS:
|
|
259
|
+
blockers.append({"code": "independent-evidence-method-invalid"})
|
|
260
|
+
_required_text(evidence.get("producerClass"), "independent-evidence-producer-class-missing", blockers)
|
|
261
|
+
if not isinstance(evidence.get("findings"), list) or not all(
|
|
262
|
+
isinstance(item, dict) for item in evidence["findings"]
|
|
263
|
+
):
|
|
264
|
+
blockers.append({"code": "independent-evidence-findings-invalid"})
|
|
265
|
+
if evidence.get("status") == "UNAVAILABLE" and not _non_empty_text(evidence.get("unavailableReason")):
|
|
266
|
+
blockers.append({"code": "independent-evidence-unavailable-reason-missing"})
|
|
267
|
+
if evidence.get("status") != "UNAVAILABLE" and evidence.get("unavailableReason") is not None:
|
|
268
|
+
blockers.append({"code": "independent-evidence-unavailable-reason-unexpected"})
|
|
269
|
+
if evidence.get("rawReasoningStored") is not False:
|
|
270
|
+
blockers.append({"code": "independent-evidence-raw-reasoning"})
|
|
271
|
+
if evidence.get("rawTranscriptStored") is not False:
|
|
272
|
+
blockers.append({"code": "independent-evidence-raw-transcript"})
|
|
273
|
+
if evidence.get("productionPromotionClaimed") is not False:
|
|
274
|
+
blockers.append({"code": "independent-evidence-production-claim"})
|
|
275
|
+
|
|
276
|
+
required = False
|
|
277
|
+
if requirement is not None:
|
|
278
|
+
requirement_validation = validate_independence_requirement(requirement)
|
|
279
|
+
if requirement_validation["status"] != "PASS":
|
|
280
|
+
blockers.append({"code": "independent-evidence-requirement-invalid", "validation": requirement_validation})
|
|
281
|
+
elif evidence.get("requirementDigest") != requirement.get("requirementDigest"):
|
|
282
|
+
blockers.append({"code": "independent-evidence-requirement-mismatch"})
|
|
283
|
+
required = requirement.get("required") is True
|
|
284
|
+
if evidence.get("method") not in requirement.get("allowedMethods", []):
|
|
285
|
+
blockers.append({"code": "independent-evidence-method-not-allowed"})
|
|
286
|
+
if evidence.get("producerClass") in requirement.get("prohibitedProducerClasses", []):
|
|
287
|
+
blockers.append({"code": "independent-evidence-producer-not-independent"})
|
|
288
|
+
if expected_source_revision is not None and evidence.get("sourceRevision") != expected_source_revision:
|
|
289
|
+
blockers.append({"code": "independent-evidence-source-stale"})
|
|
290
|
+
if (
|
|
291
|
+
expected_source_lineage_digest is not None
|
|
292
|
+
and evidence.get("sourceLineageDigest") != expected_source_lineage_digest
|
|
293
|
+
):
|
|
294
|
+
blockers.append({"code": "independent-evidence-lineage-mismatch"})
|
|
295
|
+
if primary_producer_class is not None and evidence.get("producerClass") == primary_producer_class:
|
|
296
|
+
blockers.append({"code": "independent-evidence-producer-not-independent"})
|
|
297
|
+
if (
|
|
298
|
+
primary_implementation_digest is not None
|
|
299
|
+
and evidence.get("implementationDigest") == primary_implementation_digest
|
|
300
|
+
):
|
|
301
|
+
blockers.append({"code": "independent-evidence-implementation-not-independent"})
|
|
302
|
+
if required and evidence.get("status") != "PASS":
|
|
303
|
+
blockers.append({"code": "independent-evidence-required"})
|
|
304
|
+
|
|
305
|
+
expected_digest = canonical_digest({key: item for key, item in evidence.items() if key != "evidenceDigest"})
|
|
306
|
+
if evidence.get("evidenceDigest") != expected_digest:
|
|
307
|
+
blockers.append({"code": "independent-evidence-digest-mismatch"})
|
|
308
|
+
if blockers:
|
|
309
|
+
independence_status = "UNAVAILABLE" if evidence.get("status") == "UNAVAILABLE" else "NOT_PROVEN"
|
|
310
|
+
elif required:
|
|
311
|
+
independence_status = "REQUIRED_PASS"
|
|
312
|
+
else:
|
|
313
|
+
independence_status = "OPTIONAL_PASS"
|
|
314
|
+
return _evidence_validation(evidence, blockers, independence_status)
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
def require_independent_evidence_pass(validation: dict[str, Any]) -> dict[str, Any]:
|
|
318
|
+
"""Require a valid independent evidence record for a declared criterion."""
|
|
319
|
+
|
|
320
|
+
if validation.get("status") != "PASS" or validation.get("independenceStatus") != "REQUIRED_PASS":
|
|
321
|
+
raise LifecycleError(
|
|
322
|
+
"independent-evidence-required",
|
|
323
|
+
"required independent evidence did not pass",
|
|
324
|
+
{"validation": validation},
|
|
325
|
+
)
|
|
326
|
+
return validation
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
def _requirement_validation(value: Any, blockers: list[dict[str, Any]]) -> dict[str, Any]:
|
|
330
|
+
body = {
|
|
331
|
+
"schemaVersion": "agent-independence-requirement-validation.v1",
|
|
332
|
+
"status": "PASS" if not blockers else "FAIL",
|
|
333
|
+
"required": value.get("required")
|
|
334
|
+
if isinstance(value, dict) and isinstance(value.get("required"), bool)
|
|
335
|
+
else None,
|
|
336
|
+
"blockers": blockers,
|
|
337
|
+
}
|
|
338
|
+
return {**body, "validationDigest": canonical_digest(body)}
|
|
339
|
+
|
|
340
|
+
|
|
341
|
+
def _evidence_validation(value: Any, blockers: list[dict[str, Any]], independence_status: str) -> dict[str, Any]:
|
|
342
|
+
body = {
|
|
343
|
+
"schemaVersion": INDEPENDENT_EVIDENCE_VALIDATION_SCHEMA,
|
|
344
|
+
"status": "PASS" if not blockers else "FAIL",
|
|
345
|
+
"evidenceId": value.get("evidenceId")
|
|
346
|
+
if isinstance(value, dict) and isinstance(value.get("evidenceId"), str)
|
|
347
|
+
else None,
|
|
348
|
+
"criterionId": value.get("criterionId")
|
|
349
|
+
if isinstance(value, dict) and isinstance(value.get("criterionId"), str)
|
|
350
|
+
else None,
|
|
351
|
+
"evidenceStatus": value.get("status")
|
|
352
|
+
if isinstance(value, dict) and isinstance(value.get("status"), str)
|
|
353
|
+
else None,
|
|
354
|
+
"independenceStatus": independence_status,
|
|
355
|
+
"blockers": blockers,
|
|
356
|
+
"evidenceDigest": value.get("evidenceDigest") if isinstance(value, dict) else None,
|
|
357
|
+
}
|
|
358
|
+
return {**body, "validationDigest": canonical_digest(body)}
|
|
359
|
+
|
|
360
|
+
|
|
361
|
+
def _required_text(value: Any, code: str, blockers: list[dict[str, Any]]) -> None:
|
|
362
|
+
if not _non_empty_text(value):
|
|
363
|
+
blockers.append({"code": code})
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
def _non_empty_text(value: Any) -> bool:
|
|
367
|
+
return isinstance(value, str) and bool(value)
|
|
368
|
+
|
|
369
|
+
|
|
370
|
+
def _digest(value: Any, code: str, blockers: list[dict[str, Any]]) -> None:
|
|
371
|
+
if not isinstance(value, str) or len(value) != 64 or any(char not in "0123456789abcdef" for char in value):
|
|
372
|
+
blockers.append({"code": code})
|
|
373
|
+
|
|
374
|
+
|
|
375
|
+
__all__ = [
|
|
376
|
+
"INDEPENDENCE_DIMENSIONS",
|
|
377
|
+
"INDEPENDENCE_METHODS",
|
|
378
|
+
"INDEPENDENCE_REQUIREMENT_SCHEMA",
|
|
379
|
+
"INDEPENDENCE_SOURCE_POLICIES",
|
|
380
|
+
"INDEPENDENT_EVIDENCE_SCHEMA",
|
|
381
|
+
"INDEPENDENT_EVIDENCE_SCHEMAS",
|
|
382
|
+
"INDEPENDENT_EVIDENCE_STATUSES",
|
|
383
|
+
"INDEPENDENT_EVIDENCE_VALIDATION_SCHEMA",
|
|
384
|
+
"build_independence_requirement",
|
|
385
|
+
"build_independent_evidence",
|
|
386
|
+
"require_independent_evidence_pass",
|
|
387
|
+
"validate_independence_requirement",
|
|
388
|
+
"validate_independent_evidence",
|
|
389
|
+
]
|
|
@@ -85,6 +85,7 @@ REVIEW_MESH_SCHEMAS: dict[str, dict[str, Any]] = {
|
|
|
85
85
|
"blocking": {"type": "boolean"},
|
|
86
86
|
"advisory": {"type": "boolean"},
|
|
87
87
|
"evidenceIds": {"type": "array", "items": {"type": "string", "minLength": 1}},
|
|
88
|
+
"independenceRequirement": {"type": ["object", "null"]},
|
|
88
89
|
"productionPromotionClaimed": {"const": False},
|
|
89
90
|
"assignmentDigest": {"type": "string", "minLength": 64, "maxLength": 64},
|
|
90
91
|
},
|
|
@@ -120,10 +121,12 @@ REVIEW_MESH_SCHEMAS: dict[str, dict[str, Any]] = {
|
|
|
120
121
|
"phase": {"type": "string", "minLength": 1},
|
|
121
122
|
"subject": {"type": "object"},
|
|
122
123
|
"reviewer": {"type": "object"},
|
|
124
|
+
"independenceRequirement": {"type": ["object", "null"]},
|
|
123
125
|
"findings": {"type": "array", "items": {"type": "object"}},
|
|
124
126
|
"budgetUsage": {"type": "object"},
|
|
125
127
|
"independence": {"type": "object"},
|
|
126
128
|
"crossCheckReceipt": {"type": "object"},
|
|
129
|
+
"independentEvidence": {"type": ["object", "null"]},
|
|
127
130
|
"blockers": {"type": "array", "items": {"type": "object"}},
|
|
128
131
|
"productionPromotionClaimed": {"const": False},
|
|
129
132
|
"resultDigest": {"type": "string", "minLength": 64, "maxLength": 64},
|
|
@@ -192,6 +195,8 @@ REVIEW_MESH_SCHEMAS: dict[str, dict[str, Any]] = {
|
|
|
192
195
|
"requiredRolesSatisfied": {"type": "boolean"},
|
|
193
196
|
"quorumSatisfied": {"type": "boolean"},
|
|
194
197
|
"blockingFindingsUnresolved": {"type": "boolean"},
|
|
198
|
+
"independenceRequirement": {"type": ["object", "null"]},
|
|
199
|
+
"independentEvidence": {"type": "array", "items": {"type": "object"}},
|
|
195
200
|
"blockers": {"type": "array", "items": {"type": "object"}},
|
|
196
201
|
"productionPromotionClaimed": {"const": False},
|
|
197
202
|
"receiptDigest": {"type": "string", "minLength": 64, "maxLength": 64},
|
{agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/schemas.py
RENAMED
|
@@ -29,6 +29,7 @@ from agent_lifecycle.contracts.external_check_schemas import EXTERNAL_CHECK_SCHE
|
|
|
29
29
|
from agent_lifecycle.contracts.finding_check_schemas import FINDING_CHECK_SCHEMAS
|
|
30
30
|
from agent_lifecycle.contracts.host_capability_schemas import HOST_CAPABILITY_SCHEMAS
|
|
31
31
|
from agent_lifecycle.contracts.import_dialect_schemas import IMPORT_DIALECT_SCHEMAS
|
|
32
|
+
from agent_lifecycle.contracts.independent_evidence_schemas import INDEPENDENT_EVIDENCE_SCHEMAS
|
|
32
33
|
from agent_lifecycle.contracts.legacy_runner_schemas import LEGACY_RUNNER_SCHEMAS
|
|
33
34
|
from agent_lifecycle.contracts.lifecycle_control_definitions import (
|
|
34
35
|
CONTROL_EVENT_TYPES,
|
|
@@ -713,6 +714,7 @@ _SCHEMA_GROUPS = (
|
|
|
713
714
|
EVIDENCE_IMPORT_SCHEMAS,
|
|
714
715
|
EXTERNAL_CHECK_SCHEMAS,
|
|
715
716
|
FINDING_CHECK_SCHEMAS,
|
|
717
|
+
INDEPENDENT_EVIDENCE_SCHEMAS,
|
|
716
718
|
EXECUTION_STRATEGY_SCHEMAS,
|
|
717
719
|
IMPORT_DIALECT_SCHEMAS,
|
|
718
720
|
STATUS_GOAL_SCHEMAS,
|
{agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/planning/completeness.py
RENAMED
|
@@ -7,6 +7,7 @@ from pathlib import Path
|
|
|
7
7
|
from typing import Any
|
|
8
8
|
|
|
9
9
|
from agent_lifecycle.contracts import LifecycleError, canonical_digest, read_json_object
|
|
10
|
+
from agent_lifecycle.contracts.independent_evidence_schemas import validate_independence_requirement
|
|
10
11
|
from agent_lifecycle.contracts.ownership_paths import authority_paths_overlap, normalize_authority_path
|
|
11
12
|
from agent_lifecycle.planning.traceability import validate_plan_traceability
|
|
12
13
|
|
|
@@ -199,6 +200,27 @@ def _check_acceptance(manifest: dict[str, Any], tier: str, blockers: list[dict[s
|
|
|
199
200
|
for criterion in criteria:
|
|
200
201
|
if not isinstance(criterion.get("id"), str) or not criterion["id"]:
|
|
201
202
|
blockers.append(_blocker("missing-acceptance-id", "acceptance criterion id is required", {"tier": tier}))
|
|
203
|
+
independence = criterion.get("independence")
|
|
204
|
+
if independence is None:
|
|
205
|
+
continue
|
|
206
|
+
validation = validate_independence_requirement(independence)
|
|
207
|
+
if validation["status"] != "PASS":
|
|
208
|
+
blockers.append(
|
|
209
|
+
_blocker(
|
|
210
|
+
"invalid-independence-requirement",
|
|
211
|
+
"criterion independence requirement is invalid",
|
|
212
|
+
{"criterionId": criterion.get("id"), "validation": validation},
|
|
213
|
+
)
|
|
214
|
+
)
|
|
215
|
+
continue
|
|
216
|
+
if independence.get("required") is True and not _strings(criterion.get("independentEvidenceIds")):
|
|
217
|
+
blockers.append(
|
|
218
|
+
_blocker(
|
|
219
|
+
"missing-independent-evidence-route",
|
|
220
|
+
"a criterion requiring independence must route independent evidence ids",
|
|
221
|
+
{"criterionId": criterion.get("id")},
|
|
222
|
+
)
|
|
223
|
+
)
|
|
202
224
|
|
|
203
225
|
|
|
204
226
|
def _check_evidence_route(manifest: dict[str, Any], _tier: str, blockers: list[dict[str, Any]]) -> None:
|
|
@@ -215,6 +237,7 @@ def _check_evidence_route(manifest: dict[str, Any], _tier: str, blockers: list[d
|
|
|
215
237
|
)
|
|
216
238
|
)
|
|
217
239
|
evidence_ids.update(ids)
|
|
240
|
+
evidence_ids.update(_strings(criterion.get("independentEvidenceIds")))
|
|
218
241
|
routed = set()
|
|
219
242
|
for workstream in _workstreams(manifest):
|
|
220
243
|
routed.update(_strings(workstream.get("evidenceIds")))
|
|
@@ -106,7 +106,17 @@ _WORKSTREAM = {
|
|
|
106
106
|
"qualityFloor",
|
|
107
107
|
}
|
|
108
108
|
_ACCEPTANCE = {"criteria", "evidence", "releaseGate", "qualityFloor"}
|
|
109
|
-
_CRITERION = {
|
|
109
|
+
_CRITERION = {
|
|
110
|
+
"id",
|
|
111
|
+
"requirementIds",
|
|
112
|
+
"evidenceIds",
|
|
113
|
+
"independentEvidenceIds",
|
|
114
|
+
"independence",
|
|
115
|
+
"statement",
|
|
116
|
+
"description",
|
|
117
|
+
"source",
|
|
118
|
+
"priority",
|
|
119
|
+
}
|
|
110
120
|
_EVIDENCE = {"id", "description", "source", "validation", "artifactPath", "required"}
|
|
111
121
|
_VALIDATION = {"commands", "extraEvidence"}
|
|
112
122
|
_ORCHESTRATION = {
|