agent-lifecycle-kit 2.26.0__tar.gz → 2.28.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 (534) hide show
  1. {agent_lifecycle_kit-2.26.0/src/agent_lifecycle_kit.egg-info → agent_lifecycle_kit-2.28.0}/PKG-INFO +9 -8
  2. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/README.md +6 -6
  3. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/pyproject.toml +3 -2
  4. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/_version.py +1 -1
  5. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/accounting/contracts.py +19 -9
  6. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/accounting/declared_ledger_legacy.py +10 -36
  7. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/accounting/financial_transactions.py +6 -18
  8. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/accounting/journal.py +24 -0
  9. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/private_input.py +10 -36
  10. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/agent_plugin_qualification_schemas.py +28 -11
  11. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/authority_io.py +16 -5
  12. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/performance_limits.py +38 -14
  13. agent_lifecycle_kit-2.28.0/src/agent_lifecycle/contracts/preparation_policy.py +284 -0
  14. agent_lifecycle_kit-2.28.0/src/agent_lifecycle/contracts/private_storage_compat.py +57 -0
  15. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/quality/architecture_policy.py +13 -2
  16. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0/src/agent_lifecycle_kit.egg-info}/PKG-INFO +9 -8
  17. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle_kit.egg-info/SOURCES.txt +1 -0
  18. agent_lifecycle_kit-2.26.0/src/agent_lifecycle/contracts/preparation_policy.py +0 -241
  19. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/LICENSE +0 -0
  20. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/NOTICE +0 -0
  21. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/benchmarks/reference-tasks/README.md +0 -0
  22. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/benchmarks/reference-tasks/manifest.json +0 -0
  23. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/benchmarks/reference-tasks/rt01-planning/oracle.json +0 -0
  24. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/benchmarks/reference-tasks/rt01-planning/task.md +0 -0
  25. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/benchmarks/reference-tasks/rt02-architecture-review/oracle.json +0 -0
  26. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/benchmarks/reference-tasks/rt02-architecture-review/task.md +0 -0
  27. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/benchmarks/reference-tasks/rt03-bug-forensics/oracle.json +0 -0
  28. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/benchmarks/reference-tasks/rt03-bug-forensics/task.md +0 -0
  29. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/benchmarks/reference-tasks/rt04-s1-managed-task/oracle.json +0 -0
  30. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/benchmarks/reference-tasks/rt04-s1-managed-task/task.md +0 -0
  31. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/benchmarks/reference-tasks/rt05-s2-evidence-task/oracle.json +0 -0
  32. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/benchmarks/reference-tasks/rt05-s2-evidence-task/task.md +0 -0
  33. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/setup.cfg +0 -0
  34. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/__init__.py +0 -0
  35. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/__main__.py +0 -0
  36. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/accounting/__init__.py +0 -0
  37. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/accounting/closing_resource_admission.py +0 -0
  38. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/accounting/closing_resource_policy.py +0 -0
  39. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/accounting/closing_resource_recovery.py +0 -0
  40. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/accounting/closing_resources.py +0 -0
  41. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/accounting/closing_types.py +0 -0
  42. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/accounting/declared_ledger.py +0 -0
  43. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/accounting/declared_ledger_records.py +0 -0
  44. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/accounting/host_bridge.py +0 -0
  45. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/accounting/input_fit.py +0 -0
  46. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/accounting/legacy_source_usage.py +0 -0
  47. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/accounting/normalization.py +0 -0
  48. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/accounting/opening_balances.py +0 -0
  49. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/accounting/profile_schema.py +0 -0
  50. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/accounting/source_usage_context.py +0 -0
  51. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/accounting/support_profiles.py +0 -0
  52. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/accounting/usage_types.py +0 -0
  53. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/accounting/workflow_authority_store.py +0 -0
  54. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/accounting/workflow_state_store.py +0 -0
  55. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/accounting/workflow_store.py +0 -0
  56. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/__init__.py +0 -0
  57. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/agent_plugin_probe.py +0 -0
  58. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/attempt_authority.py +0 -0
  59. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/bootstrap_r11.py +0 -0
  60. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/codex_exact_prompt.py +0 -0
  61. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/codex_input_diagnostics.py +0 -0
  62. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/codex_prompt_preparation.py +0 -0
  63. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/codex_source_exposure.py +0 -0
  64. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/codex_source_subject.py +0 -0
  65. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/contracts.py +0 -0
  66. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/env.py +0 -0
  67. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/external_check.py +0 -0
  68. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/external_jobs.py +0 -0
  69. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/immutable_input.py +0 -0
  70. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/input_lifecycle.py +0 -0
  71. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/launch_execution.py +0 -0
  72. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/launch_preflight.py +0 -0
  73. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/launcher.py +0 -0
  74. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/lifecycle_control.py +0 -0
  75. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/limited_native_evidence.py +0 -0
  76. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/local_launch_profile.py +0 -0
  77. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/managed_process.py +0 -0
  78. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/ordinary_audit.py +0 -0
  79. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/planning_launch.py +0 -0
  80. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/planning_session.py +0 -0
  81. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/process.py +0 -0
  82. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/process_admission.py +0 -0
  83. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/process_capture.py +0 -0
  84. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/process_control.py +0 -0
  85. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/process_groups.py +0 -0
  86. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/process_telemetry.py +0 -0
  87. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/qualification.py +0 -0
  88. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/qualification_context.py +0 -0
  89. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/redaction.py +0 -0
  90. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/session_store.py +0 -0
  91. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/source_review_contracts.py +0 -0
  92. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/source_review_history.py +0 -0
  93. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/source_review_inputs.py +0 -0
  94. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/source_review_preparation_records.py +0 -0
  95. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/source_review_roles.py +0 -0
  96. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/source_review_shards.py +0 -0
  97. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/source_review_support.py +0 -0
  98. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/source_review_transcript.py +0 -0
  99. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/start_input.py +0 -0
  100. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/start_receipts.py +0 -0
  101. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/start_routing.py +0 -0
  102. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/task_intake.py +0 -0
  103. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/unified_start.py +0 -0
  104. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/windows_pipe.py +0 -0
  105. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/workflow_bridge.py +0 -0
  106. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/adapter_sessions/worktree_identity.py +0 -0
  107. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/audit/__init__.py +0 -0
  108. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/audit/bug_forensics.py +0 -0
  109. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/audit/delta.py +0 -0
  110. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/audit/delta_review.py +0 -0
  111. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/audit/domain_language.py +0 -0
  112. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/audit/external_checks.py +0 -0
  113. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/audit/implementation.py +0 -0
  114. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/audit/ownership.py +0 -0
  115. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/audit/package.py +0 -0
  116. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/audit/proof_chain.py +0 -0
  117. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/audit/proof_findings.py +0 -0
  118. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/audit/proof_integrity.py +0 -0
  119. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/audit/review_packet.py +0 -0
  120. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/audit/review_verdict.py +0 -0
  121. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/audit/security_analysis.py +0 -0
  122. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/benchmarks/__init__.py +0 -0
  123. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/benchmarks/comparison.py +0 -0
  124. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/benchmarks/contracts.py +0 -0
  125. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/benchmarks/evaluator.py +0 -0
  126. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/benchmarks/oracles.py +0 -0
  127. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/benchmarks/qualification.py +0 -0
  128. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/benchmarks/reporting.py +0 -0
  129. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/benchmarks/stratification.py +0 -0
  130. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/changesets/__init__.py +0 -0
  131. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/changesets/git.py +0 -0
  132. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/changesets/git_io.py +0 -0
  133. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/changesets/snapshot.py +0 -0
  134. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/__init__.py +0 -0
  135. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/adapter.py +0 -0
  136. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/benchmarks.py +0 -0
  137. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/command_registry.py +0 -0
  138. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/compact_plan_commands.py +0 -0
  139. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/dispatch.py +0 -0
  140. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/dispatch_adapters.py +0 -0
  141. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/dispatch_audit.py +0 -0
  142. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/dispatch_contracts.py +0 -0
  143. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/dispatch_lifecycle.py +0 -0
  144. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/dispatch_metrics.py +0 -0
  145. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/dispatch_observability.py +0 -0
  146. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/dispatch_planning.py +0 -0
  147. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/dispatch_research.py +0 -0
  148. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/errors.py +0 -0
  149. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/followup.py +0 -0
  150. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/host_launch.py +0 -0
  151. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/lifecycle_parsers.py +0 -0
  152. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/main.py +0 -0
  153. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/metrics_parser.py +0 -0
  154. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/observability_parsers.py +0 -0
  155. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/parsers.py +0 -0
  156. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/plan_lock_commands.py +0 -0
  157. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/planning_parsers.py +0 -0
  158. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/policy.py +0 -0
  159. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/progress_hooks.py +0 -0
  160. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/project.py +0 -0
  161. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/research.py +0 -0
  162. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/start.py +0 -0
  163. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/strategy.py +0 -0
  164. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/workflow_task_parsers.py +0 -0
  165. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/cli/worktree.py +0 -0
  166. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/compiler/__init__.py +0 -0
  167. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/compiler/output_contract.py +0 -0
  168. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/compiler/phase_packets.py +0 -0
  169. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/compiler/small_model_packets.py +0 -0
  170. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/compiler/task_packets.py +0 -0
  171. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/context/__init__.py +0 -0
  172. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/context/checkpoint_store.py +0 -0
  173. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/context/checkpoints.py +0 -0
  174. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/context/episode_retrieval.py +0 -0
  175. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/context/external_memory.py +0 -0
  176. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/context/profiles.py +0 -0
  177. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/context/rendering.py +0 -0
  178. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/context/thread_bridge_context.py +0 -0
  179. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/__init__.py +0 -0
  180. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/adapter_contract_schemas.py +0 -0
  181. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/adapter_event_schemas.py +0 -0
  182. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/adapter_session_schemas.py +0 -0
  183. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/adapter_task_schemas.py +0 -0
  184. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/artifact_authoring_schemas.py +0 -0
  185. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/audit_optimization_schemas.py +0 -0
  186. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/audit_schemas.py +0 -0
  187. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/authority_text.py +0 -0
  188. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/benchmark_schemas.py +0 -0
  189. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/bounded_json.py +0 -0
  190. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/bug_forensics_schemas.py +0 -0
  191. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/canonical.py +0 -0
  192. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/closing_resource_schemas.py +0 -0
  193. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/closing_time.py +0 -0
  194. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/closing_window_schemas.py +0 -0
  195. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/compact_plan_schemas.py +0 -0
  196. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/compatibility.py +0 -0
  197. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/context_checkpoint_schemas.py +0 -0
  198. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/context_model_schemas.py +0 -0
  199. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/core_schemas.py +0 -0
  200. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/cross_check_schemas.py +0 -0
  201. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/deadline_schemas.py +0 -0
  202. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/deadlines.py +0 -0
  203. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/display_identity.py +0 -0
  204. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/domain_language.py +0 -0
  205. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/domain_language_schemas.py +0 -0
  206. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/ed25519.py +0 -0
  207. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/errors.py +0 -0
  208. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/evidence_import_schemas.py +0 -0
  209. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/evidence_receipt_schemas.py +0 -0
  210. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/execution_strategy_schemas.py +0 -0
  211. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/execution_target.py +0 -0
  212. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/external_check_schemas.py +0 -0
  213. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/external_job_schemas.py +0 -0
  214. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/finding_check_schemas.py +0 -0
  215. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/goal_validation.py +0 -0
  216. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/host_capability_schemas.py +0 -0
  217. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/immutable_input_schemas.py +0 -0
  218. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/implementation_audit_validation.py +0 -0
  219. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/import_dialect_schemas.py +0 -0
  220. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/independent_evidence_schemas.py +0 -0
  221. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/launch_qualification.py +0 -0
  222. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/legacy_runner_schemas.py +0 -0
  223. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/lifecycle_action_catalog.py +0 -0
  224. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/lifecycle_control_definitions.py +0 -0
  225. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/lifecycle_control_schemas.py +0 -0
  226. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/lifecycle_control_validation.py +0 -0
  227. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/local_launch_validation.py +0 -0
  228. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/metric_schemas.py +0 -0
  229. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/model_classes.py +0 -0
  230. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/multi_run_view_schemas.py +0 -0
  231. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/ownership_paths.py +0 -0
  232. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/paths.py +0 -0
  233. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/persistence.py +0 -0
  234. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/phase_packet_schemas.py +0 -0
  235. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/plan_contract_schemas.py +0 -0
  236. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/plan_delta_schemas.py +0 -0
  237. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/plan_manifest_schemas.py +0 -0
  238. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/planning_launch_schemas.py +0 -0
  239. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/policy_schemas.py +0 -0
  240. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/private_storage.py +0 -0
  241. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/process_execution_schemas.py +0 -0
  242. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/process_lock.py +0 -0
  243. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/process_redaction.py +0 -0
  244. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/progress_bridge_schemas.py +0 -0
  245. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/progress_hook_schemas.py +0 -0
  246. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/project_profile_preset_schemas.py +0 -0
  247. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/project_profile_schemas.py +0 -0
  248. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/proof_integrity_schemas.py +0 -0
  249. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/proof_validation.py +0 -0
  250. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/public_locators.py +0 -0
  251. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/quality_modes.py +0 -0
  252. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/redaction.py +0 -0
  253. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/release_accounting_schemas.py +0 -0
  254. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/release_contract_schemas.py +0 -0
  255. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/research_evidence_schemas.py +0 -0
  256. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/review_input_types.py +0 -0
  257. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/review_mesh_recommendation_schemas.py +0 -0
  258. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/review_mesh_schemas.py +0 -0
  259. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/review_quality_schemas.py +0 -0
  260. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/review_round_schemas.py +0 -0
  261. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/review_verdict.py +0 -0
  262. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/reviewer_identity_schemas.py +0 -0
  263. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/runner_schemas.py +0 -0
  264. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/runner_worktree_schemas.py +0 -0
  265. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/sandbox_schemas.py +0 -0
  266. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/schema_builders.py +0 -0
  267. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/schemas.py +0 -0
  268. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/scoped_usage_schemas.py +0 -0
  269. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/security_analysis_schemas.py +0 -0
  270. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/statistical_evidence_schemas.py +0 -0
  271. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/status_goal_schemas.py +0 -0
  272. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/structured_result_schemas.py +0 -0
  273. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/task_template_schemas.py +0 -0
  274. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/thread_bridge_schema_definitions.py +0 -0
  275. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/thread_bridge_schemas.py +0 -0
  276. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/thread_bridge_validation.py +0 -0
  277. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/token_estimation.py +0 -0
  278. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/usage_export_schemas.py +0 -0
  279. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/validation.py +0 -0
  280. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/validation_ladder_schemas.py +0 -0
  281. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/windows_security.py +0 -0
  282. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/workflow_artifact_schemas.py +0 -0
  283. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/workflow_authority.py +0 -0
  284. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/workflow_authority_schemas.py +0 -0
  285. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/workflow_authorization_schemas.py +0 -0
  286. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/workflow_continuation_batch_schemas.py +0 -0
  287. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/workflow_continuation_schemas.py +0 -0
  288. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/workflow_economics_schemas.py +0 -0
  289. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/workflow_finalization_types.py +0 -0
  290. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/workflow_run_schemas.py +0 -0
  291. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/contracts/workflow_state_schemas.py +0 -0
  292. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/data/__init__.py +0 -0
  293. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/data/profiles/external-checks/declared-dependencies.v1.json +0 -0
  294. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/data/profiles/external-checks/import-boundaries.v1.json +0 -0
  295. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/data/profiles/external-checks/module-dependencies.v1.json +0 -0
  296. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/data/profiles/lifecycle-baselines.v1.json +0 -0
  297. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/data/profiles/model-routing-profile.v1.json +0 -0
  298. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/feature-implementation.v1.json +0 -0
  299. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/quick-change.v1.json +0 -0
  300. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/research-review.v1.json +0 -0
  301. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/data/profiles/risk-execution-policy.v1.json +0 -0
  302. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/data/profiles/small-context-profile.v1.json +0 -0
  303. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/diagnostics/__init__.py +0 -0
  304. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/diagnostics/bundles.py +0 -0
  305. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/diagnostics/installation_catalog.py +0 -0
  306. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/diagnostics/readiness.py +0 -0
  307. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/evidence_index/__init__.py +0 -0
  308. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/evidence_index/core.py +0 -0
  309. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/evidence_index/episode_index.py +0 -0
  310. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/evidence_index/external_context.py +0 -0
  311. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/followup/__init__.py +0 -0
  312. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/followup/records.py +0 -0
  313. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/freeze/__init__.py +0 -0
  314. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/freeze/locks.py +0 -0
  315. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/freeze/package_integrity.py +0 -0
  316. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/freeze/review_inputs.py +0 -0
  317. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/goal/__init__.py +0 -0
  318. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/goal/records.py +0 -0
  319. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/goal/view.py +0 -0
  320. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/__init__.py +0 -0
  321. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/acp_capability.py +0 -0
  322. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/agent_plugin_qualification.py +0 -0
  323. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/capabilities.py +0 -0
  324. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/context_events.py +0 -0
  325. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/contracts.py +0 -0
  326. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/event_capture.py +0 -0
  327. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/events.py +0 -0
  328. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/external_jobs.py +0 -0
  329. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/inspection.py +0 -0
  330. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/inspection_claude.py +0 -0
  331. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/inspection_codex.py +0 -0
  332. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/inspection_common.py +0 -0
  333. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/inspection_cursor.py +0 -0
  334. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/inspection_gemini_cli.py +0 -0
  335. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/inspection_hermes.py +0 -0
  336. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/inspection_kimi_code.py +0 -0
  337. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/inspection_opencode.py +0 -0
  338. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/inspection_profile.py +0 -0
  339. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/inspection_qwen_code.py +0 -0
  340. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/lifecycle_control.py +0 -0
  341. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/lifecycle_control_qualification.py +0 -0
  342. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/lifecycle_gate.py +0 -0
  343. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/opencode_compatibility.py +0 -0
  344. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/process_port.py +0 -0
  345. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/receipts.py +0 -0
  346. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/sandbox_receipts.py +0 -0
  347. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/scaffold.py +0 -0
  348. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/structured_results.py +0 -0
  349. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/thread_bridge.py +0 -0
  350. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/usage_normalizers.py +0 -0
  351. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/host_protocol/validation.py +0 -0
  352. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/imports/__init__.py +0 -0
  353. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/imports/agentskills_profile.py +0 -0
  354. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/imports/bmad_profile.py +0 -0
  355. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/imports/constitution_adr.py +0 -0
  356. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/imports/dialect_profiles.py +0 -0
  357. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/imports/external_agent.py +0 -0
  358. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/imports/external_dialects.py +0 -0
  359. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/imports/external_workflow.py +0 -0
  360. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/imports/multi_markdown.py +0 -0
  361. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/imports/openspec_profile.py +0 -0
  362. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/imports/planning.py +0 -0
  363. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/imports/security_findings.py +0 -0
  364. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/imports/spec_kit_profile.py +0 -0
  365. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/imports/spec_kitty_profile.py +0 -0
  366. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/metrics/__init__.py +0 -0
  367. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/metrics/audit_efficiency.py +0 -0
  368. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/metrics/audit_optimization.py +0 -0
  369. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/metrics/audit_samples.py +0 -0
  370. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/metrics/command_resources.py +0 -0
  371. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/metrics/cost_collection.py +0 -0
  372. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/metrics/costs.py +0 -0
  373. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/metrics/goal_progress.py +0 -0
  374. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/metrics/outcome_index.py +0 -0
  375. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/metrics/phase_resources.py +0 -0
  376. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/metrics/plan_package_comparison.py +0 -0
  377. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/metrics/recommendations.py +0 -0
  378. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/metrics/regression_signals.py +0 -0
  379. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/metrics/release_accounting.py +0 -0
  380. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/metrics/usage_export.py +0 -0
  381. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/metrics/workflow_economics.py +0 -0
  382. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/migration/__init__.py +0 -0
  383. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/migration/legacy_runner.py +0 -0
  384. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/model_routing/__init__.py +0 -0
  385. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/model_routing/profiles.py +0 -0
  386. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/model_routing/receipts.py +0 -0
  387. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/model_routing/resolver.py +0 -0
  388. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/neutrality/__init__.py +0 -0
  389. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/neutrality/__main__.py +0 -0
  390. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/neutrality/authority.py +0 -0
  391. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/neutrality/canonical.py +0 -0
  392. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/neutrality/cli.py +0 -0
  393. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/neutrality/ed25519.py +0 -0
  394. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/neutrality/errors.py +0 -0
  395. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/neutrality/gate.py +0 -0
  396. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/neutrality/git_objects.py +0 -0
  397. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/neutrality/matching.py +0 -0
  398. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/neutrality/paths.py +0 -0
  399. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/neutrality/policy.py +0 -0
  400. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/neutrality/receipt.py +0 -0
  401. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/neutrality/scanner.py +0 -0
  402. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/neutrality/test_runner.py +0 -0
  403. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/planning/__init__.py +0 -0
  404. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/planning/acceptance_markdown.py +0 -0
  405. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/planning/compact_packages.py +0 -0
  406. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/planning/completeness.py +0 -0
  407. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/planning/continuity.py +0 -0
  408. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/planning/deltas.py +0 -0
  409. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/planning/manifest_contract.py +0 -0
  410. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/planning/prerequisites.py +0 -0
  411. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/planning/task_compatibility.py +0 -0
  412. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/planning/templates.py +0 -0
  413. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/planning/tiering.py +0 -0
  414. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/planning/traceability.py +0 -0
  415. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/planning/validation.py +0 -0
  416. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/planning/verification.py +0 -0
  417. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/policy/__init__.py +0 -0
  418. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/policy/adaptive_lifecycle.py +0 -0
  419. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/policy/apply.py +0 -0
  420. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/policy/execution_strategy.py +0 -0
  421. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/policy/proposals.py +0 -0
  422. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/policy/quality_floor.py +0 -0
  423. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/policy/risk_execution.py +0 -0
  424. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/policy/runtime_receipts.py +0 -0
  425. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/policy/thread_bridge.py +0 -0
  426. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/project/__init__.py +0 -0
  427. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/project/domain_language.py +0 -0
  428. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/project/guidance.py +0 -0
  429. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/project/merge.py +0 -0
  430. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/project/presets.py +0 -0
  431. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/project/principles.py +0 -0
  432. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/project/profile.py +0 -0
  433. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/py.typed +0 -0
  434. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/quality/__init__.py +0 -0
  435. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/quality/bug_forensics.py +0 -0
  436. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/quality/bug_forensics_advisor.py +0 -0
  437. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/quality/bug_forensics_recipes.py +0 -0
  438. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/quality/cross_check.py +0 -0
  439. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/quality/dependency_impact.py +0 -0
  440. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/quality/external_checks.py +0 -0
  441. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/quality/failure_classification.py +0 -0
  442. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/quality/packs.py +0 -0
  443. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/quality/security_analysis.py +0 -0
  444. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/quality/validation_ladder.py +0 -0
  445. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/reporting/__init__.py +0 -0
  446. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/reporting/attention.py +0 -0
  447. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/reporting/change_summary.py +0 -0
  448. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/reporting/event_feed.py +0 -0
  449. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/reporting/execution_resources.py +0 -0
  450. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/reporting/multi_run.py +0 -0
  451. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/reporting/progress_bridge.py +0 -0
  452. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/reporting/progress_hooks.py +0 -0
  453. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/reporting/progress_terminal.py +0 -0
  454. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/reporting/progress_view.py +0 -0
  455. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/reporting/status_view.py +0 -0
  456. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/reporting/usage_export.py +0 -0
  457. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/research/__init__.py +0 -0
  458. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/research/evidence.py +0 -0
  459. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/research/provenance.py +0 -0
  460. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/research/validation.py +0 -0
  461. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/resources.py +0 -0
  462. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/review/__init__.py +0 -0
  463. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/review/provenance.py +0 -0
  464. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/review/validation.py +0 -0
  465. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/review_mesh/__init__.py +0 -0
  466. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/review_mesh/assignments.py +0 -0
  467. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/review_mesh/contracts.py +0 -0
  468. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/review_mesh/independence.py +0 -0
  469. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/review_mesh/operator_templates.py +0 -0
  470. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/review_mesh/preflight.py +0 -0
  471. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/review_mesh/quorum.py +0 -0
  472. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/review_mesh/recommendation.py +0 -0
  473. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/review_mesh/results.py +0 -0
  474. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/review_mesh/synthesis.py +0 -0
  475. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/review_mesh/validation_helpers.py +0 -0
  476. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/runner/__init__.py +0 -0
  477. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/runner/core.py +0 -0
  478. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/runner/sandbox_receipts.py +0 -0
  479. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/specification/__init__.py +0 -0
  480. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/specification/completion_check.py +0 -0
  481. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/specification/completion_gate.py +0 -0
  482. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/specification/completion_signal.py +0 -0
  483. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/specification/validation.py +0 -0
  484. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/__init__.py +0 -0
  485. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/artifact_builders.py +0 -0
  486. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/artifacts.py +0 -0
  487. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/audit_evidence.py +0 -0
  488. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/authorization.py +0 -0
  489. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/budget_decisions.py +0 -0
  490. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/budget_policy.py +0 -0
  491. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/budget_receipts.py +0 -0
  492. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/bug_forensics_gates.py +0 -0
  493. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/checkpoint_gate.py +0 -0
  494. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/closing_policy.py +0 -0
  495. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/closing_window.py +0 -0
  496. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/continuation.py +0 -0
  497. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/continuation_batch.py +0 -0
  498. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/controller.py +0 -0
  499. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/deadline_guards.py +0 -0
  500. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/events.py +0 -0
  501. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/final_proof_integrity.py +0 -0
  502. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/finalization.py +0 -0
  503. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/gates.py +0 -0
  504. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/immutable_input.py +0 -0
  505. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/implementation_audit_gate.py +0 -0
  506. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/initialization.py +0 -0
  507. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/leases.py +0 -0
  508. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/limited_usage.py +0 -0
  509. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/lineage.py +0 -0
  510. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/managed_runner.py +0 -0
  511. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/model_usage.py +0 -0
  512. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/next_action.py +0 -0
  513. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/operation_kernel.py +0 -0
  514. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/plan_adoption.py +0 -0
  515. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/query.py +0 -0
  516. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/review_mesh_gate.py +0 -0
  517. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/reviews.py +0 -0
  518. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/risk_execution_gate.py +0 -0
  519. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/run.py +0 -0
  520. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/run_transitions.py +0 -0
  521. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/sandbox_policy.py +0 -0
  522. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/sandbox_receipts.py +0 -0
  523. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/selectors.py +0 -0
  524. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/state.py +0 -0
  525. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/task_outcomes.py +0 -0
  526. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/task_start.py +0 -0
  527. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/task_transitions.py +0 -0
  528. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/transactions.py +0 -0
  529. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/workflow/transition_contract.py +0 -0
  530. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/worktree/__init__.py +0 -0
  531. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle/worktree/isolation.py +0 -0
  532. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle_kit.egg-info/dependency_links.txt +0 -0
  533. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.0}/src/agent_lifecycle_kit.egg-info/entry_points.txt +0 -0
  534. {agent_lifecycle_kit-2.26.0 → agent_lifecycle_kit-2.28.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.26.0
3
+ Version: 2.28.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
@@ -13,8 +13,9 @@ Classifier: Programming Language :: Python :: 3.11
13
13
  Classifier: Programming Language :: Python :: 3.12
14
14
  Classifier: Programming Language :: Python :: 3.13
15
15
  Classifier: Programming Language :: Python :: 3.14
16
+ Classifier: Programming Language :: Python :: 3.15
16
17
  Classifier: Typing :: Typed
17
- Requires-Python: <3.15,>=3.11
18
+ Requires-Python: <3.16,>=3.11
18
19
  Description-Content-Type: text/markdown
19
20
  License-File: LICENSE
20
21
  License-File: NOTICE
@@ -28,20 +29,20 @@ Dynamic: license-file
28
29
 
29
30
  [![License: Apache-2.0](https://img.shields.io/badge/license-Apache--2.0-green.svg)](LICENSE)
30
31
  [![Release](https://img.shields.io/github/v/release/avksp/agent-lifecycle-kit?label=release)](https://github.com/avksp/agent-lifecycle-kit/releases)
31
- ![Python](https://img.shields.io/badge/python-3.11--3.14-blue.svg)
32
+ ![Python](https://img.shields.io/badge/python-3.11--3.15-blue.svg)
32
33
 
33
- **Agent Lifecycle Kit (ALK)** coordinates coding-agent work through a verifiable finish. It keeps the requested outcome, reviewed plan, execution boundaries, evidence and
34
- acceptance decisions connected while the external agent changes the project.
34
+ **Agent Lifecycle Kit (ALK)** coordinates coding-agent work through a verifiable finish. It keeps the requested outcome, reviewed plan, execution boundaries, evidence and acceptance decisions connected while the external agent changes the project.
35
35
 
36
- The provider-neutral workflow works with Codex, Claude Code, Qwen Code, Goose, OpenInterpreter, Pi, Grok Build, or another CLI. Provider commands, model choice and secret handling
37
- stay in adapters or host-local profiles.
36
+ The provider-neutral workflow works with Codex, Claude Code, Qwen Code, Goose, OpenInterpreter, Pi, Grok Build, or another CLI. Provider commands, model choice and secret handling stay in adapters or host-local profiles.
38
37
 
39
38
  ALK provides a verifiable finish for external-agent work with proportionate control. It adds only the checks and evidence needed for the task; most of the time remains for research, implementation and product verification.
40
39
 
40
+ Release 2.28 adds [bounded lifecycle and accounting baselines](docs/reference/performance-and-resource-budgets.md#release-228-lifecycle-and-accounting-baselines). Repository tools measure real read-only operations and separate fixture preparation from operation and subprocess time. The Windows fixture comparison observed a 13.08% median reduction in one six-sample experiment; it is not a universal speed promise. All security and platform checks remain required.
41
+
41
42
  ## Quick start
42
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).
43
44
 
44
- It includes macOS, Linux and Windows instructions, Python 3.11-3.14, [PyPI](https://pypi.org/project/agent-lifecycle-kit/) installation with `python -m pip install agent-lifecycle-kit==2.26.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.28.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
46
 
46
47
  For a quick start, run:
47
48
 
@@ -6,20 +6,20 @@
6
6
 
7
7
  [![License: Apache-2.0](https://img.shields.io/badge/license-Apache--2.0-green.svg)](LICENSE)
8
8
  [![Release](https://img.shields.io/github/v/release/avksp/agent-lifecycle-kit?label=release)](https://github.com/avksp/agent-lifecycle-kit/releases)
9
- ![Python](https://img.shields.io/badge/python-3.11--3.14-blue.svg)
9
+ ![Python](https://img.shields.io/badge/python-3.11--3.15-blue.svg)
10
10
 
11
- **Agent Lifecycle Kit (ALK)** coordinates coding-agent work through a verifiable finish. It keeps the requested outcome, reviewed plan, execution boundaries, evidence and
12
- acceptance decisions connected while the external agent changes the project.
11
+ **Agent Lifecycle Kit (ALK)** coordinates coding-agent work through a verifiable finish. It keeps the requested outcome, reviewed plan, execution boundaries, evidence and acceptance decisions connected while the external agent changes the project.
13
12
 
14
- The provider-neutral workflow works with Codex, Claude Code, Qwen Code, Goose, OpenInterpreter, Pi, Grok Build, or another CLI. Provider commands, model choice and secret handling
15
- stay in adapters or host-local profiles.
13
+ The provider-neutral workflow works with Codex, Claude Code, Qwen Code, Goose, OpenInterpreter, Pi, Grok Build, or another CLI. Provider commands, model choice and secret handling stay in adapters or host-local profiles.
16
14
 
17
15
  ALK provides a verifiable finish for external-agent work with proportionate control. It adds only the checks and evidence needed for the task; most of the time remains for research, implementation and product verification.
18
16
 
17
+ Release 2.28 adds [bounded lifecycle and accounting baselines](docs/reference/performance-and-resource-budgets.md#release-228-lifecycle-and-accounting-baselines). Repository tools measure real read-only operations and separate fixture preparation from operation and subprocess time. The Windows fixture comparison observed a 13.08% median reduction in one six-sample experiment; it is not a universal speed promise. All security and platform checks remain required.
18
+
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.14, [PyPI](https://pypi.org/project/agent-lifecycle-kit/) installation with `python -m pip install agent-lifecycle-kit==2.26.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.28.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,10 +4,10 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "agent-lifecycle-kit"
7
- version = "2.26.0"
7
+ version = "2.28.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
- requires-python = ">=3.11,<3.15"
10
+ requires-python = ">=3.11,<3.16"
11
11
  license = { text = "Apache-2.0" }
12
12
  authors = [{ name = "Agent Lifecycle Kit contributors" }]
13
13
  keywords = [
@@ -35,6 +35,7 @@ classifiers = [
35
35
  "Programming Language :: Python :: 3.12",
36
36
  "Programming Language :: Python :: 3.13",
37
37
  "Programming Language :: Python :: 3.14",
38
+ "Programming Language :: Python :: 3.15",
38
39
  "Typing :: Typed",
39
40
  ]
40
41
  dependencies = []
@@ -1,3 +1,3 @@
1
1
  """Package version."""
2
2
 
3
- __version__ = "2.26.0"
3
+ __version__ = "2.28.0"
@@ -627,7 +627,24 @@ if TYPE_CHECKING:
627
627
  from contextlib import AbstractContextManager
628
628
  from typing import Protocol
629
629
 
630
- class _JournalStoragePort(Protocol):
630
+ class _FinancialTransactionPort(Protocol):
631
+ """Only the capabilities used by admitted reservation and claim rules."""
632
+
633
+ def _require_financial_transaction(self) -> None: ...
634
+
635
+ def _reserve_identity_keys(self, operation: Operation) -> None: ...
636
+
637
+ def _closed_scope(self, scope: str) -> object | None: ...
638
+
639
+ def _conflict(self, scopes: tuple[str, ...], reason: str, payload: dict) -> str: ...
640
+
641
+ def _key(self, kind: str, key: object, scope: str, owner: str, value: str) -> bool: ...
642
+
643
+ def _load(self, scope: str) -> tuple[dict | None, int]: ...
644
+
645
+ def _record(self, scope: str, state: dict | None, revision: int, kind: str, payload: dict) -> int: ...
646
+
647
+ class _JournalStoragePort(_FinancialTransactionPort, Protocol):
631
648
  """Static view of the existing live Journal composition; no runtime base."""
632
649
 
633
650
  _admission_depth: int
@@ -669,8 +686,6 @@ if TYPE_CHECKING:
669
686
  @staticmethod
670
687
  def _compile_opening(scope: BudgetScope, policy: BudgetPolicy, value: OpeningImport) -> dict: ...
671
688
 
672
- def _conflict(self, scopes: tuple[str, ...], reason: str, payload: dict) -> str: ...
673
-
674
689
  @staticmethod
675
690
  def _create_v4_schema(db: sqlite3.Connection, *, writer_version: int = 4) -> None: ...
676
691
 
@@ -697,12 +712,8 @@ if TYPE_CHECKING:
697
712
 
698
713
  def _index(self, table: str, key: str, scope: str, owner: str, payload: dict) -> dict: ...
699
714
 
700
- def _key(self, kind: str, key: object, scope: str, owner: str, value: str) -> bool: ...
701
-
702
715
  def _live_facts(self, scope: str, *, restore: bool = False) -> tuple[dict, int, list, list]: ...
703
716
 
704
- def _load(self, scope: str) -> tuple[dict | None, int]: ...
705
-
706
717
  _observation_scope: str | None
707
718
 
708
719
  def _observed_candidates(self, scope: str, evidence: dict) -> list[dict]: ...
@@ -714,8 +725,6 @@ if TYPE_CHECKING:
714
725
 
715
726
  def _preflight_supplied_finals(self, scope: str, receipts: list[dict]) -> None: ...
716
727
 
717
- def _record(self, scope: str, state: dict | None, revision: int, kind: str, payload: dict) -> int: ...
718
-
719
728
  def _retained(self, table: str, key: str) -> dict | None: ...
720
729
 
721
730
  def _source_preflight(self, receipt: dict) -> None: ...
@@ -755,6 +764,7 @@ if TYPE_CHECKING:
755
764
  writer: EvidenceRef
756
765
  else:
757
766
  # Preserve the exact nominal runtime bases and authority checks.
767
+ _FinancialTransactionPort = object
758
768
  _JournalStoragePort = object
759
769
 
760
770
 
@@ -21,6 +21,7 @@ from agent_lifecycle.accounting.declared_ledger_records import (
21
21
  from agent_lifecycle.contracts import LifecycleError, canonical_bytes, canonical_digest
22
22
  from agent_lifecycle.contracts.authority_io import normalize_authority_path, read_authority_bytes
23
23
  from agent_lifecycle.contracts.bounded_json import load_bounded_json as _r11_json
24
+ from agent_lifecycle.contracts.private_storage_compat import read_compat_private_bytes
24
25
 
25
26
  _MAX_REQUEST_BYTES = 131_072
26
27
 
@@ -32,42 +33,15 @@ def _read_private(
32
33
  allowed_modes: tuple[int, ...] = (0o600,),
33
34
  max_bytes: int = _MAX_REQUEST_BYTES,
34
35
  ) -> bytes:
35
- if os.name == "nt":
36
- from agent_lifecycle.contracts.private_storage import read_private_bytes
37
-
38
- try:
39
- return read_private_bytes(path, root=root, modes=allowed_modes, max_bytes=max_bytes)
40
- except LifecycleError as exc:
41
- raise LifecycleError("codex-exact-private-path-unsafe", exc.message) from exc
42
- if not path.is_relative_to(root):
43
- raise LifecycleError("codex-exact-private-path-unsafe", "private artifact lies outside root")
44
- current = path.parent
45
- while current != root:
46
- info = current.lstat()
47
- relative = current.relative_to(root).parts
48
- shared_parent = relative in {("work",), ("work", "release-2-16"), ("work", "release-2-16", "evidence")}
49
- if not stat.S_ISDIR(info.st_mode) or (not shared_parent and stat.S_IMODE(info.st_mode) != 0o700):
50
- raise LifecycleError("codex-exact-private-path-unsafe", "private parent is not mode 0700")
51
- current = current.parent
52
- info = path.lstat()
53
- if not stat.S_ISREG(info.st_mode) or stat.S_IMODE(info.st_mode) not in allowed_modes or info.st_size > max_bytes:
54
- raise LifecycleError("codex-exact-private-path-unsafe", "private file has unsafe mode, type or size")
55
- flags = os.O_RDONLY | getattr(os, "O_NOFOLLOW", 0)
56
- fd = os.open(path, flags)
57
- with os.fdopen(fd, "rb") as stream:
58
- opened = os.fstat(stream.fileno())
59
-
60
- def identity(item: os.stat_result) -> tuple[int, int, int, int, int]:
61
- return (item.st_dev, item.st_ino, item.st_mode, item.st_size, item.st_mtime_ns)
62
-
63
- if identity(opened) != identity(info):
64
- raise LifecycleError("codex-exact-private-path-unsafe", "private file changed before reading")
65
- raw = stream.read(max_bytes + 1)
66
- if identity(os.fstat(stream.fileno())) != identity(opened):
67
- raise LifecycleError("codex-exact-private-path-unsafe", "private file changed while reading")
68
- if len(raw) > max_bytes:
69
- raise LifecycleError("codex-exact-private-overflow", "private artifact exceeds byte limit")
70
- return raw
36
+ return read_compat_private_bytes(
37
+ path,
38
+ root=root,
39
+ allowed_modes=allowed_modes,
40
+ max_bytes=max_bytes,
41
+ shared_parents=frozenset({("work",), ("work", "release-2-16"), ("work", "release-2-16", "evidence")}),
42
+ unsafe_code="codex-exact-private-path-unsafe",
43
+ overflow_code="codex-exact-private-overflow",
44
+ )
71
45
 
72
46
 
73
47
  def _r11_git(root: Path, *args: str) -> bytes:
@@ -6,11 +6,10 @@ These primitives confer no host, provider or dispatch authority.
6
6
  from dataclasses import asdict
7
7
 
8
8
  from .contracts import (
9
- JournalUnavailable,
10
9
  Operation,
11
10
  RevisionConflict,
12
11
  _BindingConflict,
13
- _JournalStoragePort,
12
+ _FinancialTransactionPort,
14
13
  _projection,
15
14
  digest,
16
15
  identity,
@@ -18,14 +17,12 @@ from .contracts import (
18
17
  )
19
18
 
20
19
 
21
- def _require_financial_transaction(journal: _JournalStoragePort) -> None:
22
- journal._check_owner()
23
- if not journal._db.in_transaction or journal._admission_depth != 1:
24
- raise JournalUnavailable("Financial operation requires admitted transaction", write_outcome="NOT_STARTED")
20
+ def _require_financial_transaction(journal: _FinancialTransactionPort) -> None:
21
+ journal._require_financial_transaction()
25
22
 
26
23
 
27
24
  def _reserve_in_transaction(
28
- journal: _JournalStoragePort, operation: Operation, *, expected_revision: int | None = None
25
+ journal: _FinancialTransactionPort, operation: Operation, *, expected_revision: int | None = None
29
26
  ) -> str:
30
27
  """Apply ordinary reservation arithmetic inside the caller's admitted transaction."""
31
28
  _require_financial_transaction(journal)
@@ -61,25 +58,16 @@ def _reserve_in_transaction(
61
58
  return journal._conflict((scope,), "Scope/policy/task binding mismatch", op)
62
59
  if not _reservation_fits(state, revision, operation):
63
60
  return "DENY"
64
- journal._db.execute("SAVEPOINT identity_batch")
65
61
  try:
66
- for kind, key in (
67
- ("operation", [scope, operation.operation_id]),
68
- ("dispatch", [scope, operation.dispatch_key]),
69
- ("permit", operation.permit_id),
70
- ):
71
- journal._key(kind, key, scope, operation.operation_id, operation.binding_digest)
72
- journal._db.execute("RELEASE identity_batch")
62
+ journal._reserve_identity_keys(operation)
73
63
  except _BindingConflict as exc:
74
- journal._db.execute("ROLLBACK TO identity_batch")
75
- journal._db.execute("RELEASE identity_batch")
76
64
  return journal._conflict(exc.scopes, str(exc), op)
77
65
  journal._record(scope, state, revision, "RESERVE", {"operation": op})
78
66
  return "RESERVED"
79
67
 
80
68
 
81
69
  def _claim_in_transaction(
82
- journal: _JournalStoragePort, scope: str, operation_id: str, binding_digest: str, claim_id: str
70
+ journal: _FinancialTransactionPort, scope: str, operation_id: str, binding_digest: str, claim_id: str
83
71
  ) -> str:
84
72
  """Claim once inside the caller's admitted transaction; no dispatch authority is conferred."""
85
73
  _require_financial_transaction(journal)
@@ -32,6 +32,7 @@ from .contracts import (
32
32
  EvidenceRef,
33
33
  JournalEvent,
34
34
  JournalHandle,
35
+ Operation,
35
36
  UsageOutcome,
36
37
  canonical,
37
38
  digest,
@@ -270,6 +271,29 @@ class Journal(
270
271
  return self._archive_state(scope)
271
272
  return None, 0
272
273
 
274
+ def _require_financial_transaction(self) -> None:
275
+ self._check_owner()
276
+ if not self._db.in_transaction or self._admission_depth != 1:
277
+ raise JournalUnavailable("Financial operation requires admitted transaction", write_outcome="NOT_STARTED")
278
+
279
+ def _reserve_identity_keys(self, operation: Operation) -> None:
280
+ """Keep a reservation's immutable identities atomic inside admission."""
281
+ self._require_financial_transaction()
282
+ scope = operation.budget_scope_id
283
+ self._db.execute("SAVEPOINT identity_batch")
284
+ try:
285
+ for kind, key in (
286
+ ("operation", [scope, operation.operation_id]),
287
+ ("dispatch", [scope, operation.dispatch_key]),
288
+ ("permit", operation.permit_id),
289
+ ):
290
+ self._key(kind, key, scope, operation.operation_id, operation.binding_digest)
291
+ self._db.execute("RELEASE identity_batch")
292
+ except _BindingConflict:
293
+ self._db.execute("ROLLBACK TO identity_batch")
294
+ self._db.execute("RELEASE identity_batch")
295
+ raise
296
+
273
297
  def _key(self, kind: str, key: object, scope: str, owner: str, value: str) -> bool:
274
298
  """Reserve/check a global immutable key inside the current transaction."""
275
299
  encoded = canonical(key)
@@ -8,6 +8,7 @@ import stat
8
8
  from pathlib import Path
9
9
 
10
10
  from agent_lifecycle.contracts import LifecycleError
11
+ from agent_lifecycle.contracts.private_storage_compat import read_compat_private_bytes
11
12
 
12
13
  _MAX_REQUEST_BYTES = 131_072
13
14
 
@@ -102,42 +103,15 @@ def _read_private(
102
103
  allowed_modes: tuple[int, ...] = (0o600,),
103
104
  max_bytes: int = _MAX_REQUEST_BYTES,
104
105
  ) -> bytes:
105
- if os.name == "nt":
106
- from agent_lifecycle.contracts.private_storage import read_private_bytes
107
-
108
- try:
109
- return read_private_bytes(path, root=root, modes=allowed_modes, max_bytes=max_bytes)
110
- except LifecycleError as exc:
111
- raise LifecycleError("codex-exact-private-path-unsafe", exc.message) from exc
112
- if not path.is_relative_to(root):
113
- raise LifecycleError("codex-exact-private-path-unsafe", "private artifact lies outside root")
114
- current = path.parent
115
- while current != root:
116
- info = current.lstat()
117
- relative = current.relative_to(root).parts
118
- shared_parent = relative in {("work",), ("work", "release-2-16"), ("work", "release-2-16", "evidence")}
119
- if not stat.S_ISDIR(info.st_mode) or (not shared_parent and stat.S_IMODE(info.st_mode) != 0o700):
120
- raise LifecycleError("codex-exact-private-path-unsafe", "private parent is not mode 0700")
121
- current = current.parent
122
- info = path.lstat()
123
- if not stat.S_ISREG(info.st_mode) or stat.S_IMODE(info.st_mode) not in allowed_modes or info.st_size > max_bytes:
124
- raise LifecycleError("codex-exact-private-path-unsafe", "private file has unsafe mode, type or size")
125
- flags = os.O_RDONLY | getattr(os, "O_NOFOLLOW", 0)
126
- fd = os.open(path, flags)
127
- with os.fdopen(fd, "rb") as stream:
128
- opened = os.fstat(stream.fileno())
129
-
130
- def identity(item: os.stat_result) -> tuple[int, int, int, int, int]:
131
- return (item.st_dev, item.st_ino, item.st_mode, item.st_size, item.st_mtime_ns)
132
-
133
- if identity(opened) != identity(info):
134
- raise LifecycleError("codex-exact-private-path-unsafe", "private file changed before reading")
135
- raw = stream.read(max_bytes + 1)
136
- if identity(os.fstat(stream.fileno())) != identity(opened):
137
- raise LifecycleError("codex-exact-private-path-unsafe", "private file changed while reading")
138
- if len(raw) > max_bytes:
139
- raise LifecycleError("codex-exact-private-overflow", "private artifact exceeds byte limit")
140
- return raw
106
+ return read_compat_private_bytes(
107
+ path,
108
+ root=root,
109
+ allowed_modes=allowed_modes,
110
+ max_bytes=max_bytes,
111
+ shared_parents=frozenset({("work",), ("work", "release-2-16"), ("work", "release-2-16", "evidence")}),
112
+ unsafe_code="codex-exact-private-path-unsafe",
113
+ overflow_code="codex-exact-private-overflow",
114
+ )
141
115
 
142
116
 
143
117
  def _require(value: bool, code: str, message: str) -> None:
@@ -126,17 +126,7 @@ AGENT_PLUGIN_QUALIFICATION_SCHEMAS: dict[str, dict[str, Any]] = {
126
126
  }
127
127
 
128
128
 
129
- def validate_qualification_profile(profile: dict[str, Any]) -> dict[str, Any]:
130
- """Validate a data-only client profile and its self-digest."""
131
-
132
- blockers: list[dict[str, Any]] = []
133
- if not isinstance(profile, dict):
134
- return _validation([_issue("profile-not-object")])
135
- _required_text(profile, "schemaVersion", PROFILE_SCHEMA, blockers)
136
- for field in ("profileId", "adapterId", "client", "host"):
137
- if not isinstance(profile.get(field), str) or not profile[field].strip():
138
- blockers.append(_issue("profile-field-invalid", field=field))
139
-
129
+ def _profile_package(profile: dict[str, Any], blockers: list[dict[str, Any]]) -> None:
140
130
  package = profile.get("package")
141
131
  if not isinstance(package, dict):
142
132
  blockers.append(_issue("profile-package-invalid"))
@@ -149,6 +139,8 @@ def validate_qualification_profile(profile: dict[str, Any]) -> dict[str, Any]:
149
139
  if skills != list(CANONICAL_SKILLS):
150
140
  blockers.append(_issue("profile-required-skills", expected=list(CANONICAL_SKILLS), actual=skills))
151
141
 
142
+
143
+ def _profile_discovery(profile: dict[str, Any], blockers: list[dict[str, Any]]) -> None:
152
144
  discovery = profile.get("discovery")
153
145
  if not isinstance(discovery, dict):
154
146
  blockers.append(_issue("profile-discovery-invalid"))
@@ -165,6 +157,8 @@ def validate_qualification_profile(profile: dict[str, Any]) -> dict[str, Any]:
165
157
  if not isinstance(markers, list) or not all(isinstance(item, str) and item for item in markers):
166
158
  blockers.append(_issue("profile-discovery-markers"))
167
159
 
160
+
161
+ def _profile_installation(profile: dict[str, Any], blockers: list[dict[str, Any]]) -> None:
168
162
  installation = profile.get("installation")
169
163
  if not isinstance(installation, dict):
170
164
  blockers.append(_issue("profile-installation-invalid"))
@@ -176,6 +170,8 @@ def validate_qualification_profile(profile: dict[str, Any]) -> dict[str, Any]:
176
170
  ):
177
171
  blockers.append(_issue("profile-installation-boundary"))
178
172
 
173
+
174
+ def _profile_environment(profile: dict[str, Any], blockers: list[dict[str, Any]]) -> None:
179
175
  environment = profile.get("environment")
180
176
  if not isinstance(environment, dict):
181
177
  blockers.append(_issue("profile-environment-invalid"))
@@ -187,6 +183,8 @@ def validate_qualification_profile(profile: dict[str, Any]) -> dict[str, Any]:
187
183
  if environment.get("allowPatterns"):
188
184
  blockers.append(_issue("profile-environment-wildcard"))
189
185
 
186
+
187
+ def _profile_host_version(profile: dict[str, Any], blockers: list[dict[str, Any]]) -> None:
190
188
  host_version_policy = profile.get("hostVersionPolicy")
191
189
  if not isinstance(host_version_policy, dict):
192
190
  blockers.append(_issue("profile-host-version-policy-invalid"))
@@ -205,6 +203,8 @@ def validate_qualification_profile(profile: dict[str, Any]) -> dict[str, Any]:
205
203
  except ValueError:
206
204
  blockers.append(_issue("profile-host-version-policy-invalid", mode=mode))
207
205
 
206
+
207
+ def _profile_qualification(profile: dict[str, Any], blockers: list[dict[str, Any]]) -> None:
208
208
  qualification = profile.get("qualification")
209
209
  if not isinstance(qualification, dict):
210
210
  blockers.append(_issue("profile-qualification-invalid"))
@@ -222,6 +222,23 @@ def validate_qualification_profile(profile: dict[str, Any]) -> dict[str, Any]:
222
222
  if qualification.get("modelCalls") != 0 or qualification.get("hostLaunch") is not True:
223
223
  blockers.append(_issue("profile-qualification-safety"))
224
224
 
225
+
226
+ def validate_qualification_profile(profile: dict[str, Any]) -> dict[str, Any]:
227
+ """Validate a data-only client profile and its self-digest."""
228
+
229
+ blockers: list[dict[str, Any]] = []
230
+ if not isinstance(profile, dict):
231
+ return _validation([_issue("profile-not-object")])
232
+ _required_text(profile, "schemaVersion", PROFILE_SCHEMA, blockers)
233
+ for field in ("profileId", "adapterId", "client", "host"):
234
+ if not isinstance(profile.get(field), str) or not profile[field].strip():
235
+ blockers.append(_issue("profile-field-invalid", field=field))
236
+ _profile_package(profile, blockers)
237
+ _profile_discovery(profile, blockers)
238
+ _profile_installation(profile, blockers)
239
+ _profile_environment(profile, blockers)
240
+ _profile_host_version(profile, blockers)
241
+ _profile_qualification(profile, blockers)
225
242
  boundary = profile.get("descriptorBoundary")
226
243
  if (
227
244
  not isinstance(boundary, dict)
@@ -12,6 +12,7 @@ import time
12
12
  import uuid
13
13
  from collections.abc import Iterator
14
14
  from contextlib import ExitStack, contextmanager, suppress
15
+ from functools import cache
15
16
  from pathlib import Path
16
17
  from typing import Any, BinaryIO
17
18
 
@@ -165,7 +166,7 @@ class _Directory:
165
166
  def stat_child(self, name: str) -> os.stat_result:
166
167
  if self.fd is not None:
167
168
  return os.stat(name, dir_fd=self.fd, follow_symlinks=False)
168
- return (self.path / name).stat(follow_symlinks=False)
169
+ return os.stat(os.path.join(self.path, name), follow_symlinks=False) # noqa: PTH116, PTH118
169
170
 
170
171
  def open_child(self, name: str) -> int:
171
172
  if self.fd is not None:
@@ -207,11 +208,7 @@ class _Directory:
207
208
  elif self.handle is not None:
208
209
  if not self.writable:
209
210
  raise LifecycleError("authority-io-unavailable", "Directory write authority is required")
210
- from ctypes import wintypes
211
-
212
211
  api = _windows_api()
213
- api.FlushFileBuffers.argtypes = [wintypes.HANDLE]
214
- api.FlushFileBuffers.restype = wintypes.BOOL
215
212
  if not api.FlushFileBuffers(self.handle):
216
213
  raise LifecycleError("authority-durability-unavailable", "Directory durability barrier failed")
217
214
  else:
@@ -484,6 +481,18 @@ def append_authority_bytes(path: Path, data: bytes, *, root: Path | None = None)
484
481
 
485
482
 
486
483
  def _windows_api() -> Any:
484
+ if sys.platform != "win32":
485
+ raise LifecycleError("authority-io-unavailable", "Windows authority I/O is unavailable")
486
+ return _windows_api_bindings()
487
+
488
+
489
+ @cache
490
+ def _windows_api_bindings() -> Any:
491
+ """Publish only complete bindings; concurrent first calls may build equivalent copies.
492
+
493
+ Cache DLL/function configuration only. Handles, I/O, identities and ctypes'
494
+ thread-local last-error values remain live at each call site.
495
+ """
487
496
  if sys.platform != "win32":
488
497
  raise LifecycleError("authority-io-unavailable", "Windows authority I/O is unavailable")
489
498
  import ctypes
@@ -504,6 +513,8 @@ def _windows_api() -> Any:
504
513
  api.CloseHandle.restype = wintypes.BOOL
505
514
  api.GetFileInformationByHandleEx.argtypes = [wintypes.HANDLE, ctypes.c_int, wintypes.LPVOID, wintypes.DWORD]
506
515
  api.GetFileInformationByHandleEx.restype = wintypes.BOOL
516
+ api.FlushFileBuffers.argtypes = [wintypes.HANDLE]
517
+ api.FlushFileBuffers.restype = wintypes.BOOL
507
518
  return api
508
519
 
509
520
 
@@ -32,7 +32,7 @@ class PerformanceLimits:
32
32
  max_simple_literal_rules: int = 64
33
33
  max_linux_group_samples_per_second: int = 4
34
34
  max_ed25519_optimized_to_reference_median_ratio_bps: int = 2_000
35
- max_benchmark_samples_per_case: int = 31
35
+ max_benchmark_samples_per_case: int = 7
36
36
  max_benchmark_output_bytes: int = 16 * 1024 * 1024
37
37
  max_evidence_bytes_per_run: int = 96 * 1024 * 1024
38
38
 
@@ -126,7 +126,26 @@ def validate_performance_policy(policy: Mapping[str, Any]) -> PerformanceLimits:
126
126
  if not isinstance(raw_limits, Mapping):
127
127
  raise LifecycleError("performance-policy-limits-invalid", "performance policy limits must be an object")
128
128
  limits = performance_limits_from_json(raw_limits)
129
- benchmark = policy.get("benchmark")
129
+ _validate_benchmark_policy(policy.get("benchmark"), limits)
130
+ operations = policy.get("operations")
131
+ if (
132
+ not isinstance(operations, list)
133
+ or not operations
134
+ or not all(isinstance(item, str) and item for item in operations)
135
+ ):
136
+ raise LifecycleError(
137
+ "performance-policy-operations-invalid", "performance policy operations must be non-empty strings"
138
+ )
139
+ if len(set(operations)) != len(operations):
140
+ raise LifecycleError("performance-policy-operations-invalid", "performance policy operations must be unique")
141
+ if policy.get("productionPromotionClaimed") is not False:
142
+ raise LifecycleError(
143
+ "performance-policy-promotion-invalid", "performance policy cannot claim production promotion"
144
+ )
145
+ return limits
146
+
147
+
148
+ def _validate_benchmark_policy(benchmark: Any, limits: PerformanceLimits) -> None:
130
149
  if not isinstance(benchmark, Mapping):
131
150
  raise LifecycleError("performance-policy-benchmark-invalid", "performance policy benchmark must be an object")
132
151
  benchmark_allowed = {
@@ -153,22 +172,27 @@ def validate_performance_policy(policy: Mapping[str, Any]) -> PerformanceLimits:
153
172
  raise LifecycleError("performance-policy-benchmark-exceeds-limit", "samplesPerCase exceeds the typed ceiling")
154
173
  if benchmark["maxOutputBytes"] > limits.max_benchmark_output_bytes:
155
174
  raise LifecycleError("performance-policy-benchmark-exceeds-limit", "maxOutputBytes exceeds the typed ceiling")
156
- operations = policy.get("operations")
157
- if (
158
- not isinstance(operations, list)
159
- or not operations
160
- or not all(isinstance(item, str) and item for item in operations)
161
- ):
175
+ _validate_benchmark_caps(benchmark, limits)
176
+
177
+
178
+ def _validate_benchmark_caps(benchmark: Mapping[str, Any], limits: PerformanceLimits) -> None:
179
+ hard_caps = {
180
+ "warmupSamples": 2,
181
+ "samplesPerCase": 7,
182
+ "maxCommandWallSeconds": 120,
183
+ "maxTotalWallSeconds": 600,
184
+ "maxOutputBytes": 16 * 1024 * 1024,
185
+ }
186
+ if any(benchmark[name] > cap for name, cap in hard_caps.items()):
162
187
  raise LifecycleError(
163
- "performance-policy-operations-invalid", "performance policy operations must be non-empty strings"
188
+ "performance-policy-benchmark-exceeds-limit",
189
+ "Benchmark exceeds an immutable sampling, wall or output ceiling",
164
190
  )
165
- if len(set(operations)) != len(operations):
166
- raise LifecycleError("performance-policy-operations-invalid", "performance policy operations must be unique")
167
- if policy.get("productionPromotionClaimed") is not False:
191
+ if limits.max_benchmark_samples_per_case > 7 or limits.max_benchmark_output_bytes > 16 * 1024 * 1024:
168
192
  raise LifecycleError(
169
- "performance-policy-promotion-invalid", "performance policy cannot claim production promotion"
193
+ "performance-policy-benchmark-exceeds-limit",
194
+ "Typed benchmark ceilings cannot exceed the hard limits",
170
195
  )
171
- return limits
172
196
 
173
197
 
174
198
  __all__ = [