agent-lifecycle-kit 2.9.0__tar.gz → 2.11.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.9.0/src/agent_lifecycle_kit.egg-info → agent_lifecycle_kit-2.11.0}/PKG-INFO +3 -3
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/README.md +2 -2
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/pyproject.toml +4 -4
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/_version.py +1 -1
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/cli/dispatch_lifecycle.py +363 -21
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/cli/dispatch_planning.py +119 -1
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/cli/lifecycle_parsers.py +63 -37
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/cli/planning_parsers.py +2 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/compiler/__init__.py +3 -0
- agent_lifecycle_kit-2.11.0/src/agent_lifecycle/compiler/phase_packets.py +474 -0
- agent_lifecycle_kit-2.11.0/src/agent_lifecycle/contracts/phase_packet_schemas.py +264 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/schemas.py +10 -6
- agent_lifecycle_kit-2.11.0/src/agent_lifecycle/contracts/validation_ladder_schemas.py +154 -0
- agent_lifecycle_kit-2.11.0/src/agent_lifecycle/contracts/workflow_continuation_batch_schemas.py +297 -0
- agent_lifecycle_kit-2.11.0/src/agent_lifecycle/contracts/workflow_continuation_schemas.py +252 -0
- agent_lifecycle_kit-2.11.0/src/agent_lifecycle/contracts/workflow_economics_schemas.py +205 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/metrics/phase_resources.py +1 -1
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/planning/completeness.py +9 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/planning/manifest_contract.py +53 -6
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/quality/__init__.py +22 -0
- agent_lifecycle_kit-2.11.0/src/agent_lifecycle/quality/validation_ladder.py +682 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/__init__.py +2 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/continuation.py +31 -18
- agent_lifecycle_kit-2.11.0/src/agent_lifecycle/workflow/continuation_batch.py +796 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/finalization.py +151 -66
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0/src/agent_lifecycle_kit.egg-info}/PKG-INFO +3 -3
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle_kit.egg-info/SOURCES.txt +7 -0
- agent_lifecycle_kit-2.9.0/src/agent_lifecycle/contracts/workflow_continuation_schemas.py +0 -80
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/LICENSE +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/NOTICE +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/benchmarks/reference-tasks/README.md +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/benchmarks/reference-tasks/manifest.json +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/benchmarks/reference-tasks/rt01-planning/oracle.json +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/benchmarks/reference-tasks/rt01-planning/task.md +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/benchmarks/reference-tasks/rt02-architecture-review/oracle.json +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/benchmarks/reference-tasks/rt02-architecture-review/task.md +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/benchmarks/reference-tasks/rt03-bug-forensics/oracle.json +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/benchmarks/reference-tasks/rt03-bug-forensics/task.md +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/benchmarks/reference-tasks/rt04-s1-managed-task/oracle.json +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/benchmarks/reference-tasks/rt04-s1-managed-task/task.md +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/benchmarks/reference-tasks/rt05-s2-evidence-task/oracle.json +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/benchmarks/reference-tasks/rt05-s2-evidence-task/task.md +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/setup.cfg +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/__main__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/adapter_sessions/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/adapter_sessions/agent_plugin_probe.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/adapter_sessions/contracts.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/adapter_sessions/env.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/adapter_sessions/external_check.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/adapter_sessions/external_jobs.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/adapter_sessions/launch_execution.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/adapter_sessions/launch_preflight.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/adapter_sessions/launcher.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/adapter_sessions/lifecycle_control.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/adapter_sessions/local_launch_profile.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/adapter_sessions/planning_launch.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/adapter_sessions/planning_session.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/adapter_sessions/process.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/adapter_sessions/process_capture.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/adapter_sessions/process_control.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/adapter_sessions/process_groups.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/adapter_sessions/process_telemetry.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/adapter_sessions/qualification.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/adapter_sessions/redaction.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/adapter_sessions/session_store.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/adapter_sessions/start_input.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/adapter_sessions/start_receipts.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/adapter_sessions/start_routing.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/adapter_sessions/task_intake.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/adapter_sessions/unified_start.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/adapter_sessions/workflow_bridge.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/adapter_sessions/worktree_identity.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/audit/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/audit/bug_forensics.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/audit/domain_language.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/audit/external_checks.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/audit/implementation.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/audit/ownership.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/audit/package.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/audit/proof_chain.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/audit/proof_findings.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/audit/proof_integrity.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/audit/review_verdict.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/audit/security_analysis.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/benchmarks/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/benchmarks/comparison.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/benchmarks/contracts.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/benchmarks/evaluator.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/benchmarks/oracles.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/benchmarks/qualification.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/benchmarks/reporting.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/benchmarks/stratification.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/changesets/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/changesets/git.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/changesets/snapshot.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/cli/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/cli/adapter.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/cli/benchmarks.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/cli/command_registry.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/cli/dispatch.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/cli/dispatch_adapters.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/cli/dispatch_contracts.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/cli/dispatch_metrics.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/cli/dispatch_observability.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/cli/dispatch_research.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/cli/errors.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/cli/followup.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/cli/host_launch.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/cli/main.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/cli/metrics_parser.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/cli/observability_parsers.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/cli/parsers.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/cli/plan_lock_commands.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/cli/policy.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/cli/progress_hooks.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/cli/project.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/cli/research.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/cli/start.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/cli/strategy.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/cli/worktree.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/compiler/output_contract.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/compiler/small_model_packets.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/compiler/task_packets.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/context/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/context/checkpoint_store.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/context/checkpoints.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/context/episode_retrieval.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/context/external_memory.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/context/profiles.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/context/rendering.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/context/thread_bridge_context.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/adapter_contract_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/adapter_event_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/adapter_session_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/adapter_task_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/agent_plugin_qualification_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/audit_optimization_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/audit_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/benchmark_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/bug_forensics_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/canonical.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/compatibility.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/context_checkpoint_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/context_model_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/core_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/cross_check_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/domain_language.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/domain_language_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/errors.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/evidence_import_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/execution_strategy_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/external_check_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/external_job_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/finding_check_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/goal_validation.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/host_capability_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/implementation_audit_validation.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/import_dialect_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/independent_evidence_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/launch_qualification.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/legacy_runner_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/lifecycle_action_catalog.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/lifecycle_control_definitions.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/lifecycle_control_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/lifecycle_control_validation.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/local_launch_validation.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/metric_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/multi_run_view_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/ownership_paths.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/paths.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/performance_limits.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/persistence.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/plan_contract_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/plan_delta_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/plan_manifest_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/planning_launch_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/policy_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/process_execution_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/process_redaction.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/progress_bridge_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/progress_hook_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/project_profile_preset_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/project_profile_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/proof_integrity_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/proof_validation.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/public_locators.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/quality_modes.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/redaction.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/release_accounting_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/release_contract_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/research_evidence_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/review_mesh_recommendation_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/review_mesh_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/review_quality_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/review_round_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/review_verdict.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/runner_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/runner_worktree_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/sandbox_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/schema_builders.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/security_analysis_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/statistical_evidence_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/status_goal_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/structured_result_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/task_template_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/thread_bridge_schema_definitions.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/thread_bridge_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/thread_bridge_validation.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/token_estimation.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/usage_export_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/validation.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/workflow_artifact_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/workflow_authorization_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/workflow_run_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/contracts/workflow_state_schemas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/data/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/data/profiles/external-checks/declared-dependencies.v1.json +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/data/profiles/external-checks/import-boundaries.v1.json +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/data/profiles/external-checks/module-dependencies.v1.json +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/data/profiles/lifecycle-baselines.v1.json +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/data/profiles/model-routing-profile.v1.json +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/feature-implementation.v1.json +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/quick-change.v1.json +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/research-review.v1.json +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/data/profiles/risk-execution-policy.v1.json +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/data/profiles/small-context-profile.v1.json +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/diagnostics/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/diagnostics/bundles.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/diagnostics/installation_catalog.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/diagnostics/readiness.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/evidence_index/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/evidence_index/core.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/evidence_index/episode_index.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/evidence_index/external_context.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/followup/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/followup/records.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/freeze/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/freeze/locks.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/freeze/package_integrity.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/goal/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/goal/records.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/goal/view.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/acp_capability.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/agent_plugin_qualification.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/capabilities.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/context_events.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/contracts.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/event_capture.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/events.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/external_jobs.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/inspection.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/inspection_claude.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/inspection_codex.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/inspection_common.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/inspection_cursor.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/inspection_gemini_cli.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/inspection_hermes.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/inspection_kimi_code.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/inspection_opencode.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/inspection_profile.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/inspection_qwen_code.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/lifecycle_control.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/lifecycle_control_qualification.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/lifecycle_gate.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/process_port.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/receipts.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/sandbox_receipts.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/scaffold.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/structured_results.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/thread_bridge.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/usage_normalizers.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/host_protocol/validation.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/imports/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/imports/agentskills_profile.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/imports/bmad_profile.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/imports/constitution_adr.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/imports/dialect_profiles.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/imports/external_agent.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/imports/external_dialects.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/imports/external_workflow.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/imports/multi_markdown.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/imports/openspec_profile.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/imports/planning.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/imports/security_findings.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/imports/spec_kit_profile.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/imports/spec_kitty_profile.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/metrics/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/metrics/audit_efficiency.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/metrics/audit_optimization.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/metrics/audit_samples.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/metrics/cost_collection.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/metrics/costs.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/metrics/outcome_index.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/metrics/recommendations.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/metrics/regression_signals.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/metrics/release_accounting.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/metrics/usage_export.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/migration/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/migration/legacy_runner.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/model_routing/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/model_routing/profiles.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/model_routing/receipts.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/model_routing/resolver.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/neutrality/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/neutrality/__main__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/neutrality/authority.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/neutrality/canonical.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/neutrality/cli.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/neutrality/ed25519.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/neutrality/errors.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/neutrality/gate.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/neutrality/git_objects.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/neutrality/matching.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/neutrality/paths.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/neutrality/policy.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/neutrality/receipt.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/neutrality/scanner.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/neutrality/test_runner.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/planning/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/planning/acceptance_markdown.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/planning/continuity.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/planning/deltas.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/planning/task_compatibility.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/planning/templates.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/planning/tiering.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/planning/traceability.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/planning/validation.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/planning/verification.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/policy/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/policy/adaptive_lifecycle.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/policy/apply.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/policy/execution_strategy.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/policy/proposals.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/policy/quality_floor.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/policy/risk_execution.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/policy/runtime_receipts.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/policy/thread_bridge.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/project/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/project/domain_language.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/project/guidance.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/project/merge.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/project/presets.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/project/principles.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/project/profile.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/py.typed +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/quality/bug_forensics.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/quality/bug_forensics_advisor.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/quality/bug_forensics_recipes.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/quality/cross_check.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/quality/external_checks.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/quality/failure_classification.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/quality/packs.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/quality/security_analysis.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/reporting/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/reporting/attention.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/reporting/change_summary.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/reporting/event_feed.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/reporting/execution_resources.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/reporting/multi_run.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/reporting/progress_bridge.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/reporting/progress_hooks.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/reporting/progress_terminal.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/reporting/progress_view.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/reporting/status_view.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/reporting/usage_export.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/research/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/research/evidence.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/research/provenance.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/research/validation.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/resources.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/review/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/review/validation.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/review_mesh/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/review_mesh/assignments.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/review_mesh/contracts.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/review_mesh/independence.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/review_mesh/operator_templates.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/review_mesh/quorum.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/review_mesh/recommendation.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/review_mesh/results.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/review_mesh/synthesis.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/runner/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/runner/core.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/runner/sandbox_receipts.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/specification/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/specification/completion_check.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/specification/completion_gate.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/specification/completion_signal.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/specification/validation.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/artifacts.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/authorization.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/budget_decisions.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/budget_policy.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/budget_receipts.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/bug_forensics_gates.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/checkpoint_gate.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/controller.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/events.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/final_proof_integrity.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/gates.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/implementation_audit_gate.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/initialization.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/leases.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/lineage.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/managed_runner.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/model_usage.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/next_action.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/operation_kernel.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/plan_adoption.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/query.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/review_mesh_gate.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/reviews.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/risk_execution_gate.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/run.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/run_transitions.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/sandbox_policy.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/sandbox_receipts.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/selectors.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/state.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/task_outcomes.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/task_transitions.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/workflow/transition_contract.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/worktree/__init__.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle/worktree/isolation.py +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle_kit.egg-info/dependency_links.txt +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle_kit.egg-info/entry_points.txt +0 -0
- {agent_lifecycle_kit-2.9.0 → agent_lifecycle_kit-2.11.0}/src/agent_lifecycle_kit.egg-info/top_level.txt +0 -0
{agent_lifecycle_kit-2.9.0/src/agent_lifecycle_kit.egg-info → agent_lifecycle_kit-2.11.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.11.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.11.0`, and common `agent-lifecycle version` errors.
|
|
47
47
|
|
|
48
48
|
For a quick start, run:
|
|
49
49
|
|
|
@@ -69,7 +69,7 @@ agent-lifecycle start --adapter <adapter-id> --file task.md
|
|
|
69
69
|
- The [system architecture](docs/architecture/system-architecture.md) page explains how the project is organized, and [project comparison](docs/reference/project-comparison.md) shows how it differs from similar tools.
|
|
70
70
|
- Multiple-agent boundaries, workflow configuration, model choice, prompts, timeouts and retries are described in [workflow customization and execution controls](docs/reference/workflow-customization.md).
|
|
71
71
|
- Create a local project profile with `agent-lifecycle project profile init`; see [project workflow profile](docs/reference/project-workflow-profile.md). Explain the selected profile, plan constraints and adapter capability lineage with [effective configuration](docs/reference/effective-configuration.md), [structured result qualification](docs/reference/structured-result-qualification.md) and [adapter action evidence](docs/reference/adapter-action-evidence.md). Add optional project-owned architecture and dependency evidence with [external verification checks](docs/reference/external-verification-checks.md), run longer specialized adapter work through [bounded external tool jobs](docs/reference/external-tool-jobs.md), track bounded terminology with [project domain language](docs/reference/project-domain-language.md), coordinate several runs with the read-only [multi-run attention view](docs/reference/multi-run-attention-view.md), or use the optional [security analysis profile](docs/reference/security-analysis-profile.md) for untrusted findings and independently verified remediation.
|
|
72
|
-
- For long sessions, use [context checkpoints and compaction recovery](docs/reference/context-checkpoints.md). They preserve a bounded local continuation package without changing plan authority. Measure phases and releases with [release accounting](docs/reference/release-accounting.md),
|
|
72
|
+
- For long sessions, use [context checkpoints and compaction recovery](docs/reference/context-checkpoints.md). They preserve a bounded local continuation package without changing plan authority. Measure phases and releases with [release accounting](docs/reference/release-accounting.md), follow the bounded [phase-to-session handoff](docs/guides/phase-session-handoff.md) with [phase packets](docs/reference/phase-packets.md), and choose focused checks through the read-only [validation ladder](docs/reference/validation-ladder.md).
|
|
73
73
|
## What it gives you
|
|
74
74
|
- A finish-oriented lifecycle: plan, execute, review, and prove the result.
|
|
75
75
|
- One process for different CLIs: adapter-specific commands stay outside the
|
|
@@ -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.11.0`, and common `agent-lifecycle version` errors.
|
|
25
25
|
|
|
26
26
|
For a quick start, run:
|
|
27
27
|
|
|
@@ -47,7 +47,7 @@ agent-lifecycle start --adapter <adapter-id> --file task.md
|
|
|
47
47
|
- The [system architecture](docs/architecture/system-architecture.md) page explains how the project is organized, and [project comparison](docs/reference/project-comparison.md) shows how it differs from similar tools.
|
|
48
48
|
- Multiple-agent boundaries, workflow configuration, model choice, prompts, timeouts and retries are described in [workflow customization and execution controls](docs/reference/workflow-customization.md).
|
|
49
49
|
- Create a local project profile with `agent-lifecycle project profile init`; see [project workflow profile](docs/reference/project-workflow-profile.md). Explain the selected profile, plan constraints and adapter capability lineage with [effective configuration](docs/reference/effective-configuration.md), [structured result qualification](docs/reference/structured-result-qualification.md) and [adapter action evidence](docs/reference/adapter-action-evidence.md). Add optional project-owned architecture and dependency evidence with [external verification checks](docs/reference/external-verification-checks.md), run longer specialized adapter work through [bounded external tool jobs](docs/reference/external-tool-jobs.md), track bounded terminology with [project domain language](docs/reference/project-domain-language.md), coordinate several runs with the read-only [multi-run attention view](docs/reference/multi-run-attention-view.md), or use the optional [security analysis profile](docs/reference/security-analysis-profile.md) for untrusted findings and independently verified remediation.
|
|
50
|
-
- For long sessions, use [context checkpoints and compaction recovery](docs/reference/context-checkpoints.md). They preserve a bounded local continuation package without changing plan authority. Measure phases and releases with [release accounting](docs/reference/release-accounting.md),
|
|
50
|
+
- For long sessions, use [context checkpoints and compaction recovery](docs/reference/context-checkpoints.md). They preserve a bounded local continuation package without changing plan authority. Measure phases and releases with [release accounting](docs/reference/release-accounting.md), follow the bounded [phase-to-session handoff](docs/guides/phase-session-handoff.md) with [phase packets](docs/reference/phase-packets.md), and choose focused checks through the read-only [validation ladder](docs/reference/validation-ladder.md).
|
|
51
51
|
## What it gives you
|
|
52
52
|
- A finish-oriented lifecycle: plan, execute, review, and prove the result.
|
|
53
53
|
- One process for different CLIs: adapter-specific commands stay outside the
|
|
@@ -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.11.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"
|
|
@@ -41,9 +41,9 @@ dependencies = []
|
|
|
41
41
|
|
|
42
42
|
[dependency-groups]
|
|
43
43
|
quality = [
|
|
44
|
-
"ruff==0.16.
|
|
45
|
-
"mypy==
|
|
46
|
-
"coverage==7.
|
|
44
|
+
"ruff==0.16.5",
|
|
45
|
+
"mypy==2.3.1",
|
|
46
|
+
"coverage==7.15.4",
|
|
47
47
|
]
|
|
48
48
|
|
|
49
49
|
[project.scripts]
|
|
@@ -21,7 +21,15 @@ from agent_lifecycle.cli.progress_hooks import (
|
|
|
21
21
|
maybe_emit_workflow_progress_hook,
|
|
22
22
|
validate_workflow_progress_hook_request,
|
|
23
23
|
)
|
|
24
|
-
from agent_lifecycle.
|
|
24
|
+
from agent_lifecycle.compiler import build_phase_packet
|
|
25
|
+
from agent_lifecycle.contracts import LifecycleError, canonical_digest, read_json_object, write_json_create
|
|
26
|
+
from agent_lifecycle.contracts.phase_packet_schemas import (
|
|
27
|
+
IMPLEMENTATION_PAYLOAD_SCHEMA,
|
|
28
|
+
REMEDIATION_PAYLOAD_SCHEMA,
|
|
29
|
+
TASK_AUDIT_PAYLOAD_SCHEMA,
|
|
30
|
+
)
|
|
31
|
+
from agent_lifecycle.freeze import verify_plan_lock
|
|
32
|
+
from agent_lifecycle.quality import build_validation_selection
|
|
25
33
|
from agent_lifecycle.workflow import (
|
|
26
34
|
accept_task,
|
|
27
35
|
adopt_plan,
|
|
@@ -32,6 +40,7 @@ from agent_lifecycle.workflow import (
|
|
|
32
40
|
block_run,
|
|
33
41
|
commit_task_result,
|
|
34
42
|
continue_workflow,
|
|
43
|
+
continue_workflow_batch,
|
|
35
44
|
finalize_run,
|
|
36
45
|
initialize_workflow_state,
|
|
37
46
|
migrate_workflow_state,
|
|
@@ -91,6 +100,8 @@ def _dispatch_workflow(args: argparse.Namespace) -> dict[str, Any]:
|
|
|
91
100
|
return status(state_path, full=args.full)
|
|
92
101
|
if args.workflow_command == "next":
|
|
93
102
|
return next_action(status(state_path, full=True)["state"])
|
|
103
|
+
if args.workflow_command == "validation-select":
|
|
104
|
+
return _dispatch_validation_select(args, state_path)
|
|
94
105
|
if args.workflow_command == "run":
|
|
95
106
|
validate_workflow_progress_hook_request(args, command="workflow run")
|
|
96
107
|
payload = run_workflow_step(
|
|
@@ -107,22 +118,7 @@ def _dispatch_workflow(args: argparse.Namespace) -> dict[str, Any]:
|
|
|
107
118
|
maybe_emit_workflow_progress_hook(args, command="workflow run", state_path=state_path)
|
|
108
119
|
return payload
|
|
109
120
|
if args.workflow_command == "continue":
|
|
110
|
-
|
|
111
|
-
state_path=state_path,
|
|
112
|
-
manifest_path=Path(args.manifest),
|
|
113
|
-
lock_path=Path(args.lock) if args.lock else None,
|
|
114
|
-
operation_id=args.operation_id,
|
|
115
|
-
expected_revision=args.expected_revision,
|
|
116
|
-
source_revision=args.source_revision,
|
|
117
|
-
reason=args.reason,
|
|
118
|
-
apply=args.apply,
|
|
119
|
-
projected_state_revision=args.projected_state_revision,
|
|
120
|
-
projected_action_digest=args.projected_action_digest,
|
|
121
|
-
inputs=_continuation_inputs(args),
|
|
122
|
-
)
|
|
123
|
-
if args.out:
|
|
124
|
-
write_json_create(Path(args.out), payload)
|
|
125
|
-
return payload
|
|
121
|
+
return _dispatch_workflow_continue(args, state_path)
|
|
126
122
|
if args.workflow_command == "adopt-plan":
|
|
127
123
|
return adopt_plan(
|
|
128
124
|
state_path,
|
|
@@ -198,6 +194,7 @@ def _dispatch_workflow(args: argparse.Namespace) -> dict[str, Any]:
|
|
|
198
194
|
follow_up_register_path=args.follow_up_register,
|
|
199
195
|
completion_gate_receipt_path=args.completion_gate_receipt,
|
|
200
196
|
final_implementation_audit_path=args.final_implementation_audit,
|
|
197
|
+
release_full_receipt_path=args.release_full_receipt,
|
|
201
198
|
review_mesh_quorum_paths=args.review_mesh_quorum,
|
|
202
199
|
reason=args.reason,
|
|
203
200
|
)
|
|
@@ -208,10 +205,7 @@ def _dispatch_workflow(args: argparse.Namespace) -> dict[str, Any]:
|
|
|
208
205
|
|
|
209
206
|
def _dispatch_workflow_task(args: argparse.Namespace, state_path: Path) -> dict[str, Any]:
|
|
210
207
|
if args.workflow_command == "task-snapshot":
|
|
211
|
-
|
|
212
|
-
if args.out:
|
|
213
|
-
write_json_create(Path(args.out), payload)
|
|
214
|
-
return payload
|
|
208
|
+
return _dispatch_task_snapshot(args, state_path)
|
|
215
209
|
if args.workflow_command == "block":
|
|
216
210
|
return block_run(
|
|
217
211
|
state_path,
|
|
@@ -337,12 +331,360 @@ def _dispatch_workflow_task(args: argparse.Namespace, state_path: Path) -> dict[
|
|
|
337
331
|
raise LifecycleError("command-not-implemented", "workflow command is not implemented")
|
|
338
332
|
|
|
339
333
|
|
|
334
|
+
def _dispatch_task_snapshot(args: argparse.Namespace, state_path: Path) -> dict[str, Any]:
|
|
335
|
+
packet_args = (args.manifest, args.lock, args.phase_packet_purpose, args.phase_packet_out)
|
|
336
|
+
packet_requested = any(value is not None for value in packet_args)
|
|
337
|
+
if packet_requested and not all(value is not None for value in packet_args):
|
|
338
|
+
raise LifecycleError(
|
|
339
|
+
"phase-packet-required-fact-missing",
|
|
340
|
+
"task snapshot phase packet requires --manifest, --lock, --phase-packet-purpose and --phase-packet-out",
|
|
341
|
+
)
|
|
342
|
+
state = read_json_object(state_path, label="workflow state") if packet_requested else None
|
|
343
|
+
task = _state_task(state, args.task) if isinstance(state, dict) else None
|
|
344
|
+
if args.phase_packet_purpose == "TASK_AUDIT" and isinstance(task, dict) and task.get("status") == "VERIFYING":
|
|
345
|
+
assert state is not None
|
|
346
|
+
payload = _result_bound_task_change_set(state, task)
|
|
347
|
+
else:
|
|
348
|
+
payload = build_current_task_change_set(state_path, task_id=args.task)
|
|
349
|
+
if args.out:
|
|
350
|
+
write_json_create(Path(args.out), payload)
|
|
351
|
+
if packet_requested:
|
|
352
|
+
assert state is not None
|
|
353
|
+
manifest = read_json_object(Path(args.manifest), label="plan manifest")
|
|
354
|
+
lock = read_json_object(Path(args.lock), label="plan lock")
|
|
355
|
+
verify_plan_lock(manifest, lock)
|
|
356
|
+
packet = _build_task_phase_packet(
|
|
357
|
+
manifest=manifest,
|
|
358
|
+
lock=lock,
|
|
359
|
+
state=state,
|
|
360
|
+
task_id=args.task,
|
|
361
|
+
purpose=args.phase_packet_purpose,
|
|
362
|
+
snapshot=payload,
|
|
363
|
+
)
|
|
364
|
+
write_json_create(Path(args.phase_packet_out), packet)
|
|
365
|
+
return payload
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
def _result_bound_task_change_set(state: dict[str, Any], task: dict[str, Any]) -> dict[str, Any]:
|
|
369
|
+
evidence = task.get("resultChangeSetEvidence")
|
|
370
|
+
if not isinstance(evidence, dict):
|
|
371
|
+
raise LifecycleError("phase-packet-required-fact-missing", "task audit result change-set evidence is missing")
|
|
372
|
+
required = ("provider", "baselineSha", "fileSetHash", "diffHash", "snapshotHash")
|
|
373
|
+
if any(not isinstance(evidence.get(field), str) or not evidence[field] for field in required):
|
|
374
|
+
raise LifecycleError(
|
|
375
|
+
"phase-packet-required-fact-missing", "task audit result change-set evidence is incomplete"
|
|
376
|
+
)
|
|
377
|
+
return {
|
|
378
|
+
**evidence,
|
|
379
|
+
"runId": state.get("runId"),
|
|
380
|
+
"packageId": state.get("packageId"),
|
|
381
|
+
"taskId": task.get("id"),
|
|
382
|
+
"attempt": task.get("attempt"),
|
|
383
|
+
"planDigest": state.get("planDigest"),
|
|
384
|
+
"sourceRevision": state.get("sourceRevision"),
|
|
385
|
+
"readOnly": True,
|
|
386
|
+
"stateWritten": False,
|
|
387
|
+
"modelCallsStarted": False,
|
|
388
|
+
"productionPromotionClaimed": False,
|
|
389
|
+
"claim": {
|
|
390
|
+
"schemaVersion": "agent-task-change-set-claim.v1",
|
|
391
|
+
**{key: evidence[key] for key in required},
|
|
392
|
+
},
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
|
|
396
|
+
def _dispatch_validation_select(args: argparse.Namespace, state_path: Path) -> dict[str, Any]:
|
|
397
|
+
state = read_json_object(state_path, label="workflow state")
|
|
398
|
+
task = _state_task(state, args.task)
|
|
399
|
+
snapshot = read_json_object(Path(args.snapshot), label="task snapshot")
|
|
400
|
+
if snapshot.get("taskId") != task.get("id"):
|
|
401
|
+
raise LifecycleError("task-snapshot-lineage-mismatch", "task snapshot does not match the requested task")
|
|
402
|
+
payload = build_validation_selection(
|
|
403
|
+
manifest=read_json_object(Path(args.manifest), label="plan manifest"),
|
|
404
|
+
lock=read_json_object(Path(args.lock), label="plan lock"),
|
|
405
|
+
state=state,
|
|
406
|
+
snapshot=snapshot,
|
|
407
|
+
repository_root=Path.cwd(),
|
|
408
|
+
)
|
|
409
|
+
if args.out:
|
|
410
|
+
write_json_create(Path(args.out), payload)
|
|
411
|
+
return payload
|
|
412
|
+
|
|
413
|
+
|
|
414
|
+
def _build_task_phase_packet(
|
|
415
|
+
*,
|
|
416
|
+
manifest: dict[str, Any],
|
|
417
|
+
lock: dict[str, Any],
|
|
418
|
+
state: dict[str, Any],
|
|
419
|
+
task_id: str,
|
|
420
|
+
purpose: str,
|
|
421
|
+
snapshot: dict[str, Any],
|
|
422
|
+
) -> dict[str, Any]:
|
|
423
|
+
task = _state_task(state, task_id)
|
|
424
|
+
workstream = _manifest_workstream(manifest, task_id)
|
|
425
|
+
plan_digest = canonical_digest(manifest)
|
|
426
|
+
if state.get("planDigest") != plan_digest:
|
|
427
|
+
raise LifecycleError("phase-packet-required-fact-missing", "workflow state plan lineage is stale")
|
|
428
|
+
attempt = task.get("attempt")
|
|
429
|
+
if not isinstance(attempt, int) or isinstance(attempt, bool) or attempt < 1:
|
|
430
|
+
raise LifecycleError("phase-packet-required-fact-missing", "task attempt is required")
|
|
431
|
+
writes = _task_scope(manifest, workstream, task, "writes")
|
|
432
|
+
read_only = _task_scope(manifest, workstream, task, "readOnly")
|
|
433
|
+
forbidden = _task_scope(manifest, workstream, task, "forbiddenWrites")
|
|
434
|
+
acceptance = _task_acceptance(manifest, workstream)
|
|
435
|
+
evidence = _task_evidence(workstream)
|
|
436
|
+
active_blockers = _task_active_blockers(state, task)
|
|
437
|
+
payload = _task_phase_payload(
|
|
438
|
+
purpose=purpose,
|
|
439
|
+
manifest=manifest,
|
|
440
|
+
task=task,
|
|
441
|
+
task_id=task_id,
|
|
442
|
+
attempt=attempt,
|
|
443
|
+
snapshot=snapshot,
|
|
444
|
+
writes=writes,
|
|
445
|
+
read_only=read_only,
|
|
446
|
+
forbidden=forbidden,
|
|
447
|
+
acceptance=acceptance,
|
|
448
|
+
evidence=evidence,
|
|
449
|
+
active_blockers=active_blockers,
|
|
450
|
+
)
|
|
451
|
+
state_revision = state.get("stateRevision")
|
|
452
|
+
source_revision = state.get("sourceRevision")
|
|
453
|
+
if not isinstance(state_revision, int) or isinstance(state_revision, bool) or state_revision < 1:
|
|
454
|
+
raise LifecycleError("phase-packet-required-fact-missing", "workflow state revision is required")
|
|
455
|
+
if not isinstance(source_revision, str) or not source_revision:
|
|
456
|
+
raise LifecycleError("phase-packet-required-fact-missing", "workflow source revision is required")
|
|
457
|
+
return build_phase_packet(
|
|
458
|
+
purpose=purpose,
|
|
459
|
+
payload=payload,
|
|
460
|
+
plan_digest=plan_digest,
|
|
461
|
+
plan_lock_digest=canonical_digest(lock),
|
|
462
|
+
state_revision=state_revision,
|
|
463
|
+
source_revision=source_revision,
|
|
464
|
+
write_scope_digest=canonical_digest({"writes": writes, "readOnly": read_only, "forbiddenWrites": forbidden}),
|
|
465
|
+
acceptance_digest=canonical_digest(acceptance),
|
|
466
|
+
evidence_digest=canonical_digest(evidence),
|
|
467
|
+
active_blocker_ids=active_blockers,
|
|
468
|
+
)
|
|
469
|
+
|
|
470
|
+
|
|
471
|
+
def _task_phase_payload(
|
|
472
|
+
*,
|
|
473
|
+
purpose: str,
|
|
474
|
+
manifest: dict[str, Any],
|
|
475
|
+
task: dict[str, Any],
|
|
476
|
+
task_id: str,
|
|
477
|
+
attempt: int,
|
|
478
|
+
snapshot: dict[str, Any],
|
|
479
|
+
writes: list[str],
|
|
480
|
+
read_only: list[str],
|
|
481
|
+
forbidden: list[str],
|
|
482
|
+
acceptance: list[dict[str, Any]],
|
|
483
|
+
evidence: list[dict[str, Any]],
|
|
484
|
+
active_blockers: list[str],
|
|
485
|
+
) -> dict[str, Any]:
|
|
486
|
+
common = {
|
|
487
|
+
"taskId": task_id,
|
|
488
|
+
"attempt": attempt,
|
|
489
|
+
"writes": writes,
|
|
490
|
+
"readOnly": read_only,
|
|
491
|
+
"forbiddenWrites": forbidden,
|
|
492
|
+
"acceptanceCriteria": acceptance,
|
|
493
|
+
"activeBlockerIds": active_blockers,
|
|
494
|
+
}
|
|
495
|
+
if purpose == "IMPLEMENTATION":
|
|
496
|
+
packet = task.get("packet")
|
|
497
|
+
task_packet_digest = packet.get("sha256") if isinstance(packet, dict) else None
|
|
498
|
+
return {
|
|
499
|
+
"schemaVersion": IMPLEMENTATION_PAYLOAD_SCHEMA,
|
|
500
|
+
**common,
|
|
501
|
+
"taskPacketDigest": task_packet_digest,
|
|
502
|
+
"evidenceRequirements": evidence,
|
|
503
|
+
}
|
|
504
|
+
changed_paths = _task_strings(snapshot.get("changedFiles"))
|
|
505
|
+
if purpose == "TASK_AUDIT":
|
|
506
|
+
result = task.get("result")
|
|
507
|
+
result_digest = result.get("sha256") if isinstance(result, dict) else None
|
|
508
|
+
return {
|
|
509
|
+
"schemaVersion": TASK_AUDIT_PAYLOAD_SCHEMA,
|
|
510
|
+
**common,
|
|
511
|
+
"resultDigest": result_digest,
|
|
512
|
+
"changeSetDigest": snapshot.get("snapshotHash"),
|
|
513
|
+
"changedPaths": changed_paths,
|
|
514
|
+
"reviewRequirements": {
|
|
515
|
+
"independentRequired": True,
|
|
516
|
+
"minimumVerdict": "ACCEPTED",
|
|
517
|
+
"requiredReviewerIds": _required_reviewer_ids(task),
|
|
518
|
+
},
|
|
519
|
+
"evidenceReferences": [item["id"] for item in evidence],
|
|
520
|
+
}
|
|
521
|
+
if purpose != "REMEDIATION":
|
|
522
|
+
raise LifecycleError("phase-packet-required-fact-missing", "phase packet purpose is unsupported")
|
|
523
|
+
history = task.get("attemptHistory")
|
|
524
|
+
prior = history[-1] if isinstance(history, list) and history and isinstance(history[-1], dict) else None
|
|
525
|
+
prior_result = prior.get("result") if isinstance(prior, dict) else None
|
|
526
|
+
prior_review = prior.get("review") if isinstance(prior, dict) else None
|
|
527
|
+
return {
|
|
528
|
+
"schemaVersion": REMEDIATION_PAYLOAD_SCHEMA,
|
|
529
|
+
**common,
|
|
530
|
+
"priorResultDigest": prior_result.get("sha256") if isinstance(prior_result, dict) else None,
|
|
531
|
+
"priorReviewDigest": prior_review.get("sha256") if isinstance(prior_review, dict) else None,
|
|
532
|
+
"changedPaths": changed_paths,
|
|
533
|
+
"openFindingIds": _task_strings(task.get("remediationFindingIds")),
|
|
534
|
+
"remainingAttempts": max(1, _max_task_attempts(manifest) - attempt + 1),
|
|
535
|
+
"evidenceRequirements": evidence,
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
|
|
539
|
+
def _state_task(state: dict[str, Any], task_id: str) -> dict[str, Any]:
|
|
540
|
+
tasks = state.get("tasks")
|
|
541
|
+
if isinstance(tasks, list):
|
|
542
|
+
for task in tasks:
|
|
543
|
+
if isinstance(task, dict) and task.get("id") == task_id:
|
|
544
|
+
return task
|
|
545
|
+
raise LifecycleError("task-not-found", "workflow task does not exist", {"taskId": task_id})
|
|
546
|
+
|
|
547
|
+
|
|
548
|
+
def _manifest_workstream(manifest: dict[str, Any], task_id: str) -> dict[str, Any]:
|
|
549
|
+
workstreams = manifest.get("workstreams")
|
|
550
|
+
if isinstance(workstreams, list):
|
|
551
|
+
for workstream in workstreams:
|
|
552
|
+
if isinstance(workstream, dict) and workstream.get("id") == task_id:
|
|
553
|
+
return workstream
|
|
554
|
+
raise LifecycleError("phase-packet-required-fact-missing", "manifest workstream is missing", {"taskId": task_id})
|
|
555
|
+
|
|
556
|
+
|
|
557
|
+
def _task_acceptance(manifest: dict[str, Any], workstream: dict[str, Any]) -> list[dict[str, Any]]:
|
|
558
|
+
acceptance = manifest.get("acceptance")
|
|
559
|
+
criteria = acceptance.get("criteria") if isinstance(acceptance, dict) else []
|
|
560
|
+
criteria = criteria if isinstance(criteria, list) else []
|
|
561
|
+
by_id = {item.get("id"): item for item in criteria if isinstance(item, dict) and isinstance(item.get("id"), str)}
|
|
562
|
+
return [dict(by_id.get(item, {"id": item})) for item in _task_strings(workstream.get("acceptanceIds"))]
|
|
563
|
+
|
|
564
|
+
|
|
565
|
+
def _task_evidence(workstream: dict[str, Any]) -> list[dict[str, Any]]:
|
|
566
|
+
return [{"id": item, "required": True} for item in _task_strings(workstream.get("evidenceIds"))]
|
|
567
|
+
|
|
568
|
+
|
|
569
|
+
def _task_scope(manifest: dict[str, Any], workstream: dict[str, Any], task: dict[str, Any], field: str) -> list[str]:
|
|
570
|
+
return sorted(
|
|
571
|
+
set(_task_strings(manifest.get(field)) + _task_strings(workstream.get(field)) + _task_strings(task.get(field)))
|
|
572
|
+
)
|
|
573
|
+
|
|
574
|
+
|
|
575
|
+
def _task_active_blockers(state: dict[str, Any], task: dict[str, Any]) -> list[str]:
|
|
576
|
+
blockers = _task_strings(task.get("remediationFindingIds"))
|
|
577
|
+
blocker = state.get("blocker")
|
|
578
|
+
if isinstance(blocker, dict):
|
|
579
|
+
value = blocker.get("id") or blocker.get("code")
|
|
580
|
+
if isinstance(value, str) and value:
|
|
581
|
+
blockers.append(value)
|
|
582
|
+
return sorted(set(blockers))
|
|
583
|
+
|
|
584
|
+
|
|
585
|
+
def _required_reviewer_ids(task: dict[str, Any]) -> list[str]:
|
|
586
|
+
reviewer = task.get("reviewer")
|
|
587
|
+
if isinstance(reviewer, str) and reviewer:
|
|
588
|
+
return [reviewer]
|
|
589
|
+
if isinstance(reviewer, dict) and isinstance(reviewer.get("id"), str) and reviewer["id"]:
|
|
590
|
+
return [reviewer["id"]]
|
|
591
|
+
return []
|
|
592
|
+
|
|
593
|
+
|
|
594
|
+
def _max_task_attempts(manifest: dict[str, Any]) -> int:
|
|
595
|
+
orchestration = manifest.get("orchestration")
|
|
596
|
+
value = orchestration.get("maxTaskAttempts") if isinstance(orchestration, dict) else None
|
|
597
|
+
return value if isinstance(value, int) and not isinstance(value, bool) and value > 0 else 1
|
|
598
|
+
|
|
599
|
+
|
|
600
|
+
def _task_strings(value: Any) -> list[str]:
|
|
601
|
+
if not isinstance(value, list):
|
|
602
|
+
return []
|
|
603
|
+
return sorted({item for item in value if isinstance(item, str) and item})
|
|
604
|
+
|
|
605
|
+
|
|
340
606
|
def _require_args(args: argparse.Namespace, names: list[str], *, mode: str) -> None:
|
|
341
607
|
missing = [name.replace("_", "-") for name in names if not getattr(args, name, None)]
|
|
342
608
|
if missing:
|
|
343
609
|
raise LifecycleError("missing-cli-argument", f"{mode} requires arguments", {"missing": missing})
|
|
344
610
|
|
|
345
611
|
|
|
612
|
+
def _dispatch_workflow_continue(args: argparse.Namespace, state_path: Path) -> dict[str, Any]:
|
|
613
|
+
batch_options = (args.input_bundle, args.max_transitions, args.max_io_bytes, args.resume_receipt)
|
|
614
|
+
if not args.until_blocked:
|
|
615
|
+
if any(value is not None for value in batch_options):
|
|
616
|
+
raise LifecycleError(
|
|
617
|
+
"continuation-batch-option-conflict",
|
|
618
|
+
"bounded continuation options require --until-blocked",
|
|
619
|
+
)
|
|
620
|
+
if not args.operation_id:
|
|
621
|
+
raise LifecycleError(
|
|
622
|
+
"continuation-one-step-operation-id-required",
|
|
623
|
+
"one-step continuation requires --operation-id",
|
|
624
|
+
)
|
|
625
|
+
payload = continue_workflow(
|
|
626
|
+
state_path=state_path,
|
|
627
|
+
manifest_path=Path(args.manifest),
|
|
628
|
+
lock_path=Path(args.lock) if args.lock else None,
|
|
629
|
+
operation_id=args.operation_id,
|
|
630
|
+
expected_revision=args.expected_revision,
|
|
631
|
+
source_revision=args.source_revision,
|
|
632
|
+
reason=args.reason,
|
|
633
|
+
apply=args.apply,
|
|
634
|
+
projected_state_revision=args.projected_state_revision,
|
|
635
|
+
projected_action_digest=args.projected_action_digest,
|
|
636
|
+
inputs=_continuation_inputs(args),
|
|
637
|
+
)
|
|
638
|
+
if args.out:
|
|
639
|
+
write_json_create(Path(args.out), payload)
|
|
640
|
+
return payload
|
|
641
|
+
if not args.apply:
|
|
642
|
+
raise LifecycleError(
|
|
643
|
+
"continuation-batch-apply-required",
|
|
644
|
+
"bounded continuation requires --apply",
|
|
645
|
+
)
|
|
646
|
+
if (
|
|
647
|
+
args.operation_id is not None
|
|
648
|
+
or args.projected_state_revision is not None
|
|
649
|
+
or args.projected_action_digest is not None
|
|
650
|
+
):
|
|
651
|
+
raise LifecycleError(
|
|
652
|
+
"continuation-batch-option-conflict",
|
|
653
|
+
"bounded continuation cannot use singular operation or projection options",
|
|
654
|
+
)
|
|
655
|
+
if _continuation_inputs(args):
|
|
656
|
+
raise LifecycleError(
|
|
657
|
+
"continuation-batch-option-conflict",
|
|
658
|
+
"bounded continuation inputs must come from --input-bundle",
|
|
659
|
+
)
|
|
660
|
+
required = ("lock", "input_bundle", "max_transitions", "max_io_bytes", "out")
|
|
661
|
+
missing = [name.replace("_", "-") for name in required if getattr(args, name) is None or getattr(args, name) == ""]
|
|
662
|
+
if missing:
|
|
663
|
+
raise LifecycleError(
|
|
664
|
+
"continuation-batch-arguments-required",
|
|
665
|
+
"bounded continuation requires explicit lock, bundle, caps and output",
|
|
666
|
+
{"missing": missing},
|
|
667
|
+
)
|
|
668
|
+
if args.max_transitions <= 0 or args.max_io_bytes <= 0:
|
|
669
|
+
raise LifecycleError(
|
|
670
|
+
"continuation-batch-cap-invalid",
|
|
671
|
+
"bounded continuation caps must be positive",
|
|
672
|
+
)
|
|
673
|
+
return continue_workflow_batch(
|
|
674
|
+
state_path=state_path,
|
|
675
|
+
manifest_path=Path(args.manifest),
|
|
676
|
+
lock_path=Path(args.lock),
|
|
677
|
+
input_bundle_path=args.input_bundle,
|
|
678
|
+
output_path=args.out,
|
|
679
|
+
max_transitions=args.max_transitions,
|
|
680
|
+
max_io_bytes=args.max_io_bytes,
|
|
681
|
+
expected_revision=args.expected_revision,
|
|
682
|
+
source_revision=args.source_revision,
|
|
683
|
+
reason=args.reason,
|
|
684
|
+
resume_receipt_path=args.resume_receipt,
|
|
685
|
+
)
|
|
686
|
+
|
|
687
|
+
|
|
346
688
|
def _continuation_inputs(args: argparse.Namespace) -> dict[str, Any]:
|
|
347
689
|
singular = {
|
|
348
690
|
"taskId": args.task,
|
|
@@ -7,9 +7,10 @@ from pathlib import Path
|
|
|
7
7
|
from typing import Any
|
|
8
8
|
|
|
9
9
|
from agent_lifecycle.cli.plan_lock_commands import create_reviewed_plan_lock
|
|
10
|
-
from agent_lifecycle.compiler import compile_small_model_packets, compile_task_packets
|
|
10
|
+
from agent_lifecycle.compiler import build_phase_packet, compile_small_model_packets, compile_task_packets
|
|
11
11
|
from agent_lifecycle.contracts import (
|
|
12
12
|
LifecycleError,
|
|
13
|
+
canonical_digest,
|
|
13
14
|
read_json_object,
|
|
14
15
|
write_json_create,
|
|
15
16
|
)
|
|
@@ -18,6 +19,7 @@ from agent_lifecycle.contracts.finding_check_schemas import (
|
|
|
18
19
|
validate_finding_check_evidence,
|
|
19
20
|
validate_finding_check_proposal,
|
|
20
21
|
)
|
|
22
|
+
from agent_lifecycle.contracts.phase_packet_schemas import PLANNING_HANDOFF_PAYLOAD_SCHEMA
|
|
21
23
|
from agent_lifecycle.freeze import verify_plan_lock
|
|
22
24
|
from agent_lifecycle.planning import (
|
|
23
25
|
build_plan_delta,
|
|
@@ -181,6 +183,25 @@ def _dispatch_plan(args: argparse.Namespace) -> dict[str, Any]:
|
|
|
181
183
|
)
|
|
182
184
|
if args.out:
|
|
183
185
|
write_json_create(Path(args.out), payload)
|
|
186
|
+
if args.phase_packet_out:
|
|
187
|
+
if not args.snapshot or not args.lock:
|
|
188
|
+
raise LifecycleError(
|
|
189
|
+
"phase-packet-required-fact-missing",
|
|
190
|
+
"plan handoff phase packet requires --snapshot and --lock",
|
|
191
|
+
)
|
|
192
|
+
lock = read_json_object(Path(args.lock), label="plan lock")
|
|
193
|
+
verify_plan_lock(manifest, lock)
|
|
194
|
+
packet = _build_planning_handoff_phase_packet(
|
|
195
|
+
manifest,
|
|
196
|
+
lock,
|
|
197
|
+
handoff_snapshot,
|
|
198
|
+
selected_workstream_ids=[
|
|
199
|
+
item["id"]
|
|
200
|
+
for item in payload.get("workstreams", [])
|
|
201
|
+
if isinstance(item, dict) and isinstance(item.get("id"), str)
|
|
202
|
+
],
|
|
203
|
+
)
|
|
204
|
+
write_json_create(Path(args.phase_packet_out), packet)
|
|
184
205
|
return payload
|
|
185
206
|
if args.plan_command == "delta":
|
|
186
207
|
|
|
@@ -215,6 +236,103 @@ def _dispatch_plan(args: argparse.Namespace) -> dict[str, Any]:
|
|
|
215
236
|
raise LifecycleError("command-not-implemented", "plan command is not implemented")
|
|
216
237
|
|
|
217
238
|
|
|
239
|
+
def _build_planning_handoff_phase_packet(
|
|
240
|
+
manifest: dict[str, Any],
|
|
241
|
+
lock: dict[str, Any],
|
|
242
|
+
snapshot: dict[str, Any] | None,
|
|
243
|
+
*,
|
|
244
|
+
selected_workstream_ids: list[str],
|
|
245
|
+
) -> dict[str, Any]:
|
|
246
|
+
if not isinstance(snapshot, dict):
|
|
247
|
+
raise LifecycleError("phase-packet-required-fact-missing", "plan handoff snapshot is required")
|
|
248
|
+
all_workstreams = [item for item in manifest.get("workstreams", []) if isinstance(item, dict)]
|
|
249
|
+
by_id = {item.get("id"): item for item in all_workstreams if isinstance(item.get("id"), str)}
|
|
250
|
+
selected: list[dict[str, Any]] = []
|
|
251
|
+
for workstream_id in selected_workstream_ids:
|
|
252
|
+
workstream = by_id.get(workstream_id)
|
|
253
|
+
if not isinstance(workstream, dict):
|
|
254
|
+
raise LifecycleError(
|
|
255
|
+
"phase-packet-required-fact-missing",
|
|
256
|
+
"plan handoff selected an unknown workstream",
|
|
257
|
+
{"workstreamId": workstream_id},
|
|
258
|
+
)
|
|
259
|
+
acceptance = _phase_acceptance(manifest, workstream)
|
|
260
|
+
evidence = _phase_evidence(workstream)
|
|
261
|
+
selected.append(
|
|
262
|
+
{
|
|
263
|
+
"id": workstream_id,
|
|
264
|
+
"dependsOn": _string_list(workstream.get("dependsOn")),
|
|
265
|
+
"writes": _string_list(workstream.get("writes")),
|
|
266
|
+
"readOnly": _scope_list(manifest, workstream, "readOnly"),
|
|
267
|
+
"forbiddenWrites": _scope_list(manifest, workstream, "forbiddenWrites"),
|
|
268
|
+
"acceptanceCriteria": acceptance,
|
|
269
|
+
"evidenceRequirements": evidence,
|
|
270
|
+
"activeBlockerIds": _string_list(workstream.get("activeBlockerIds")),
|
|
271
|
+
}
|
|
272
|
+
)
|
|
273
|
+
payload = {
|
|
274
|
+
"schemaVersion": PLANNING_HANDOFF_PAYLOAD_SCHEMA,
|
|
275
|
+
"workstreams": selected,
|
|
276
|
+
"dependencyEdges": [
|
|
277
|
+
{"from": dependency, "to": item["id"]} for item in selected for dependency in item["dependsOn"]
|
|
278
|
+
],
|
|
279
|
+
}
|
|
280
|
+
base_revision = manifest.get("baseRevision")
|
|
281
|
+
source_revision = None
|
|
282
|
+
if isinstance(base_revision, dict):
|
|
283
|
+
source_revision = base_revision.get("sha") or base_revision.get("ref")
|
|
284
|
+
if not isinstance(source_revision, str) or not source_revision:
|
|
285
|
+
source_revision = snapshot.get("sourceDigest")
|
|
286
|
+
if not isinstance(source_revision, str) or not source_revision:
|
|
287
|
+
raise LifecycleError("phase-packet-required-fact-missing", "plan handoff source revision is required")
|
|
288
|
+
acceptance = [criterion for item in selected for criterion in item["acceptanceCriteria"]]
|
|
289
|
+
evidence = [requirement for item in selected for requirement in item["evidenceRequirements"]]
|
|
290
|
+
blockers = [blocker for item in selected for blocker in item["activeBlockerIds"]]
|
|
291
|
+
scopes = [
|
|
292
|
+
{
|
|
293
|
+
"id": item["id"],
|
|
294
|
+
"writes": item["writes"],
|
|
295
|
+
"readOnly": item["readOnly"],
|
|
296
|
+
"forbiddenWrites": item["forbiddenWrites"],
|
|
297
|
+
}
|
|
298
|
+
for item in selected
|
|
299
|
+
]
|
|
300
|
+
return build_phase_packet(
|
|
301
|
+
purpose="PLANNING_HANDOFF",
|
|
302
|
+
payload=payload,
|
|
303
|
+
plan_digest=canonical_digest(manifest),
|
|
304
|
+
plan_lock_digest=canonical_digest(lock),
|
|
305
|
+
state_revision=None,
|
|
306
|
+
source_revision=source_revision,
|
|
307
|
+
write_scope_digest=canonical_digest(scopes),
|
|
308
|
+
acceptance_digest=canonical_digest(acceptance),
|
|
309
|
+
evidence_digest=canonical_digest(evidence),
|
|
310
|
+
active_blocker_ids=blockers,
|
|
311
|
+
)
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
def _phase_acceptance(manifest: dict[str, Any], workstream: dict[str, Any]) -> list[dict[str, Any]]:
|
|
315
|
+
acceptance = manifest.get("acceptance")
|
|
316
|
+
criteria = acceptance.get("criteria") if isinstance(acceptance, dict) else []
|
|
317
|
+
criteria = criteria if isinstance(criteria, list) else []
|
|
318
|
+
by_id = {item.get("id"): item for item in criteria if isinstance(item, dict) and isinstance(item.get("id"), str)}
|
|
319
|
+
return [dict(by_id.get(item, {"id": item})) for item in _string_list(workstream.get("acceptanceIds"))]
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
def _phase_evidence(workstream: dict[str, Any]) -> list[dict[str, Any]]:
|
|
323
|
+
return [{"id": item, "required": True} for item in _string_list(workstream.get("evidenceIds"))]
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
def _scope_list(manifest: dict[str, Any], workstream: dict[str, Any], field: str) -> list[str]:
|
|
327
|
+
return sorted(set(_string_list(manifest.get(field)) + _string_list(workstream.get(field))))
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
def _string_list(value: Any) -> list[str]:
|
|
331
|
+
if not isinstance(value, list):
|
|
332
|
+
return []
|
|
333
|
+
return sorted({item for item in value if isinstance(item, str) and item})
|
|
334
|
+
|
|
335
|
+
|
|
218
336
|
def _dispatch_finding_check(args: argparse.Namespace) -> dict[str, Any]:
|
|
219
337
|
def read(path: str, label: str) -> dict[str, Any]:
|
|
220
338
|
return read_json_object(Path(path), label=label)
|