agent-lifecycle-kit 2.36.0__tar.gz → 2.38.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.36.0/src/agent_lifecycle_kit.egg-info → agent_lifecycle_kit-2.38.0}/PKG-INFO +3 -3
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/README.md +2 -2
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/docs/guides/ai-sdlc-integration.md +30 -2
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/docs/ru/guides/ai-sdlc-integration.md +34 -2
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/pyproject.toml +1 -1
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/_version.py +1 -1
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/plan_lock_commands.py +8 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/plan_manifest_schemas.py +167 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/imports/external_dialects.py +30 -23
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/imports/planning.py +73 -23
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/planning/completeness.py +7 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/planning/manifest_contract.py +3 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/planning/task_compatibility.py +24 -4
- agent_lifecycle_kit-2.38.0/src/agent_lifecycle/research/preflight.py +479 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/plan_adoption.py +2 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/task_start.py +22 -9
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0/src/agent_lifecycle_kit.egg-info}/PKG-INFO +3 -3
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle_kit.egg-info/SOURCES.txt +1 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/tests/cli/fixtures/external-consumer-cases.json +3 -1
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/LICENSE +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/NOTICE +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/benchmarks/reference-tasks/README.md +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/benchmarks/reference-tasks/manifest.json +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/benchmarks/reference-tasks/rt01-planning/oracle.json +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/benchmarks/reference-tasks/rt01-planning/task.md +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/benchmarks/reference-tasks/rt02-architecture-review/oracle.json +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/benchmarks/reference-tasks/rt02-architecture-review/task.md +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/benchmarks/reference-tasks/rt03-bug-forensics/oracle.json +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/benchmarks/reference-tasks/rt03-bug-forensics/task.md +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/benchmarks/reference-tasks/rt04-s1-managed-task/oracle.json +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/benchmarks/reference-tasks/rt04-s1-managed-task/task.md +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/benchmarks/reference-tasks/rt05-s2-evidence-task/oracle.json +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/benchmarks/reference-tasks/rt05-s2-evidence-task/task.md +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/setup.cfg +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/__main__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/accounting/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/accounting/closing_resource_admission.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/accounting/closing_resource_policy.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/accounting/closing_resource_recovery.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/accounting/closing_resources.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/accounting/closing_types.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/accounting/contracts.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/accounting/declared_ledger.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/accounting/declared_ledger_legacy.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/accounting/declared_ledger_records.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/accounting/financial_transactions.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/accounting/host_bridge.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/accounting/input_fit.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/accounting/journal.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/accounting/legacy_source_usage.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/accounting/normalization.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/accounting/opening_balances.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/accounting/profile_schema.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/accounting/source_usage_context.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/accounting/support_profiles.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/accounting/usage_types.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/accounting/workflow_authority_store.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/accounting/workflow_state_store.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/accounting/workflow_store.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/agent_plugin_probe.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/attempt_authority.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/bootstrap_r11.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/codex_exact_prompt.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/codex_input_diagnostics.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/codex_prompt_preparation.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/codex_source_exposure.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/codex_source_subject.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/contracts.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/env.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/external_check.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/external_jobs.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/immutable_input.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/input_lifecycle.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/launch_execution.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/launch_preflight.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/launcher.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/lifecycle_control.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/limited_native_evidence.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/local_launch_profile.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/managed_process.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/ordinary_audit.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/planning_launch.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/planning_session.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/private_input.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/process.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/process_admission.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/process_capture.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/process_control.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/process_groups.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/process_telemetry.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/qualification.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/qualification_context.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/redaction.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/session_store.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/source_review_contracts.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/source_review_history.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/source_review_inputs.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/source_review_preparation_records.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/source_review_roles.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/source_review_shards.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/source_review_support.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/source_review_transcript.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/start_input.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/start_receipts.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/start_routing.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/task_intake.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/unified_start.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/windows_pipe.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/workflow_bridge.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/adapter_sessions/worktree_identity.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/audit/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/audit/bug_forensics.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/audit/delta.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/audit/delta_review.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/audit/domain_language.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/audit/external_checks.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/audit/implementation.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/audit/ownership.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/audit/package.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/audit/proof_chain.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/audit/proof_findings.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/audit/proof_integrity.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/audit/review_packet.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/audit/review_verdict.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/audit/security_analysis.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/benchmarks/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/benchmarks/comparison.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/benchmarks/contracts.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/benchmarks/evaluator.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/benchmarks/oracles.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/benchmarks/qualification.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/benchmarks/reporting.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/benchmarks/stratification.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/changesets/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/changesets/git.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/changesets/git_io.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/changesets/snapshot.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/adapter.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/benchmarks.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/command_registry.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/compact_plan_commands.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/dispatch.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/dispatch_adapters.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/dispatch_audit.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/dispatch_contracts.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/dispatch_lifecycle.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/dispatch_metrics.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/dispatch_observability.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/dispatch_planning.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/dispatch_research.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/errors.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/followup.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/host_launch.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/lifecycle_parsers.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/main.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/metrics_parser.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/observability_parsers.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/parsers.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/planning_parsers.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/policy.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/progress_hooks.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/project.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/research.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/start.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/strategy.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/workflow_task_parsers.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/cli/worktree.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/compiler/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/compiler/output_contract.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/compiler/phase_packets.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/compiler/small_model_packets.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/compiler/task_packets.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/context/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/context/checkpoint_store.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/context/checkpoints.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/context/episode_retrieval.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/context/external_memory.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/context/profiles.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/context/rendering.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/context/thread_bridge_context.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/adapter_contract_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/adapter_event_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/adapter_session_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/adapter_task_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/agent_plugin_qualification_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/artifact_authoring_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/audit_optimization_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/audit_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/authority_io.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/authority_text.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/benchmark_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/bounded_json.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/bug_forensics_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/canonical.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/closing_resource_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/closing_time.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/closing_window_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/compact_plan_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/compatibility.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/context_checkpoint_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/context_model_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/core_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/cross_check_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/deadline_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/deadlines.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/display_identity.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/domain_language.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/domain_language_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/ed25519.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/errors.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/evidence_import_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/evidence_receipt_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/execution_strategy_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/execution_target.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/external_check_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/external_job_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/finding_check_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/goal_validation.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/host_capability_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/immutable_input_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/implementation_audit_validation.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/import_dialect_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/independent_evidence_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/launch_qualification.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/legacy_runner_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/lifecycle_action_catalog.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/lifecycle_control_definitions.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/lifecycle_control_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/lifecycle_control_validation.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/local_launch_validation.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/metric_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/model_classes.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/multi_run_view_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/ownership_paths.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/paths.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/performance_limits.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/persistence.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/phase_packet_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/plan_contract_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/plan_delta_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/planning_launch_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/policy_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/preparation_policy.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/private_storage.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/private_storage_compat.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/process_execution_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/process_lock.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/process_redaction.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/progress_bridge_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/progress_hook_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/project_profile_preset_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/project_profile_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/proof_integrity_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/proof_validation.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/public_locators.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/quality_modes.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/redaction.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/release_accounting_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/release_contract_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/research_evidence_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/review_input_types.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/review_mesh_recommendation_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/review_mesh_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/review_quality_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/review_round_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/review_verdict.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/reviewer_identity_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/runner_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/runner_worktree_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/sandbox_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/schema_builders.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/scoped_usage_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/security_analysis_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/statistical_evidence_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/status_goal_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/structured_result_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/task_template_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/thread_bridge_schema_definitions.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/thread_bridge_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/thread_bridge_validation.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/token_estimation.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/usage_export_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/validation.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/validation_ladder_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/windows_security.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/workflow_artifact_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/workflow_authority.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/workflow_authority_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/workflow_authorization_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/workflow_continuation_batch_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/workflow_continuation_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/workflow_economics_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/workflow_finalization_types.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/workflow_run_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/workflow_state_authority.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/workflow_state_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/workflow_storage.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/workflow_storage_context.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/workflow_storage_io.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/contracts/workflow_storage_schemas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/data/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/data/profiles/external-checks/declared-dependencies.v1.json +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/data/profiles/external-checks/import-boundaries.v1.json +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/data/profiles/external-checks/module-dependencies.v1.json +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/data/profiles/lifecycle-baselines.v1.json +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/data/profiles/model-routing-profile.v1.json +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/feature-implementation.v1.json +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/quick-change.v1.json +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/research-review.v1.json +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/data/profiles/risk-execution-policy.v1.json +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/data/profiles/small-context-profile.v1.json +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/diagnostics/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/diagnostics/bundles.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/diagnostics/installation_catalog.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/diagnostics/readiness.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/evidence_index/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/evidence_index/core.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/evidence_index/episode_index.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/evidence_index/external_context.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/followup/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/followup/records.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/freeze/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/freeze/locks.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/freeze/package_integrity.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/freeze/review_inputs.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/goal/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/goal/records.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/goal/view.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/acp_capability.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/agent_plugin_qualification.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/capabilities.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/context_events.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/contracts.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/event_capture.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/events.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/external_jobs.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/inspection.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/inspection_claude.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/inspection_codex.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/inspection_common.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/inspection_cursor.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/inspection_gemini_cli.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/inspection_hermes.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/inspection_kimi_code.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/inspection_opencode.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/inspection_profile.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/inspection_qwen_code.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/lifecycle_control.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/lifecycle_control_qualification.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/lifecycle_gate.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/opencode_compatibility.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/process_port.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/receipts.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/sandbox_receipts.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/scaffold.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/structured_results.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/thread_bridge.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/usage_normalizers.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/host_protocol/validation.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/imports/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/imports/agentskills_profile.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/imports/bmad_profile.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/imports/constitution_adr.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/imports/dialect_profiles.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/imports/external_agent.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/imports/external_workflow.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/imports/multi_markdown.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/imports/openspec_profile.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/imports/security_findings.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/imports/spec_kit_profile.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/imports/spec_kitty_profile.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/metrics/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/metrics/audit_efficiency.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/metrics/audit_optimization.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/metrics/audit_samples.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/metrics/command_resources.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/metrics/cost_collection.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/metrics/costs.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/metrics/goal_progress.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/metrics/outcome_index.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/metrics/phase_resources.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/metrics/plan_package_comparison.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/metrics/recommendations.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/metrics/regression_signals.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/metrics/release_accounting.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/metrics/usage_export.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/metrics/workflow_economics.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/migration/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/migration/legacy_runner.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/model_routing/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/model_routing/profiles.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/model_routing/receipts.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/model_routing/resolver.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/neutrality/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/neutrality/__main__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/neutrality/authority.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/neutrality/canonical.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/neutrality/cli.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/neutrality/ed25519.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/neutrality/errors.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/neutrality/gate.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/neutrality/git_objects.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/neutrality/matching.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/neutrality/paths.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/neutrality/policy.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/neutrality/receipt.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/neutrality/scanner.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/neutrality/test_runner.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/planning/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/planning/acceptance_markdown.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/planning/compact_packages.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/planning/continuity.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/planning/deltas.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/planning/prerequisites.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/planning/templates.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/planning/tiering.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/planning/traceability.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/planning/validation.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/planning/verification.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/policy/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/policy/adaptive_lifecycle.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/policy/apply.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/policy/execution_strategy.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/policy/proposals.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/policy/quality_floor.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/policy/risk_execution.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/policy/runtime_receipts.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/policy/thread_bridge.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/project/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/project/domain_language.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/project/guidance.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/project/merge.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/project/presets.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/project/principles.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/project/profile.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/py.typed +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/quality/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/quality/architecture_policy.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/quality/bug_forensics.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/quality/bug_forensics_advisor.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/quality/bug_forensics_recipes.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/quality/cross_check.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/quality/dependency_impact.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/quality/external_checks.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/quality/failure_classification.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/quality/packs.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/quality/security_analysis.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/quality/validation_ladder.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/reporting/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/reporting/attention.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/reporting/change_summary.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/reporting/event_feed.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/reporting/execution_resources.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/reporting/multi_run.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/reporting/progress_bridge.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/reporting/progress_hooks.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/reporting/progress_terminal.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/reporting/progress_view.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/reporting/status_view.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/reporting/usage_export.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/research/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/research/evidence.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/research/provenance.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/research/validation.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/resources.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/review/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/review/provenance.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/review/validation.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/review_mesh/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/review_mesh/assignments.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/review_mesh/contracts.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/review_mesh/independence.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/review_mesh/operator_templates.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/review_mesh/preflight.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/review_mesh/quorum.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/review_mesh/recommendation.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/review_mesh/results.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/review_mesh/synthesis.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/review_mesh/validation_helpers.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/runner/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/runner/core.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/runner/sandbox_receipts.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/specification/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/specification/completion_check.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/specification/completion_gate.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/specification/completion_signal.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/specification/validation.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/artifact_builders.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/artifacts.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/audit_evidence.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/authorization.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/budget_decisions.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/budget_policy.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/budget_receipts.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/bug_forensics_gates.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/checkpoint_gate.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/closing_policy.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/closing_window.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/continuation.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/continuation_batch.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/controller.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/deadline_guards.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/events.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/final_proof_integrity.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/finalization.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/gates.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/immutable_input.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/implementation_audit_gate.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/initialization.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/leases.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/limited_usage.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/lineage.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/managed_runner.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/model_usage.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/next_action.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/operation_kernel.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/query.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/review_mesh_gate.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/reviews.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/risk_execution_gate.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/run.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/run_transitions.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/sandbox_policy.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/sandbox_receipts.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/selectors.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/state.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/storage.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/storage_io.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/task_outcomes.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/task_transitions.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/transactions.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/workflow/transition_contract.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/worktree/__init__.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/worktree/isolation.py +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle_kit.egg-info/dependency_links.txt +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle_kit.egg-info/entry_points.txt +0 -0
- {agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle_kit.egg-info/top_level.txt +0 -0
{agent_lifecycle_kit-2.36.0/src/agent_lifecycle_kit.egg-info → agent_lifecycle_kit-2.38.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.38.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
|
|
@@ -33,7 +33,7 @@ Dynamic: license-file
|
|
|
33
33
|
|
|
34
34
|
**Agent Lifecycle Kit (ALK)** coordinates coding-agent work through a verifiable finish. It keeps the requested outcome, reviewed plan, execution boundaries, evidence and acceptance decisions connected while the external agent changes the project.
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
ALK secures imports and documents the [external AI SDLC CLI contract](docs/guides/ai-sdlc-integration.md) and eight bounded consumer cases. Wheel/sdist include both guides and case JSON; the plugin ships the paired CLI contract. Native authority and release gates remain required.
|
|
37
37
|
|
|
38
38
|
The provider-neutral workflow works with Codex, Claude Code, Qwen Code, Goose, OpenInterpreter, Pi, Grok Build, or another CLI. Provider commands, model choice and secret handling stay in adapters or host-local profiles.
|
|
39
39
|
|
|
@@ -42,7 +42,7 @@ Release 2.28 adds [bounded lifecycle and accounting baselines](docs/reference/pe
|
|
|
42
42
|
## Quick start
|
|
43
43
|
Start with [install ALK and make the first run](docs/guides/install-and-first-run.md). Release 2.23 adds [compact S0/S1 authoring](docs/reference/tier-proportional-plan-packages.md) with explicit checklist completion and unchanged approval gates. Release 2.22 adds [conservative plan-review reuse](docs/reference/conservative-delta-review.md) with independent current applicability and no automatic full reruns. Release 2.21 adds [command accounting, bounded preparation and response recovery](docs/reference/source-native-workflow-accounting.md). Release 2.20 adds [target-bound initialization](docs/reference/cli.md#release-220-composed-initialization-and-digest-display), [bounded local continuation](docs/reference/workflow-continuation.md) and batched Git snapshots. Release 2.19 adds [safe artifact authoring and planning preflight](docs/reference/safe-artifact-authoring.md), [bounded review handoff](docs/reference/review-mesh.md#bounded-review-handoff) and thin skills with complete references. Release 2.18 bounds process/Git diagnostics, hardens signing and distinguishes OpenCode 1.x/2.x compatibility ([adapter notes](docs/adapters/opencode.md)); 2.17 strengthens [workflow validation and recovery](docs/reference/workflow-completeness.md). Release 2.16 introduced cumulative accounting within verified host capabilities; see [retention maintenance](docs/operations/retention-maintenance.md).
|
|
44
44
|
|
|
45
|
-
It includes macOS, Linux and Windows instructions, Python 3.11-3.15, [PyPI](https://pypi.org/project/agent-lifecycle-kit/) installation with `python -m pip install agent-lifecycle-kit==2.
|
|
45
|
+
It includes macOS, Linux and Windows instructions, Python 3.11-3.15, [PyPI](https://pypi.org/project/agent-lifecycle-kit/) installation with `python -m pip install agent-lifecycle-kit==2.38.0`, and common `agent-lifecycle version` errors. See [2.15 migration notes](docs/reference/cli.md#migrating-authority-artifacts-to-215) and [authority boundaries](docs/reference/authority-artifact-boundaries.md).
|
|
46
46
|
|
|
47
47
|
For a quick start, run:
|
|
48
48
|
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
**Agent Lifecycle Kit (ALK)** coordinates coding-agent work through a verifiable finish. It keeps the requested outcome, reviewed plan, execution boundaries, evidence and acceptance decisions connected while the external agent changes the project.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
ALK secures imports and documents the [external AI SDLC CLI contract](docs/guides/ai-sdlc-integration.md) and eight bounded consumer cases. Wheel/sdist include both guides and case JSON; the plugin ships the paired CLI contract. Native authority and release gates remain required.
|
|
14
14
|
|
|
15
15
|
The provider-neutral workflow works with Codex, Claude Code, Qwen Code, Goose, OpenInterpreter, Pi, Grok Build, or another CLI. Provider commands, model choice and secret handling stay in adapters or host-local profiles.
|
|
16
16
|
|
|
@@ -19,7 +19,7 @@ Release 2.28 adds [bounded lifecycle and accounting baselines](docs/reference/pe
|
|
|
19
19
|
## Quick start
|
|
20
20
|
Start with [install ALK and make the first run](docs/guides/install-and-first-run.md). Release 2.23 adds [compact S0/S1 authoring](docs/reference/tier-proportional-plan-packages.md) with explicit checklist completion and unchanged approval gates. Release 2.22 adds [conservative plan-review reuse](docs/reference/conservative-delta-review.md) with independent current applicability and no automatic full reruns. Release 2.21 adds [command accounting, bounded preparation and response recovery](docs/reference/source-native-workflow-accounting.md). Release 2.20 adds [target-bound initialization](docs/reference/cli.md#release-220-composed-initialization-and-digest-display), [bounded local continuation](docs/reference/workflow-continuation.md) and batched Git snapshots. Release 2.19 adds [safe artifact authoring and planning preflight](docs/reference/safe-artifact-authoring.md), [bounded review handoff](docs/reference/review-mesh.md#bounded-review-handoff) and thin skills with complete references. Release 2.18 bounds process/Git diagnostics, hardens signing and distinguishes OpenCode 1.x/2.x compatibility ([adapter notes](docs/adapters/opencode.md)); 2.17 strengthens [workflow validation and recovery](docs/reference/workflow-completeness.md). Release 2.16 introduced cumulative accounting within verified host capabilities; see [retention maintenance](docs/operations/retention-maintenance.md).
|
|
21
21
|
|
|
22
|
-
It includes macOS, Linux and Windows instructions, Python 3.11-3.15, [PyPI](https://pypi.org/project/agent-lifecycle-kit/) installation with `python -m pip install agent-lifecycle-kit==2.
|
|
22
|
+
It includes macOS, Linux and Windows instructions, Python 3.11-3.15, [PyPI](https://pypi.org/project/agent-lifecycle-kit/) installation with `python -m pip install agent-lifecycle-kit==2.38.0`, and common `agent-lifecycle version` errors. See [2.15 migration notes](docs/reference/cli.md#migrating-authority-artifacts-to-215) and [authority boundaries](docs/reference/authority-artifact-boundaries.md).
|
|
23
23
|
|
|
24
24
|
For a quick start, run:
|
|
25
25
|
|
{agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/docs/guides/ai-sdlc-integration.md
RENAMED
|
@@ -7,7 +7,7 @@ required. ALK owns workflow authority. The client owns process execution,
|
|
|
7
7
|
presentation and reconciliation. The host owns model execution and genuine usage
|
|
8
8
|
attestation; an independent reviewer owns review conclusions.
|
|
9
9
|
|
|
10
|
-
This guide defines a provider-neutral CLI consumer contract
|
|
10
|
+
This guide defines a provider-neutral CLI consumer contract.
|
|
11
11
|
It adds no server, daemon, provider broker, runtime API or second state machine.
|
|
12
12
|
The supported surface below is deliberately bounded. Other operations retain
|
|
13
13
|
their [CLI contracts](../reference/cli.md).
|
|
@@ -16,7 +16,7 @@ their [CLI contracts](../reference/cli.md).
|
|
|
16
16
|
|
|
17
17
|
The client MUST run `agent-lifecycle version` and require
|
|
18
18
|
`agent-lifecycle-version.v1`. It MUST compare `version` with its explicitly tested
|
|
19
|
-
version mapping.
|
|
19
|
+
version mapping. A tested contract does not qualify another release
|
|
20
20
|
merely because its version looks similar. The client MUST refuse mutations for
|
|
21
21
|
an unknown version, unknown `schemaVersion`, unsupported action or incompatible
|
|
22
22
|
required field. Read-only diagnostics can remain available, clearly labelled as
|
|
@@ -146,6 +146,34 @@ by writing a success event or replaying a host command. Native operation guards
|
|
|
146
146
|
do not guarantee exactly-once execution of arbitrary host/model/external side
|
|
147
147
|
effects; those require their own host-owned reconciliation evidence.
|
|
148
148
|
|
|
149
|
+
## Reference caller resource boundaries
|
|
150
|
+
|
|
151
|
+
The stdlib-only reference in `tests/cli/test_external_consumer_contract.py`
|
|
152
|
+
drains two unbuffered pipes concurrently. Each stream reads at most 1 MiB plus
|
|
153
|
+
one overflow-detection byte; it creates no output capture files. The runtime
|
|
154
|
+
deadline is 20 seconds after process creation returns. A separate cleanup window
|
|
155
|
+
is at most two seconds, covering direct-child stop/reaping and reader joins.
|
|
156
|
+
OS process creation itself is not interruptible by this deadline.
|
|
157
|
+
|
|
158
|
+
Timeout, overflow, invalid UTF-8/JSON, unknown output or unconfirmed cleanup
|
|
159
|
+
records `UNKNOWN`, clears qualification and blocks all further calls. A unique
|
|
160
|
+
bounded state/event match can resolve effect uncertainty; renegotiation is still
|
|
161
|
+
required before mutation. It cannot clear unconfirmed resource cleanup: dispose
|
|
162
|
+
that caller. Never retry a mutation to discover whether it succeeded.
|
|
163
|
+
|
|
164
|
+
Executable hashing streams at most 32 MiB plus one detection byte before launch.
|
|
165
|
+
This is an observed file identity, not attestation of every loaded runtime file.
|
|
166
|
+
Reconciliation admits only regular non-symlink relative artifacts inside its
|
|
167
|
+
working directory: state at most 1 MiB, event log at most 4 MiB, at most 1024 lines,
|
|
168
|
+
and each line at most 65536 bytes including its newline. State is compared again
|
|
169
|
+
after reading events; missing, changed, ambiguous, oversized or malformed input
|
|
170
|
+
stays `UNKNOWN`. These checks are not an atomic filesystem snapshot or a sandbox
|
|
171
|
+
for arbitrary executables, descendants or hostile concurrent filesystem changes.
|
|
172
|
+
|
|
173
|
+
The eight disposable public cases also exercise a legacy v3 state fixture;
|
|
174
|
+
they do not migrate native authority. Source/editable checks are intermediate
|
|
175
|
+
proof. A final installed wheel needs its own exact-version qualification.
|
|
176
|
+
|
|
149
177
|
## Keep usage and evidence honest
|
|
150
178
|
|
|
151
179
|
Retain exact source, executable/configuration/input digests, command/exit/time,
|
{agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/docs/ru/guides/ai-sdlc-integration.md
RENAMED
|
@@ -7,7 +7,7 @@ ALK владеет workflow authority. Клиент отвечает за зап
|
|
|
7
7
|
и сверку результата. Host отвечает за выполнение модели и подлинную usage
|
|
8
8
|
attestation; независимый reviewer — за выводы review.
|
|
9
9
|
|
|
10
|
-
Руководство задаёт provider-neutral контракт CLI
|
|
10
|
+
Руководство задаёт provider-neutral контракт CLI-потребителя.
|
|
11
11
|
Оно не добавляет server, daemon, provider broker, runtime API или вторую state
|
|
12
12
|
machine. Описанная поверхность намеренно ограничена. Остальные операции сохраняют
|
|
13
13
|
свои [CLI-контракты](../reference/cli.md).
|
|
@@ -16,7 +16,7 @@ machine. Описанная поверхность намеренно огран
|
|
|
16
16
|
|
|
17
17
|
Клиент MUST выполнить `agent-lifecycle version` и потребовать
|
|
18
18
|
`agent-lifecycle-version.v1`. Он MUST сравнить `version` с явно протестированной
|
|
19
|
-
таблицей версий.
|
|
19
|
+
таблицей версий. Проверенный контракт не квалифицирует более ранний или поздний release
|
|
20
20
|
только по сходству номера. Клиент MUST отказать в mutation при неизвестной версии,
|
|
21
21
|
неизвестной `schemaVersion`, неподдерживаемом action или несовместимом обязательном
|
|
22
22
|
поле. Read-only диагностика может оставаться доступной с явной пометкой об
|
|
@@ -152,6 +152,38 @@ revision не доказывает успех.
|
|
|
152
152
|
exactly-once исполнение произвольных host/model/external side effects; для них
|
|
153
153
|
нужны собственные host-owned evidence сверки.
|
|
154
154
|
|
|
155
|
+
## Ограничения эталонного клиента
|
|
156
|
+
|
|
157
|
+
Эталонный клиент `tests/cli/test_external_consumer_contract.py` использует только
|
|
158
|
+
стандартную библиотеку. Он одновременно читает два небуферизованных канала:
|
|
159
|
+
не более 1 МиБ и одного байта для обнаружения переполнения из каждого.
|
|
160
|
+
Файлы захвата вывода не создаются. Срок исполнения — 20 секунд после возврата
|
|
161
|
+
операции создания процесса. Отдельное окно очистки до двух секунд включает
|
|
162
|
+
остановку и ожидание прямого дочернего процесса, а также завершение читателей.
|
|
163
|
+
Само создание процесса средствами ОС этим сроком прервать нельзя.
|
|
164
|
+
|
|
165
|
+
Таймаут, переполнение, неверный UTF-8/JSON, неизвестный ответ или неподтверждённая
|
|
166
|
+
очистка записывают `UNKNOWN`, снимают квалификацию и запрещают следующие вызовы.
|
|
167
|
+
Единственное согласованное событие вместе с state может разрешить неопределённость
|
|
168
|
+
эффекта; перед изменением всё равно нужно повторное согласование версии.
|
|
169
|
+
Совпадение эффекта не снимает запрет при неподтверждённой очистке ресурсов:
|
|
170
|
+
прекратите использование такого клиента. Не повторяйте изменение, чтобы узнать
|
|
171
|
+
результат первого вызова.
|
|
172
|
+
|
|
173
|
+
До запуска отпечаток исполняемого файла считается потоково, не более 32 МиБ
|
|
174
|
+
и одного байта обнаружения. Это наблюдаемая идентичность файла, а не подтверждение
|
|
175
|
+
всех загруженных файлов среды. Сверка принимает только обычные файлы без
|
|
176
|
+
символьных ссылок с относительными путями внутри рабочего каталога: state до
|
|
177
|
+
1 МиБ, журнал до 4 МиБ, до 1024 строк и до 65536 байт на строку с переводом строки.
|
|
178
|
+
После журнала state читается и сравнивается повторно. Недоступные, изменённые,
|
|
179
|
+
неоднозначные, чрезмерные и повреждённые данные оставляют `UNKNOWN`. Это не
|
|
180
|
+
атомарный снимок файловой системы и не изолированная среда для произвольных
|
|
181
|
+
программ, потомков или враждебных одновременных изменений файлов.
|
|
182
|
+
|
|
183
|
+
Восемь публичных сценариев на временных данных также используют старую fixture
|
|
184
|
+
state v3; они не мигрируют нативные полномочия. Проверка исходного/editable-кода
|
|
185
|
+
промежуточная: итоговый установленный wheel требует проверки своей точной версии.
|
|
186
|
+
|
|
155
187
|
## Сохранять подлинные usage и evidence
|
|
156
188
|
|
|
157
189
|
Сохраняйте exact source, digests executable/configuration/inputs, command/exit/time,
|
|
@@ -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.38.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.16"
|
|
@@ -243,6 +243,14 @@ def _relocated_candidate(
|
|
|
243
243
|
spec["status"] = "FROZEN"
|
|
244
244
|
if isinstance(spec.get("source"), str):
|
|
245
245
|
spec["source"] = relocate(spec["source"])
|
|
246
|
+
workstreams = candidate.get("workstreams")
|
|
247
|
+
if isinstance(workstreams, list):
|
|
248
|
+
for workstream in workstreams:
|
|
249
|
+
if not isinstance(workstream, dict) or "decisionResearch" not in workstream:
|
|
250
|
+
continue
|
|
251
|
+
references = workstream.get("contextRefs")
|
|
252
|
+
if isinstance(references, list):
|
|
253
|
+
workstream["contextRefs"] = [relocate(name) if isinstance(name, str) else name for name in references]
|
|
246
254
|
review = relocate(
|
|
247
255
|
manifest.get("planReview", {}).get(
|
|
248
256
|
"report",
|
|
@@ -197,4 +197,171 @@ PLAN_MANIFEST_SCHEMAS[MANIFEST_SCHEMA]["$defs"] = {
|
|
|
197
197
|
},
|
|
198
198
|
}
|
|
199
199
|
|
|
200
|
+
DECISION_REQUIREMENT_SCHEMA = "agent-decision-research-requirement.v1"
|
|
201
|
+
DECISION_RECORD_SCHEMA = "agent-decision-research-record.v1"
|
|
202
|
+
DECISION_SCOPE = "FROZEN_CONTEXT_INPUTS"
|
|
203
|
+
DECISION_CAPS = {
|
|
204
|
+
"maxInputs": (1, 8),
|
|
205
|
+
"maxInputBytes": (1, 65536),
|
|
206
|
+
"maxRecordBytes": (1, 262144),
|
|
207
|
+
"maxEntryPoints": (1, 3),
|
|
208
|
+
"maxAlternatives": (1, 3),
|
|
209
|
+
"maxProbes": (0, 1),
|
|
210
|
+
"maxReviewRounds": (1, 2),
|
|
211
|
+
}
|
|
212
|
+
DECISION_CRITERIA = {
|
|
213
|
+
"S0": ("requirement-fit",),
|
|
214
|
+
"S1": ("requirement-fit", "security"),
|
|
215
|
+
"S2": ("requirement-fit", "architecture", "security", "resources", "feasibility"),
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
def _decision_object(properties: dict[str, Any], required: list[str] | None = None) -> dict[str, Any]:
|
|
220
|
+
return {
|
|
221
|
+
"type": "object",
|
|
222
|
+
"additionalProperties": False,
|
|
223
|
+
"properties": properties,
|
|
224
|
+
"required": list(properties) if required is None else required,
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
_DECISION_DIGEST = {"type": "string", "pattern": "^[0-9a-f]{64}$"}
|
|
229
|
+
_DECISION_TEXT = {"type": "string", "minLength": 1, "maxLength": 4096}
|
|
230
|
+
_DECISION_ID = {"type": "string", "minLength": 1, "maxLength": 128}
|
|
231
|
+
_DECISION_LEAF = {
|
|
232
|
+
"type": "string",
|
|
233
|
+
"minLength": 1,
|
|
234
|
+
"maxLength": 255,
|
|
235
|
+
"pattern": r"^[^/\\:\x00]+$",
|
|
236
|
+
}
|
|
237
|
+
_DECISION_PROFILE = _decision_object(
|
|
238
|
+
{
|
|
239
|
+
"tier": {"enum": list(DECISION_CRITERIA)},
|
|
240
|
+
"requiredCriteria": {
|
|
241
|
+
"type": "array",
|
|
242
|
+
"minItems": 1,
|
|
243
|
+
"maxItems": 16,
|
|
244
|
+
"uniqueItems": True,
|
|
245
|
+
"items": _DECISION_ID,
|
|
246
|
+
},
|
|
247
|
+
**{name: {"type": "integer", "minimum": low, "maximum": high} for name, (low, high) in DECISION_CAPS.items()},
|
|
248
|
+
}
|
|
249
|
+
)
|
|
250
|
+
_DECISION_INPUT = _decision_object(
|
|
251
|
+
{
|
|
252
|
+
"sourceId": _DECISION_ID,
|
|
253
|
+
"path": _DECISION_LEAF,
|
|
254
|
+
"sha256": _DECISION_DIGEST,
|
|
255
|
+
}
|
|
256
|
+
)
|
|
257
|
+
_DECISION_RECORD_REF = _decision_object(
|
|
258
|
+
{
|
|
259
|
+
"path": _DECISION_LEAF,
|
|
260
|
+
"sha256": _DECISION_DIGEST,
|
|
261
|
+
}
|
|
262
|
+
)
|
|
263
|
+
_DECISION_REQUIREMENT_PROPERTIES = {
|
|
264
|
+
"schemaVersion": {"const": DECISION_REQUIREMENT_SCHEMA},
|
|
265
|
+
"scope": {"const": DECISION_SCOPE},
|
|
266
|
+
"profile": _DECISION_PROFILE,
|
|
267
|
+
"inputs": {
|
|
268
|
+
"type": "array",
|
|
269
|
+
"minItems": 1,
|
|
270
|
+
"maxItems": 8,
|
|
271
|
+
"items": _DECISION_INPUT,
|
|
272
|
+
},
|
|
273
|
+
"record": _DECISION_RECORD_REF,
|
|
274
|
+
"scopeDigest": _DECISION_DIGEST,
|
|
275
|
+
"inputDigest": _DECISION_DIGEST,
|
|
276
|
+
"policyDigest": _DECISION_DIGEST,
|
|
277
|
+
}
|
|
278
|
+
_DECISION_ALTERNATIVE = _decision_object(
|
|
279
|
+
{
|
|
280
|
+
"id": _DECISION_ID,
|
|
281
|
+
"kind": {"enum": ["NO_CHANGE", "SIMPLIFY", "REPLACE"]},
|
|
282
|
+
"title": _DECISION_ID,
|
|
283
|
+
"rationale": _DECISION_TEXT,
|
|
284
|
+
}
|
|
285
|
+
)
|
|
286
|
+
_DECISION_ASSESSMENT = _decision_object(
|
|
287
|
+
{
|
|
288
|
+
"criterion": _DECISION_ID,
|
|
289
|
+
"status": {"enum": ["ADDRESSED", "NOT_APPLICABLE"]},
|
|
290
|
+
"rationale": _DECISION_TEXT,
|
|
291
|
+
"sourceIds": {
|
|
292
|
+
"type": "array",
|
|
293
|
+
"maxItems": 8,
|
|
294
|
+
"uniqueItems": True,
|
|
295
|
+
"items": _DECISION_ID,
|
|
296
|
+
},
|
|
297
|
+
},
|
|
298
|
+
required=["criterion", "status", "rationale"],
|
|
299
|
+
)
|
|
300
|
+
_DECISION_BUDGET = _decision_object(
|
|
301
|
+
{
|
|
302
|
+
"maxCommands": {"type": "integer", "minimum": 1, "maximum": 100},
|
|
303
|
+
"maxActiveSeconds": {"type": "integer", "minimum": 1, "maximum": 3600},
|
|
304
|
+
"reservedCommands": {"type": "integer", "minimum": 1, "maximum": 99},
|
|
305
|
+
"usageStatus": {"enum": ["UNAVAILABLE", "DECLARED"]},
|
|
306
|
+
"usedCommands": {"type": ["integer", "null"], "minimum": 0},
|
|
307
|
+
"usedActiveSeconds": {"type": ["number", "null"], "minimum": 0},
|
|
308
|
+
}
|
|
309
|
+
)
|
|
310
|
+
_DECISION_RECORD_PROPERTIES: dict[str, Any] = {
|
|
311
|
+
"schemaVersion": {"const": DECISION_RECORD_SCHEMA},
|
|
312
|
+
"scopeDigest": _DECISION_DIGEST,
|
|
313
|
+
"inputDigest": _DECISION_DIGEST,
|
|
314
|
+
"policyDigest": _DECISION_DIGEST,
|
|
315
|
+
"ownerId": _DECISION_ID,
|
|
316
|
+
"entryPoints": {
|
|
317
|
+
"type": "array",
|
|
318
|
+
"minItems": 1,
|
|
319
|
+
"maxItems": 3,
|
|
320
|
+
"uniqueItems": True,
|
|
321
|
+
"items": {"type": "string", "minLength": 1, "maxLength": 255},
|
|
322
|
+
},
|
|
323
|
+
"alternatives": {
|
|
324
|
+
"type": "array",
|
|
325
|
+
"minItems": 1,
|
|
326
|
+
"maxItems": 3,
|
|
327
|
+
"items": _DECISION_ALTERNATIVE,
|
|
328
|
+
},
|
|
329
|
+
"selectedAlternativeId": _DECISION_ID,
|
|
330
|
+
"outcome": {"enum": ["KEEP", "SIMPLIFY", "REPLACE", "SPLIT", "STOP"]},
|
|
331
|
+
"assessments": {
|
|
332
|
+
"type": "array",
|
|
333
|
+
"minItems": 1,
|
|
334
|
+
"maxItems": 16,
|
|
335
|
+
"items": _DECISION_ASSESSMENT,
|
|
336
|
+
},
|
|
337
|
+
"budget": _DECISION_BUDGET,
|
|
338
|
+
"probeCount": {"type": "integer", "minimum": 0, "maximum": 1},
|
|
339
|
+
"reviewRoundCount": {"type": "integer", "minimum": 1, "maximum": 2},
|
|
340
|
+
"sourceOfTruth": {"const": False},
|
|
341
|
+
"lifecycleAuthority": {"const": "none"},
|
|
342
|
+
"productionPromotionClaimed": {"const": False},
|
|
343
|
+
"optimalityClaimed": {"const": False},
|
|
344
|
+
"evidencePackage": {"type": "object"},
|
|
345
|
+
}
|
|
346
|
+
for _schema_id, _properties, _required in (
|
|
347
|
+
(
|
|
348
|
+
DECISION_REQUIREMENT_SCHEMA,
|
|
349
|
+
_DECISION_REQUIREMENT_PROPERTIES,
|
|
350
|
+
list(_DECISION_REQUIREMENT_PROPERTIES),
|
|
351
|
+
),
|
|
352
|
+
(
|
|
353
|
+
DECISION_RECORD_SCHEMA,
|
|
354
|
+
_DECISION_RECORD_PROPERTIES,
|
|
355
|
+
[key for key in _DECISION_RECORD_PROPERTIES if key != "evidencePackage"],
|
|
356
|
+
),
|
|
357
|
+
):
|
|
358
|
+
PLAN_MANIFEST_SCHEMAS[_schema_id] = {
|
|
359
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
360
|
+
"$id": _schema_id,
|
|
361
|
+
**_decision_object(_properties, _required),
|
|
362
|
+
}
|
|
363
|
+
PLAN_MANIFEST_SCHEMAS[MANIFEST_SCHEMA]["properties"]["workstreams"]["items"]["properties"]["decisionResearch"] = (
|
|
364
|
+
PLAN_MANIFEST_SCHEMAS[DECISION_REQUIREMENT_SCHEMA]
|
|
365
|
+
)
|
|
366
|
+
|
|
200
367
|
__all__ = ["MANIFEST_SCHEMA", "MANIFEST_VALIDATION_SCHEMA", "PLAN_MANIFEST_SCHEMAS"]
|
|
@@ -20,15 +20,15 @@ from agent_lifecycle.imports.dialect_profiles import (
|
|
|
20
20
|
from agent_lifecycle.imports.planning import (
|
|
21
21
|
DEFAULT_MAX_INPUT_BYTES,
|
|
22
22
|
DEFAULT_TARGET_TOKENS,
|
|
23
|
+
MAX_REQUIREMENT_CHARS,
|
|
23
24
|
PLANNING_IMPORT_RESULT_SCHEMA,
|
|
25
|
+
import_content_blockers,
|
|
24
26
|
require_no_import_secrets,
|
|
25
27
|
validate_import_result,
|
|
26
28
|
)
|
|
27
29
|
from agent_lifecycle.planning import validate_plan_manifest
|
|
28
30
|
|
|
29
31
|
EXTERNAL_IMPORT_VALIDATION_SCHEMA = "agent-external-dialect-import-validation.v1"
|
|
30
|
-
MAX_REQUIREMENTS = 8
|
|
31
|
-
MAX_REQUIREMENT_CHARS = 180
|
|
32
32
|
|
|
33
33
|
_POSIX_USER_PREFIX = "/" + "Users/"
|
|
34
34
|
_POSIX_VOLUME_PREFIX = "/" + "Volumes/"
|
|
@@ -254,19 +254,23 @@ def _parse_scalar(value: str) -> Any:
|
|
|
254
254
|
|
|
255
255
|
def _map_family(family: str, parsed: dict[str, Any], text: str, blockers: list[dict[str, Any]]) -> dict[str, Any]:
|
|
256
256
|
if family == "workflow":
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
257
|
+
mapping = _map_workflow(parsed, text)
|
|
258
|
+
elif family == "agent":
|
|
259
|
+
mapping = _map_agent(parsed, text)
|
|
260
|
+
else:
|
|
261
|
+
blockers.append({"code": "external-dialect-family-invalid", "family": family})
|
|
262
|
+
return {}
|
|
263
|
+
for field in ("requirements", "validationHints"):
|
|
264
|
+
blockers.extend(import_content_blockers(mapping[field], prefix="external-dialect", field=field))
|
|
265
|
+
return mapping
|
|
262
266
|
|
|
263
267
|
|
|
264
268
|
def _map_workflow(parsed: dict[str, Any], text: str) -> dict[str, Any]:
|
|
265
269
|
steps = _list_from(parsed, "steps", "jobs", "tasks")
|
|
266
270
|
validations = _list_from(parsed, "validation", "validations", "checks")
|
|
267
271
|
requirements = [
|
|
268
|
-
f"Review imported workflow step {index + 1}: {_safe_summary(step)}."
|
|
269
|
-
for index, step in enumerate(steps
|
|
272
|
+
f"Review imported workflow step {index + 1}: {_safe_summary(step, limit=None)}."
|
|
273
|
+
for index, step in enumerate(steps)
|
|
270
274
|
]
|
|
271
275
|
if not requirements:
|
|
272
276
|
requirements = _requirements_from_lines(text, prefix="Review imported workflow instruction")
|
|
@@ -274,8 +278,8 @@ def _map_workflow(parsed: dict[str, Any], text: str) -> dict[str, Any]:
|
|
|
274
278
|
"family": "workflow",
|
|
275
279
|
"title": _title(parsed, "Imported workflow draft"),
|
|
276
280
|
"requirements": requirements,
|
|
277
|
-
"workHints": [{"kind": "workflow-step", "summary": _safe_summary(step)} for step in steps
|
|
278
|
-
"validationHints": [_safe_summary(item) for item in validations
|
|
281
|
+
"workHints": [{"kind": "workflow-step", "summary": _safe_summary(step, limit=None)} for step in steps],
|
|
282
|
+
"validationHints": [_safe_summary(item, limit=None) for item in validations],
|
|
279
283
|
"hostLocalHints": {},
|
|
280
284
|
"redactions": _redaction_summary(parsed),
|
|
281
285
|
}
|
|
@@ -287,18 +291,19 @@ def _map_agent(parsed: dict[str, Any], text: str) -> dict[str, Any]:
|
|
|
287
291
|
role = _first_string(parsed, "role", "description", "purpose")
|
|
288
292
|
if role:
|
|
289
293
|
requirements.append(
|
|
290
|
-
|
|
294
|
+
"Review imported agent role hint before converting it into ALK task scope: "
|
|
295
|
+
f"{_safe_summary(role, limit=None)}."
|
|
291
296
|
)
|
|
292
297
|
requirements.extend(
|
|
293
|
-
f"Review imported agent policy hint {index + 1}: {_safe_summary(item)}."
|
|
294
|
-
for index, item in enumerate(policies
|
|
298
|
+
f"Review imported agent policy hint {index + 1}: {_safe_summary(item, limit=None)}."
|
|
299
|
+
for index, item in enumerate(policies)
|
|
295
300
|
)
|
|
296
301
|
if not requirements:
|
|
297
302
|
requirements = _requirements_from_lines(text, prefix="Review imported agent instruction")
|
|
298
303
|
return {
|
|
299
304
|
"family": "agent",
|
|
300
305
|
"title": _title(parsed, "Imported agent draft"),
|
|
301
|
-
"requirements": requirements
|
|
306
|
+
"requirements": requirements,
|
|
302
307
|
"workHints": [],
|
|
303
308
|
"validationHints": [],
|
|
304
309
|
"hostLocalHints": _host_local_hints(parsed),
|
|
@@ -315,8 +320,8 @@ def _candidate_plan(
|
|
|
315
320
|
profile: dict[str, Any],
|
|
316
321
|
) -> dict[str, Any] | None:
|
|
317
322
|
requirements = [
|
|
318
|
-
{"id": f"R-EXT-{index + 1}", "description":
|
|
319
|
-
for index, item in enumerate(mapping.get("requirements", [])
|
|
323
|
+
{"id": f"R-EXT-{index + 1}", "description": item}
|
|
324
|
+
for index, item in enumerate(mapping.get("requirements", []))
|
|
320
325
|
if isinstance(item, str) and item.strip()
|
|
321
326
|
]
|
|
322
327
|
if not requirements:
|
|
@@ -462,11 +467,11 @@ def _requirements_from_lines(text: str, *, prefix: str) -> list[str]:
|
|
|
462
467
|
for line in text.splitlines():
|
|
463
468
|
stripped = line.strip()
|
|
464
469
|
if stripped.startswith(("- ", "* ")):
|
|
465
|
-
requirements.append(f"{prefix}: {_safe_summary(stripped[2:])}.")
|
|
470
|
+
requirements.append(f"{prefix}: {_safe_summary(stripped[2:], limit=None)}.")
|
|
466
471
|
elif re.match(r"^\d+\.\s+", stripped):
|
|
467
472
|
numbered_text = re.sub(r"^\d+\.\s+", "", stripped)
|
|
468
|
-
requirements.append(f"{prefix}: {_safe_summary(numbered_text)}.")
|
|
469
|
-
return requirements
|
|
473
|
+
requirements.append(f"{prefix}: {_safe_summary(numbered_text, limit=None)}.")
|
|
474
|
+
return requirements
|
|
470
475
|
|
|
471
476
|
|
|
472
477
|
def _list_from(parsed: dict[str, Any], *keys: str) -> list[Any]:
|
|
@@ -494,15 +499,17 @@ def _title(parsed: dict[str, Any], fallback: str) -> str:
|
|
|
494
499
|
return _safe_summary(value) if value else fallback
|
|
495
500
|
|
|
496
501
|
|
|
497
|
-
def _safe_summary(value: Any) -> str:
|
|
502
|
+
def _safe_summary(value: Any, *, limit: int | None = MAX_REQUIREMENT_CHARS) -> str:
|
|
498
503
|
if isinstance(value, dict):
|
|
499
|
-
text = " ".join(
|
|
504
|
+
text = " ".join(
|
|
505
|
+
f"{_clean_key(str(key))} {_safe_summary(item, limit=limit)}" for key, item in sorted(value.items())
|
|
506
|
+
)
|
|
500
507
|
else:
|
|
501
508
|
text = str(value)
|
|
502
509
|
text = _LOCAL_PATH_RE.sub("[redacted-path]", text)
|
|
503
510
|
text = _SECRET_ASSIGNMENT_RE.sub(r"\1=[redacted]", text)
|
|
504
511
|
text = re.sub(r"\s+", " ", text).strip()
|
|
505
|
-
return _truncate(text,
|
|
512
|
+
return text if limit is None else _truncate(text, limit)
|
|
506
513
|
|
|
507
514
|
|
|
508
515
|
def _safe_identifier(value: str) -> str:
|
{agent_lifecycle_kit-2.36.0 → agent_lifecycle_kit-2.38.0}/src/agent_lifecycle/imports/planning.py
RENAMED
|
@@ -23,6 +23,12 @@ DEFAULT_TARGET_TOKENS = 4096
|
|
|
23
23
|
MAX_REQUIREMENTS = 8
|
|
24
24
|
MAX_REQUIREMENT_CHARS = 180
|
|
25
25
|
|
|
26
|
+
_IMPORT_OVERFLOW_CAPS = {
|
|
27
|
+
f"{prefix}-{kind}-cap-exceeded": cap
|
|
28
|
+
for prefix in ("planning-import", "external-dialect")
|
|
29
|
+
for kind, cap in (("item", MAX_REQUIREMENTS), ("text", MAX_REQUIREMENT_CHARS))
|
|
30
|
+
}
|
|
31
|
+
|
|
26
32
|
LOCAL_PATH_PATTERNS = (
|
|
27
33
|
re.compile(r"/" + r"Users/[^\s`'\"<>]+"),
|
|
28
34
|
re.compile(r"/" + r"Volumes/[^\s`'\"<>]+"),
|
|
@@ -122,6 +128,7 @@ def _build_import_result(
|
|
|
122
128
|
source_label=source_label,
|
|
123
129
|
native_dialect_profile_digest=native_dialect_profile_digest,
|
|
124
130
|
dialect_profile=dialect_profile,
|
|
131
|
+
blockers=blockers,
|
|
125
132
|
)
|
|
126
133
|
if text and not blockers
|
|
127
134
|
else None
|
|
@@ -192,22 +199,21 @@ def validate_import_result(result: dict[str, Any]) -> dict[str, Any]:
|
|
|
192
199
|
"""Verify that an import result cannot bypass draft, audit or freeze gates."""
|
|
193
200
|
|
|
194
201
|
blockers: list[dict[str, Any]] = []
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
if result.get("freezeBlocked") is not True:
|
|
208
|
-
blockers.append({"code": "planning-import-freeze-not-blocked"})
|
|
202
|
+
gates = (
|
|
203
|
+
(result.get("schemaVersion") != PLANNING_IMPORT_RESULT_SCHEMA, "planning-import-schema-invalid"),
|
|
204
|
+
(result.get("enabledByDefault") is not False, "planning-import-default-enabled"),
|
|
205
|
+
(result.get("activationMode") != "explicit-command", "planning-import-activation-mode"),
|
|
206
|
+
(result.get("sourceTrusted") is not False, "planning-import-source-trust"),
|
|
207
|
+
(result.get("requiresReview") is not True, "planning-import-review-not-required"),
|
|
208
|
+
(result.get("auditRequired") is not True, "planning-import-audit-not-required"),
|
|
209
|
+
(result.get("freezeBlocked") is not True, "planning-import-freeze-not-blocked"),
|
|
210
|
+
)
|
|
211
|
+
for failed, code in gates:
|
|
212
|
+
if failed:
|
|
213
|
+
blockers.append({"code": code})
|
|
209
214
|
if result.get("status") != "PASS":
|
|
210
215
|
blockers.append({"code": "planning-import-result-not-pass"})
|
|
216
|
+
blockers.extend(_import_overflow_blockers(result.get("blockers")))
|
|
211
217
|
candidate = result.get("candidatePlan")
|
|
212
218
|
candidate_digest = None
|
|
213
219
|
_validate_markdown_collection(result.get("markdownCollection"), blockers)
|
|
@@ -313,12 +319,17 @@ def _candidate_plan(
|
|
|
313
319
|
source_label: str,
|
|
314
320
|
native_dialect_profile_digest: str | None,
|
|
315
321
|
dialect_profile: dict[str, Any] | None,
|
|
322
|
+
blockers: list[dict[str, Any]],
|
|
316
323
|
) -> dict[str, Any] | None:
|
|
317
324
|
parsed = _parse_structured_input(data)
|
|
318
325
|
title = _extract_title(text, parsed)
|
|
319
|
-
|
|
320
|
-
|
|
326
|
+
descriptions = _extract_requirements(text, parsed)
|
|
327
|
+
blockers.extend(import_content_blockers(descriptions, prefix="planning-import", field="requirements"))
|
|
328
|
+
if not descriptions or blockers:
|
|
321
329
|
return None
|
|
330
|
+
requirements = [
|
|
331
|
+
{"id": f"R-IMPORT-{index + 1}", "description": description} for index, description in enumerate(descriptions)
|
|
332
|
+
]
|
|
322
333
|
source_digest = sha256_hex(data)
|
|
323
334
|
criteria = [
|
|
324
335
|
{
|
|
@@ -413,7 +424,49 @@ def _extract_title(text: str, parsed: dict[str, Any] | None) -> str:
|
|
|
413
424
|
return "Imported draft plan"
|
|
414
425
|
|
|
415
426
|
|
|
416
|
-
def
|
|
427
|
+
def _import_overflow_blockers(value: Any) -> list[dict[str, Any]]:
|
|
428
|
+
if not isinstance(value, list):
|
|
429
|
+
return []
|
|
430
|
+
return [safe for item in value[:2] if (safe := _safe_import_overflow(item)) is not None]
|
|
431
|
+
|
|
432
|
+
|
|
433
|
+
def _safe_import_overflow(value: Any) -> dict[str, Any] | None:
|
|
434
|
+
if not isinstance(value, dict):
|
|
435
|
+
return None
|
|
436
|
+
code, field, cap = value.get("code"), value.get("field"), value.get("cap")
|
|
437
|
+
if not isinstance(code, str) or not isinstance(field, str) or type(cap) is not int:
|
|
438
|
+
return None
|
|
439
|
+
if code not in _IMPORT_OVERFLOW_CAPS or field not in {"requirements", "validationHints"}:
|
|
440
|
+
return None
|
|
441
|
+
if cap != _IMPORT_OVERFLOW_CAPS[code]:
|
|
442
|
+
return None
|
|
443
|
+
safe: dict[str, Any] = {"code": code, "field": field}
|
|
444
|
+
for key in ("count", "cap", "chars", "index"):
|
|
445
|
+
number = value.get(key)
|
|
446
|
+
if type(number) is int and 0 <= number <= 2**63 - 1:
|
|
447
|
+
safe[key] = number
|
|
448
|
+
return safe
|
|
449
|
+
|
|
450
|
+
|
|
451
|
+
def import_content_blockers(values: list[str], *, prefix: str, field: str) -> list[dict[str, Any]]:
|
|
452
|
+
"""Refuse discarded content with bounded metadata instead of a partial draft."""
|
|
453
|
+
if len(values) > MAX_REQUIREMENTS:
|
|
454
|
+
return [{"code": f"{prefix}-item-cap-exceeded", "field": field, "count": len(values), "cap": MAX_REQUIREMENTS}]
|
|
455
|
+
for index, value in enumerate(values):
|
|
456
|
+
if len(value) > MAX_REQUIREMENT_CHARS:
|
|
457
|
+
return [
|
|
458
|
+
{
|
|
459
|
+
"code": f"{prefix}-text-cap-exceeded",
|
|
460
|
+
"field": field,
|
|
461
|
+
"index": index + 1,
|
|
462
|
+
"chars": len(value),
|
|
463
|
+
"cap": MAX_REQUIREMENT_CHARS,
|
|
464
|
+
}
|
|
465
|
+
]
|
|
466
|
+
return []
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
def _extract_requirements(text: str, parsed: dict[str, Any] | None) -> list[str]:
|
|
417
470
|
extracted: list[str] = []
|
|
418
471
|
if parsed is not None:
|
|
419
472
|
raw_requirements = parsed.get("requirements")
|
|
@@ -440,10 +493,7 @@ def _extract_requirements(text: str, parsed: dict[str, Any] | None) -> list[dict
|
|
|
440
493
|
)
|
|
441
494
|
if fallback:
|
|
442
495
|
extracted.append(fallback)
|
|
443
|
-
|
|
444
|
-
return [
|
|
445
|
-
{"id": f"R-IMPORT-{index + 1}", "description": item} for index, item in enumerate(cleaned[:MAX_REQUIREMENTS])
|
|
446
|
-
]
|
|
496
|
+
return [_clean_line(item, limit=None) for item in extracted if item.strip()]
|
|
447
497
|
|
|
448
498
|
|
|
449
499
|
def _decode_text(data: bytes, blockers: list[dict[str, Any]]) -> str:
|
|
@@ -536,11 +586,11 @@ def _safe_identifier(value: str) -> str:
|
|
|
536
586
|
return re.sub(r"[^a-z0-9_.-]+", "-", lowered).strip("-")[:80]
|
|
537
587
|
|
|
538
588
|
|
|
539
|
-
def _clean_line(value: str, *, limit: int) -> str:
|
|
589
|
+
def _clean_line(value: str, *, limit: int | None) -> str:
|
|
540
590
|
cleaned = re.sub(r"\s+", " ", value).strip()
|
|
541
591
|
for pattern in LOCAL_PATH_PATTERNS:
|
|
542
592
|
cleaned = pattern.sub("[redacted-path]", cleaned)
|
|
543
|
-
return cleaned[:limit]
|
|
593
|
+
return cleaned if limit is None else cleaned[:limit]
|
|
544
594
|
|
|
545
595
|
|
|
546
596
|
def _check_positive_cap(value: int, field: str) -> None:
|