agent-lifecycle-kit 1.87.0__tar.gz → 1.89.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-1.87.0/src/agent_lifecycle_kit.egg-info → agent_lifecycle_kit-1.89.0}/PKG-INFO +4 -4
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/README.md +3 -3
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/benchmarks/reference-tasks/manifest.json +5 -5
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/pyproject.toml +1 -1
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/_version.py +1 -1
- agent_lifecycle_kit-1.89.0/src/agent_lifecycle/adapter_sessions/external_check.py +346 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/adapter_sessions/qualification.py +152 -14
- agent_lifecycle_kit-1.89.0/src/agent_lifecycle/audit/external_checks.py +51 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/benchmarks/contracts.py +151 -16
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/benchmarks/qualification.py +72 -8
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/cli/dispatch_contracts.py +42 -7
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/cli/parsers.py +15 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/compiler/__init__.py +3 -0
- agent_lifecycle_kit-1.89.0/src/agent_lifecycle/compiler/output_contract.py +67 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/compiler/small_model_packets.py +19 -30
- agent_lifecycle_kit-1.89.0/src/agent_lifecycle/contracts/external_check_schemas.py +800 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/host_capability_schemas.py +1 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/schemas.py +4 -0
- agent_lifecycle_kit-1.89.0/src/agent_lifecycle/contracts/structured_result_schemas.py +395 -0
- agent_lifecycle_kit-1.89.0/src/agent_lifecycle/data/profiles/external-checks/declared-dependencies.v1.json +15 -0
- agent_lifecycle_kit-1.89.0/src/agent_lifecycle/data/profiles/external-checks/import-boundaries.v1.json +15 -0
- agent_lifecycle_kit-1.89.0/src/agent_lifecycle/data/profiles/external-checks/module-dependencies.v1.json +15 -0
- agent_lifecycle_kit-1.89.0/src/agent_lifecycle/host_protocol/structured_results.py +85 -0
- agent_lifecycle_kit-1.89.0/src/agent_lifecycle/quality/external_checks.py +188 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/artifacts.py +83 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0/src/agent_lifecycle_kit.egg-info}/PKG-INFO +4 -4
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle_kit.egg-info/SOURCES.txt +10 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/LICENSE +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/NOTICE +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/benchmarks/reference-tasks/README.md +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/benchmarks/reference-tasks/rt01-planning/oracle.json +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/benchmarks/reference-tasks/rt01-planning/task.md +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/benchmarks/reference-tasks/rt02-architecture-review/oracle.json +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/benchmarks/reference-tasks/rt02-architecture-review/task.md +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/benchmarks/reference-tasks/rt03-bug-forensics/oracle.json +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/benchmarks/reference-tasks/rt03-bug-forensics/task.md +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/benchmarks/reference-tasks/rt04-s1-managed-task/oracle.json +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/benchmarks/reference-tasks/rt04-s1-managed-task/task.md +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/benchmarks/reference-tasks/rt05-s2-evidence-task/oracle.json +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/benchmarks/reference-tasks/rt05-s2-evidence-task/task.md +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/setup.cfg +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/__main__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/adapter_sessions/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/adapter_sessions/agent_plugin_probe.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/adapter_sessions/contracts.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/adapter_sessions/env.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/adapter_sessions/launch_execution.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/adapter_sessions/launch_preflight.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/adapter_sessions/launcher.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/adapter_sessions/lifecycle_control.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/adapter_sessions/local_launch_profile.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/adapter_sessions/planning_launch.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/adapter_sessions/planning_session.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/adapter_sessions/process.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/adapter_sessions/process_capture.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/adapter_sessions/process_control.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/adapter_sessions/process_groups.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/adapter_sessions/process_telemetry.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/adapter_sessions/redaction.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/adapter_sessions/session_store.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/adapter_sessions/start_input.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/adapter_sessions/start_receipts.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/adapter_sessions/start_routing.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/adapter_sessions/task_intake.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/adapter_sessions/unified_start.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/adapter_sessions/workflow_bridge.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/adapter_sessions/worktree_identity.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/audit/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/audit/bug_forensics.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/audit/implementation.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/audit/ownership.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/audit/package.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/audit/proof_chain.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/audit/proof_findings.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/audit/proof_integrity.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/audit/review_verdict.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/benchmarks/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/benchmarks/comparison.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/benchmarks/evaluator.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/benchmarks/oracles.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/benchmarks/reporting.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/benchmarks/stratification.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/changesets/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/changesets/git.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/changesets/snapshot.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/cli/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/cli/adapter.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/cli/benchmarks.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/cli/command_registry.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/cli/dispatch.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/cli/dispatch_adapters.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/cli/dispatch_lifecycle.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/cli/dispatch_metrics.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/cli/dispatch_observability.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/cli/dispatch_planning.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/cli/dispatch_research.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/cli/errors.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/cli/followup.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/cli/host_launch.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/cli/lifecycle_parsers.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/cli/main.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/cli/metrics_parser.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/cli/observability_parsers.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/cli/planning_parsers.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/cli/policy.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/cli/progress_hooks.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/cli/project.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/cli/research.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/cli/start.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/cli/strategy.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/cli/worktree.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/compiler/task_packets.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/context/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/context/checkpoint_store.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/context/checkpoints.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/context/episode_retrieval.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/context/external_memory.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/context/profiles.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/context/rendering.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/context/thread_bridge_context.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/adapter_contract_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/adapter_event_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/adapter_session_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/adapter_task_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/agent_plugin_qualification_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/audit_optimization_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/audit_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/benchmark_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/bug_forensics_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/canonical.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/compatibility.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/context_checkpoint_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/context_model_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/core_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/cross_check_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/errors.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/evidence_import_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/execution_strategy_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/finding_check_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/goal_validation.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/implementation_audit_validation.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/import_dialect_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/launch_qualification.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/lifecycle_action_catalog.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/lifecycle_control_definitions.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/lifecycle_control_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/lifecycle_control_validation.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/local_launch_validation.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/metric_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/ownership_paths.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/paths.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/performance_limits.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/persistence.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/plan_contract_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/plan_delta_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/plan_manifest_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/planning_launch_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/policy_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/process_execution_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/process_redaction.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/progress_bridge_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/progress_hook_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/project_profile_preset_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/project_profile_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/proof_integrity_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/proof_validation.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/public_locators.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/quality_modes.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/redaction.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/release_contract_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/research_evidence_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/review_mesh_recommendation_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/review_mesh_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/review_quality_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/review_verdict.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/runner_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/runner_worktree_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/sandbox_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/schema_builders.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/status_goal_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/task_template_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/thread_bridge_schema_definitions.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/thread_bridge_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/thread_bridge_validation.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/token_estimation.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/usage_export_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/validation.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/workflow_artifact_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/workflow_authorization_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/contracts/workflow_state_schemas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/data/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/data/profiles/lifecycle-baselines.v1.json +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/data/profiles/model-routing-profile.v1.json +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/feature-implementation.v1.json +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/quick-change.v1.json +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/research-review.v1.json +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/data/profiles/risk-execution-policy.v1.json +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/data/profiles/small-context-profile.v1.json +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/diagnostics/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/diagnostics/bundles.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/diagnostics/installation_catalog.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/diagnostics/readiness.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/evidence_index/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/evidence_index/core.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/evidence_index/episode_index.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/evidence_index/external_context.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/followup/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/followup/records.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/freeze/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/freeze/locks.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/freeze/package_integrity.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/goal/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/goal/records.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/goal/view.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/host_protocol/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/host_protocol/acp_capability.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/host_protocol/agent_plugin_qualification.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/host_protocol/capabilities.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/host_protocol/context_events.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/host_protocol/contracts.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/host_protocol/event_capture.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/host_protocol/events.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/host_protocol/inspection.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/host_protocol/inspection_claude.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/host_protocol/inspection_codex.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/host_protocol/inspection_common.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/host_protocol/inspection_cursor.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/host_protocol/inspection_gemini_cli.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/host_protocol/inspection_hermes.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/host_protocol/inspection_kimi_code.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/host_protocol/inspection_opencode.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/host_protocol/inspection_profile.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/host_protocol/inspection_qwen_code.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/host_protocol/lifecycle_control.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/host_protocol/lifecycle_control_qualification.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/host_protocol/lifecycle_gate.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/host_protocol/process_port.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/host_protocol/receipts.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/host_protocol/scaffold.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/host_protocol/thread_bridge.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/host_protocol/usage_normalizers.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/host_protocol/validation.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/imports/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/imports/agentskills_profile.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/imports/bmad_profile.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/imports/constitution_adr.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/imports/dialect_profiles.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/imports/external_agent.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/imports/external_dialects.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/imports/external_workflow.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/imports/multi_markdown.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/imports/openspec_profile.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/imports/planning.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/imports/spec_kit_profile.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/imports/spec_kitty_profile.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/metrics/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/metrics/audit_optimization.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/metrics/audit_samples.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/metrics/cost_collection.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/metrics/costs.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/metrics/outcome_index.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/metrics/phase_resources.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/metrics/recommendations.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/metrics/regression_signals.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/metrics/usage_export.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/model_routing/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/model_routing/profiles.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/model_routing/receipts.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/model_routing/resolver.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/neutrality/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/neutrality/__main__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/neutrality/authority.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/neutrality/canonical.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/neutrality/cli.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/neutrality/ed25519.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/neutrality/errors.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/neutrality/gate.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/neutrality/git_objects.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/neutrality/matching.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/neutrality/paths.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/neutrality/policy.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/neutrality/receipt.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/neutrality/scanner.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/neutrality/test_runner.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/planning/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/planning/acceptance_markdown.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/planning/completeness.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/planning/continuity.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/planning/deltas.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/planning/manifest_contract.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/planning/task_compatibility.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/planning/templates.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/planning/tiering.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/planning/traceability.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/planning/validation.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/planning/verification.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/policy/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/policy/adaptive_lifecycle.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/policy/apply.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/policy/execution_strategy.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/policy/proposals.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/policy/quality_floor.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/policy/risk_execution.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/policy/runtime_receipts.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/policy/thread_bridge.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/project/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/project/guidance.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/project/merge.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/project/presets.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/project/principles.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/project/profile.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/py.typed +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/quality/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/quality/bug_forensics.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/quality/bug_forensics_advisor.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/quality/bug_forensics_recipes.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/quality/cross_check.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/quality/failure_classification.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/quality/packs.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/reporting/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/reporting/change_summary.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/reporting/event_feed.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/reporting/execution_resources.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/reporting/progress_bridge.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/reporting/progress_hooks.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/reporting/progress_terminal.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/reporting/progress_view.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/reporting/status_view.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/reporting/usage_export.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/research/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/research/evidence.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/research/provenance.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/research/validation.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/resources.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/review/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/review/validation.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/review_mesh/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/review_mesh/assignments.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/review_mesh/contracts.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/review_mesh/operator_templates.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/review_mesh/quorum.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/review_mesh/recommendation.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/review_mesh/results.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/review_mesh/synthesis.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/runner/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/runner/attempt_snapshots.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/runner/core.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/runner/sandbox_receipts.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/specification/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/specification/completion_check.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/specification/completion_gate.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/specification/completion_signal.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/specification/validation.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/authorization.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/budget_decisions.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/budget_policy.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/budget_receipts.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/bug_forensics_gates.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/checkpoint_gate.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/controller.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/events.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/final_proof_integrity.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/finalization.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/gates.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/implementation_audit_gate.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/initialization.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/leases.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/lineage.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/managed_runner.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/model_usage.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/next_action.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/operation_kernel.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/plan_adoption.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/query.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/review_mesh_gate.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/reviews.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/risk_execution_gate.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/run_transitions.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/sandbox_policy.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/selectors.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/state.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/task_outcomes.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/task_transitions.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/workflow/transition_contract.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/worktree/__init__.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle/worktree/isolation.py +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle_kit.egg-info/dependency_links.txt +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle_kit.egg-info/entry_points.txt +0 -0
- {agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/src/agent_lifecycle_kit.egg-info/top_level.txt +0 -0
{agent_lifecycle_kit-1.87.0/src/agent_lifecycle_kit.egg-info → agent_lifecycle_kit-1.89.0}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-lifecycle-kit
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.89.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==1.
|
|
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==1.89.0`, and common `agent-lifecycle version` errors.
|
|
47
47
|
|
|
48
48
|
For a quick start, run:
|
|
49
49
|
|
|
@@ -68,7 +68,7 @@ agent-lifecycle start --adapter <adapter-id> --file task.md
|
|
|
68
68
|
- The boundaries of [planning-only launch](docs/reference/planning-only-launch.md) and [frozen-task launch through a verified profile](docs/reference/qualified-host-launch.md) are documented in the reference. Shipped planning profiles remain candidates with safe failure until the corresponding profile is verified.
|
|
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
|
-
- 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) and [adapter action evidence](docs/reference/adapter-action-evidence.md).
|
|
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).
|
|
72
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.
|
|
73
73
|
## What it gives you
|
|
74
74
|
- A finish-oriented lifecycle: plan, execute, review, and prove the result.
|
|
@@ -194,7 +194,7 @@ Adapter installation and support-level details live in [Adapter install](docs/ad
|
|
|
194
194
|
|
|
195
195
|
- Start: [English documentation](docs/README.md), [Русская документация](docs/ru/README.md), [Install](docs/guides/install-and-first-run.md), [Quickstart](docs/guides/quickstart.md), [Beginner and advanced workflows](docs/guides/beginner-and-advanced-workflows.md), [Commands by task](docs/guides/commands-by-task.md), [Research workflow](docs/guides/research-workflow.md), [Lifecycle task scenarios](docs/guides/lifecycle-cookbook.md), and [Code review workflows](docs/guides/code-review-workflows.md).
|
|
196
196
|
- 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).
|
|
197
|
-
- 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), [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).
|
|
197
|
+
- 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).
|
|
198
198
|
- 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).
|
|
199
199
|
- 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 recovery](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
200
|
- Release assets: [Task templates](templates/tasks/README.md), [Neutrality scanning](docs/reference/neutrality.md), and [Release security](docs/security/release-security.md).
|
|
@@ -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==1.
|
|
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==1.89.0`, and common `agent-lifecycle version` errors.
|
|
25
25
|
|
|
26
26
|
For a quick start, run:
|
|
27
27
|
|
|
@@ -46,7 +46,7 @@ agent-lifecycle start --adapter <adapter-id> --file task.md
|
|
|
46
46
|
- The boundaries of [planning-only launch](docs/reference/planning-only-launch.md) and [frozen-task launch through a verified profile](docs/reference/qualified-host-launch.md) are documented in the reference. Shipped planning profiles remain candidates with safe failure until the corresponding profile is verified.
|
|
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
|
-
- 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) and [adapter action evidence](docs/reference/adapter-action-evidence.md).
|
|
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).
|
|
50
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.
|
|
51
51
|
## What it gives you
|
|
52
52
|
- A finish-oriented lifecycle: plan, execute, review, and prove the result.
|
|
@@ -172,7 +172,7 @@ Adapter installation and support-level details live in [Adapter install](docs/ad
|
|
|
172
172
|
|
|
173
173
|
- Start: [English documentation](docs/README.md), [Русская документация](docs/ru/README.md), [Install](docs/guides/install-and-first-run.md), [Quickstart](docs/guides/quickstart.md), [Beginner and advanced workflows](docs/guides/beginner-and-advanced-workflows.md), [Commands by task](docs/guides/commands-by-task.md), [Research workflow](docs/guides/research-workflow.md), [Lifecycle task scenarios](docs/guides/lifecycle-cookbook.md), and [Code review workflows](docs/guides/code-review-workflows.md).
|
|
174
174
|
- 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).
|
|
175
|
-
- 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), [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).
|
|
175
|
+
- 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).
|
|
176
176
|
- 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).
|
|
177
177
|
- 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 recovery](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
178
|
- Release assets: [Task templates](templates/tasks/README.md), [Neutrality scanning](docs/reference/neutrality.md), and [Release security](docs/security/release-security.md).
|
{agent_lifecycle_kit-1.87.0 → agent_lifecycle_kit-1.89.0}/benchmarks/reference-tasks/manifest.json
RENAMED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
"suiteId": "alk-core-reference",
|
|
4
4
|
"suiteVersion": "1.0.0",
|
|
5
5
|
"tasks": [
|
|
6
|
-
{"id": "rt01-planning", "version": "1.0.0", "family": "planning", "tier": "S0", "shape": "planning", "taskPath": "rt01-planning/task.md", "oraclePath": "rt01-planning/oracle.json"},
|
|
7
|
-
{"id": "rt02-architecture-review", "version": "1.0.0", "family": "architecture-review", "tier": "S2", "shape": "review", "taskPath": "rt02-architecture-review/task.md", "oraclePath": "rt02-architecture-review/oracle.json"},
|
|
8
|
-
{"id": "rt03-bug-forensics", "version": "1.0.0", "family": "bug-forensics", "tier": "S1", "shape": "investigation", "taskPath": "rt03-bug-forensics/task.md", "oraclePath": "rt03-bug-forensics/oracle.json"},
|
|
9
|
-
{"id": "rt04-s1-managed-task", "version": "1.0.0", "family": "s1-managed-task", "tier": "S1", "shape": "implementation", "taskPath": "rt04-s1-managed-task/task.md", "oraclePath": "rt04-s1-managed-task/oracle.json"},
|
|
10
|
-
{"id": "rt05-s2-evidence-task", "version": "1.0.0", "family": "s2-evidence-task", "tier": "S2", "shape": "evidence", "taskPath": "rt05-s2-evidence-task/task.md", "oraclePath": "rt05-s2-evidence-task/oracle.json"}
|
|
6
|
+
{"id": "rt01-planning", "version": "1.0.0", "family": "planning", "tier": "S0", "shape": "planning", "taskPath": "rt01-planning/task.md", "oraclePath": "rt01-planning/oracle.json", "structuredResult": {"operationId": "reference-evaluation", "requiredModes": ["JSON_ENFORCED", "VALIDATED_TEXT"], "fixtureClasses": ["positive", "boundary", "malformed"]}},
|
|
7
|
+
{"id": "rt02-architecture-review", "version": "1.0.0", "family": "architecture-review", "tier": "S2", "shape": "review", "taskPath": "rt02-architecture-review/task.md", "oraclePath": "rt02-architecture-review/oracle.json", "structuredResult": {"operationId": "reference-evaluation", "requiredModes": ["SCHEMA_ENFORCED", "JSON_ENFORCED"], "fixtureClasses": ["positive", "boundary", "malformed"]}},
|
|
8
|
+
{"id": "rt03-bug-forensics", "version": "1.0.0", "family": "bug-forensics", "tier": "S1", "shape": "investigation", "taskPath": "rt03-bug-forensics/task.md", "oraclePath": "rt03-bug-forensics/oracle.json", "structuredResult": {"operationId": "reference-evaluation", "requiredModes": ["JSON_ENFORCED", "VALIDATED_TEXT"], "fixtureClasses": ["positive", "boundary", "malformed"]}},
|
|
9
|
+
{"id": "rt04-s1-managed-task", "version": "1.0.0", "family": "s1-managed-task", "tier": "S1", "shape": "implementation", "taskPath": "rt04-s1-managed-task/task.md", "oraclePath": "rt04-s1-managed-task/oracle.json", "structuredResult": {"operationId": "reference-evaluation", "requiredModes": ["SCHEMA_ENFORCED", "JSON_ENFORCED"], "fixtureClasses": ["positive", "boundary", "malformed"]}},
|
|
10
|
+
{"id": "rt05-s2-evidence-task", "version": "1.0.0", "family": "s2-evidence-task", "tier": "S2", "shape": "evidence", "taskPath": "rt05-s2-evidence-task/task.md", "oraclePath": "rt05-s2-evidence-task/oracle.json", "structuredResult": {"operationId": "reference-evaluation", "requiredModes": ["SCHEMA_ENFORCED", "JSON_ENFORCED"], "fixtureClasses": ["positive", "boundary", "malformed"]}}
|
|
11
11
|
],
|
|
12
12
|
"productionPromotionClaimed": false
|
|
13
13
|
}
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "agent-lifecycle-kit"
|
|
7
|
-
version = "1.
|
|
7
|
+
version = "1.89.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"
|
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
"""Run optional external checks through the bounded process boundary."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import hashlib
|
|
6
|
+
import json
|
|
7
|
+
import os
|
|
8
|
+
import shutil
|
|
9
|
+
import subprocess
|
|
10
|
+
from datetime import UTC, datetime
|
|
11
|
+
from pathlib import Path
|
|
12
|
+
from typing import Any
|
|
13
|
+
|
|
14
|
+
from agent_lifecycle.adapter_sessions.env import resolve_launch_env
|
|
15
|
+
from agent_lifecycle.adapter_sessions.process import run_process
|
|
16
|
+
from agent_lifecycle.adapter_sessions.worktree_identity import capture_git_worktree_identity
|
|
17
|
+
from agent_lifecycle.audit.external_checks import audit_external_check_result
|
|
18
|
+
from agent_lifecycle.contracts import LifecycleError, canonical_digest, read_json_object
|
|
19
|
+
from agent_lifecycle.contracts.external_check_schemas import (
|
|
20
|
+
MAX_ARG_BYTES,
|
|
21
|
+
MAX_OUTPUT_BYTES,
|
|
22
|
+
build_external_check_descriptor,
|
|
23
|
+
build_external_check_invocation,
|
|
24
|
+
)
|
|
25
|
+
from agent_lifecycle.contracts.paths import normalize_repo_path, read_stable_repository_file
|
|
26
|
+
from agent_lifecycle.quality.external_checks import normalize_external_check_result
|
|
27
|
+
|
|
28
|
+
PROFILE_SCHEMA = "agent-external-check-profile.v1"
|
|
29
|
+
MAX_PROFILE_BYTES = 32768
|
|
30
|
+
MAX_SOURCE_FILE_LIST_BYTES = 4 * 1024 * 1024
|
|
31
|
+
MAX_PROFILE_ARG_COUNT = 64
|
|
32
|
+
MAX_PROFILE_TIMEOUT_SECONDS = 3600
|
|
33
|
+
DEFAULT_PROFILE_DIRECTORY = "external-checks"
|
|
34
|
+
SUPPORTED_CHECKS = ("import-boundaries", "module-dependencies", "declared-dependencies")
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def default_external_check_profile(check_id: str) -> Path:
|
|
38
|
+
"""Return the installed package-data profile for one supported check."""
|
|
39
|
+
|
|
40
|
+
if check_id not in SUPPORTED_CHECKS:
|
|
41
|
+
raise LifecycleError("external-check-profile-unsupported", "external check is not supported")
|
|
42
|
+
from agent_lifecycle.resources import builtin_profile_path
|
|
43
|
+
|
|
44
|
+
return builtin_profile_path(f"{DEFAULT_PROFILE_DIRECTORY}/{check_id}.v1.json")
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def load_external_check_profile(profile_path: Path) -> dict[str, Any]:
|
|
48
|
+
"""Load and validate one static, provider-neutral external-check profile."""
|
|
49
|
+
|
|
50
|
+
try:
|
|
51
|
+
if profile_path.stat().st_size > MAX_PROFILE_BYTES:
|
|
52
|
+
raise LifecycleError("external-check-profile-too-large", "external check profile exceeds its byte limit")
|
|
53
|
+
profile = read_json_object(profile_path, label="external check profile")
|
|
54
|
+
except OSError as exc:
|
|
55
|
+
raise LifecycleError("external-check-profile-unavailable", "external check profile is unavailable") from exc
|
|
56
|
+
_validate_profile(profile)
|
|
57
|
+
return profile
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def run_external_check(
|
|
61
|
+
*,
|
|
62
|
+
project_root: Path,
|
|
63
|
+
plan_digest: str,
|
|
64
|
+
plan_lock_digest: str,
|
|
65
|
+
operation_id: str,
|
|
66
|
+
check_id: str,
|
|
67
|
+
profile_path: Path | None = None,
|
|
68
|
+
config_path: str | None = None,
|
|
69
|
+
source_revision: str | None = None,
|
|
70
|
+
blocking_required: bool = False,
|
|
71
|
+
process_runner: Any = run_process,
|
|
72
|
+
) -> dict[str, Any]:
|
|
73
|
+
"""Run an explicitly requested check and return only bounded evidence."""
|
|
74
|
+
|
|
75
|
+
root = project_root.resolve()
|
|
76
|
+
profile = load_external_check_profile(profile_path or default_external_check_profile(check_id))
|
|
77
|
+
if profile["checkId"] != check_id:
|
|
78
|
+
raise LifecycleError("external-check-profile-mismatch", "profile checkId does not match the request")
|
|
79
|
+
source_snapshot = _source_snapshot(root, source_revision)
|
|
80
|
+
selected_config = config_path or profile.get("configPath")
|
|
81
|
+
config_digest, config_blocker = _config_identity(root, selected_config)
|
|
82
|
+
descriptor = build_external_check_descriptor(
|
|
83
|
+
descriptor_id=f"{profile['profileId']}-{source_snapshot['revision'][:12]}",
|
|
84
|
+
check_id=profile["checkId"],
|
|
85
|
+
tool_id=profile["toolId"],
|
|
86
|
+
tool_version=profile["toolVersion"],
|
|
87
|
+
executable=profile["executable"],
|
|
88
|
+
argv=list(profile["argv"]),
|
|
89
|
+
config_digest=config_digest,
|
|
90
|
+
source_snapshot=source_snapshot,
|
|
91
|
+
plan_digest=plan_digest,
|
|
92
|
+
plan_lock_digest=plan_lock_digest,
|
|
93
|
+
working_directory=profile.get("workingDirectory"),
|
|
94
|
+
timeout_seconds=profile["timeoutSeconds"],
|
|
95
|
+
max_output_bytes=profile["maxOutputBytes"],
|
|
96
|
+
environment_allow=list(profile["environment"]["allow"]),
|
|
97
|
+
)
|
|
98
|
+
started_at = _now()
|
|
99
|
+
env, _env_receipt = resolve_launch_env(
|
|
100
|
+
{"env": profile["environment"]},
|
|
101
|
+
process_env=dict(os.environ),
|
|
102
|
+
)
|
|
103
|
+
executable = _resolve_executable(profile["executable"], env)
|
|
104
|
+
if config_blocker is not None:
|
|
105
|
+
process_payload = _unavailable_payload(config_blocker)
|
|
106
|
+
invocation_status = "ABORTED"
|
|
107
|
+
elif executable is None:
|
|
108
|
+
process_payload = _unavailable_payload({"code": "external-check-executable-unavailable"})
|
|
109
|
+
invocation_status = "ABORTED"
|
|
110
|
+
else:
|
|
111
|
+
process_payload = _run_process(
|
|
112
|
+
process_runner,
|
|
113
|
+
profile,
|
|
114
|
+
root,
|
|
115
|
+
env,
|
|
116
|
+
operation_id,
|
|
117
|
+
)
|
|
118
|
+
_mark_source_drift(process_payload, root, source_snapshot)
|
|
119
|
+
invocation_status = "COMPLETED"
|
|
120
|
+
invocation = build_external_check_invocation(
|
|
121
|
+
invocation_id=f"{operation_id}-invocation",
|
|
122
|
+
operation_id=operation_id,
|
|
123
|
+
descriptor=descriptor,
|
|
124
|
+
started_at=started_at,
|
|
125
|
+
status=invocation_status,
|
|
126
|
+
ended_at=_now(),
|
|
127
|
+
)
|
|
128
|
+
normalized = normalize_external_check_result(
|
|
129
|
+
process_payload,
|
|
130
|
+
descriptor=descriptor,
|
|
131
|
+
invocation=invocation,
|
|
132
|
+
result_id=f"{operation_id}-result",
|
|
133
|
+
)
|
|
134
|
+
audit = audit_external_check_result(
|
|
135
|
+
normalized,
|
|
136
|
+
descriptor=descriptor,
|
|
137
|
+
invocation=invocation,
|
|
138
|
+
blocking_required=blocking_required,
|
|
139
|
+
)
|
|
140
|
+
return {
|
|
141
|
+
"schemaVersion": "agent-external-check-run.v1",
|
|
142
|
+
"status": normalized["status"],
|
|
143
|
+
"checkId": check_id,
|
|
144
|
+
"descriptor": descriptor,
|
|
145
|
+
"invocation": invocation,
|
|
146
|
+
"result": normalized,
|
|
147
|
+
"audit": audit,
|
|
148
|
+
"productionPromotionClaimed": False,
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
def _run_process(
|
|
153
|
+
process_runner: Any,
|
|
154
|
+
profile: dict[str, Any],
|
|
155
|
+
root: Path,
|
|
156
|
+
env: dict[str, str],
|
|
157
|
+
operation_id: str,
|
|
158
|
+
) -> dict[str, Any]:
|
|
159
|
+
result = process_runner(
|
|
160
|
+
list(profile["argv"]),
|
|
161
|
+
env=env,
|
|
162
|
+
timeout_seconds=float(profile["timeoutSeconds"]),
|
|
163
|
+
cwd=root,
|
|
164
|
+
max_output_bytes=profile["maxOutputBytes"],
|
|
165
|
+
operation_id=operation_id,
|
|
166
|
+
attempt_id=operation_id,
|
|
167
|
+
adapter_id=profile["toolId"],
|
|
168
|
+
)
|
|
169
|
+
payload = _parse_output(profile, result)
|
|
170
|
+
payload.update(
|
|
171
|
+
{
|
|
172
|
+
"complete": _process_complete(result),
|
|
173
|
+
"timedOut": result.get("timedOut") is True,
|
|
174
|
+
"outputTruncated": result.get("outputLimitExceeded") is True,
|
|
175
|
+
"processCleanupStatus": _cleanup_status(result),
|
|
176
|
+
"exitCode": result.get("exitCode"),
|
|
177
|
+
"stdout": result.get("stdout", ""),
|
|
178
|
+
"stderr": result.get("stderr", ""),
|
|
179
|
+
}
|
|
180
|
+
)
|
|
181
|
+
return payload
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
def _parse_output(profile: dict[str, Any], result: dict[str, Any]) -> dict[str, Any]:
|
|
185
|
+
stdout = result.get("stdout")
|
|
186
|
+
if profile["outputFormat"] == "json" and isinstance(stdout, str):
|
|
187
|
+
try:
|
|
188
|
+
parsed = json.loads(stdout)
|
|
189
|
+
except (json.JSONDecodeError, RecursionError):
|
|
190
|
+
return {"status": "INVALID", "blockers": [{"code": "external-check-output-json-invalid"}]}
|
|
191
|
+
if isinstance(parsed, dict):
|
|
192
|
+
return dict(parsed)
|
|
193
|
+
return {"status": "INVALID", "blockers": [{"code": "external-check-output-json-not-object"}]}
|
|
194
|
+
return {"status": "PASS" if result.get("status") == "PASS" else "FAIL", "findings": []}
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
def _unavailable_payload(blocker: dict[str, Any]) -> dict[str, Any]:
|
|
198
|
+
return {
|
|
199
|
+
"status": "UNAVAILABLE",
|
|
200
|
+
"unavailable": True,
|
|
201
|
+
"complete": False,
|
|
202
|
+
"timedOut": False,
|
|
203
|
+
"outputTruncated": False,
|
|
204
|
+
"processCleanupStatus": "UNAVAILABLE",
|
|
205
|
+
"exitCode": None,
|
|
206
|
+
"blockers": [blocker],
|
|
207
|
+
"findings": [],
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
def _mark_source_drift(payload: dict[str, Any], root: Path, before: dict[str, Any]) -> None:
|
|
212
|
+
try:
|
|
213
|
+
after = _source_snapshot(root, before["revision"])
|
|
214
|
+
except LifecycleError:
|
|
215
|
+
payload.setdefault("blockers", []).append({"code": "external-check-source-unavailable-after-run"})
|
|
216
|
+
payload["status"] = "INVALID"
|
|
217
|
+
return
|
|
218
|
+
if after != before:
|
|
219
|
+
payload.setdefault("blockers", []).append({"code": "external-check-source-drift"})
|
|
220
|
+
payload["status"] = "FAIL"
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
def _process_complete(result: dict[str, Any]) -> bool:
|
|
224
|
+
return bool(
|
|
225
|
+
result.get("processStarted") is True
|
|
226
|
+
and result.get("timedOut") is False
|
|
227
|
+
and result.get("outputLimitExceeded") is False
|
|
228
|
+
and _cleanup_status(result) == "PASS"
|
|
229
|
+
)
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
def _cleanup_status(result: dict[str, Any]) -> str:
|
|
233
|
+
cleanup = result.get("cleanup")
|
|
234
|
+
status = cleanup.get("status") if isinstance(cleanup, dict) else None
|
|
235
|
+
return status if status in {"PASS", "FAIL", "UNAVAILABLE"} else "UNAVAILABLE"
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
def _resolve_executable(executable: str, env: dict[str, str]) -> Path | None:
|
|
239
|
+
candidate = Path(executable)
|
|
240
|
+
if candidate.is_absolute():
|
|
241
|
+
return candidate if candidate.is_file() else None
|
|
242
|
+
resolved = shutil.which(executable, path=env.get("PATH"))
|
|
243
|
+
return Path(resolved) if resolved else None
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
def _source_snapshot(root: Path, revision: str | None) -> dict[str, Any]:
|
|
247
|
+
identity = capture_git_worktree_identity(root)
|
|
248
|
+
resolved_revision = revision or identity["head"]
|
|
249
|
+
if resolved_revision != identity["head"]:
|
|
250
|
+
raise LifecycleError("external-check-source-revision-mismatch", "requested source revision is not HEAD")
|
|
251
|
+
paths = _source_paths(root)
|
|
252
|
+
return {
|
|
253
|
+
"revision": identity["head"],
|
|
254
|
+
"fileSetDigest": canonical_digest({"paths": paths}),
|
|
255
|
+
"workingTreeDigest": identity["identityDigest"],
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
def _source_paths(root: Path) -> list[str]:
|
|
260
|
+
try:
|
|
261
|
+
completed = subprocess.run(
|
|
262
|
+
["git", "ls-files", "--cached", "--others", "--exclude-standard", "-z"],
|
|
263
|
+
cwd=root,
|
|
264
|
+
shell=False,
|
|
265
|
+
stdin=subprocess.DEVNULL,
|
|
266
|
+
capture_output=True,
|
|
267
|
+
timeout=30,
|
|
268
|
+
check=False,
|
|
269
|
+
)
|
|
270
|
+
except (OSError, subprocess.TimeoutExpired) as exc:
|
|
271
|
+
raise LifecycleError("external-check-source-unavailable", "source file set could not be captured") from exc
|
|
272
|
+
if completed.returncode != 0 or len(completed.stdout) > MAX_SOURCE_FILE_LIST_BYTES:
|
|
273
|
+
raise LifecycleError("external-check-source-unavailable", "source file set could not be captured")
|
|
274
|
+
try:
|
|
275
|
+
paths = [item.decode("utf-8") for item in completed.stdout.split(b"\0") if item]
|
|
276
|
+
return sorted(normalize_repo_path(item, label="source file") for item in paths)
|
|
277
|
+
except (LifecycleError, UnicodeDecodeError) as exc:
|
|
278
|
+
raise LifecycleError("external-check-source-invalid", "source file set is invalid") from exc
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
def _config_identity(root: Path, config_path: str | None) -> tuple[str, dict[str, Any] | None]:
|
|
282
|
+
if config_path is None:
|
|
283
|
+
return canonical_digest({"config": None}), None
|
|
284
|
+
try:
|
|
285
|
+
normalized = normalize_repo_path(config_path, label="external check config")
|
|
286
|
+
data = read_stable_repository_file(root, normalized, max_bytes=MAX_OUTPUT_BYTES, label="external check config")
|
|
287
|
+
except LifecycleError as exc:
|
|
288
|
+
return canonical_digest({"config": config_path, "status": "UNAVAILABLE"}), {"code": exc.code}
|
|
289
|
+
return hashlib.sha256(data).hexdigest(), None
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
def _validate_profile(profile: dict[str, Any]) -> None:
|
|
293
|
+
required = (
|
|
294
|
+
"profileId",
|
|
295
|
+
"checkId",
|
|
296
|
+
"toolId",
|
|
297
|
+
"toolVersion",
|
|
298
|
+
"executable",
|
|
299
|
+
"argv",
|
|
300
|
+
"timeoutSeconds",
|
|
301
|
+
"maxOutputBytes",
|
|
302
|
+
"environment",
|
|
303
|
+
"outputFormat",
|
|
304
|
+
)
|
|
305
|
+
if profile.get("schemaVersion") != PROFILE_SCHEMA or any(
|
|
306
|
+
not isinstance(profile.get(item), str) or not profile[item] for item in required[:5]
|
|
307
|
+
):
|
|
308
|
+
raise LifecycleError("external-check-profile-invalid", "external check profile identity is invalid")
|
|
309
|
+
argv = profile.get("argv")
|
|
310
|
+
if not isinstance(argv, list) or not 1 <= len(argv) <= MAX_PROFILE_ARG_COUNT or argv[0] != profile["executable"]:
|
|
311
|
+
raise LifecycleError("external-check-profile-invalid", "external check profile argv is invalid")
|
|
312
|
+
if any(
|
|
313
|
+
not isinstance(item, str) or not item or "\x00" in item or len(item.encode()) > MAX_ARG_BYTES
|
|
314
|
+
for item in argv
|
|
315
|
+
):
|
|
316
|
+
raise LifecycleError("external-check-profile-invalid", "external check profile argv is invalid")
|
|
317
|
+
if (
|
|
318
|
+
not isinstance(profile.get("timeoutSeconds"), int)
|
|
319
|
+
or not 1 <= profile["timeoutSeconds"] <= MAX_PROFILE_TIMEOUT_SECONDS
|
|
320
|
+
):
|
|
321
|
+
raise LifecycleError("external-check-profile-invalid", "external check profile timeout is invalid")
|
|
322
|
+
if not isinstance(profile.get("maxOutputBytes"), int) or not 1 <= profile["maxOutputBytes"] <= MAX_OUTPUT_BYTES:
|
|
323
|
+
raise LifecycleError("external-check-profile-invalid", "external check profile output limit is invalid")
|
|
324
|
+
environment = profile.get("environment")
|
|
325
|
+
if (
|
|
326
|
+
not isinstance(environment, dict)
|
|
327
|
+
or not isinstance(environment.get("allow"), list)
|
|
328
|
+
or environment.get("allowPatterns") != []
|
|
329
|
+
):
|
|
330
|
+
raise LifecycleError("external-check-profile-invalid", "external check profile environment is invalid")
|
|
331
|
+
if not all(isinstance(item, str) and item for item in environment["allow"]):
|
|
332
|
+
raise LifecycleError("external-check-profile-invalid", "external check profile environment is invalid")
|
|
333
|
+
if profile.get("outputFormat") not in {"text", "json"}:
|
|
334
|
+
raise LifecycleError("external-check-profile-invalid", "external check profile output format is invalid")
|
|
335
|
+
config_path = profile.get("configPath")
|
|
336
|
+
if config_path is not None:
|
|
337
|
+
normalize_repo_path(config_path, label="external check config")
|
|
338
|
+
if profile.get("workingDirectory") is not None:
|
|
339
|
+
normalize_repo_path(profile["workingDirectory"], label="external check working directory")
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
def _now() -> str:
|
|
343
|
+
return datetime.now(UTC).isoformat().replace("+00:00", "Z")
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
__all__ = ["SUPPORTED_CHECKS", "default_external_check_profile", "load_external_check_profile", "run_external_check"]
|