agent-lifecycle-kit 2.39.0__tar.gz → 2.40.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 (544) hide show
  1. {agent_lifecycle_kit-2.39.0/src/agent_lifecycle_kit.egg-info → agent_lifecycle_kit-2.40.0}/PKG-INFO +2 -2
  2. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/README.md +1 -1
  3. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/pyproject.toml +1 -1
  4. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/_version.py +1 -1
  5. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/accounting/closing_resource_recovery.py +191 -103
  6. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/accounting/declared_ledger.py +79 -39
  7. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/authority_io.py +29 -0
  8. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0/src/agent_lifecycle_kit.egg-info}/PKG-INFO +2 -2
  9. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/tests/cli/fixtures/external-consumer-cases.json +2 -1
  10. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/LICENSE +0 -0
  11. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/NOTICE +0 -0
  12. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/benchmarks/reference-tasks/README.md +0 -0
  13. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/benchmarks/reference-tasks/manifest.json +0 -0
  14. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/benchmarks/reference-tasks/rt01-planning/oracle.json +0 -0
  15. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/benchmarks/reference-tasks/rt01-planning/task.md +0 -0
  16. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/benchmarks/reference-tasks/rt02-architecture-review/oracle.json +0 -0
  17. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/benchmarks/reference-tasks/rt02-architecture-review/task.md +0 -0
  18. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/benchmarks/reference-tasks/rt03-bug-forensics/oracle.json +0 -0
  19. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/benchmarks/reference-tasks/rt03-bug-forensics/task.md +0 -0
  20. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/benchmarks/reference-tasks/rt04-s1-managed-task/oracle.json +0 -0
  21. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/benchmarks/reference-tasks/rt04-s1-managed-task/task.md +0 -0
  22. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/benchmarks/reference-tasks/rt05-s2-evidence-task/oracle.json +0 -0
  23. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/benchmarks/reference-tasks/rt05-s2-evidence-task/task.md +0 -0
  24. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/docs/guides/ai-sdlc-integration.md +0 -0
  25. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/docs/ru/guides/ai-sdlc-integration.md +0 -0
  26. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/setup.cfg +0 -0
  27. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/__init__.py +0 -0
  28. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/__main__.py +0 -0
  29. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/accounting/__init__.py +0 -0
  30. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/accounting/closing_resource_admission.py +0 -0
  31. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/accounting/closing_resource_policy.py +0 -0
  32. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/accounting/closing_resources.py +0 -0
  33. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/accounting/closing_types.py +0 -0
  34. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/accounting/contracts.py +0 -0
  35. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/accounting/declared_ledger_legacy.py +0 -0
  36. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/accounting/declared_ledger_records.py +0 -0
  37. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/accounting/financial_transactions.py +0 -0
  38. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/accounting/host_bridge.py +0 -0
  39. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/accounting/input_fit.py +0 -0
  40. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/accounting/journal.py +0 -0
  41. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/accounting/legacy_source_usage.py +0 -0
  42. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/accounting/normalization.py +0 -0
  43. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/accounting/opening_balances.py +0 -0
  44. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/accounting/profile_schema.py +0 -0
  45. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/accounting/source_usage_context.py +0 -0
  46. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/accounting/support_profiles.py +0 -0
  47. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/accounting/usage_types.py +0 -0
  48. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/accounting/workflow_authority_store.py +0 -0
  49. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/accounting/workflow_state_store.py +0 -0
  50. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/accounting/workflow_store.py +0 -0
  51. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/__init__.py +0 -0
  52. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/agent_plugin_probe.py +0 -0
  53. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/attempt_authority.py +0 -0
  54. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/bootstrap_r11.py +0 -0
  55. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/codex_exact_prompt.py +0 -0
  56. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/codex_input_diagnostics.py +0 -0
  57. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/codex_prompt_preparation.py +0 -0
  58. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/codex_source_exposure.py +0 -0
  59. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/codex_source_subject.py +0 -0
  60. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/contracts.py +0 -0
  61. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/env.py +0 -0
  62. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/external_check.py +0 -0
  63. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/external_jobs.py +0 -0
  64. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/immutable_input.py +0 -0
  65. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/input_lifecycle.py +0 -0
  66. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/launch_execution.py +0 -0
  67. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/launch_preflight.py +0 -0
  68. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/launcher.py +0 -0
  69. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/lifecycle_control.py +0 -0
  70. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/limited_native_evidence.py +0 -0
  71. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/local_launch_profile.py +0 -0
  72. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/managed_process.py +0 -0
  73. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/ordinary_audit.py +0 -0
  74. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/planning_launch.py +0 -0
  75. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/planning_session.py +0 -0
  76. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/private_input.py +0 -0
  77. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/process.py +0 -0
  78. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/process_admission.py +0 -0
  79. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/process_capture.py +0 -0
  80. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/process_control.py +0 -0
  81. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/process_groups.py +0 -0
  82. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/process_telemetry.py +0 -0
  83. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/qualification.py +0 -0
  84. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/qualification_context.py +0 -0
  85. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/redaction.py +0 -0
  86. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/session_store.py +0 -0
  87. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/source_review_contracts.py +0 -0
  88. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/source_review_history.py +0 -0
  89. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/source_review_inputs.py +0 -0
  90. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/source_review_preparation_records.py +0 -0
  91. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/source_review_roles.py +0 -0
  92. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/source_review_shards.py +0 -0
  93. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/source_review_support.py +0 -0
  94. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/source_review_transcript.py +0 -0
  95. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/start_input.py +0 -0
  96. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/start_receipts.py +0 -0
  97. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/start_routing.py +0 -0
  98. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/task_intake.py +0 -0
  99. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/unified_start.py +0 -0
  100. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/windows_pipe.py +0 -0
  101. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/workflow_bridge.py +0 -0
  102. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/adapter_sessions/worktree_identity.py +0 -0
  103. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/audit/__init__.py +0 -0
  104. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/audit/bug_forensics.py +0 -0
  105. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/audit/delta.py +0 -0
  106. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/audit/delta_review.py +0 -0
  107. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/audit/domain_language.py +0 -0
  108. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/audit/external_checks.py +0 -0
  109. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/audit/implementation.py +0 -0
  110. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/audit/ownership.py +0 -0
  111. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/audit/package.py +0 -0
  112. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/audit/proof_chain.py +0 -0
  113. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/audit/proof_findings.py +0 -0
  114. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/audit/proof_integrity.py +0 -0
  115. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/audit/review_packet.py +0 -0
  116. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/audit/review_verdict.py +0 -0
  117. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/audit/security_analysis.py +0 -0
  118. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/benchmarks/__init__.py +0 -0
  119. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/benchmarks/comparison.py +0 -0
  120. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/benchmarks/contracts.py +0 -0
  121. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/benchmarks/evaluator.py +0 -0
  122. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/benchmarks/oracles.py +0 -0
  123. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/benchmarks/qualification.py +0 -0
  124. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/benchmarks/reporting.py +0 -0
  125. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/benchmarks/stratification.py +0 -0
  126. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/changesets/__init__.py +0 -0
  127. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/changesets/git.py +0 -0
  128. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/changesets/git_io.py +0 -0
  129. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/changesets/snapshot.py +0 -0
  130. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/__init__.py +0 -0
  131. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/adapter.py +0 -0
  132. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/benchmarks.py +0 -0
  133. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/command_registry.py +0 -0
  134. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/compact_plan_commands.py +0 -0
  135. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/dispatch.py +0 -0
  136. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/dispatch_adapters.py +0 -0
  137. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/dispatch_audit.py +0 -0
  138. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/dispatch_contracts.py +0 -0
  139. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/dispatch_lifecycle.py +0 -0
  140. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/dispatch_metrics.py +0 -0
  141. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/dispatch_observability.py +0 -0
  142. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/dispatch_planning.py +0 -0
  143. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/dispatch_research.py +0 -0
  144. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/errors.py +0 -0
  145. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/followup.py +0 -0
  146. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/host_launch.py +0 -0
  147. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/lifecycle_parsers.py +0 -0
  148. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/main.py +0 -0
  149. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/metrics_parser.py +0 -0
  150. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/observability_parsers.py +0 -0
  151. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/parsers.py +0 -0
  152. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/plan_lock_commands.py +0 -0
  153. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/planning_parsers.py +0 -0
  154. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/policy.py +0 -0
  155. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/progress_hooks.py +0 -0
  156. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/project.py +0 -0
  157. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/research.py +0 -0
  158. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/start.py +0 -0
  159. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/strategy.py +0 -0
  160. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/workflow_task_parsers.py +0 -0
  161. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/cli/worktree.py +0 -0
  162. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/compiler/__init__.py +0 -0
  163. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/compiler/output_contract.py +0 -0
  164. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/compiler/phase_packets.py +0 -0
  165. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/compiler/small_model_packets.py +0 -0
  166. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/compiler/task_packets.py +0 -0
  167. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/context/__init__.py +0 -0
  168. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/context/checkpoint_store.py +0 -0
  169. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/context/checkpoints.py +0 -0
  170. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/context/episode_retrieval.py +0 -0
  171. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/context/external_memory.py +0 -0
  172. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/context/profiles.py +0 -0
  173. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/context/rendering.py +0 -0
  174. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/context/thread_bridge_context.py +0 -0
  175. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/__init__.py +0 -0
  176. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/adapter_contract_schemas.py +0 -0
  177. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/adapter_event_schemas.py +0 -0
  178. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/adapter_session_schemas.py +0 -0
  179. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/adapter_task_schemas.py +0 -0
  180. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/agent_plugin_qualification_schemas.py +0 -0
  181. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/artifact_authoring_schemas.py +0 -0
  182. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/audit_optimization_schemas.py +0 -0
  183. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/audit_schemas.py +0 -0
  184. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/authority_text.py +0 -0
  185. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/benchmark_schemas.py +0 -0
  186. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/bounded_json.py +0 -0
  187. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/bug_forensics_schemas.py +0 -0
  188. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/canonical.py +0 -0
  189. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/closing_resource_schemas.py +0 -0
  190. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/closing_time.py +0 -0
  191. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/closing_window_schemas.py +0 -0
  192. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/compact_plan_schemas.py +0 -0
  193. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/compatibility.py +0 -0
  194. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/context_checkpoint_schemas.py +0 -0
  195. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/context_model_schemas.py +0 -0
  196. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/core_schemas.py +0 -0
  197. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/cross_check_schemas.py +0 -0
  198. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/deadline_schemas.py +0 -0
  199. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/deadlines.py +0 -0
  200. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/display_identity.py +0 -0
  201. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/domain_language.py +0 -0
  202. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/domain_language_schemas.py +0 -0
  203. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/ed25519.py +0 -0
  204. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/errors.py +0 -0
  205. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/evidence_import_schemas.py +0 -0
  206. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/evidence_receipt_schemas.py +0 -0
  207. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/execution_strategy_schemas.py +0 -0
  208. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/execution_target.py +0 -0
  209. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/external_check_schemas.py +0 -0
  210. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/external_job_schemas.py +0 -0
  211. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/finding_check_schemas.py +0 -0
  212. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/goal_validation.py +0 -0
  213. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/host_capability_schemas.py +0 -0
  214. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/immutable_input_schemas.py +0 -0
  215. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/implementation_audit_validation.py +0 -0
  216. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/import_dialect_schemas.py +0 -0
  217. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/independent_evidence_schemas.py +0 -0
  218. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/launch_qualification.py +0 -0
  219. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/legacy_runner_schemas.py +0 -0
  220. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/lifecycle_action_catalog.py +0 -0
  221. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/lifecycle_control_definitions.py +0 -0
  222. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/lifecycle_control_schemas.py +0 -0
  223. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/lifecycle_control_validation.py +0 -0
  224. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/local_launch_validation.py +0 -0
  225. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/metric_schemas.py +0 -0
  226. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/model_classes.py +0 -0
  227. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/multi_run_view_schemas.py +0 -0
  228. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/ownership_paths.py +0 -0
  229. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/paths.py +0 -0
  230. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/performance_limits.py +0 -0
  231. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/persistence.py +0 -0
  232. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/phase_packet_schemas.py +0 -0
  233. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/plan_contract_schemas.py +0 -0
  234. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/plan_delta_schemas.py +0 -0
  235. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/plan_manifest_schemas.py +0 -0
  236. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/planning_launch_schemas.py +0 -0
  237. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/policy_schemas.py +0 -0
  238. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/preparation_policy.py +0 -0
  239. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/private_storage.py +0 -0
  240. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/private_storage_compat.py +0 -0
  241. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/process_execution_schemas.py +0 -0
  242. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/process_lock.py +0 -0
  243. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/process_redaction.py +0 -0
  244. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/progress_bridge_schemas.py +0 -0
  245. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/progress_hook_schemas.py +0 -0
  246. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/project_profile_preset_schemas.py +0 -0
  247. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/project_profile_schemas.py +0 -0
  248. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/proof_integrity_schemas.py +0 -0
  249. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/proof_validation.py +0 -0
  250. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/public_locators.py +0 -0
  251. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/quality_modes.py +0 -0
  252. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/redaction.py +0 -0
  253. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/release_accounting_schemas.py +0 -0
  254. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/release_contract_schemas.py +0 -0
  255. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/research_evidence_schemas.py +0 -0
  256. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/review_input_types.py +0 -0
  257. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/review_mesh_recommendation_schemas.py +0 -0
  258. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/review_mesh_schemas.py +0 -0
  259. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/review_quality_schemas.py +0 -0
  260. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/review_round_schemas.py +0 -0
  261. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/review_verdict.py +0 -0
  262. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/reviewer_identity_schemas.py +0 -0
  263. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/runner_schemas.py +0 -0
  264. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/runner_worktree_schemas.py +0 -0
  265. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/sandbox_schemas.py +0 -0
  266. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/schema_builders.py +0 -0
  267. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/schemas.py +0 -0
  268. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/scoped_usage_schemas.py +0 -0
  269. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/security_analysis_schemas.py +0 -0
  270. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/statistical_evidence_schemas.py +0 -0
  271. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/status_goal_schemas.py +0 -0
  272. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/structured_result_schemas.py +0 -0
  273. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/task_template_schemas.py +0 -0
  274. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/thread_bridge_schema_definitions.py +0 -0
  275. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/thread_bridge_schemas.py +0 -0
  276. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/thread_bridge_validation.py +0 -0
  277. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/token_estimation.py +0 -0
  278. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/usage_export_schemas.py +0 -0
  279. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/validation.py +0 -0
  280. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/validation_ladder_schemas.py +0 -0
  281. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/windows_security.py +0 -0
  282. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/workflow_artifact_schemas.py +0 -0
  283. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/workflow_authority.py +0 -0
  284. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/workflow_authority_schemas.py +0 -0
  285. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/workflow_authorization_schemas.py +0 -0
  286. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/workflow_continuation_batch_schemas.py +0 -0
  287. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/workflow_continuation_schemas.py +0 -0
  288. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/workflow_economics_schemas.py +0 -0
  289. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/workflow_finalization_types.py +0 -0
  290. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/workflow_run_schemas.py +0 -0
  291. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/workflow_state_authority.py +0 -0
  292. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/workflow_state_schemas.py +0 -0
  293. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/workflow_storage.py +0 -0
  294. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/workflow_storage_context.py +0 -0
  295. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/workflow_storage_io.py +0 -0
  296. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/contracts/workflow_storage_schemas.py +0 -0
  297. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/data/__init__.py +0 -0
  298. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/data/profiles/external-checks/declared-dependencies.v1.json +0 -0
  299. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/data/profiles/external-checks/import-boundaries.v1.json +0 -0
  300. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/data/profiles/external-checks/module-dependencies.v1.json +0 -0
  301. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/data/profiles/lifecycle-baselines.v1.json +0 -0
  302. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/data/profiles/model-routing-profile.v1.json +0 -0
  303. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/feature-implementation.v1.json +0 -0
  304. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/quick-change.v1.json +0 -0
  305. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/research-review.v1.json +0 -0
  306. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/data/profiles/risk-execution-policy.v1.json +0 -0
  307. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/data/profiles/small-context-profile.v1.json +0 -0
  308. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/diagnostics/__init__.py +0 -0
  309. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/diagnostics/bundles.py +0 -0
  310. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/diagnostics/installation_catalog.py +0 -0
  311. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/diagnostics/readiness.py +0 -0
  312. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/evidence_index/__init__.py +0 -0
  313. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/evidence_index/core.py +0 -0
  314. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/evidence_index/episode_index.py +0 -0
  315. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/evidence_index/external_context.py +0 -0
  316. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/followup/__init__.py +0 -0
  317. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/followup/records.py +0 -0
  318. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/freeze/__init__.py +0 -0
  319. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/freeze/locks.py +0 -0
  320. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/freeze/package_integrity.py +0 -0
  321. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/freeze/review_inputs.py +0 -0
  322. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/goal/__init__.py +0 -0
  323. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/goal/records.py +0 -0
  324. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/goal/view.py +0 -0
  325. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/__init__.py +0 -0
  326. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/acp_capability.py +0 -0
  327. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/agent_plugin_qualification.py +0 -0
  328. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/capabilities.py +0 -0
  329. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/context_events.py +0 -0
  330. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/contracts.py +0 -0
  331. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/event_capture.py +0 -0
  332. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/events.py +0 -0
  333. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/external_jobs.py +0 -0
  334. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/inspection.py +0 -0
  335. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/inspection_claude.py +0 -0
  336. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/inspection_codex.py +0 -0
  337. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/inspection_common.py +0 -0
  338. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/inspection_cursor.py +0 -0
  339. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/inspection_gemini_cli.py +0 -0
  340. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/inspection_hermes.py +0 -0
  341. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/inspection_kimi_code.py +0 -0
  342. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/inspection_opencode.py +0 -0
  343. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/inspection_profile.py +0 -0
  344. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/inspection_qwen_code.py +0 -0
  345. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/lifecycle_control.py +0 -0
  346. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/lifecycle_control_qualification.py +0 -0
  347. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/lifecycle_gate.py +0 -0
  348. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/opencode_compatibility.py +0 -0
  349. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/process_port.py +0 -0
  350. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/receipts.py +0 -0
  351. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/sandbox_receipts.py +0 -0
  352. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/scaffold.py +0 -0
  353. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/structured_results.py +0 -0
  354. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/thread_bridge.py +0 -0
  355. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/usage_normalizers.py +0 -0
  356. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/host_protocol/validation.py +0 -0
  357. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/imports/__init__.py +0 -0
  358. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/imports/agentskills_profile.py +0 -0
  359. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/imports/bmad_profile.py +0 -0
  360. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/imports/constitution_adr.py +0 -0
  361. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/imports/dialect_profiles.py +0 -0
  362. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/imports/external_agent.py +0 -0
  363. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/imports/external_dialects.py +0 -0
  364. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/imports/external_workflow.py +0 -0
  365. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/imports/multi_markdown.py +0 -0
  366. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/imports/openspec_profile.py +0 -0
  367. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/imports/planning.py +0 -0
  368. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/imports/security_findings.py +0 -0
  369. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/imports/spec_kit_profile.py +0 -0
  370. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/imports/spec_kitty_profile.py +0 -0
  371. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/metrics/__init__.py +0 -0
  372. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/metrics/audit_efficiency.py +0 -0
  373. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/metrics/audit_optimization.py +0 -0
  374. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/metrics/audit_samples.py +0 -0
  375. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/metrics/command_resources.py +0 -0
  376. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/metrics/cost_collection.py +0 -0
  377. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/metrics/costs.py +0 -0
  378. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/metrics/goal_progress.py +0 -0
  379. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/metrics/outcome_index.py +0 -0
  380. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/metrics/phase_resources.py +0 -0
  381. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/metrics/plan_package_comparison.py +0 -0
  382. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/metrics/recommendations.py +0 -0
  383. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/metrics/regression_signals.py +0 -0
  384. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/metrics/release_accounting.py +0 -0
  385. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/metrics/usage_export.py +0 -0
  386. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/metrics/workflow_economics.py +0 -0
  387. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/migration/__init__.py +0 -0
  388. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/migration/legacy_runner.py +0 -0
  389. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/model_routing/__init__.py +0 -0
  390. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/model_routing/profiles.py +0 -0
  391. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/model_routing/receipts.py +0 -0
  392. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/model_routing/resolver.py +0 -0
  393. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/neutrality/__init__.py +0 -0
  394. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/neutrality/__main__.py +0 -0
  395. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/neutrality/authority.py +0 -0
  396. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/neutrality/canonical.py +0 -0
  397. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/neutrality/cli.py +0 -0
  398. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/neutrality/ed25519.py +0 -0
  399. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/neutrality/errors.py +0 -0
  400. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/neutrality/gate.py +0 -0
  401. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/neutrality/git_objects.py +0 -0
  402. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/neutrality/matching.py +0 -0
  403. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/neutrality/paths.py +0 -0
  404. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/neutrality/policy.py +0 -0
  405. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/neutrality/receipt.py +0 -0
  406. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/neutrality/scanner.py +0 -0
  407. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/neutrality/test_runner.py +0 -0
  408. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/planning/__init__.py +0 -0
  409. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/planning/acceptance_markdown.py +0 -0
  410. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/planning/compact_packages.py +0 -0
  411. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/planning/completeness.py +0 -0
  412. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/planning/continuity.py +0 -0
  413. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/planning/deltas.py +0 -0
  414. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/planning/manifest_contract.py +0 -0
  415. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/planning/prerequisites.py +0 -0
  416. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/planning/task_compatibility.py +0 -0
  417. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/planning/templates.py +0 -0
  418. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/planning/tiering.py +0 -0
  419. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/planning/traceability.py +0 -0
  420. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/planning/validation.py +0 -0
  421. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/planning/verification.py +0 -0
  422. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/policy/__init__.py +0 -0
  423. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/policy/adaptive_lifecycle.py +0 -0
  424. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/policy/apply.py +0 -0
  425. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/policy/execution_strategy.py +0 -0
  426. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/policy/proposals.py +0 -0
  427. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/policy/quality_floor.py +0 -0
  428. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/policy/risk_execution.py +0 -0
  429. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/policy/runtime_receipts.py +0 -0
  430. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/policy/thread_bridge.py +0 -0
  431. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/project/__init__.py +0 -0
  432. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/project/domain_language.py +0 -0
  433. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/project/guidance.py +0 -0
  434. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/project/merge.py +0 -0
  435. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/project/presets.py +0 -0
  436. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/project/principles.py +0 -0
  437. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/project/profile.py +0 -0
  438. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/py.typed +0 -0
  439. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/quality/__init__.py +0 -0
  440. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/quality/architecture_policy.py +0 -0
  441. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/quality/bug_forensics.py +0 -0
  442. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/quality/bug_forensics_advisor.py +0 -0
  443. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/quality/bug_forensics_recipes.py +0 -0
  444. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/quality/cross_check.py +0 -0
  445. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/quality/dependency_impact.py +0 -0
  446. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/quality/external_checks.py +0 -0
  447. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/quality/failure_classification.py +0 -0
  448. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/quality/packs.py +0 -0
  449. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/quality/security_analysis.py +0 -0
  450. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/quality/validation_ladder.py +0 -0
  451. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/reporting/__init__.py +0 -0
  452. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/reporting/attention.py +0 -0
  453. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/reporting/change_summary.py +0 -0
  454. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/reporting/event_feed.py +0 -0
  455. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/reporting/execution_resources.py +0 -0
  456. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/reporting/multi_run.py +0 -0
  457. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/reporting/progress_bridge.py +0 -0
  458. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/reporting/progress_hooks.py +0 -0
  459. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/reporting/progress_terminal.py +0 -0
  460. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/reporting/progress_view.py +0 -0
  461. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/reporting/status_view.py +0 -0
  462. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/reporting/usage_export.py +0 -0
  463. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/research/__init__.py +0 -0
  464. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/research/evidence.py +0 -0
  465. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/research/preflight.py +0 -0
  466. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/research/provenance.py +0 -0
  467. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/research/validation.py +0 -0
  468. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/resources.py +0 -0
  469. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/review/__init__.py +0 -0
  470. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/review/provenance.py +0 -0
  471. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/review/validation.py +0 -0
  472. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/review_mesh/__init__.py +0 -0
  473. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/review_mesh/assignments.py +0 -0
  474. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/review_mesh/contracts.py +0 -0
  475. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/review_mesh/independence.py +0 -0
  476. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/review_mesh/operator_templates.py +0 -0
  477. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/review_mesh/preflight.py +0 -0
  478. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/review_mesh/quorum.py +0 -0
  479. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/review_mesh/recommendation.py +0 -0
  480. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/review_mesh/results.py +0 -0
  481. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/review_mesh/synthesis.py +0 -0
  482. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/review_mesh/validation_helpers.py +0 -0
  483. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/runner/__init__.py +0 -0
  484. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/runner/core.py +0 -0
  485. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/runner/sandbox_receipts.py +0 -0
  486. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/specification/__init__.py +0 -0
  487. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/specification/completion_check.py +0 -0
  488. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/specification/completion_gate.py +0 -0
  489. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/specification/completion_signal.py +0 -0
  490. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/specification/validation.py +0 -0
  491. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/__init__.py +0 -0
  492. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/artifact_builders.py +0 -0
  493. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/artifacts.py +0 -0
  494. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/audit_evidence.py +0 -0
  495. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/authorization.py +0 -0
  496. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/budget_decisions.py +0 -0
  497. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/budget_policy.py +0 -0
  498. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/budget_receipts.py +0 -0
  499. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/bug_forensics_gates.py +0 -0
  500. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/checkpoint_gate.py +0 -0
  501. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/closing_policy.py +0 -0
  502. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/closing_window.py +0 -0
  503. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/continuation.py +0 -0
  504. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/continuation_batch.py +0 -0
  505. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/controller.py +0 -0
  506. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/deadline_guards.py +0 -0
  507. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/events.py +0 -0
  508. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/final_proof_integrity.py +0 -0
  509. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/finalization.py +0 -0
  510. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/gates.py +0 -0
  511. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/immutable_input.py +0 -0
  512. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/implementation_audit_gate.py +0 -0
  513. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/initialization.py +0 -0
  514. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/leases.py +0 -0
  515. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/limited_usage.py +0 -0
  516. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/lineage.py +0 -0
  517. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/managed_runner.py +0 -0
  518. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/model_usage.py +0 -0
  519. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/next_action.py +0 -0
  520. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/operation_kernel.py +0 -0
  521. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/plan_adoption.py +0 -0
  522. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/query.py +0 -0
  523. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/review_mesh_gate.py +0 -0
  524. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/reviews.py +0 -0
  525. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/risk_execution_gate.py +0 -0
  526. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/run.py +0 -0
  527. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/run_transitions.py +0 -0
  528. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/sandbox_policy.py +0 -0
  529. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/sandbox_receipts.py +0 -0
  530. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/selectors.py +0 -0
  531. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/state.py +0 -0
  532. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/storage.py +0 -0
  533. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/storage_io.py +0 -0
  534. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/task_outcomes.py +0 -0
  535. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/task_start.py +0 -0
  536. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/task_transitions.py +0 -0
  537. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/transactions.py +0 -0
  538. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/workflow/transition_contract.py +0 -0
  539. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/worktree/__init__.py +0 -0
  540. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle/worktree/isolation.py +0 -0
  541. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle_kit.egg-info/SOURCES.txt +0 -0
  542. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle_kit.egg-info/dependency_links.txt +0 -0
  543. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.0}/src/agent_lifecycle_kit.egg-info/entry_points.txt +0 -0
  544. {agent_lifecycle_kit-2.39.0 → agent_lifecycle_kit-2.40.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.39.0
3
+ Version: 2.40.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
@@ -42,7 +42,7 @@ Release 2.28 adds [bounded lifecycle and accounting baselines](docs/reference/pe
42
42
  ## Quick start
43
43
  Start with [install ALK and make the first run](docs/guides/install-and-first-run.md). Release 2.23 adds [compact S0/S1 authoring](docs/reference/tier-proportional-plan-packages.md) with explicit checklist completion and unchanged approval gates. Release 2.22 adds [conservative plan-review reuse](docs/reference/conservative-delta-review.md) with independent current applicability and no automatic full reruns. Release 2.21 adds [command accounting, bounded preparation and response recovery](docs/reference/source-native-workflow-accounting.md). Release 2.20 adds [target-bound initialization](docs/reference/cli.md#release-220-composed-initialization-and-digest-display), [bounded local continuation](docs/reference/workflow-continuation.md) and batched Git snapshots. Release 2.19 adds [safe artifact authoring and planning preflight](docs/reference/safe-artifact-authoring.md), [bounded review handoff](docs/reference/review-mesh.md#bounded-review-handoff) and thin skills with complete references. Release 2.18 bounds process/Git diagnostics, hardens signing and distinguishes OpenCode 1.x/2.x compatibility ([adapter notes](docs/adapters/opencode.md)); 2.17 strengthens [workflow validation and recovery](docs/reference/workflow-completeness.md). Release 2.16 introduced cumulative accounting within verified host capabilities; see [retention maintenance](docs/operations/retention-maintenance.md).
44
44
 
45
- It includes macOS, Linux and Windows instructions, Python 3.11-3.15, [PyPI](https://pypi.org/project/agent-lifecycle-kit/) installation with `python -m pip install agent-lifecycle-kit==2.39.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).
45
+ It includes macOS, Linux and Windows instructions, Python 3.11-3.15, [PyPI](https://pypi.org/project/agent-lifecycle-kit/) installation with `python -m pip install agent-lifecycle-kit==2.40.0`, and common `agent-lifecycle version` errors. See [2.15 migration notes](docs/reference/cli.md#migrating-authority-artifacts-to-215) and [authority boundaries](docs/reference/authority-artifact-boundaries.md).
46
46
 
47
47
  For a quick start, run:
48
48
 
@@ -19,7 +19,7 @@ Release 2.28 adds [bounded lifecycle and accounting baselines](docs/reference/pe
19
19
  ## Quick start
20
20
  Start with [install ALK and make the first run](docs/guides/install-and-first-run.md). Release 2.23 adds [compact S0/S1 authoring](docs/reference/tier-proportional-plan-packages.md) with explicit checklist completion and unchanged approval gates. Release 2.22 adds [conservative plan-review reuse](docs/reference/conservative-delta-review.md) with independent current applicability and no automatic full reruns. Release 2.21 adds [command accounting, bounded preparation and response recovery](docs/reference/source-native-workflow-accounting.md). Release 2.20 adds [target-bound initialization](docs/reference/cli.md#release-220-composed-initialization-and-digest-display), [bounded local continuation](docs/reference/workflow-continuation.md) and batched Git snapshots. Release 2.19 adds [safe artifact authoring and planning preflight](docs/reference/safe-artifact-authoring.md), [bounded review handoff](docs/reference/review-mesh.md#bounded-review-handoff) and thin skills with complete references. Release 2.18 bounds process/Git diagnostics, hardens signing and distinguishes OpenCode 1.x/2.x compatibility ([adapter notes](docs/adapters/opencode.md)); 2.17 strengthens [workflow validation and recovery](docs/reference/workflow-completeness.md). Release 2.16 introduced cumulative accounting within verified host capabilities; see [retention maintenance](docs/operations/retention-maintenance.md).
21
21
 
22
- It includes macOS, Linux and Windows instructions, Python 3.11-3.15, [PyPI](https://pypi.org/project/agent-lifecycle-kit/) installation with `python -m pip install agent-lifecycle-kit==2.39.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).
22
+ It includes macOS, Linux and Windows instructions, Python 3.11-3.15, [PyPI](https://pypi.org/project/agent-lifecycle-kit/) installation with `python -m pip install agent-lifecycle-kit==2.40.0`, and common `agent-lifecycle version` errors. See [2.15 migration notes](docs/reference/cli.md#migrating-authority-artifacts-to-215) and [authority boundaries](docs/reference/authority-artifact-boundaries.md).
23
23
 
24
24
  For a quick start, run:
25
25
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "agent-lifecycle-kit"
7
- version = "2.39.0"
7
+ version = "2.40.0"
8
8
  description = "Provider-neutral lifecycle control layer that helps coding agents plan, execute, validate, and prove software tasks to completion."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11,<3.16"
@@ -1,3 +1,3 @@
1
1
  """Package version."""
2
2
 
3
- __version__ = "2.39.0"
3
+ __version__ = "2.40.0"
@@ -156,6 +156,97 @@ _SIDECAR_FIELDS = frozenset(
156
156
  )
157
157
 
158
158
 
159
+ def _closing_sidecar_owner(
160
+ item: dict,
161
+ operations: dict,
162
+ seen: set[str],
163
+ window: str,
164
+ proposal: dict,
165
+ effect_digest: str,
166
+ ) -> tuple[str, str]:
167
+ """Validate sidecar membership before inspecting native financial facts."""
168
+ if (
169
+ type(item) is not dict
170
+ or set(item) != _SIDECAR_FIELDS
171
+ or (item.get("schemaVersion") != "agent-closing-operation-binding.v1")
172
+ ):
173
+ _unavailable("Closing operation sidecar is malformed")
174
+ operation_id = item.get("operationId")
175
+ if type(operation_id) is not str or operation_id in seen or operation_id not in operations:
176
+ _unavailable("Closing operation is duplicated or absent from native accounting")
177
+ seen.add(operation_id)
178
+ if item.get("closingWindowId") != window:
179
+ _unavailable("Closing operation belongs to another window")
180
+ if (
181
+ item.get("runId") != proposal["runId"]
182
+ or item.get("budgetScopeId") != proposal["budgetScopeId"]
183
+ or item.get("bindingId") != proposal["bindingId"]
184
+ or item.get("policyEffectDigest") != effect_digest
185
+ or item.get("unit") != proposal["unit"]
186
+ ):
187
+ _unavailable("Closing operation differs from the signed scope")
188
+ for revision_name in ("expectedJournalRevision", "expectedWorkflowRevision", "expectedAuthorityEpoch"):
189
+ if _amount(item[revision_name], revision_name) > (1 << 53) - 1:
190
+ _unavailable("Closing operation revision exceeds the safe-integer domain")
191
+ if (
192
+ type(item["expectedGuardStateDigest"]) is not str
193
+ or re.fullmatch(r"[0-9a-f]{64}", item["expectedGuardStateDigest"]) is None
194
+ ):
195
+ _unavailable("Closing guard identity is malformed")
196
+ owner = _owner_key(item.get("owner"))
197
+ return operation_id, owner
198
+
199
+
200
+ def _validate_closing_native_binding(
201
+ item: dict,
202
+ native: dict,
203
+ operation_id: str,
204
+ owner: str,
205
+ proposal: dict,
206
+ ) -> None:
207
+ """Require the exact persisted native identity for this sidecar."""
208
+ binding = native.get("binding")
209
+ if type(binding) is not dict or native.get("digest") != digest(binding):
210
+ _unavailable("Native operation binding is corrupted")
211
+ if (
212
+ item.get("nativeOperationDigest") != native["digest"]
213
+ or binding.get("operation_id") != operation_id
214
+ or binding.get("budget_scope_id") != proposal["budgetScopeId"]
215
+ or binding.get("run_id") != proposal["runId"]
216
+ or (binding.get("task_id") or "") != owner
217
+ or binding.get("unit_definition_id") != proposal["unit"]["unitDefinitionId"]
218
+ or binding.get("upper_bound_tokens") != item.get("upperBound")
219
+ ):
220
+ _unavailable("Closing sidecar does not match the native operation")
221
+
222
+
223
+ def _closing_native_amounts(item: dict, native: dict) -> tuple[int | None, int]:
224
+ """Preserve settlement and reservation checks in their original order."""
225
+ upper = _amount(item["upperBound"], "operation upper bound")
226
+ reserved = _amount(native.get("reservation"), "native reservation")
227
+ if reserved not in {0, upper}:
228
+ _unavailable("Native reservation has an unsupported partial value")
229
+ actual = native.get("actual")
230
+ if actual is not None:
231
+ _amount(actual, "native actual")
232
+ native_status = native.get("state")
233
+ if native_status not in {
234
+ "RESERVED",
235
+ "DISPATCHED",
236
+ "UNAVAILABLE",
237
+ "SETTLED",
238
+ "CANCELLED_WITH_NO_DISPATCH_PROOF",
239
+ }:
240
+ _unavailable("Native operation state is unsupported")
241
+ if (native_status == "SETTLED") != (actual is not None):
242
+ _unavailable("Native settlement state and actual differ")
243
+ if native_status in {"SETTLED", "CANCELLED_WITH_NO_DISPATCH_PROOF"} and reserved != 0:
244
+ _unavailable("Finalized operation still holds a reservation")
245
+ if native_status in {"RESERVED", "DISPATCHED", "UNAVAILABLE"} and reserved != upper:
246
+ _unavailable("Pending operation lost its reservation")
247
+ return actual, reserved
248
+
249
+
159
250
  def _window_operations(
160
251
  state: dict,
161
252
  proposal: dict,
@@ -170,71 +261,17 @@ def _window_operations(
170
261
  totals: dict[str, dict[str, int]] = {}
171
262
  seen: set[str] = set()
172
263
  for item in bindings:
173
- if (
174
- type(item) is not dict
175
- or set(item) != _SIDECAR_FIELDS
176
- or (item.get("schemaVersion") != "agent-closing-operation-binding.v1")
177
- ):
178
- _unavailable("Closing operation sidecar is malformed")
179
- operation_id = item.get("operationId")
180
- if type(operation_id) is not str or operation_id in seen or operation_id not in operations:
181
- _unavailable("Closing operation is duplicated or absent from native accounting")
182
- seen.add(operation_id)
183
- if item.get("closingWindowId") != window:
184
- _unavailable("Closing operation belongs to another window")
185
- if (
186
- item.get("runId") != proposal["runId"]
187
- or item.get("budgetScopeId") != proposal["budgetScopeId"]
188
- or item.get("bindingId") != proposal["bindingId"]
189
- or item.get("policyEffectDigest") != effect_digest
190
- or item.get("unit") != proposal["unit"]
191
- ):
192
- _unavailable("Closing operation differs from the signed scope")
193
- for revision_name in ("expectedJournalRevision", "expectedWorkflowRevision", "expectedAuthorityEpoch"):
194
- if _amount(item[revision_name], revision_name) > (1 << 53) - 1:
195
- _unavailable("Closing operation revision exceeds the safe-integer domain")
196
- if (
197
- type(item["expectedGuardStateDigest"]) is not str
198
- or re.fullmatch(r"[0-9a-f]{64}", item["expectedGuardStateDigest"]) is None
199
- ):
200
- _unavailable("Closing guard identity is malformed")
201
- owner = _owner_key(item.get("owner"))
264
+ operation_id, owner = _closing_sidecar_owner(
265
+ item,
266
+ operations,
267
+ seen,
268
+ window,
269
+ proposal,
270
+ effect_digest,
271
+ )
202
272
  native = operations[operation_id]
203
- binding = native.get("binding")
204
- if type(binding) is not dict or native.get("digest") != digest(binding):
205
- _unavailable("Native operation binding is corrupted")
206
- if (
207
- item.get("nativeOperationDigest") != native["digest"]
208
- or binding.get("operation_id") != operation_id
209
- or binding.get("budget_scope_id") != proposal["budgetScopeId"]
210
- or binding.get("run_id") != proposal["runId"]
211
- or (binding.get("task_id") or "") != owner
212
- or binding.get("unit_definition_id") != proposal["unit"]["unitDefinitionId"]
213
- or binding.get("upper_bound_tokens") != item.get("upperBound")
214
- ):
215
- _unavailable("Closing sidecar does not match the native operation")
216
- upper = _amount(item["upperBound"], "operation upper bound")
217
- reserved = _amount(native.get("reservation"), "native reservation")
218
- if reserved not in {0, upper}:
219
- _unavailable("Native reservation has an unsupported partial value")
220
- actual = native.get("actual")
221
- if actual is not None:
222
- _amount(actual, "native actual")
223
- native_status = native.get("state")
224
- if native_status not in {
225
- "RESERVED",
226
- "DISPATCHED",
227
- "UNAVAILABLE",
228
- "SETTLED",
229
- "CANCELLED_WITH_NO_DISPATCH_PROOF",
230
- }:
231
- _unavailable("Native operation state is unsupported")
232
- if (native_status == "SETTLED") != (actual is not None):
233
- _unavailable("Native settlement state and actual differ")
234
- if native_status in {"SETTLED", "CANCELLED_WITH_NO_DISPATCH_PROOF"} and reserved != 0:
235
- _unavailable("Finalized operation still holds a reservation")
236
- if native_status in {"RESERVED", "DISPATCHED", "UNAVAILABLE"} and reserved != upper:
237
- _unavailable("Pending operation lost its reservation")
273
+ _validate_closing_native_binding(item, native, operation_id, owner, proposal)
274
+ actual, reserved = _closing_native_amounts(item, native)
238
275
  row = totals.setdefault(owner, {"spent": 0, "reservations": 0})
239
276
  row["spent"] = _sum([row["spent"], actual or 0], "window spend")
240
277
  row["reservations"] = _sum([row["reservations"], reserved], "window reservations")
@@ -275,19 +312,15 @@ def _protected_buckets(state: dict, proposal: dict, buckets: list[dict], owners:
275
312
  return current
276
313
 
277
314
 
278
- def reconstruct_closing_balances(
315
+ def _validate_closing_reconstruction(
279
316
  state: dict,
280
317
  journal_revision: int,
281
318
  proposal: dict,
282
319
  operation_bindings: list[dict],
283
320
  protection_buckets: list[dict],
284
321
  policy_effect_digest: str,
285
- ) -> list[dict]:
286
- """Rebuild all owner rows from persisted membership and current native state.
287
-
288
- A caller must authenticate the proposal, effect, and SQL snapshot separately.
289
- Returned rows deliberately contain no financial admission or permission.
290
- """
322
+ ) -> tuple[int, list[dict]]:
323
+ """Validate reconstruction scope and domain before selecting native owners."""
291
324
  if type(state) is not dict or type(proposal) is not dict:
292
325
  _unavailable("Native state or closing proposal is missing")
293
326
  if proposal.get("schemaVersion") != "agent-closing-resource-proposal.v1":
@@ -314,6 +347,11 @@ def reconstruct_closing_balances(
314
347
  limits = proposal.get("limits")
315
348
  if type(limits) is not list or not limits:
316
349
  _unavailable("Closing owner inventory is missing")
350
+ return revision, limits
351
+
352
+
353
+ def _select_closing_owner_limits(state: dict, limits: list[dict]) -> dict[str, dict]:
354
+ """Require complete owner membership and consistent known financial facts."""
317
355
  selected: dict[str, dict] = {}
318
356
  for item in limits:
319
357
  try:
@@ -333,6 +371,77 @@ def reconstruct_closing_balances(
333
371
  or state.get("opening", {}).get("pending_operations") != []
334
372
  ):
335
373
  _unavailable("Native qualification contradicts unknown financial facts")
374
+ return selected
375
+
376
+
377
+ def _closing_balance_row(
378
+ native: Any,
379
+ owner: str,
380
+ limit: dict,
381
+ proposal: dict,
382
+ revision: int,
383
+ qualified: bool,
384
+ status: str,
385
+ window: dict[str, int],
386
+ pool: int,
387
+ ) -> dict:
388
+ """Project one validated owner without granting financial authority."""
389
+ entry = native.tasks[owner] if owner else None
390
+ known = entry["known_spent"] if entry else native.known_spent
391
+ spent = entry["spent"] if entry else native.spent
392
+ reserved = entry["active_reservations"] if entry else native.active_reservations
393
+ protected = entry["protected_closeout"] if entry else native.protected_closeout
394
+ enabled = limit["participation"] == "CLOSING_ENABLED"
395
+ if not enabled and (window["spent"] or window["reservations"] or pool):
396
+ _unavailable("Retained task acquired new-window resources")
397
+ if protected is not None and pool > protected:
398
+ _unavailable("Window protection exceeds native owner pool")
399
+ return {
400
+ "schemaVersion": "agent-closing-resource-balance.v1",
401
+ "runId": proposal["runId"],
402
+ "budgetScopeId": proposal["budgetScopeId"],
403
+ "closingWindowId": proposal["closingWindowId"],
404
+ "journalRevision": revision,
405
+ "unit": proposal["unit"],
406
+ "scope": limit["scope"],
407
+ "spentAtActivation": limit["knownSpentAtAnchor"],
408
+ "currentKnownCumulativeSpent": known,
409
+ "currentCumulativeSpent": spent if qualified else None,
410
+ "windowKnownSpent": window["spent"],
411
+ "windowSpent": window["spent"] if qualified else None,
412
+ "allActiveReservations": reserved,
413
+ "windowActiveReservations": window["reservations"] if reserved is not None else None,
414
+ "globalProtected": protected,
415
+ "windowProtected": pool if protected is not None else None,
416
+ "cumulativeCeiling": limit["prospectiveCumulativeCeiling"],
417
+ "windowAllowance": limit["approvedAdditional"],
418
+ "priorViolationsDigest": limit["priorViolationSetDigest"],
419
+ "qualification": status,
420
+ }
421
+
422
+
423
+ def reconstruct_closing_balances(
424
+ state: dict,
425
+ journal_revision: int,
426
+ proposal: dict,
427
+ operation_bindings: list[dict],
428
+ protection_buckets: list[dict],
429
+ policy_effect_digest: str,
430
+ ) -> list[dict]:
431
+ """Rebuild all owner rows from persisted membership and current native state.
432
+
433
+ A caller must authenticate the proposal, effect, and SQL snapshot separately.
434
+ Returned rows deliberately contain no financial admission or permission.
435
+ """
436
+ revision, limits = _validate_closing_reconstruction(
437
+ state,
438
+ journal_revision,
439
+ proposal,
440
+ operation_bindings,
441
+ protection_buckets,
442
+ policy_effect_digest,
443
+ )
444
+ selected = _select_closing_owner_limits(state, limits)
336
445
  operation_totals = _window_operations(state, proposal, operation_bindings, policy_effect_digest)
337
446
  if not set(operation_totals) <= set(selected):
338
447
  _unavailable("Closing operation has no owner")
@@ -353,45 +462,24 @@ def reconstruct_closing_balances(
353
462
  run_reserved = _sum([x["reservations"] for x in operation_totals.values()], "run window reservations")
354
463
  rows = []
355
464
  for owner, limit in selected.items():
356
- entry = native.tasks[owner] if owner else None
357
- known = entry["known_spent"] if entry else native.known_spent
358
- spent = entry["spent"] if entry else native.spent
359
- reserved = entry["active_reservations"] if entry else native.active_reservations
360
- protected = entry["protected_closeout"] if entry else native.protected_closeout
361
465
  window = operation_totals.get(owner, {"spent": 0, "reservations": 0})
362
466
  if owner == "":
363
467
  window = {"spent": run_spent, "reservations": run_reserved}
364
468
  pool = _sum(list(window_protected.values()), "run window protection")
365
469
  else:
366
470
  pool = window_protected.get(owner, 0)
367
- enabled = limit["participation"] == "CLOSING_ENABLED"
368
- if not enabled and (window["spent"] or window["reservations"] or pool):
369
- _unavailable("Retained task acquired new-window resources")
370
- if protected is not None and pool > protected:
371
- _unavailable("Window protection exceeds native owner pool")
372
471
  rows.append(
373
- {
374
- "schemaVersion": "agent-closing-resource-balance.v1",
375
- "runId": proposal["runId"],
376
- "budgetScopeId": proposal["budgetScopeId"],
377
- "closingWindowId": proposal["closingWindowId"],
378
- "journalRevision": revision,
379
- "unit": unit,
380
- "scope": limit["scope"],
381
- "spentAtActivation": limit["knownSpentAtAnchor"],
382
- "currentKnownCumulativeSpent": known,
383
- "currentCumulativeSpent": spent if qualified else None,
384
- "windowKnownSpent": window["spent"],
385
- "windowSpent": window["spent"] if qualified else None,
386
- "allActiveReservations": reserved,
387
- "windowActiveReservations": window["reservations"] if reserved is not None else None,
388
- "globalProtected": protected,
389
- "windowProtected": pool if protected is not None else None,
390
- "cumulativeCeiling": limit["prospectiveCumulativeCeiling"],
391
- "windowAllowance": limit["approvedAdditional"],
392
- "priorViolationsDigest": limit["priorViolationSetDigest"],
393
- "qualification": status,
394
- }
472
+ _closing_balance_row(
473
+ native,
474
+ owner,
475
+ limit,
476
+ proposal,
477
+ revision,
478
+ qualified,
479
+ status,
480
+ window,
481
+ pool,
482
+ )
395
483
  )
396
484
  return rows
397
485
 
@@ -5,7 +5,9 @@ from __future__ import annotations
5
5
  import hashlib
6
6
  import os
7
7
  import re
8
+ import secrets
8
9
  import stat
10
+ from contextlib import ExitStack
9
11
  from dataclasses import dataclass
10
12
  from pathlib import Path
11
13
  from typing import Any
@@ -22,6 +24,8 @@ from agent_lifecycle.accounting.declared_ledger_records import (
22
24
  )
23
25
  from agent_lifecycle.contracts import LifecycleError, canonical_bytes, canonical_digest
24
26
  from agent_lifecycle.contracts.authority_io import (
27
+ create_authority_bytes,
28
+ hold_authority_read_fd,
25
29
  normalize_authority_path,
26
30
  read_authority_bytes,
27
31
  replace_authority_bytes,
@@ -371,6 +375,22 @@ def _decode_coordinator_origin(
371
375
  }
372
376
 
373
377
 
378
+ def _r11_coordinator_claim_matches(primary: Path, pending: Path, owned_claim: tuple[bytes, int] | None) -> bool:
379
+ if owned_claim is None:
380
+ return not pending.exists() and not pending.is_symlink()
381
+ raw, descriptor = owned_claim
382
+ try:
383
+ held, current = os.fstat(descriptor), pending.lstat()
384
+ return (
385
+ stat.S_ISREG(current.st_mode)
386
+ and os.path.samestat(held, current)
387
+ and held.st_mode == current.st_mode
388
+ and read_authority_bytes(pending, root=primary, max_bytes=131_072) == raw
389
+ )
390
+ except (OSError, LifecycleError):
391
+ return False
392
+
393
+
374
394
  def read_coordinator_cost_head(project_root: Path, *, ancestor_head_sha256: str | None = None) -> dict[str, Any]:
375
395
  """Read current declared provenance and optionally prove a pinned ancestor.
376
396
 
@@ -379,6 +399,15 @@ def read_coordinator_cost_head(project_root: Path, *, ancestor_head_sha256: str
379
399
  Missing, altered, cyclic, over-limit or pending ancestry never falls back to
380
400
  a current-balance comparison. This reads no session history or telemetry.
381
401
  """
402
+ return _read_coordinator_cost_head(project_root, ancestor_head_sha256=ancestor_head_sha256)
403
+
404
+
405
+ def _read_coordinator_cost_head(
406
+ project_root: Path,
407
+ *,
408
+ ancestor_head_sha256: str | None = None,
409
+ owned_claim: tuple[bytes, int] | None = None,
410
+ ) -> dict[str, Any]:
382
411
  _require(
383
412
  ancestor_head_sha256 is None
384
413
  or (isinstance(ancestor_head_sha256, str) and re.fullmatch("[0-9a-f]{64}", ancestor_head_sha256) is not None),
@@ -389,7 +418,7 @@ def read_coordinator_cost_head(project_root: Path, *, ancestor_head_sha256: str
389
418
  path = primary / _R11_COORDINATOR_HEAD
390
419
  pending = path.with_suffix(".pending.json")
391
420
  _require(
392
- not pending.exists() and not pending.is_symlink(),
421
+ _r11_coordinator_claim_matches(primary, pending, owned_claim),
393
422
  "r11-opening-pending",
394
423
  "coordinator head update is unresolved",
395
424
  )
@@ -495,8 +524,7 @@ def read_coordinator_cost_head(project_root: Path, *, ancestor_head_sha256: str
495
524
  stable = (
496
525
  _r11_coordinator_head_bytes(primary) == raw
497
526
  and all(read_authority_bytes(p, root=primary, max_bytes=131_072) == value for p, value in observed.items())
498
- and not pending.exists()
499
- and not pending.is_symlink()
527
+ and _r11_coordinator_claim_matches(primary, pending, owned_claim)
500
528
  )
501
529
  except OSError:
502
530
  stable = False
@@ -575,8 +603,6 @@ def advance_coordinator_cost_head(project_root: Path, *, source_path: str) -> di
575
603
 
576
604
  def exclusive(target: Path, raw: bytes) -> None:
577
605
  if os.name == "nt":
578
- from agent_lifecycle.contracts.authority_io import create_authority_bytes
579
-
580
606
  create_authority_bytes(target, raw, root=primary, private=True)
581
607
  return
582
608
  fd = os.open(target, os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o600)
@@ -587,44 +613,58 @@ def advance_coordinator_cost_head(project_root: Path, *, source_path: str) -> di
587
613
 
588
614
  # Refuse unsupported durability before creating a sticky claim.
589
615
  _sync_directory(path.parent)
590
- exclusive(pending, canonical_bytes(head))
591
- _sync_directory(path.parent)
592
- if (
593
- _r11_coordinator_head_bytes(primary) != previous_raw
594
- or read_authority_bytes(primary / source_path, root=primary, max_bytes=131_072) != source_raw
595
- ):
596
- # This writer has not touched the head. Release only its own stale claim;
597
- # a competing successful update must not be left blocked by this loser.
598
- pending.unlink()
599
- _sync_directory(path.parent)
600
- raise LifecycleError("r11-opening-stale", "source/head changed after update claim")
601
- if previous_raw is not None:
602
- archive = path.parent / "coordinator-cost-head-history"
603
- if os.name == "nt":
604
- from agent_lifecycle.contracts.private_storage import ensure_private_directory
605
-
606
- ensure_private_directory(archive, boundary=path.parent)
607
- else:
608
- archive.mkdir(mode=0o700, exist_ok=True)
609
- _require(stat.S_ISDIR(archive.lstat().st_mode), "r11-opening-origin", "head archive is indirect")
610
- archived = archive / (hashlib.sha256(previous_raw).hexdigest() + ".json")
611
- if archived.exists():
616
+ claim = canonical_bytes({"head": head, "ownerNonce": secrets.token_hex(16)})
617
+ create_authority_bytes(pending, claim, root=primary, private=True)
618
+ with ExitStack() as guards:
619
+ descriptor = guards.enter_context(hold_authority_read_fd(pending, root=primary))
620
+ ownership = (claim, descriptor)
621
+ try:
612
622
  _require(
613
- read_authority_bytes(archived, root=primary, max_bytes=131_072) == previous_raw,
614
- "r11-opening-origin",
615
- "previous head archive differs",
623
+ _r11_coordinator_claim_matches(primary, pending, ownership),
624
+ "r11-opening-pending",
625
+ "coordinator claim ownership changed",
616
626
  )
617
- else:
618
- exclusive(archived, previous_raw)
619
- _sync_directory(archive)
620
- exclusive(temporary, canonical_bytes(head))
621
- _sync_directory(path.parent)
622
- replace_authority_bytes(path, canonical_bytes(head), root=primary)
623
- temporary.unlink()
624
- _sync_directory(path.parent)
627
+ _sync_directory(path.parent)
628
+ if (
629
+ _r11_coordinator_head_bytes(primary) != previous_raw
630
+ or read_authority_bytes(primary / source_path, root=primary, max_bytes=131_072) != source_raw
631
+ ):
632
+ guards.close()
633
+ pending.unlink()
634
+ _sync_directory(path.parent)
635
+ raise LifecycleError("r11-opening-stale", "source/head changed after update claim")
636
+ if previous_raw is not None:
637
+ archive = path.parent / "coordinator-cost-head-history"
638
+ if os.name == "nt":
639
+ from agent_lifecycle.contracts.private_storage import ensure_private_directory
640
+
641
+ ensure_private_directory(archive, boundary=path.parent)
642
+ else:
643
+ archive.mkdir(mode=0o700, exist_ok=True)
644
+ _require(stat.S_ISDIR(archive.lstat().st_mode), "r11-opening-origin", "head archive is indirect")
645
+ archived = archive / (hashlib.sha256(previous_raw).hexdigest() + ".json")
646
+ if archived.exists():
647
+ _require(
648
+ read_authority_bytes(archived, root=primary, max_bytes=131_072) == previous_raw,
649
+ "r11-opening-origin",
650
+ "previous head archive differs",
651
+ )
652
+ else:
653
+ exclusive(archived, previous_raw)
654
+ _sync_directory(archive)
655
+ exclusive(temporary, canonical_bytes(head))
656
+ _sync_directory(path.parent)
657
+ replace_authority_bytes(path, canonical_bytes(head), root=primary)
658
+ temporary.unlink()
659
+ _sync_directory(path.parent)
660
+ result = _read_coordinator_cost_head(project_root, owned_claim=ownership)
661
+ except BaseException:
662
+ # Close normally so an unrelated publication error keeps its type.
663
+ guards.close()
664
+ raise
625
665
  pending.unlink()
626
666
  _sync_directory(path.parent)
627
- return read_coordinator_cost_head(project_root)
667
+ return result
628
668
 
629
669
 
630
670
  def _sync_directory(path: Path) -> None:
@@ -374,6 +374,35 @@ def open_authority_read(path: Path, *, root: Path | None = None) -> Iterator[Bin
374
374
  raise LifecycleError("authority-input-unavailable", "authority input cannot be safely read") from None
375
375
 
376
376
 
377
+ @contextmanager
378
+ def hold_authority_read_fd(path: Path, *, root: Path | None = None) -> Iterator[int]:
379
+ """Borrow a read-only FD; validate file and parents at both boundaries."""
380
+ root, name = authority_location(path, root=root)
381
+ target = root / name
382
+ descriptor = None
383
+ try:
384
+ with open_authority_read(target, root=root) as handle:
385
+ before = os.fstat(handle.fileno())
386
+ parents = [(parent, parent.lstat()) for parent in target.parents]
387
+ descriptor = os.dup(handle.fileno())
388
+ os.set_inheritable(descriptor, False)
389
+ yield descriptor
390
+ with open_authority_read(target, root=root) as handle:
391
+ _same_identity(before, os.fstat(descriptor), content=True)
392
+ _same_identity(before, os.fstat(handle.fileno()), content=True)
393
+ for parent, identity in parents:
394
+ _same_identity(identity, parent.lstat())
395
+ except FileNotFoundError:
396
+ if descriptor is None:
397
+ raise
398
+ raise LifecycleError("authority-input-changed", "authority input changed during I/O") from None
399
+ except OSError:
400
+ raise LifecycleError("authority-input-unavailable", "authority input cannot be safely read") from None
401
+ finally:
402
+ if descriptor is not None:
403
+ os.close(descriptor)
404
+
405
+
377
406
  def read_authority_bytes(path: Path, *, max_bytes: int, root: Path | None = None) -> bytes:
378
407
  """Read bounded stable bytes from the actual descriptor consumed by the caller."""
379
408
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-lifecycle-kit
3
- Version: 2.39.0
3
+ Version: 2.40.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
@@ -42,7 +42,7 @@ Release 2.28 adds [bounded lifecycle and accounting baselines](docs/reference/pe
42
42
  ## Quick start
43
43
  Start with [install ALK and make the first run](docs/guides/install-and-first-run.md). Release 2.23 adds [compact S0/S1 authoring](docs/reference/tier-proportional-plan-packages.md) with explicit checklist completion and unchanged approval gates. Release 2.22 adds [conservative plan-review reuse](docs/reference/conservative-delta-review.md) with independent current applicability and no automatic full reruns. Release 2.21 adds [command accounting, bounded preparation and response recovery](docs/reference/source-native-workflow-accounting.md). Release 2.20 adds [target-bound initialization](docs/reference/cli.md#release-220-composed-initialization-and-digest-display), [bounded local continuation](docs/reference/workflow-continuation.md) and batched Git snapshots. Release 2.19 adds [safe artifact authoring and planning preflight](docs/reference/safe-artifact-authoring.md), [bounded review handoff](docs/reference/review-mesh.md#bounded-review-handoff) and thin skills with complete references. Release 2.18 bounds process/Git diagnostics, hardens signing and distinguishes OpenCode 1.x/2.x compatibility ([adapter notes](docs/adapters/opencode.md)); 2.17 strengthens [workflow validation and recovery](docs/reference/workflow-completeness.md). Release 2.16 introduced cumulative accounting within verified host capabilities; see [retention maintenance](docs/operations/retention-maintenance.md).
44
44
 
45
- It includes macOS, Linux and Windows instructions, Python 3.11-3.15, [PyPI](https://pypi.org/project/agent-lifecycle-kit/) installation with `python -m pip install agent-lifecycle-kit==2.39.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).
45
+ It includes macOS, Linux and Windows instructions, Python 3.11-3.15, [PyPI](https://pypi.org/project/agent-lifecycle-kit/) installation with `python -m pip install agent-lifecycle-kit==2.40.0`, and common `agent-lifecycle version` errors. See [2.15 migration notes](docs/reference/cli.md#migrating-authority-artifacts-to-215) and [authority boundaries](docs/reference/authority-artifact-boundaries.md).
46
46
 
47
47
  For a quick start, run:
48
48
 
@@ -7,7 +7,8 @@
7
7
  "2.36.0",
8
8
  "2.37.0",
9
9
  "2.38.0",
10
- "2.39.0"
10
+ "2.39.0",
11
+ "2.40.0"
11
12
  ],
12
13
  "versionSchema": "agent-lifecycle-version.v1",
13
14
  "continuationSchema": "agent-workflow-continuation-receipt.v1",