agent-lifecycle-kit 1.87.0__tar.gz → 1.89.0__tar.gz

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