agent-lifecycle-kit 2.20.0__tar.gz → 2.21.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 (517) hide show
  1. {agent_lifecycle_kit-2.20.0/src/agent_lifecycle_kit.egg-info → agent_lifecycle_kit-2.21.0}/PKG-INFO +3 -3
  2. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/README.md +2 -2
  3. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/pyproject.toml +1 -1
  4. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/_version.py +1 -1
  5. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/accounting/journal.py +72 -0
  6. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/external_jobs.py +406 -9
  7. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/launch_execution.py +8 -0
  8. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/launch_preflight.py +97 -14
  9. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/local_launch_profile.py +20 -7
  10. agent_lifecycle_kit-2.21.0/src/agent_lifecycle/adapter_sessions/process_admission.py +386 -0
  11. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/qualification.py +67 -0
  12. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/adapter.py +26 -0
  13. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/dispatch_adapters.py +4 -0
  14. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/dispatch_metrics.py +16 -0
  15. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/dispatch_observability.py +3 -0
  16. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/main.py +36 -0
  17. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/metrics_parser.py +4 -0
  18. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/parsers.py +7 -0
  19. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/external_job_schemas.py +56 -0
  20. agent_lifecycle_kit-2.21.0/src/agent_lifecycle/contracts/preparation_policy.py +241 -0
  21. agent_lifecycle_kit-2.21.0/src/agent_lifecycle/contracts/release_accounting_schemas.py +315 -0
  22. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/review_mesh_schemas.py +4 -0
  23. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/workflow_economics_schemas.py +241 -0
  24. agent_lifecycle_kit-2.21.0/src/agent_lifecycle/metrics/command_resources.py +305 -0
  25. agent_lifecycle_kit-2.21.0/src/agent_lifecycle/metrics/goal_progress.py +231 -0
  26. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/metrics/phase_resources.py +37 -4
  27. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/metrics/release_accounting.py +26 -4
  28. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/metrics/workflow_economics.py +44 -0
  29. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/review_mesh/contracts.py +70 -1
  30. agent_lifecycle_kit-2.21.0/src/agent_lifecycle/review_mesh/preflight.py +124 -0
  31. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/review_mesh/results.py +51 -1
  32. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0/src/agent_lifecycle_kit.egg-info}/PKG-INFO +3 -3
  33. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle_kit.egg-info/SOURCES.txt +5 -0
  34. agent_lifecycle_kit-2.20.0/src/agent_lifecycle/contracts/release_accounting_schemas.py +0 -123
  35. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/LICENSE +0 -0
  36. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/NOTICE +0 -0
  37. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/benchmarks/reference-tasks/README.md +0 -0
  38. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/benchmarks/reference-tasks/manifest.json +0 -0
  39. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/benchmarks/reference-tasks/rt01-planning/oracle.json +0 -0
  40. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/benchmarks/reference-tasks/rt01-planning/task.md +0 -0
  41. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/benchmarks/reference-tasks/rt02-architecture-review/oracle.json +0 -0
  42. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/benchmarks/reference-tasks/rt02-architecture-review/task.md +0 -0
  43. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/benchmarks/reference-tasks/rt03-bug-forensics/oracle.json +0 -0
  44. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/benchmarks/reference-tasks/rt03-bug-forensics/task.md +0 -0
  45. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/benchmarks/reference-tasks/rt04-s1-managed-task/oracle.json +0 -0
  46. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/benchmarks/reference-tasks/rt04-s1-managed-task/task.md +0 -0
  47. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/benchmarks/reference-tasks/rt05-s2-evidence-task/oracle.json +0 -0
  48. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/benchmarks/reference-tasks/rt05-s2-evidence-task/task.md +0 -0
  49. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/setup.cfg +0 -0
  50. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/__init__.py +0 -0
  51. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/__main__.py +0 -0
  52. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/accounting/__init__.py +0 -0
  53. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/accounting/closing_resource_admission.py +0 -0
  54. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/accounting/closing_resource_policy.py +0 -0
  55. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/accounting/closing_resource_recovery.py +0 -0
  56. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/accounting/closing_resources.py +0 -0
  57. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/accounting/contracts.py +0 -0
  58. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/accounting/declared_ledger.py +0 -0
  59. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/accounting/declared_ledger_legacy.py +0 -0
  60. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/accounting/declared_ledger_records.py +0 -0
  61. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/accounting/host_bridge.py +0 -0
  62. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/accounting/input_fit.py +0 -0
  63. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/accounting/normalization.py +0 -0
  64. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/accounting/opening_balances.py +0 -0
  65. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/accounting/profile_schema.py +0 -0
  66. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/accounting/source_usage_context.py +0 -0
  67. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/accounting/support_profiles.py +0 -0
  68. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/accounting/workflow_authority_store.py +0 -0
  69. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/accounting/workflow_state_store.py +0 -0
  70. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/accounting/workflow_store.py +0 -0
  71. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/__init__.py +0 -0
  72. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/agent_plugin_probe.py +0 -0
  73. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/attempt_authority.py +0 -0
  74. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/bootstrap_r11.py +0 -0
  75. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/codex_exact_prompt.py +0 -0
  76. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/codex_input_diagnostics.py +0 -0
  77. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/codex_prompt_preparation.py +0 -0
  78. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/codex_source_exposure.py +0 -0
  79. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/codex_source_subject.py +0 -0
  80. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/contracts.py +0 -0
  81. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/env.py +0 -0
  82. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/external_check.py +0 -0
  83. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/immutable_input.py +0 -0
  84. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/input_lifecycle.py +0 -0
  85. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/launcher.py +0 -0
  86. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/lifecycle_control.py +0 -0
  87. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/limited_native_evidence.py +0 -0
  88. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/managed_process.py +0 -0
  89. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/ordinary_audit.py +0 -0
  90. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/planning_launch.py +0 -0
  91. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/planning_session.py +0 -0
  92. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/private_input.py +0 -0
  93. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/process.py +0 -0
  94. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/process_capture.py +0 -0
  95. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/process_control.py +0 -0
  96. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/process_groups.py +0 -0
  97. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/process_telemetry.py +0 -0
  98. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/redaction.py +0 -0
  99. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/session_store.py +0 -0
  100. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/source_review_contracts.py +0 -0
  101. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/source_review_history.py +0 -0
  102. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/source_review_inputs.py +0 -0
  103. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/source_review_preparation_records.py +0 -0
  104. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/source_review_roles.py +0 -0
  105. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/source_review_shards.py +0 -0
  106. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/source_review_support.py +0 -0
  107. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/source_review_transcript.py +0 -0
  108. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/start_input.py +0 -0
  109. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/start_receipts.py +0 -0
  110. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/start_routing.py +0 -0
  111. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/task_intake.py +0 -0
  112. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/unified_start.py +0 -0
  113. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/windows_pipe.py +0 -0
  114. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/workflow_bridge.py +0 -0
  115. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/adapter_sessions/worktree_identity.py +0 -0
  116. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/audit/__init__.py +0 -0
  117. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/audit/bug_forensics.py +0 -0
  118. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/audit/delta.py +0 -0
  119. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/audit/domain_language.py +0 -0
  120. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/audit/external_checks.py +0 -0
  121. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/audit/implementation.py +0 -0
  122. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/audit/ownership.py +0 -0
  123. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/audit/package.py +0 -0
  124. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/audit/proof_chain.py +0 -0
  125. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/audit/proof_findings.py +0 -0
  126. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/audit/proof_integrity.py +0 -0
  127. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/audit/review_verdict.py +0 -0
  128. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/audit/security_analysis.py +0 -0
  129. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/benchmarks/__init__.py +0 -0
  130. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/benchmarks/comparison.py +0 -0
  131. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/benchmarks/contracts.py +0 -0
  132. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/benchmarks/evaluator.py +0 -0
  133. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/benchmarks/oracles.py +0 -0
  134. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/benchmarks/qualification.py +0 -0
  135. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/benchmarks/reporting.py +0 -0
  136. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/benchmarks/stratification.py +0 -0
  137. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/changesets/__init__.py +0 -0
  138. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/changesets/git.py +0 -0
  139. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/changesets/git_io.py +0 -0
  140. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/changesets/snapshot.py +0 -0
  141. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/__init__.py +0 -0
  142. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/benchmarks.py +0 -0
  143. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/command_registry.py +0 -0
  144. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/dispatch.py +0 -0
  145. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/dispatch_audit.py +0 -0
  146. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/dispatch_contracts.py +0 -0
  147. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/dispatch_lifecycle.py +0 -0
  148. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/dispatch_planning.py +0 -0
  149. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/dispatch_research.py +0 -0
  150. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/errors.py +0 -0
  151. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/followup.py +0 -0
  152. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/host_launch.py +0 -0
  153. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/lifecycle_parsers.py +0 -0
  154. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/observability_parsers.py +0 -0
  155. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/plan_lock_commands.py +0 -0
  156. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/planning_parsers.py +0 -0
  157. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/policy.py +0 -0
  158. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/progress_hooks.py +0 -0
  159. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/project.py +0 -0
  160. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/research.py +0 -0
  161. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/start.py +0 -0
  162. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/strategy.py +0 -0
  163. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/workflow_task_parsers.py +0 -0
  164. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/cli/worktree.py +0 -0
  165. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/compiler/__init__.py +0 -0
  166. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/compiler/output_contract.py +0 -0
  167. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/compiler/phase_packets.py +0 -0
  168. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/compiler/small_model_packets.py +0 -0
  169. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/compiler/task_packets.py +0 -0
  170. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/context/__init__.py +0 -0
  171. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/context/checkpoint_store.py +0 -0
  172. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/context/checkpoints.py +0 -0
  173. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/context/episode_retrieval.py +0 -0
  174. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/context/external_memory.py +0 -0
  175. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/context/profiles.py +0 -0
  176. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/context/rendering.py +0 -0
  177. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/context/thread_bridge_context.py +0 -0
  178. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/__init__.py +0 -0
  179. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/adapter_contract_schemas.py +0 -0
  180. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/adapter_event_schemas.py +0 -0
  181. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/adapter_session_schemas.py +0 -0
  182. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/adapter_task_schemas.py +0 -0
  183. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/agent_plugin_qualification_schemas.py +0 -0
  184. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/artifact_authoring_schemas.py +0 -0
  185. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/audit_optimization_schemas.py +0 -0
  186. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/audit_schemas.py +0 -0
  187. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/authority_io.py +0 -0
  188. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/authority_text.py +0 -0
  189. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/benchmark_schemas.py +0 -0
  190. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/bounded_json.py +0 -0
  191. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/bug_forensics_schemas.py +0 -0
  192. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/canonical.py +0 -0
  193. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/closing_resource_schemas.py +0 -0
  194. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/closing_window_schemas.py +0 -0
  195. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/compatibility.py +0 -0
  196. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/context_checkpoint_schemas.py +0 -0
  197. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/context_model_schemas.py +0 -0
  198. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/core_schemas.py +0 -0
  199. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/cross_check_schemas.py +0 -0
  200. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/deadline_schemas.py +0 -0
  201. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/deadlines.py +0 -0
  202. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/display_identity.py +0 -0
  203. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/domain_language.py +0 -0
  204. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/domain_language_schemas.py +0 -0
  205. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/ed25519.py +0 -0
  206. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/errors.py +0 -0
  207. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/evidence_import_schemas.py +0 -0
  208. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/evidence_receipt_schemas.py +0 -0
  209. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/execution_strategy_schemas.py +0 -0
  210. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/execution_target.py +0 -0
  211. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/external_check_schemas.py +0 -0
  212. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/finding_check_schemas.py +0 -0
  213. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/goal_validation.py +0 -0
  214. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/host_capability_schemas.py +0 -0
  215. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/immutable_input_schemas.py +0 -0
  216. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/implementation_audit_validation.py +0 -0
  217. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/import_dialect_schemas.py +0 -0
  218. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/independent_evidence_schemas.py +0 -0
  219. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/launch_qualification.py +0 -0
  220. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/legacy_runner_schemas.py +0 -0
  221. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/lifecycle_action_catalog.py +0 -0
  222. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/lifecycle_control_definitions.py +0 -0
  223. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/lifecycle_control_schemas.py +0 -0
  224. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/lifecycle_control_validation.py +0 -0
  225. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/local_launch_validation.py +0 -0
  226. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/metric_schemas.py +0 -0
  227. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/model_classes.py +0 -0
  228. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/multi_run_view_schemas.py +0 -0
  229. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/ownership_paths.py +0 -0
  230. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/paths.py +0 -0
  231. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/performance_limits.py +0 -0
  232. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/persistence.py +0 -0
  233. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/phase_packet_schemas.py +0 -0
  234. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/plan_contract_schemas.py +0 -0
  235. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/plan_delta_schemas.py +0 -0
  236. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/plan_manifest_schemas.py +0 -0
  237. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/planning_launch_schemas.py +0 -0
  238. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/policy_schemas.py +0 -0
  239. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/private_storage.py +0 -0
  240. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/process_execution_schemas.py +0 -0
  241. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/process_lock.py +0 -0
  242. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/process_redaction.py +0 -0
  243. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/progress_bridge_schemas.py +0 -0
  244. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/progress_hook_schemas.py +0 -0
  245. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/project_profile_preset_schemas.py +0 -0
  246. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/project_profile_schemas.py +0 -0
  247. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/proof_integrity_schemas.py +0 -0
  248. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/proof_validation.py +0 -0
  249. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/public_locators.py +0 -0
  250. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/quality_modes.py +0 -0
  251. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/redaction.py +0 -0
  252. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/release_contract_schemas.py +0 -0
  253. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/research_evidence_schemas.py +0 -0
  254. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/review_mesh_recommendation_schemas.py +0 -0
  255. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/review_quality_schemas.py +0 -0
  256. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/review_round_schemas.py +0 -0
  257. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/review_verdict.py +0 -0
  258. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/reviewer_identity_schemas.py +0 -0
  259. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/runner_schemas.py +0 -0
  260. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/runner_worktree_schemas.py +0 -0
  261. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/sandbox_schemas.py +0 -0
  262. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/schema_builders.py +0 -0
  263. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/schemas.py +0 -0
  264. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/scoped_usage_schemas.py +0 -0
  265. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/security_analysis_schemas.py +0 -0
  266. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/statistical_evidence_schemas.py +0 -0
  267. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/status_goal_schemas.py +0 -0
  268. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/structured_result_schemas.py +0 -0
  269. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/task_template_schemas.py +0 -0
  270. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/thread_bridge_schema_definitions.py +0 -0
  271. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/thread_bridge_schemas.py +0 -0
  272. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/thread_bridge_validation.py +0 -0
  273. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/token_estimation.py +0 -0
  274. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/usage_export_schemas.py +0 -0
  275. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/validation.py +0 -0
  276. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/validation_ladder_schemas.py +0 -0
  277. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/windows_security.py +0 -0
  278. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/workflow_artifact_schemas.py +0 -0
  279. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/workflow_authority.py +0 -0
  280. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/workflow_authority_schemas.py +0 -0
  281. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/workflow_authorization_schemas.py +0 -0
  282. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/workflow_continuation_batch_schemas.py +0 -0
  283. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/workflow_continuation_schemas.py +0 -0
  284. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/workflow_run_schemas.py +0 -0
  285. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/contracts/workflow_state_schemas.py +0 -0
  286. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/data/__init__.py +0 -0
  287. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/data/profiles/external-checks/declared-dependencies.v1.json +0 -0
  288. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/data/profiles/external-checks/import-boundaries.v1.json +0 -0
  289. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/data/profiles/external-checks/module-dependencies.v1.json +0 -0
  290. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/data/profiles/lifecycle-baselines.v1.json +0 -0
  291. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/data/profiles/model-routing-profile.v1.json +0 -0
  292. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/feature-implementation.v1.json +0 -0
  293. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/quick-change.v1.json +0 -0
  294. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/research-review.v1.json +0 -0
  295. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/data/profiles/risk-execution-policy.v1.json +0 -0
  296. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/data/profiles/small-context-profile.v1.json +0 -0
  297. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/diagnostics/__init__.py +0 -0
  298. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/diagnostics/bundles.py +0 -0
  299. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/diagnostics/installation_catalog.py +0 -0
  300. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/diagnostics/readiness.py +0 -0
  301. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/evidence_index/__init__.py +0 -0
  302. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/evidence_index/core.py +0 -0
  303. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/evidence_index/episode_index.py +0 -0
  304. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/evidence_index/external_context.py +0 -0
  305. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/followup/__init__.py +0 -0
  306. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/followup/records.py +0 -0
  307. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/freeze/__init__.py +0 -0
  308. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/freeze/locks.py +0 -0
  309. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/freeze/package_integrity.py +0 -0
  310. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/goal/__init__.py +0 -0
  311. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/goal/records.py +0 -0
  312. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/goal/view.py +0 -0
  313. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/__init__.py +0 -0
  314. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/acp_capability.py +0 -0
  315. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/agent_plugin_qualification.py +0 -0
  316. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/capabilities.py +0 -0
  317. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/context_events.py +0 -0
  318. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/contracts.py +0 -0
  319. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/event_capture.py +0 -0
  320. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/events.py +0 -0
  321. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/external_jobs.py +0 -0
  322. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/inspection.py +0 -0
  323. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/inspection_claude.py +0 -0
  324. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/inspection_codex.py +0 -0
  325. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/inspection_common.py +0 -0
  326. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/inspection_cursor.py +0 -0
  327. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/inspection_gemini_cli.py +0 -0
  328. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/inspection_hermes.py +0 -0
  329. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/inspection_kimi_code.py +0 -0
  330. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/inspection_opencode.py +0 -0
  331. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/inspection_profile.py +0 -0
  332. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/inspection_qwen_code.py +0 -0
  333. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/lifecycle_control.py +0 -0
  334. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/lifecycle_control_qualification.py +0 -0
  335. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/lifecycle_gate.py +0 -0
  336. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/opencode_compatibility.py +0 -0
  337. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/process_port.py +0 -0
  338. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/receipts.py +0 -0
  339. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/sandbox_receipts.py +0 -0
  340. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/scaffold.py +0 -0
  341. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/structured_results.py +0 -0
  342. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/thread_bridge.py +0 -0
  343. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/usage_normalizers.py +0 -0
  344. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/host_protocol/validation.py +0 -0
  345. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/imports/__init__.py +0 -0
  346. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/imports/agentskills_profile.py +0 -0
  347. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/imports/bmad_profile.py +0 -0
  348. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/imports/constitution_adr.py +0 -0
  349. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/imports/dialect_profiles.py +0 -0
  350. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/imports/external_agent.py +0 -0
  351. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/imports/external_dialects.py +0 -0
  352. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/imports/external_workflow.py +0 -0
  353. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/imports/multi_markdown.py +0 -0
  354. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/imports/openspec_profile.py +0 -0
  355. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/imports/planning.py +0 -0
  356. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/imports/security_findings.py +0 -0
  357. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/imports/spec_kit_profile.py +0 -0
  358. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/imports/spec_kitty_profile.py +0 -0
  359. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/metrics/__init__.py +0 -0
  360. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/metrics/audit_efficiency.py +0 -0
  361. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/metrics/audit_optimization.py +0 -0
  362. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/metrics/audit_samples.py +0 -0
  363. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/metrics/cost_collection.py +0 -0
  364. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/metrics/costs.py +0 -0
  365. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/metrics/outcome_index.py +0 -0
  366. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/metrics/recommendations.py +0 -0
  367. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/metrics/regression_signals.py +0 -0
  368. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/metrics/usage_export.py +0 -0
  369. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/migration/__init__.py +0 -0
  370. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/migration/legacy_runner.py +0 -0
  371. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/model_routing/__init__.py +0 -0
  372. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/model_routing/profiles.py +0 -0
  373. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/model_routing/receipts.py +0 -0
  374. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/model_routing/resolver.py +0 -0
  375. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/neutrality/__init__.py +0 -0
  376. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/neutrality/__main__.py +0 -0
  377. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/neutrality/authority.py +0 -0
  378. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/neutrality/canonical.py +0 -0
  379. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/neutrality/cli.py +0 -0
  380. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/neutrality/ed25519.py +0 -0
  381. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/neutrality/errors.py +0 -0
  382. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/neutrality/gate.py +0 -0
  383. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/neutrality/git_objects.py +0 -0
  384. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/neutrality/matching.py +0 -0
  385. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/neutrality/paths.py +0 -0
  386. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/neutrality/policy.py +0 -0
  387. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/neutrality/receipt.py +0 -0
  388. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/neutrality/scanner.py +0 -0
  389. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/neutrality/test_runner.py +0 -0
  390. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/planning/__init__.py +0 -0
  391. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/planning/acceptance_markdown.py +0 -0
  392. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/planning/completeness.py +0 -0
  393. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/planning/continuity.py +0 -0
  394. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/planning/deltas.py +0 -0
  395. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/planning/manifest_contract.py +0 -0
  396. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/planning/prerequisites.py +0 -0
  397. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/planning/task_compatibility.py +0 -0
  398. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/planning/templates.py +0 -0
  399. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/planning/tiering.py +0 -0
  400. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/planning/traceability.py +0 -0
  401. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/planning/validation.py +0 -0
  402. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/planning/verification.py +0 -0
  403. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/policy/__init__.py +0 -0
  404. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/policy/adaptive_lifecycle.py +0 -0
  405. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/policy/apply.py +0 -0
  406. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/policy/execution_strategy.py +0 -0
  407. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/policy/proposals.py +0 -0
  408. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/policy/quality_floor.py +0 -0
  409. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/policy/risk_execution.py +0 -0
  410. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/policy/runtime_receipts.py +0 -0
  411. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/policy/thread_bridge.py +0 -0
  412. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/project/__init__.py +0 -0
  413. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/project/domain_language.py +0 -0
  414. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/project/guidance.py +0 -0
  415. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/project/merge.py +0 -0
  416. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/project/presets.py +0 -0
  417. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/project/principles.py +0 -0
  418. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/project/profile.py +0 -0
  419. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/py.typed +0 -0
  420. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/quality/__init__.py +0 -0
  421. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/quality/bug_forensics.py +0 -0
  422. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/quality/bug_forensics_advisor.py +0 -0
  423. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/quality/bug_forensics_recipes.py +0 -0
  424. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/quality/cross_check.py +0 -0
  425. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/quality/dependency_impact.py +0 -0
  426. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/quality/external_checks.py +0 -0
  427. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/quality/failure_classification.py +0 -0
  428. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/quality/packs.py +0 -0
  429. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/quality/security_analysis.py +0 -0
  430. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/quality/validation_ladder.py +0 -0
  431. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/reporting/__init__.py +0 -0
  432. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/reporting/attention.py +0 -0
  433. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/reporting/change_summary.py +0 -0
  434. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/reporting/event_feed.py +0 -0
  435. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/reporting/execution_resources.py +0 -0
  436. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/reporting/multi_run.py +0 -0
  437. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/reporting/progress_bridge.py +0 -0
  438. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/reporting/progress_hooks.py +0 -0
  439. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/reporting/progress_terminal.py +0 -0
  440. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/reporting/progress_view.py +0 -0
  441. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/reporting/status_view.py +0 -0
  442. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/reporting/usage_export.py +0 -0
  443. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/research/__init__.py +0 -0
  444. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/research/evidence.py +0 -0
  445. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/research/provenance.py +0 -0
  446. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/research/validation.py +0 -0
  447. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/resources.py +0 -0
  448. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/review/__init__.py +0 -0
  449. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/review/provenance.py +0 -0
  450. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/review/validation.py +0 -0
  451. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/review_mesh/__init__.py +0 -0
  452. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/review_mesh/assignments.py +0 -0
  453. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/review_mesh/independence.py +0 -0
  454. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/review_mesh/operator_templates.py +0 -0
  455. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/review_mesh/quorum.py +0 -0
  456. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/review_mesh/recommendation.py +0 -0
  457. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/review_mesh/synthesis.py +0 -0
  458. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/review_mesh/validation_helpers.py +0 -0
  459. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/runner/__init__.py +0 -0
  460. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/runner/core.py +0 -0
  461. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/runner/sandbox_receipts.py +0 -0
  462. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/specification/__init__.py +0 -0
  463. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/specification/completion_check.py +0 -0
  464. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/specification/completion_gate.py +0 -0
  465. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/specification/completion_signal.py +0 -0
  466. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/specification/validation.py +0 -0
  467. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/__init__.py +0 -0
  468. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/artifact_builders.py +0 -0
  469. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/artifacts.py +0 -0
  470. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/audit_evidence.py +0 -0
  471. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/authorization.py +0 -0
  472. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/budget_decisions.py +0 -0
  473. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/budget_policy.py +0 -0
  474. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/budget_receipts.py +0 -0
  475. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/bug_forensics_gates.py +0 -0
  476. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/checkpoint_gate.py +0 -0
  477. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/closing_policy.py +0 -0
  478. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/closing_window.py +0 -0
  479. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/continuation.py +0 -0
  480. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/continuation_batch.py +0 -0
  481. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/controller.py +0 -0
  482. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/deadline_guards.py +0 -0
  483. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/events.py +0 -0
  484. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/final_proof_integrity.py +0 -0
  485. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/finalization.py +0 -0
  486. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/gates.py +0 -0
  487. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/immutable_input.py +0 -0
  488. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/implementation_audit_gate.py +0 -0
  489. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/initialization.py +0 -0
  490. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/leases.py +0 -0
  491. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/limited_usage.py +0 -0
  492. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/lineage.py +0 -0
  493. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/managed_runner.py +0 -0
  494. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/model_usage.py +0 -0
  495. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/next_action.py +0 -0
  496. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/operation_kernel.py +0 -0
  497. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/plan_adoption.py +0 -0
  498. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/query.py +0 -0
  499. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/review_mesh_gate.py +0 -0
  500. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/reviews.py +0 -0
  501. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/risk_execution_gate.py +0 -0
  502. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/run.py +0 -0
  503. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/run_transitions.py +0 -0
  504. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/sandbox_policy.py +0 -0
  505. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/sandbox_receipts.py +0 -0
  506. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/selectors.py +0 -0
  507. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/state.py +0 -0
  508. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/task_outcomes.py +0 -0
  509. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/task_start.py +0 -0
  510. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/task_transitions.py +0 -0
  511. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/transactions.py +0 -0
  512. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/workflow/transition_contract.py +0 -0
  513. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/worktree/__init__.py +0 -0
  514. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle/worktree/isolation.py +0 -0
  515. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle_kit.egg-info/dependency_links.txt +0 -0
  516. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.0}/src/agent_lifecycle_kit.egg-info/entry_points.txt +0 -0
  517. {agent_lifecycle_kit-2.20.0 → agent_lifecycle_kit-2.21.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: 2.20.0
3
+ Version: 2.21.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
@@ -41,9 +41,9 @@ and secret handling stay in adapters or host-local profiles.
41
41
  ALK provides a verifiable finish for external-agent work with proportionate control. It adds only the checks and evidence needed for the task; most of the time remains for research, implementation and product verification.
42
42
 
43
43
  ## Quick start
44
- Start with [install ALK and make the first run](docs/guides/install-and-first-run.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
+ Start with [install ALK and make the first run](docs/guides/install-and-first-run.md). 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).
45
45
 
46
- It includes macOS, Linux and Windows instructions, Python 3.11-3.14, [PyPI](https://pypi.org/project/agent-lifecycle-kit/) installation with `python -m pip install agent-lifecycle-kit==2.20.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
+ It includes macOS, Linux and Windows instructions, Python 3.11-3.14, [PyPI](https://pypi.org/project/agent-lifecycle-kit/) installation with `python -m pip install agent-lifecycle-kit==2.21.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).
47
47
 
48
48
  For a quick start, run:
49
49
 
@@ -19,9 +19,9 @@ and secret handling stay in adapters or host-local profiles.
19
19
  ALK provides a verifiable finish for external-agent work with proportionate control. It adds only the checks and evidence needed for the task; most of the time remains for research, implementation and product verification.
20
20
 
21
21
  ## Quick start
22
- Start with [install ALK and make the first run](docs/guides/install-and-first-run.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).
22
+ Start with [install ALK and make the first run](docs/guides/install-and-first-run.md). 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).
23
23
 
24
- It includes macOS, Linux and Windows instructions, Python 3.11-3.14, [PyPI](https://pypi.org/project/agent-lifecycle-kit/) installation with `python -m pip install agent-lifecycle-kit==2.20.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).
24
+ It includes macOS, Linux and Windows instructions, Python 3.11-3.14, [PyPI](https://pypi.org/project/agent-lifecycle-kit/) installation with `python -m pip install agent-lifecycle-kit==2.21.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).
25
25
 
26
26
  For a quick start, run:
27
27
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "agent-lifecycle-kit"
7
- version = "2.20.0"
7
+ version = "2.21.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__ = "2.20.0"
3
+ __version__ = "2.21.0"
@@ -356,6 +356,78 @@ class Journal(
356
356
  for row in self._db.execute("SELECT * FROM events WHERE scope=? ORDER BY revision,ordinal", (scope,))
357
357
  ]
358
358
 
359
+ def bounded_prefix(
360
+ self,
361
+ scope: str,
362
+ *,
363
+ expected_revision: int,
364
+ boundary: tuple[int, int],
365
+ max_rows: int,
366
+ max_bytes: int,
367
+ ) -> dict:
368
+ """Read a complete current prefix; size checks precede payload loading.
369
+
370
+ This adds no event, schema or authority. Closed/compacted or incomplete
371
+ histories cannot qualify as an empty initial preparation history.
372
+ """
373
+ identity(scope)
374
+ uint(expected_revision)
375
+ if (
376
+ type(max_rows) is not int
377
+ or not 1 <= max_rows <= 4096
378
+ or type(max_bytes) is not int
379
+ or not 1 <= max_bytes <= 16 * 1024 * 1024
380
+ or type(boundary) is not tuple
381
+ or len(boundary) != 2
382
+ or any(type(v) is not int or v < 0 for v in boundary)
383
+ ):
384
+ raise ValueError("Invalid bounded prefix limits or boundary")
385
+ with self._transaction(scope):
386
+ row = self._db.execute("SELECT revision FROM scope_state WHERE scope=?", (scope,)).fetchone()
387
+ if row is None:
388
+ raise JournalUnavailable("Complete scope prefix unavailable")
389
+ if row[0] != expected_revision:
390
+ raise RevisionConflict("Prefix revision changed")
391
+ metadata = self._db.execute(
392
+ "SELECT revision,ordinal,"
393
+ "length(CAST(payload AS BLOB))+length(CAST(writer AS BLOB))+"
394
+ "length(CAST(event_id AS BLOB))+length(CAST(scope AS BLOB))+"
395
+ "length(CAST(transaction_id AS BLOB))+length(CAST(kind AS BLOB))+"
396
+ "length(CAST(digest AS BLOB))+"
397
+ "length(CAST(observed_at AS BLOB)) AS bytes "
398
+ "FROM events WHERE scope=? ORDER BY revision,ordinal LIMIT ?",
399
+ (scope, max_rows + 1),
400
+ ).fetchall()
401
+ if (
402
+ len(metadata) > max_rows
403
+ or sum(item["bytes"] for item in metadata) > max_bytes
404
+ or not metadata
405
+ or len(metadata) != expected_revision
406
+ or any(item["revision"] != index or item["ordinal"] != 0 for index, item in enumerate(metadata, 1))
407
+ or boundary != (metadata[-1]["revision"], metadata[-1]["ordinal"])
408
+ ):
409
+ raise JournalUnavailable("Prefix incomplete or exceeds limits")
410
+ events = [
411
+ dict(item)
412
+ for item in self._db.execute(
413
+ "SELECT * FROM events WHERE scope=? ORDER BY revision,ordinal",
414
+ (scope,),
415
+ )
416
+ ]
417
+ if any(hashlib.sha256(item["payload"].encode("utf-8")).hexdigest() != item["digest"] for item in events):
418
+ raise JournalUnavailable("Prefix payload integrity unavailable")
419
+ body = {
420
+ "schemaVersion": "agent-journal-bounded-prefix.v1",
421
+ "scope": scope,
422
+ "revision": expected_revision,
423
+ "boundary": list(boundary),
424
+ "complete": True,
425
+ "rowCount": len(events),
426
+ "utf8Bytes": sum(item["bytes"] for item in metadata),
427
+ "events": events,
428
+ }
429
+ return {**body, "prefixDigest": digest(body)}
430
+
359
431
  def _source_preflight(self, receipt: dict) -> None:
360
432
  self._check_observed(
361
433
  {
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import copy
5
6
  import hashlib
6
7
  import os
7
8
  import stat
@@ -16,16 +17,30 @@ from typing import Any
16
17
  from agent_lifecycle.adapter_sessions.process import run_process
17
18
  from agent_lifecycle.adapter_sessions.session_store import session_path
18
19
  from agent_lifecycle.contracts import LifecycleError, canonical_digest, read_json_object
20
+ from agent_lifecycle.contracts.authority_io import create_authority_bytes
21
+ from agent_lifecycle.contracts.canonical import canonical_bytes, require_private_file
19
22
  from agent_lifecycle.contracts.external_job_schemas import (
20
23
  TERMINAL_JOB_STATES,
21
24
  build_external_job_artifact,
25
+ build_external_job_request,
22
26
  build_external_job_result,
23
27
  build_external_job_status,
24
28
  require_external_job_pass,
25
29
  validate_external_job_request,
30
+ validate_external_job_result,
31
+ validate_external_job_status,
26
32
  )
33
+ from agent_lifecycle.contracts.paths import read_stable_repository_file
27
34
  from agent_lifecycle.contracts.persistence import create_private_json, require_private_json
28
- from agent_lifecycle.contracts.redaction import redact_text
35
+ from agent_lifecycle.contracts.preparation_policy import (
36
+ REVIEW_PREFLIGHT_FIELDS,
37
+ PreparationAdmission,
38
+ review_invocation_digest,
39
+ )
40
+ from agent_lifecycle.contracts.process_execution_schemas import (
41
+ validate_process_execution_receipt,
42
+ )
43
+ from agent_lifecycle.contracts.redaction import redact_text, redact_value
29
44
  from agent_lifecycle.host_protocol.external_jobs import validate_external_job_transition
30
45
 
31
46
  DEFAULT_EXTERNAL_JOB_ROOT = ".alk/external-jobs"
@@ -78,26 +93,94 @@ def run_external_job(
78
93
  process_runner: ProcessRunner = run_process,
79
94
  now: Clock | None = None,
80
95
  post_terminal_quiet_seconds: float = 0.05,
96
+ preparation: PreparationAdmission | None = None,
97
+ review_preflight: Callable[[], dict[str, Any]] | None = None,
98
+ recover_existing: bool = False,
99
+ stdin_text: str | None = None,
81
100
  ) -> dict[str, Any]:
82
101
  """Execute one adapter-owned process and persist an immutable attempt record."""
83
102
 
84
103
  require_external_job_pass(validate_external_job_request(request), "request")
85
104
  _require_portable_request_metadata(request)
105
+ if (
106
+ recover_existing
107
+ and external_job_attempt_path(
108
+ request,
109
+ job_root=job_root,
110
+ ).exists()
111
+ ):
112
+ return recover_external_job_attempt(request, job_root=job_root)
86
113
  if not argv or not all(isinstance(item, str) and item and "\x00" not in item for item in argv):
87
114
  raise LifecycleError("external-job-argv-invalid", "external job argv must be a non-empty string list")
88
115
  limits = request["limits"]
89
116
  _require_usage_bound(cost_micros, limits["maxCostMicros"], "costMicros")
90
117
  _require_usage_bound(reported_tokens, limits["maxReportedTokens"], "reportedTokens")
91
118
  children = _validated_children(request, child_requests or [])
119
+ preflight_receipt = None
120
+ if review_preflight is not None:
121
+ # The callback cannot replace the invocation while qualifying it.
122
+ request, argv, env = copy.deepcopy(request), list(argv), dict(env)
123
+ cwd = (cwd or Path.cwd()).resolve()
124
+ preflight_receipt = _require_review_preflight(
125
+ review_preflight,
126
+ request=request,
127
+ argv=argv,
128
+ cwd=cwd,
129
+ stdin_text=stdin_text,
130
+ )
131
+ if preparation is not None:
132
+ _require_prior_job_settled(
133
+ request,
134
+ job_root=job_root,
135
+ preparation=preparation,
136
+ )
137
+ preparation.check(repository_root=cwd or Path.cwd())
92
138
  context = _prepare_external_job(request, children, job_root=job_root, now=now)
139
+ if preflight_receipt is not None:
140
+ create_private_json(
141
+ context.attempt_root / "review-preflight.json",
142
+ preflight_receipt,
143
+ )
93
144
  invocation_started_ns = time.monotonic_ns()
94
- process, local_cancel = _invoke_external_job_process(
95
- context,
96
- argv,
97
- env=env,
98
- cwd=cwd,
99
- cancel_event=cancel_event,
100
- process_runner=process_runner,
145
+
146
+ def invoke() -> tuple[dict[str, Any], threading.Event]:
147
+ if preparation is not None:
148
+ _require_prior_job_settled(
149
+ request,
150
+ job_root=job_root,
151
+ preparation=preparation,
152
+ )
153
+ if review_preflight is not None:
154
+ current_preflight = _require_review_preflight(
155
+ review_preflight,
156
+ request=request,
157
+ argv=argv,
158
+ cwd=cwd or Path.cwd(),
159
+ stdin_text=stdin_text,
160
+ )
161
+ if current_preflight != preflight_receipt:
162
+ raise LifecycleError(
163
+ "REVIEW_PREFLIGHT_UNAVAILABLE",
164
+ "Review qualification changed",
165
+ )
166
+ return _invoke_external_job_process(
167
+ context,
168
+ argv,
169
+ env=env,
170
+ cwd=cwd,
171
+ cancel_event=cancel_event,
172
+ process_runner=process_runner,
173
+ stdin_text=stdin_text,
174
+ )
175
+
176
+ process, local_cancel = (
177
+ preparation.invoke(
178
+ invoke,
179
+ input_digest=request["requestDigest"],
180
+ repository_root=cwd or Path.cwd(),
181
+ )
182
+ if preparation is not None
183
+ else invoke()
101
184
  )
102
185
  observed_elapsed_ms = max(0, (time.monotonic_ns() - invocation_started_ns) // 1_000_000)
103
186
  return _finalize_external_job(
@@ -113,6 +196,290 @@ def run_external_job(
113
196
  )
114
197
 
115
198
 
199
+ def _require_review_preflight(
200
+ check: Callable[[], dict[str, Any]],
201
+ *,
202
+ request: dict[str, Any],
203
+ argv: list[str],
204
+ cwd: Path,
205
+ stdin_text: str | None,
206
+ ) -> dict[str, Any]:
207
+ try:
208
+ if not isinstance(stdin_text, str):
209
+ raise ValueError("Qualified STDIN delivery required")
210
+ expected = review_invocation_digest(
211
+ request=request,
212
+ argv=argv,
213
+ root_digest=canonical_digest(str(cwd.resolve())),
214
+ rendered_input=stdin_text.encode("utf-8"),
215
+ )
216
+ receipt = check()
217
+ if set(receipt) != REVIEW_PREFLIGHT_FIELDS:
218
+ raise ValueError("Closed portable preflight required")
219
+ body = {k: v for k, v in receipt.items() if k != "preflightDigest"}
220
+ if (
221
+ receipt.get("status") != "PASS"
222
+ or receipt.get("requestDigest") != request["requestDigest"]
223
+ or receipt.get("sourceSnapshotDigest") != request["sourceSnapshotDigest"]
224
+ or receipt.get("invocationDigest") != expected
225
+ or receipt.get("preflightDigest") != canonical_digest(body)
226
+ or receipt.get("schemaVersion") != "agent-reviewer-preflight.v1"
227
+ or receipt.get("reason") != "READY"
228
+ or receipt.get("authorityClaimed") is not False
229
+ or receipt.get("productionPromotionClaimed") is not False
230
+ or type(receipt.get("modelCalls")) is not int
231
+ or receipt["modelCalls"] != 0
232
+ or not isinstance(receipt.get("packetDigest"), str)
233
+ or len(receipt["packetDigest"]) != 64
234
+ or any(v not in "0123456789abcdef" for v in receipt["packetDigest"])
235
+ ):
236
+ raise ValueError("Qualified actual invocation required")
237
+ return dict(receipt)
238
+ except (ValueError, KeyError, TypeError, LifecycleError) as exc:
239
+ raise LifecycleError(
240
+ "REVIEW_PREFLIGHT_UNAVAILABLE",
241
+ "Qualified reviewer input required",
242
+ ) from exc
243
+
244
+
245
+ def _require_prior_job_settled(
246
+ request: dict[str, Any],
247
+ *,
248
+ job_root: Path | None,
249
+ preparation: PreparationAdmission,
250
+ ) -> None:
251
+ """Generation retry defaults to zero on selected preparation routes."""
252
+ if request["attempt"] <= 1:
253
+ return
254
+ root = external_job_attempt_path(request, job_root=job_root).parent
255
+ previous = root / ("attempt-" + str(request["attempt"] - 1))
256
+ try:
257
+ prior_request = _load_private_json(previous / "request.json", "prior request")
258
+ if any(prior_request[k] != value for k, value in request.items() if k not in {"attempt", "requestDigest"}):
259
+ raise ValueError("Immutable review subject changed")
260
+ prior = load_external_job_attempt(prior_request, job_root=job_root)
261
+ status, result, process = (
262
+ prior["jobStatus"],
263
+ prior["result"],
264
+ prior["processReceipt"],
265
+ )
266
+ require_external_job_pass(
267
+ validate_external_job_status(status, request=prior_request),
268
+ "status",
269
+ )
270
+ require_external_job_pass(
271
+ validate_external_job_result(
272
+ result,
273
+ request=prior_request,
274
+ status=status,
275
+ ),
276
+ "result",
277
+ )
278
+ if (
279
+ status["state"] != "FAILED"
280
+ or result["complete"] is not False
281
+ or result["outputBytes"] != 0
282
+ or not isinstance(process, dict)
283
+ or validate_process_execution_receipt(process)["status"] != "PASS"
284
+ or process["exitCode"] != 75
285
+ or process["timedOut"] is not False
286
+ or process["cancelled"] is not False
287
+ or process["cleanup"]["status"] != "PASS"
288
+ ):
289
+ raise ValueError("No settled bounded transient failure")
290
+ preparation.check_retry(
291
+ prior_request_digest=prior_request["requestDigest"],
292
+ prior_result_digest=result["resultDigest"],
293
+ retry_ordinal=request["attempt"] - 1,
294
+ )
295
+ except (OSError, TypeError, ValueError, KeyError, LifecycleError) as exc:
296
+ raise LifecycleError(
297
+ "REVIEW_ROUTE_SUSPENDED",
298
+ "Recover/resolve the original attempt first",
299
+ ) from exc
300
+
301
+
302
+ def recover_external_job_attempt(
303
+ request: dict[str, Any],
304
+ *,
305
+ job_root: Path | None = None,
306
+ ) -> dict[str, Any]:
307
+ """Retrieve the same complete response without generation or new usage."""
308
+ try:
309
+ return _recover_complete_attempt(request, job_root=job_root)
310
+ except (OSError, ValueError, KeyError, TypeError, LifecycleError) as exc:
311
+ reason = "REVIEW_RECOVERY_INVALID"
312
+ if isinstance(exc, LifecycleError) and exc.code in {
313
+ "REVIEW_REMOTE_UNRESOLVED",
314
+ "REVIEW_ROUTE_SUSPENDED",
315
+ "REVIEW_RESPONSE_UNAVAILABLE",
316
+ }:
317
+ reason = exc.code
318
+ raise LifecycleError(reason, "Complete reusable response unavailable") from exc
319
+
320
+
321
+ def _recover_complete_attempt(
322
+ request: dict[str, Any],
323
+ *,
324
+ job_root: Path | None,
325
+ ) -> dict[str, Any]:
326
+ view = load_external_job_attempt(request, job_root=job_root)
327
+ status, result = view["jobStatus"], view["result"]
328
+ require_external_job_pass(
329
+ validate_external_job_status(status, request=request),
330
+ "status",
331
+ )
332
+ if result is None or status["state"] not in TERMINAL_JOB_STATES:
333
+ raise LifecycleError(
334
+ "REVIEW_REMOTE_UNRESOLVED",
335
+ "Remote outcome remains unavailable",
336
+ )
337
+ require_external_job_pass(
338
+ validate_external_job_result(result, request=request, status=status),
339
+ "result",
340
+ )
341
+ if result["complete"] is not True or not result["blockingEligible"]:
342
+ raise LifecycleError(
343
+ "REVIEW_ROUTE_SUSPENDED",
344
+ "No complete reusable response",
345
+ )
346
+ _require_portable_recovery_records(request, status, result)
347
+ root = external_job_attempt_path(request, job_root=job_root)
348
+ running = _load_private_json(_status_path(root, 1), "running status")
349
+ transition = validate_external_job_transition(running, status, request=request)
350
+ require_external_job_pass(transition, "transition")
351
+ for artifact in result["artifacts"]:
352
+ path = root / artifact["locator"]
353
+ if not path.resolve().is_relative_to(root.resolve()):
354
+ raise LifecycleError("REVIEW_RECOVERY_INVALID", "Artifact changed")
355
+ data = read_stable_repository_file(
356
+ root,
357
+ artifact["locator"],
358
+ max_bytes=max(1, artifact["bytes"]),
359
+ label="recovered artifact",
360
+ )
361
+ if hashlib.sha256(data).hexdigest() != artifact["sha256"] or len(data) != artifact["bytes"]:
362
+ raise LifecycleError("REVIEW_RECOVERY_INVALID", "Artifact changed")
363
+ # Original process diagnostics remain in the immutable local attempt.
364
+ # Recovery exports the same semantic result/usage, never raw stored extras.
365
+ _read_complete_response(root, request, result)
366
+ view = _attempt_view(request, status, result, None, transition)
367
+ if len(canonical_bytes(view)) > 65536:
368
+ raise ValueError("Portable recovery exceeds its bound")
369
+ return view
370
+
371
+
372
+ def _require_portable_recovery_records(
373
+ request: dict[str, Any],
374
+ status: dict[str, Any],
375
+ result: dict[str, Any],
376
+ ) -> None:
377
+ """Refuse unsupported extras without rewriting an accepting identity."""
378
+ normalized_request = build_external_job_request(
379
+ job_id=request["jobId"],
380
+ attempt=request["attempt"],
381
+ adapter_id=request["adapterId"],
382
+ operation=request["operation"],
383
+ execution_kind=request["executionKind"],
384
+ descriptor_digest=request["descriptorDigest"],
385
+ plan_digest=request["planDigest"],
386
+ plan_lock_digest=request["planLockDigest"],
387
+ source_revision=request["sourceRevision"],
388
+ source_snapshot_digest=request["sourceSnapshotDigest"],
389
+ limits=request["limits"],
390
+ parent_job_id=request["parentJobId"],
391
+ parent_attempt=request["parentAttempt"],
392
+ parent_request_digest=request["parentRequestDigest"],
393
+ )
394
+ normalized_status = build_external_job_status(
395
+ request=request,
396
+ state=status["state"],
397
+ sequence=status["sequence"],
398
+ observed_at=status["observedAt"],
399
+ usage=status["usage"],
400
+ started_at=status["startedAt"],
401
+ ended_at=status["endedAt"],
402
+ children=status["children"],
403
+ cancel_requested=status["cancelRequested"],
404
+ process_cleanup_status=status["processCleanupStatus"],
405
+ post_terminal_write_detected=status["postTerminalWriteDetected"],
406
+ observation=status.get("observation"),
407
+ )
408
+ artifacts = [
409
+ build_external_job_artifact(
410
+ request=request,
411
+ artifact_id=item["artifactId"],
412
+ media_type=item["mediaType"],
413
+ bytes_count=item["bytes"],
414
+ sha256=item["sha256"],
415
+ locator=item["locator"],
416
+ )
417
+ for item in result["artifacts"]
418
+ ]
419
+ normalized_result = build_external_job_result(
420
+ result_id=result["resultId"],
421
+ request=request,
422
+ status=status,
423
+ verdict=result["verdict"],
424
+ complete=result["complete"],
425
+ artifacts=artifacts,
426
+ output_digest=result["outputDigest"],
427
+ output_bytes=result["outputBytes"],
428
+ blockers=[],
429
+ )
430
+ for original, normalized in (
431
+ (request, normalized_request),
432
+ (status, normalized_status),
433
+ (result, normalized_result),
434
+ ):
435
+ _, changed = redact_value(original)
436
+ if original != normalized or changed:
437
+ raise ValueError("Unsupported or sensitive recovery metadata")
438
+
439
+
440
+ def _read_complete_response(
441
+ root: Path,
442
+ request: dict[str, Any],
443
+ result: dict[str, Any],
444
+ ) -> dict[str, str]:
445
+ body = {}
446
+ for stream in ("stdout", "stderr"):
447
+ name = "response." + stream
448
+ try:
449
+ require_private_file(root / name)
450
+ data = read_stable_repository_file(
451
+ root,
452
+ name,
453
+ max_bytes=request["limits"]["maxOutputBytes"],
454
+ label="private recovered response",
455
+ )
456
+ except (OSError, LifecycleError) as exc:
457
+ raise LifecycleError(
458
+ "REVIEW_RESPONSE_UNAVAILABLE",
459
+ "Durable response unavailable",
460
+ ) from exc
461
+ body[stream] = data.decode("utf-8")
462
+ count = sum(len(value.encode("utf-8")) for value in body.values())
463
+ expected = canonical_digest(body) if count else None
464
+ if count != result["outputBytes"] or expected != result["outputDigest"]:
465
+ raise ValueError("Durable response identity changed")
466
+ return body
467
+
468
+
469
+ def load_external_job_response(
470
+ request: dict[str, Any],
471
+ *,
472
+ job_root: Path | None = None,
473
+ ) -> dict[str, str]:
474
+ """Host-local bounded response input for parsing/import; never CLI output."""
475
+ view = recover_external_job_attempt(request, job_root=job_root)
476
+ return _read_complete_response(
477
+ external_job_attempt_path(request, job_root=job_root),
478
+ request,
479
+ view["result"],
480
+ )
481
+
482
+
116
483
  def _prepare_external_job(
117
484
  request: dict[str, Any],
118
485
  children: list[dict[str, Any]],
@@ -169,6 +536,7 @@ def _invoke_external_job_process(
169
536
  cwd: Path | None,
170
537
  cancel_event: threading.Event | None,
171
538
  process_runner: ProcessRunner,
539
+ stdin_text: str | None = None,
172
540
  ) -> tuple[dict[str, Any], threading.Event]:
173
541
  local_cancel = threading.Event()
174
542
  monitor_stop = threading.Event()
@@ -194,6 +562,7 @@ def _invoke_external_job_process(
194
562
  adapter_id=request["adapterId"],
195
563
  cancel_event=local_cancel,
196
564
  cleanup_grace_seconds=float(limits["cancelGraceSeconds"]),
565
+ **({"stdin_text": stdin_text, "max_input_bytes": 1024 * 1024} if stdin_text is not None else {}),
197
566
  )
198
567
  finally:
199
568
  create_private_json(
@@ -231,7 +600,8 @@ def _finalize_external_job(
231
600
  request, context.artifact_root, quiet_seconds=post_terminal_quiet_seconds
232
601
  )
233
602
 
234
- blockers = [*process.get("blockers", []), *child_blockers, *artifact_blockers]
603
+ response_blockers = _capture_private_response(context, process)
604
+ blockers = [*process.get("blockers", []), *child_blockers, *artifact_blockers, *response_blockers]
235
605
  elapsed_ms = _elapsed_ms(process, observed_elapsed_ms=observed_elapsed_ms)
236
606
  wall_limit_ms = int(limits["maxWallSeconds"]) * 1000
237
607
  if elapsed_ms > wall_limit_ms:
@@ -302,6 +672,33 @@ def _finalize_external_job(
302
672
  return _attempt_view(request, terminal, result, process["processReceipt"], terminal_transition)
303
673
 
304
674
 
675
+ def _capture_private_response(
676
+ context: _JobContext,
677
+ process: dict[str, Any],
678
+ ) -> list[dict[str, str]]:
679
+ """Durable complete/partial delivery in the existing private attempt."""
680
+ limit = context.request["limits"]["maxOutputBytes"]
681
+ remaining = limit
682
+ truncated = False
683
+ for stream in ("stdout", "stderr"):
684
+ value = process.get(stream, "")
685
+ if not isinstance(value, str):
686
+ raise LifecycleError(
687
+ "REVIEW_RESPONSE_UNAVAILABLE",
688
+ "Response encoding unavailable",
689
+ )
690
+ data = value.encode("utf-8")
691
+ truncated = truncated or len(data) > remaining
692
+ selected = data[:remaining]
693
+ remaining -= len(selected)
694
+ create_authority_bytes(
695
+ context.attempt_root / ("response." + stream),
696
+ selected,
697
+ private=True,
698
+ )
699
+ return [{"code": "external-job-response-byte-limit"}] if truncated else []
700
+
701
+
305
702
  def _settle_artifacts(
306
703
  request: dict[str, Any], artifact_root: Path, *, quiet_seconds: float
307
704
  ) -> tuple[list[dict[str, Any]], list[dict[str, Any]], bool]:
@@ -38,6 +38,7 @@ from agent_lifecycle.adapter_sessions.qualification import (
38
38
  )
39
39
  from agent_lifecycle.adapter_sessions.worktree_identity import capture_git_worktree_identity
40
40
  from agent_lifecycle.contracts import LifecycleError, canonical_digest, read_json_object
41
+ from agent_lifecycle.contracts.preparation_policy import PreparationAdmission
41
42
  from agent_lifecycle.host_protocol.validation import validate_managed_launch_profile
42
43
 
43
44
 
@@ -237,6 +238,8 @@ def launch_from_descriptor(
237
238
  state_path: Path | None = None,
238
239
  policy_path: Path | None = None,
239
240
  process_env: dict[str, str] | None = None,
241
+ preparation: PreparationAdmission | None = None,
242
+ project_root: Path | None = None,
240
243
  ) -> dict[str, Any]:
241
244
  """Block generic descriptor-driven launch until the qualified local route exists."""
242
245
 
@@ -248,6 +251,11 @@ def launch_from_descriptor(
248
251
  adapter_id = raw_adapter_id if isinstance(raw_adapter_id, str) else "unknown"
249
252
  timeout_seconds = _timeout_seconds(profile)
250
253
  blockers: list[dict[str, Any]] = []
254
+ if preparation is not None:
255
+ try:
256
+ preparation.check(repository_root=project_root or Path.cwd())
257
+ except LifecycleError as exc:
258
+ blockers.append({"code": exc.code})
251
259
  if validation["status"] != "PASS":
252
260
  blockers.append(
253
261
  {