agent-lifecycle-kit 1.83.0__tar.gz → 1.85.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 (382) hide show
  1. {agent_lifecycle_kit-1.83.0/src/agent_lifecycle_kit.egg-info → agent_lifecycle_kit-1.85.0}/PKG-INFO +3 -3
  2. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/README.md +2 -2
  3. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/pyproject.toml +1 -1
  4. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/_version.py +1 -1
  5. agent_lifecycle_kit-1.85.0/src/agent_lifecycle/adapter_sessions/redaction.py +12 -0
  6. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/workflow_bridge.py +21 -3
  7. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/dispatch_lifecycle.py +40 -12
  8. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/lifecycle_parsers.py +8 -1
  9. agent_lifecycle_kit-1.85.0/src/agent_lifecycle/contracts/lifecycle_action_catalog.py +147 -0
  10. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/process_redaction.py +2 -1
  11. agent_lifecycle_kit-1.85.0/src/agent_lifecycle/contracts/public_locators.py +161 -0
  12. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/redaction.py +15 -4
  13. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/research_evidence_schemas.py +11 -3
  14. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/runner_schemas.py +6 -0
  15. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/schemas.py +2 -0
  16. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/lifecycle_gate.py +2 -7
  17. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/research/validation.py +17 -0
  18. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/runner/attempt_snapshots.py +5 -1
  19. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/runner/core.py +135 -10
  20. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/managed_runner.py +2 -7
  21. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/next_action.py +22 -44
  22. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/query.py +10 -3
  23. agent_lifecycle_kit-1.85.0/src/agent_lifecycle/workflow/transition_contract.py +33 -0
  24. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0/src/agent_lifecycle_kit.egg-info}/PKG-INFO +3 -3
  25. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle_kit.egg-info/SOURCES.txt +3 -0
  26. agent_lifecycle_kit-1.83.0/src/agent_lifecycle/adapter_sessions/redaction.py +0 -7
  27. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/LICENSE +0 -0
  28. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/NOTICE +0 -0
  29. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/benchmarks/reference-tasks/README.md +0 -0
  30. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/benchmarks/reference-tasks/manifest.json +0 -0
  31. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/benchmarks/reference-tasks/rt01-planning/oracle.json +0 -0
  32. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/benchmarks/reference-tasks/rt01-planning/task.md +0 -0
  33. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/benchmarks/reference-tasks/rt02-architecture-review/oracle.json +0 -0
  34. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/benchmarks/reference-tasks/rt02-architecture-review/task.md +0 -0
  35. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/benchmarks/reference-tasks/rt03-bug-forensics/oracle.json +0 -0
  36. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/benchmarks/reference-tasks/rt03-bug-forensics/task.md +0 -0
  37. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/benchmarks/reference-tasks/rt04-s1-managed-task/oracle.json +0 -0
  38. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/benchmarks/reference-tasks/rt04-s1-managed-task/task.md +0 -0
  39. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/benchmarks/reference-tasks/rt05-s2-evidence-task/oracle.json +0 -0
  40. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/benchmarks/reference-tasks/rt05-s2-evidence-task/task.md +0 -0
  41. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/setup.cfg +0 -0
  42. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/__init__.py +0 -0
  43. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/__main__.py +0 -0
  44. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/__init__.py +0 -0
  45. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/agent_plugin_probe.py +0 -0
  46. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/contracts.py +0 -0
  47. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/env.py +0 -0
  48. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/launch_execution.py +0 -0
  49. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/launch_preflight.py +0 -0
  50. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/launcher.py +0 -0
  51. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/lifecycle_control.py +0 -0
  52. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/local_launch_profile.py +0 -0
  53. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/planning_launch.py +0 -0
  54. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/planning_session.py +0 -0
  55. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/process.py +0 -0
  56. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/process_capture.py +0 -0
  57. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/process_control.py +0 -0
  58. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/process_groups.py +0 -0
  59. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/process_telemetry.py +0 -0
  60. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/qualification.py +0 -0
  61. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/session_store.py +0 -0
  62. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/start_input.py +0 -0
  63. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/start_receipts.py +0 -0
  64. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/start_routing.py +0 -0
  65. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/task_intake.py +0 -0
  66. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/unified_start.py +0 -0
  67. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/worktree_identity.py +0 -0
  68. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/audit/__init__.py +0 -0
  69. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/audit/bug_forensics.py +0 -0
  70. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/audit/implementation.py +0 -0
  71. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/audit/ownership.py +0 -0
  72. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/audit/package.py +0 -0
  73. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/audit/proof_chain.py +0 -0
  74. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/audit/proof_findings.py +0 -0
  75. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/audit/proof_integrity.py +0 -0
  76. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/audit/review_verdict.py +0 -0
  77. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/benchmarks/__init__.py +0 -0
  78. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/benchmarks/comparison.py +0 -0
  79. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/benchmarks/contracts.py +0 -0
  80. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/benchmarks/evaluator.py +0 -0
  81. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/benchmarks/oracles.py +0 -0
  82. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/benchmarks/qualification.py +0 -0
  83. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/benchmarks/reporting.py +0 -0
  84. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/benchmarks/stratification.py +0 -0
  85. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/changesets/__init__.py +0 -0
  86. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/changesets/git.py +0 -0
  87. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/changesets/snapshot.py +0 -0
  88. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/__init__.py +0 -0
  89. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/adapter.py +0 -0
  90. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/benchmarks.py +0 -0
  91. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/command_registry.py +0 -0
  92. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/dispatch.py +0 -0
  93. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/dispatch_adapters.py +0 -0
  94. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/dispatch_contracts.py +0 -0
  95. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/dispatch_metrics.py +0 -0
  96. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/dispatch_observability.py +0 -0
  97. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/dispatch_planning.py +0 -0
  98. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/dispatch_research.py +0 -0
  99. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/errors.py +0 -0
  100. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/followup.py +0 -0
  101. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/host_launch.py +0 -0
  102. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/main.py +0 -0
  103. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/metrics_parser.py +0 -0
  104. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/observability_parsers.py +0 -0
  105. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/parsers.py +0 -0
  106. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/planning_parsers.py +0 -0
  107. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/policy.py +0 -0
  108. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/progress_hooks.py +0 -0
  109. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/project.py +0 -0
  110. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/research.py +0 -0
  111. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/start.py +0 -0
  112. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/strategy.py +0 -0
  113. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/worktree.py +0 -0
  114. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/compiler/__init__.py +0 -0
  115. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/compiler/small_model_packets.py +0 -0
  116. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/compiler/task_packets.py +0 -0
  117. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/context/__init__.py +0 -0
  118. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/context/checkpoint_store.py +0 -0
  119. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/context/checkpoints.py +0 -0
  120. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/context/episode_retrieval.py +0 -0
  121. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/context/external_memory.py +0 -0
  122. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/context/profiles.py +0 -0
  123. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/context/rendering.py +0 -0
  124. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/context/thread_bridge_context.py +0 -0
  125. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/__init__.py +0 -0
  126. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/adapter_contract_schemas.py +0 -0
  127. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/adapter_event_schemas.py +0 -0
  128. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/adapter_session_schemas.py +0 -0
  129. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/adapter_task_schemas.py +0 -0
  130. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/agent_plugin_qualification_schemas.py +0 -0
  131. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/audit_optimization_schemas.py +0 -0
  132. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/audit_schemas.py +0 -0
  133. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/benchmark_schemas.py +0 -0
  134. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/bug_forensics_schemas.py +0 -0
  135. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/canonical.py +0 -0
  136. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/compatibility.py +0 -0
  137. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/context_checkpoint_schemas.py +0 -0
  138. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/context_model_schemas.py +0 -0
  139. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/core_schemas.py +0 -0
  140. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/cross_check_schemas.py +0 -0
  141. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/errors.py +0 -0
  142. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/evidence_import_schemas.py +0 -0
  143. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/execution_strategy_schemas.py +0 -0
  144. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/goal_validation.py +0 -0
  145. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/host_capability_schemas.py +0 -0
  146. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/implementation_audit_validation.py +0 -0
  147. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/import_dialect_schemas.py +0 -0
  148. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/launch_qualification.py +0 -0
  149. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/lifecycle_control_definitions.py +0 -0
  150. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/lifecycle_control_schemas.py +0 -0
  151. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/lifecycle_control_validation.py +0 -0
  152. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/local_launch_validation.py +0 -0
  153. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/metric_schemas.py +0 -0
  154. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/ownership_paths.py +0 -0
  155. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/paths.py +0 -0
  156. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/performance_limits.py +0 -0
  157. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/persistence.py +0 -0
  158. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/plan_contract_schemas.py +0 -0
  159. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/plan_delta_schemas.py +0 -0
  160. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/plan_manifest_schemas.py +0 -0
  161. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/planning_launch_schemas.py +0 -0
  162. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/policy_schemas.py +0 -0
  163. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/process_execution_schemas.py +0 -0
  164. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/progress_bridge_schemas.py +0 -0
  165. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/progress_hook_schemas.py +0 -0
  166. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/project_profile_preset_schemas.py +0 -0
  167. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/project_profile_schemas.py +0 -0
  168. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/proof_integrity_schemas.py +0 -0
  169. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/proof_validation.py +0 -0
  170. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/quality_modes.py +0 -0
  171. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/release_contract_schemas.py +0 -0
  172. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/review_mesh_recommendation_schemas.py +0 -0
  173. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/review_mesh_schemas.py +0 -0
  174. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/review_quality_schemas.py +0 -0
  175. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/review_verdict.py +0 -0
  176. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/runner_worktree_schemas.py +0 -0
  177. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/sandbox_schemas.py +0 -0
  178. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/schema_builders.py +0 -0
  179. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/status_goal_schemas.py +0 -0
  180. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/task_template_schemas.py +0 -0
  181. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/thread_bridge_schema_definitions.py +0 -0
  182. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/thread_bridge_schemas.py +0 -0
  183. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/thread_bridge_validation.py +0 -0
  184. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/token_estimation.py +0 -0
  185. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/usage_export_schemas.py +0 -0
  186. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/validation.py +0 -0
  187. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/workflow_artifact_schemas.py +0 -0
  188. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/workflow_authorization_schemas.py +0 -0
  189. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/workflow_state_schemas.py +0 -0
  190. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/data/__init__.py +0 -0
  191. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/data/profiles/lifecycle-baselines.v1.json +0 -0
  192. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/data/profiles/model-routing-profile.v1.json +0 -0
  193. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/feature-implementation.v1.json +0 -0
  194. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/quick-change.v1.json +0 -0
  195. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/research-review.v1.json +0 -0
  196. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/data/profiles/risk-execution-policy.v1.json +0 -0
  197. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/data/profiles/small-context-profile.v1.json +0 -0
  198. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/diagnostics/__init__.py +0 -0
  199. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/diagnostics/bundles.py +0 -0
  200. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/diagnostics/installation_catalog.py +0 -0
  201. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/diagnostics/readiness.py +0 -0
  202. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/evidence_index/__init__.py +0 -0
  203. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/evidence_index/core.py +0 -0
  204. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/evidence_index/episode_index.py +0 -0
  205. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/evidence_index/external_context.py +0 -0
  206. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/followup/__init__.py +0 -0
  207. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/followup/records.py +0 -0
  208. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/freeze/__init__.py +0 -0
  209. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/freeze/locks.py +0 -0
  210. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/freeze/package_integrity.py +0 -0
  211. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/goal/__init__.py +0 -0
  212. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/goal/records.py +0 -0
  213. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/goal/view.py +0 -0
  214. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/__init__.py +0 -0
  215. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/acp_capability.py +0 -0
  216. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/agent_plugin_qualification.py +0 -0
  217. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/capabilities.py +0 -0
  218. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/context_events.py +0 -0
  219. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/contracts.py +0 -0
  220. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/event_capture.py +0 -0
  221. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/events.py +0 -0
  222. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/inspection.py +0 -0
  223. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/inspection_claude.py +0 -0
  224. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/inspection_codex.py +0 -0
  225. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/inspection_common.py +0 -0
  226. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/inspection_cursor.py +0 -0
  227. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/inspection_gemini_cli.py +0 -0
  228. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/inspection_hermes.py +0 -0
  229. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/inspection_kimi_code.py +0 -0
  230. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/inspection_opencode.py +0 -0
  231. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/inspection_profile.py +0 -0
  232. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/inspection_qwen_code.py +0 -0
  233. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/lifecycle_control.py +0 -0
  234. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/lifecycle_control_qualification.py +0 -0
  235. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/process_port.py +0 -0
  236. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/receipts.py +0 -0
  237. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/scaffold.py +0 -0
  238. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/thread_bridge.py +0 -0
  239. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/usage_normalizers.py +0 -0
  240. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/validation.py +0 -0
  241. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/imports/__init__.py +0 -0
  242. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/imports/agentskills_profile.py +0 -0
  243. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/imports/bmad_profile.py +0 -0
  244. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/imports/constitution_adr.py +0 -0
  245. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/imports/dialect_profiles.py +0 -0
  246. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/imports/external_agent.py +0 -0
  247. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/imports/external_dialects.py +0 -0
  248. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/imports/external_workflow.py +0 -0
  249. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/imports/multi_markdown.py +0 -0
  250. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/imports/openspec_profile.py +0 -0
  251. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/imports/planning.py +0 -0
  252. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/imports/spec_kit_profile.py +0 -0
  253. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/imports/spec_kitty_profile.py +0 -0
  254. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/metrics/__init__.py +0 -0
  255. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/metrics/audit_optimization.py +0 -0
  256. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/metrics/audit_samples.py +0 -0
  257. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/metrics/cost_collection.py +0 -0
  258. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/metrics/costs.py +0 -0
  259. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/metrics/outcome_index.py +0 -0
  260. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/metrics/phase_resources.py +0 -0
  261. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/metrics/recommendations.py +0 -0
  262. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/metrics/regression_signals.py +0 -0
  263. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/metrics/usage_export.py +0 -0
  264. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/model_routing/__init__.py +0 -0
  265. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/model_routing/profiles.py +0 -0
  266. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/model_routing/receipts.py +0 -0
  267. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/model_routing/resolver.py +0 -0
  268. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/__init__.py +0 -0
  269. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/__main__.py +0 -0
  270. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/authority.py +0 -0
  271. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/canonical.py +0 -0
  272. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/cli.py +0 -0
  273. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/ed25519.py +0 -0
  274. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/errors.py +0 -0
  275. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/gate.py +0 -0
  276. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/git_objects.py +0 -0
  277. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/matching.py +0 -0
  278. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/paths.py +0 -0
  279. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/policy.py +0 -0
  280. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/receipt.py +0 -0
  281. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/scanner.py +0 -0
  282. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/test_runner.py +0 -0
  283. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/planning/__init__.py +0 -0
  284. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/planning/acceptance_markdown.py +0 -0
  285. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/planning/completeness.py +0 -0
  286. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/planning/continuity.py +0 -0
  287. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/planning/deltas.py +0 -0
  288. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/planning/manifest_contract.py +0 -0
  289. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/planning/task_compatibility.py +0 -0
  290. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/planning/templates.py +0 -0
  291. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/planning/tiering.py +0 -0
  292. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/planning/traceability.py +0 -0
  293. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/planning/validation.py +0 -0
  294. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/planning/verification.py +0 -0
  295. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/policy/__init__.py +0 -0
  296. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/policy/adaptive_lifecycle.py +0 -0
  297. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/policy/apply.py +0 -0
  298. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/policy/execution_strategy.py +0 -0
  299. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/policy/proposals.py +0 -0
  300. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/policy/quality_floor.py +0 -0
  301. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/policy/risk_execution.py +0 -0
  302. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/policy/runtime_receipts.py +0 -0
  303. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/policy/thread_bridge.py +0 -0
  304. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/project/__init__.py +0 -0
  305. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/project/guidance.py +0 -0
  306. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/project/merge.py +0 -0
  307. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/project/presets.py +0 -0
  308. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/project/principles.py +0 -0
  309. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/project/profile.py +0 -0
  310. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/py.typed +0 -0
  311. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/quality/__init__.py +0 -0
  312. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/quality/bug_forensics.py +0 -0
  313. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/quality/bug_forensics_advisor.py +0 -0
  314. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/quality/bug_forensics_recipes.py +0 -0
  315. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/quality/cross_check.py +0 -0
  316. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/quality/failure_classification.py +0 -0
  317. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/quality/packs.py +0 -0
  318. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/reporting/__init__.py +0 -0
  319. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/reporting/change_summary.py +0 -0
  320. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/reporting/event_feed.py +0 -0
  321. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/reporting/execution_resources.py +0 -0
  322. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/reporting/progress_bridge.py +0 -0
  323. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/reporting/progress_hooks.py +0 -0
  324. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/reporting/progress_terminal.py +0 -0
  325. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/reporting/progress_view.py +0 -0
  326. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/reporting/status_view.py +0 -0
  327. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/reporting/usage_export.py +0 -0
  328. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/research/__init__.py +0 -0
  329. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/research/evidence.py +0 -0
  330. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/research/provenance.py +0 -0
  331. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/resources.py +0 -0
  332. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/review/__init__.py +0 -0
  333. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/review/validation.py +0 -0
  334. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/review_mesh/__init__.py +0 -0
  335. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/review_mesh/assignments.py +0 -0
  336. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/review_mesh/contracts.py +0 -0
  337. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/review_mesh/operator_templates.py +0 -0
  338. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/review_mesh/quorum.py +0 -0
  339. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/review_mesh/recommendation.py +0 -0
  340. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/review_mesh/results.py +0 -0
  341. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/review_mesh/synthesis.py +0 -0
  342. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/runner/__init__.py +0 -0
  343. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/runner/sandbox_receipts.py +0 -0
  344. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/specification/__init__.py +0 -0
  345. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/specification/completion_check.py +0 -0
  346. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/specification/completion_gate.py +0 -0
  347. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/specification/completion_signal.py +0 -0
  348. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/specification/validation.py +0 -0
  349. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/__init__.py +0 -0
  350. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/artifacts.py +0 -0
  351. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/authorization.py +0 -0
  352. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/budget_decisions.py +0 -0
  353. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/budget_policy.py +0 -0
  354. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/budget_receipts.py +0 -0
  355. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/bug_forensics_gates.py +0 -0
  356. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/checkpoint_gate.py +0 -0
  357. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/controller.py +0 -0
  358. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/events.py +0 -0
  359. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/final_proof_integrity.py +0 -0
  360. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/finalization.py +0 -0
  361. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/gates.py +0 -0
  362. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/implementation_audit_gate.py +0 -0
  363. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/initialization.py +0 -0
  364. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/leases.py +0 -0
  365. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/lineage.py +0 -0
  366. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/model_usage.py +0 -0
  367. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/operation_kernel.py +0 -0
  368. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/plan_adoption.py +0 -0
  369. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/review_mesh_gate.py +0 -0
  370. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/reviews.py +0 -0
  371. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/risk_execution_gate.py +0 -0
  372. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/run_transitions.py +0 -0
  373. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/sandbox_policy.py +0 -0
  374. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/selectors.py +0 -0
  375. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/state.py +0 -0
  376. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/task_outcomes.py +0 -0
  377. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/task_transitions.py +0 -0
  378. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/worktree/__init__.py +0 -0
  379. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/worktree/isolation.py +0 -0
  380. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle_kit.egg-info/dependency_links.txt +0 -0
  381. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle_kit.egg-info/entry_points.txt +0 -0
  382. {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle_kit.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-lifecycle-kit
3
- Version: 1.83.0
3
+ Version: 1.85.0
4
4
  Summary: Provider-neutral lifecycle control layer that helps coding agents plan, execute, validate, and prove software tasks to completion.
5
5
  Author: Agent Lifecycle Kit contributors
6
6
  License: Apache-2.0
@@ -43,7 +43,7 @@ ALK provides a verifiable finish for external-agent work with proportionate cont
43
43
  ## Quick start
44
44
  Start with [install ALK and make the first run](docs/guides/install-and-first-run.md).
45
45
 
46
- It includes macOS, Linux and Windows instructions, Python 3.11-3.14, [PyPI](https://pypi.org/project/agent-lifecycle-kit/) installation with `python -m pip install agent-lifecycle-kit==1.83.0`, and common `agent-lifecycle version` errors.
46
+ It includes macOS, Linux and Windows instructions, Python 3.11-3.14, [PyPI](https://pypi.org/project/agent-lifecycle-kit/) installation with `python -m pip install agent-lifecycle-kit==1.85.0`, and common `agent-lifecycle version` errors.
47
47
 
48
48
  For a quick start, run:
49
49
 
@@ -194,7 +194,7 @@ Adapter installation and support-level details live in [Adapter install](docs/ad
194
194
 
195
195
  - Start: [English documentation](docs/README.md), [Русская документация](docs/ru/README.md), [Install](docs/guides/install-and-first-run.md), [Quickstart](docs/guides/quickstart.md), [Beginner and advanced workflows](docs/guides/beginner-and-advanced-workflows.md), [Commands by task](docs/guides/commands-by-task.md), [Research workflow](docs/guides/research-workflow.md), [Lifecycle task scenarios](docs/guides/lifecycle-cookbook.md), and [Code review workflows](docs/guides/code-review-workflows.md).
196
196
  - Planning and adapters: [Issue to specification drafts](docs/guides/issue-to-spec.md), [Adapter install](docs/adapters/install.md), and [Adapter support matrix](docs/adapters/support-matrix.md).
197
- - Reference: [System architecture](docs/architecture/system-architecture.md), [workflow customization and execution controls](docs/reference/workflow-customization.md), [execution strategy](docs/reference/execution-strategy.md), [CLI reference](docs/reference/cli.md), [Plan verification](docs/reference/plan-verification.md), [Research evidence](docs/reference/research-evidence.md), [Source of truth](docs/reference/source-of-truth.md), [Managed lifecycle runner](docs/reference/managed-lifecycle-runner.md), [Managed adapter sessions](docs/reference/managed-adapter-sessions.md), [Portable Agent Plugins](docs/reference/agent-plugins.md), [Plugin publication](docs/reference/plugin-publication.md), [Implementation audit](docs/reference/implementation-audit.md), [Plan completeness](docs/reference/plan-completeness.md), [Public contracts](docs/reference/public-contracts.md), and [Readiness diagnostics](docs/reference/readiness-diagnostics.md).
197
+ - Reference: [System architecture](docs/architecture/system-architecture.md), [workflow customization and execution controls](docs/reference/workflow-customization.md), [execution strategy](docs/reference/execution-strategy.md), [CLI reference](docs/reference/cli.md), [Plan verification](docs/reference/plan-verification.md), [Research evidence](docs/reference/research-evidence.md), [Public locators and redaction](docs/reference/public-locators-and-redaction.md), [Source of truth](docs/reference/source-of-truth.md), [Managed lifecycle runner](docs/reference/managed-lifecycle-runner.md), [Managed adapter sessions](docs/reference/managed-adapter-sessions.md), [Portable Agent Plugins](docs/reference/agent-plugins.md), [Plugin publication](docs/reference/plugin-publication.md), [Implementation audit](docs/reference/implementation-audit.md), [Plan completeness](docs/reference/plan-completeness.md), [Public contracts](docs/reference/public-contracts.md), and [Readiness diagnostics](docs/reference/readiness-diagnostics.md).
198
198
  - Quality and resources: [Reference-task evaluation](docs/reference/reference-task-evaluation.md), [model routing](docs/reference/model-routing.md), [quality-cost learning](docs/reference/quality-cost-learning.md), [performance and resource budgets](docs/reference/performance-and-resource-budgets.md), [lifecycle cost accounting](docs/reference/lifecycle-cost.md), [host-local token accounting](docs/reference/host-local-token-accounting.md), [process execution observability](docs/reference/process-execution-observability.md), [Usage export](docs/reference/usage-export.md), and [Evidence integrity](docs/reference/evidence-integrity.md).
199
199
  - Profiles and operations: [Project workflow presets](docs/reference/workflow-presets.md), [Project workflow profile](docs/reference/project-workflow-profile.md), [Read-only status views](docs/reference/read-only-status-view.md), [Adapter progress bridge](docs/reference/automatic-progress-bridge.md), [Sandbox boundaries](docs/reference/sandbox-boundaries.md), [Import mappers](docs/reference/import-mappers.md), [Episode retrieval](docs/reference/episode-retrieval.md), [Runner recovery](docs/reference/runner-recovery.md), [Cross-check profile](docs/reference/cross-check-profile.md), [Review Mesh](docs/reference/review-mesh.md), [Bug Forensics profile](docs/reference/bug-forensics.md), and [Bug Forensics context budget](docs/reference/bug-forensics-context-budget.md).
200
200
  - Release assets: [Task templates](templates/tasks/README.md), [Neutrality scanning](docs/reference/neutrality.md), and [Release security](docs/security/release-security.md).
@@ -21,7 +21,7 @@ ALK provides a verifiable finish for external-agent work with proportionate cont
21
21
  ## Quick start
22
22
  Start with [install ALK and make the first run](docs/guides/install-and-first-run.md).
23
23
 
24
- It includes macOS, Linux and Windows instructions, Python 3.11-3.14, [PyPI](https://pypi.org/project/agent-lifecycle-kit/) installation with `python -m pip install agent-lifecycle-kit==1.83.0`, and common `agent-lifecycle version` errors.
24
+ It includes macOS, Linux and Windows instructions, Python 3.11-3.14, [PyPI](https://pypi.org/project/agent-lifecycle-kit/) installation with `python -m pip install agent-lifecycle-kit==1.85.0`, and common `agent-lifecycle version` errors.
25
25
 
26
26
  For a quick start, run:
27
27
 
@@ -172,7 +172,7 @@ Adapter installation and support-level details live in [Adapter install](docs/ad
172
172
 
173
173
  - Start: [English documentation](docs/README.md), [Русская документация](docs/ru/README.md), [Install](docs/guides/install-and-first-run.md), [Quickstart](docs/guides/quickstart.md), [Beginner and advanced workflows](docs/guides/beginner-and-advanced-workflows.md), [Commands by task](docs/guides/commands-by-task.md), [Research workflow](docs/guides/research-workflow.md), [Lifecycle task scenarios](docs/guides/lifecycle-cookbook.md), and [Code review workflows](docs/guides/code-review-workflows.md).
174
174
  - Planning and adapters: [Issue to specification drafts](docs/guides/issue-to-spec.md), [Adapter install](docs/adapters/install.md), and [Adapter support matrix](docs/adapters/support-matrix.md).
175
- - Reference: [System architecture](docs/architecture/system-architecture.md), [workflow customization and execution controls](docs/reference/workflow-customization.md), [execution strategy](docs/reference/execution-strategy.md), [CLI reference](docs/reference/cli.md), [Plan verification](docs/reference/plan-verification.md), [Research evidence](docs/reference/research-evidence.md), [Source of truth](docs/reference/source-of-truth.md), [Managed lifecycle runner](docs/reference/managed-lifecycle-runner.md), [Managed adapter sessions](docs/reference/managed-adapter-sessions.md), [Portable Agent Plugins](docs/reference/agent-plugins.md), [Plugin publication](docs/reference/plugin-publication.md), [Implementation audit](docs/reference/implementation-audit.md), [Plan completeness](docs/reference/plan-completeness.md), [Public contracts](docs/reference/public-contracts.md), and [Readiness diagnostics](docs/reference/readiness-diagnostics.md).
175
+ - Reference: [System architecture](docs/architecture/system-architecture.md), [workflow customization and execution controls](docs/reference/workflow-customization.md), [execution strategy](docs/reference/execution-strategy.md), [CLI reference](docs/reference/cli.md), [Plan verification](docs/reference/plan-verification.md), [Research evidence](docs/reference/research-evidence.md), [Public locators and redaction](docs/reference/public-locators-and-redaction.md), [Source of truth](docs/reference/source-of-truth.md), [Managed lifecycle runner](docs/reference/managed-lifecycle-runner.md), [Managed adapter sessions](docs/reference/managed-adapter-sessions.md), [Portable Agent Plugins](docs/reference/agent-plugins.md), [Plugin publication](docs/reference/plugin-publication.md), [Implementation audit](docs/reference/implementation-audit.md), [Plan completeness](docs/reference/plan-completeness.md), [Public contracts](docs/reference/public-contracts.md), and [Readiness diagnostics](docs/reference/readiness-diagnostics.md).
176
176
  - Quality and resources: [Reference-task evaluation](docs/reference/reference-task-evaluation.md), [model routing](docs/reference/model-routing.md), [quality-cost learning](docs/reference/quality-cost-learning.md), [performance and resource budgets](docs/reference/performance-and-resource-budgets.md), [lifecycle cost accounting](docs/reference/lifecycle-cost.md), [host-local token accounting](docs/reference/host-local-token-accounting.md), [process execution observability](docs/reference/process-execution-observability.md), [Usage export](docs/reference/usage-export.md), and [Evidence integrity](docs/reference/evidence-integrity.md).
177
177
  - Profiles and operations: [Project workflow presets](docs/reference/workflow-presets.md), [Project workflow profile](docs/reference/project-workflow-profile.md), [Read-only status views](docs/reference/read-only-status-view.md), [Adapter progress bridge](docs/reference/automatic-progress-bridge.md), [Sandbox boundaries](docs/reference/sandbox-boundaries.md), [Import mappers](docs/reference/import-mappers.md), [Episode retrieval](docs/reference/episode-retrieval.md), [Runner recovery](docs/reference/runner-recovery.md), [Cross-check profile](docs/reference/cross-check-profile.md), [Review Mesh](docs/reference/review-mesh.md), [Bug Forensics profile](docs/reference/bug-forensics.md), and [Bug Forensics context budget](docs/reference/bug-forensics-context-budget.md).
178
178
  - Release assets: [Task templates](templates/tasks/README.md), [Neutrality scanning](docs/reference/neutrality.md), and [Release security](docs/security/release-security.md).
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "agent-lifecycle-kit"
7
- version = "1.83.0"
7
+ version = "1.85.0"
8
8
  description = "Provider-neutral lifecycle control layer that helps coding agents plan, execute, validate, and prove software tasks to completion."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11,<3.15"
@@ -1,3 +1,3 @@
1
1
  """Package version."""
2
2
 
3
- __version__ = "1.83.0"
3
+ __version__ = "1.85.0"
@@ -0,0 +1,12 @@
1
+ """Adapter-session compatibility facade for shared receipt redaction."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from agent_lifecycle.contracts.process_redaction import (
6
+ normalize_public_locator,
7
+ redact_env_names,
8
+ redact_process_text,
9
+ redact_text,
10
+ )
11
+
12
+ __all__ = ["normalize_public_locator", "redact_env_names", "redact_process_text", "redact_text"]
@@ -12,6 +12,7 @@ from agent_lifecycle.contracts import canonical_digest, read_json_object
12
12
  from agent_lifecycle.policy.risk_execution import derive_risk_execution_profile
13
13
  from agent_lifecycle.resources import builtin_profile_path
14
14
  from agent_lifecycle.workflow import run_managed_lifecycle_step
15
+ from agent_lifecycle.workflow.transition_contract import validate_action_catalog
15
16
 
16
17
 
17
18
  def managed_adapter_run(
@@ -72,7 +73,14 @@ def managed_adapter_run(
72
73
  )
73
74
  next_action = _risk_aware_next_action(next_action, risk_profile)
74
75
  state_identity = {**_state_identity(state_path), "taskId": task_id}
75
- proof = _managed_proof("adapter run", adapter_id=adapter_id, task_id=task_id, state_identity=state_identity)
76
+ catalog = validate_action_catalog()
77
+ proof = _managed_proof(
78
+ "adapter run",
79
+ adapter_id=adapter_id,
80
+ task_id=task_id,
81
+ state_identity=state_identity,
82
+ action_catalog_digest=catalog["catalogDigest"],
83
+ )
76
84
  session = create_session(
77
85
  adapter_id=adapter_id,
78
86
  mode="MANAGED_TASK",
@@ -189,8 +197,15 @@ def _state_identity(state_path: Path) -> dict[str, Any]:
189
197
  }
190
198
 
191
199
 
192
- def _managed_proof(command: str, *, adapter_id: str, task_id: str, state_identity: dict[str, Any]) -> dict[str, Any]:
193
- return {
200
+ def _managed_proof(
201
+ command: str,
202
+ *,
203
+ adapter_id: str,
204
+ task_id: str,
205
+ state_identity: dict[str, Any],
206
+ action_catalog_digest: str | None = None,
207
+ ) -> dict[str, Any]:
208
+ proof = {
194
209
  "kind": "alk-managed-adapter-session",
195
210
  "status": "PASS",
196
211
  "command": command,
@@ -198,6 +213,9 @@ def _managed_proof(command: str, *, adapter_id: str, task_id: str, state_identit
198
213
  "taskId": task_id,
199
214
  "stateIdentity": state_identity,
200
215
  }
216
+ if action_catalog_digest is not None:
217
+ proof["actionCatalogDigest"] = action_catalog_digest
218
+ return proof
201
219
 
202
220
 
203
221
  def _risk_aware_next_action(next_action: Any, profile: dict[str, Any]) -> dict[str, Any]:
@@ -21,7 +21,8 @@ from agent_lifecycle.cli.progress_hooks import (
21
21
  maybe_emit_workflow_progress_hook,
22
22
  validate_workflow_progress_hook_request,
23
23
  )
24
- from agent_lifecycle.contracts import LifecycleError, read_json_object, write_json_create
24
+ from agent_lifecycle.contracts import LifecycleError, canonical_digest, read_json_object, write_json_create
25
+ from agent_lifecycle.contracts.lifecycle_action_catalog import COMPATIBILITY_COMMANDS
25
26
  from agent_lifecycle.runner import (
26
27
  build_runner_snapshot,
27
28
  initialize_runner_state,
@@ -404,7 +405,7 @@ def _dispatch_runner(args: argparse.Namespace) -> dict[str, Any]:
404
405
  runner_path = Path(args.runner)
405
406
  if args.runner_command == "start":
406
407
  workflow_state = read_json_object(Path(args.state), label="workflow state")
407
- policy = load_runner_policy(Path(args.policy) if args.policy else None)
408
+ policy = load_runner_policy(Path(args.policy)) if args.policy else None
408
409
  runner_state = initialize_runner_state(
409
410
  workflow_state,
410
411
  policy=policy,
@@ -412,7 +413,10 @@ def _dispatch_runner(args: argparse.Namespace) -> dict[str, Any]:
412
413
  reason=args.reason,
413
414
  )
414
415
  write_runner_state_create(runner_path, runner_state)
415
- return validate_runner_state(runner_state, workflow_state=workflow_state)
416
+ return _runner_compatibility_result(
417
+ validate_runner_state(runner_state, workflow_state=workflow_state),
418
+ command="runner start",
419
+ )
416
420
  runner_state = load_runner_state(runner_path)
417
421
  if args.runner_command == "status":
418
422
  status_workflow_state = read_json_object(Path(args.state), label="workflow state") if args.state else None
@@ -420,19 +424,25 @@ def _dispatch_runner(args: argparse.Namespace) -> dict[str, Any]:
420
424
  if status_workflow_state is None:
421
425
  raise LifecycleError("missing-cli-argument", "runner status with --profile requires --state")
422
426
  profile = read_json_object(Path(args.profile), label="context profile")
423
- return build_runner_snapshot(
424
- runner_state,
425
- status_workflow_state,
426
- profile=profile,
427
- window=args.target_window,
427
+ return _runner_compatibility_result(
428
+ build_runner_snapshot(
429
+ runner_state,
430
+ status_workflow_state,
431
+ profile=profile,
432
+ window=args.target_window,
433
+ ),
434
+ command="runner status",
428
435
  )
429
- return validate_runner_state(runner_state, workflow_state=status_workflow_state)
436
+ return _runner_compatibility_result(
437
+ validate_runner_state(runner_state, workflow_state=status_workflow_state),
438
+ command="runner status",
439
+ )
430
440
  workflow_state = read_json_object(Path(args.state), label="workflow state")
431
441
  if args.runner_command == "transition":
432
442
  request = read_json_object(Path(args.request), label="runner transition request")
433
443
  payload = transition_runner(runner_state, workflow_state, request)
434
444
  write_runner_state(runner_path, payload["state"])
435
- return payload["result"]
445
+ return _runner_compatibility_result(payload["result"], command="runner transition")
436
446
  if args.runner_command == "stop":
437
447
  payload = request_runner_stop(
438
448
  runner_state,
@@ -442,7 +452,7 @@ def _dispatch_runner(args: argparse.Namespace) -> dict[str, Any]:
442
452
  reason=args.reason,
443
453
  )
444
454
  write_runner_state(runner_path, payload["state"])
445
- return payload["result"]
455
+ return _runner_compatibility_result(payload["result"], command="runner stop")
446
456
  if args.runner_command == "resume":
447
457
  payload = resume_runner(
448
458
  runner_state,
@@ -452,5 +462,23 @@ def _dispatch_runner(args: argparse.Namespace) -> dict[str, Any]:
452
462
  reason=args.reason,
453
463
  )
454
464
  write_runner_state(runner_path, payload["state"])
455
- return payload["result"]
465
+ return _runner_compatibility_result(payload["result"], command="runner resume")
456
466
  raise LifecycleError("command-not-implemented", "runner command is not implemented")
467
+
468
+
469
+ def _runner_compatibility_result(payload: dict[str, Any], *, command: str) -> dict[str, Any]:
470
+ """Mark legacy runner output without changing its historical meaning."""
471
+
472
+ classification = COMPATIBILITY_COMMANDS.get(command)
473
+ if classification is None:
474
+ raise LifecycleError("invalid-runner-command", "runner command is not in the compatibility catalog")
475
+ digest_keys = ("resultDigest", "snapshotDigest", "validationDigest")
476
+ digest_key = next((key for key in digest_keys if key in payload), "validationDigest")
477
+ body = {key: value for key, value in payload.items() if key not in digest_keys}
478
+ body["deprecation"] = {
479
+ "status": "DEPRECATED",
480
+ "command": command,
481
+ "replacement": classification["replacement"],
482
+ "workflowAuthority": "workflow-state-only",
483
+ }
484
+ return {**body, digest_key: canonical_digest(body)}
@@ -6,6 +6,7 @@ import argparse
6
6
 
7
7
  from agent_lifecycle.adapter_sessions import START_MODES
8
8
  from agent_lifecycle.cli.progress_hooks import add_progress_hook_args
9
+ from agent_lifecycle.contracts.lifecycle_action_catalog import COMPATIBILITY_COMMANDS
9
10
  from agent_lifecycle.contracts.review_mesh_schemas import REVIEW_MESH_MODE_IDS
10
11
  from agent_lifecycle.resources import builtin_profile_path
11
12
  from agent_lifecycle.review_mesh.operator_templates import REVIEW_MESH_OPERATOR_TEMPLATE_IDS
@@ -466,7 +467,13 @@ def _add_model_parser(subparsers: argparse._SubParsersAction[argparse.ArgumentPa
466
467
 
467
468
 
468
469
  def _add_runner_parser(subparsers: argparse._SubParsersAction[argparse.ArgumentParser]) -> None:
469
- runner = subparsers.add_parser("runner", help="controlled execution-loop commands")
470
+ runner = subparsers.add_parser(
471
+ "runner",
472
+ help=(
473
+ f"deprecated compatibility journal commands ({len(COMPATIBILITY_COMMANDS)}); "
474
+ "use workflow commands for lifecycle authority"
475
+ ),
476
+ )
470
477
  runner_sub = runner.add_subparsers(dest="runner_command", required=True)
471
478
  runner_start = runner_sub.add_parser("start")
472
479
  runner_start.add_argument("--state", required=True)
@@ -0,0 +1,147 @@
1
+ """Closed catalog for workflow actions and compatibility commands.
2
+
3
+ The catalog is deliberately data-only. It is shared by projections and
4
+ host gates, but it cannot be extended by a project profile or an adapter.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ from typing import Any
10
+
11
+ from agent_lifecycle.contracts.canonical import canonical_digest
12
+
13
+ ACTION_CATALOG: dict[str, dict[str, Any]] = {
14
+ "none": {"hostActionRequired": False, "stateMutationRequired": False},
15
+ "blocked": {"hostActionRequired": True, "stateMutationRequired": False},
16
+ "start-execution": {"hostActionRequired": True, "stateMutationRequired": True},
17
+ "launch-tasks": {"hostActionRequired": True, "stateMutationRequired": False},
18
+ "wait-for-active-tasks": {"hostActionRequired": False, "stateMutationRequired": False},
19
+ "accept-task": {"hostActionRequired": True, "stateMutationRequired": False},
20
+ "wait-for-task-outcome": {"hostActionRequired": False, "stateMutationRequired": False},
21
+ "run-final-audit": {"hostActionRequired": True, "stateMutationRequired": False},
22
+ "final-audit-outcome": {"hostActionRequired": True, "stateMutationRequired": True},
23
+ "finalize-run": {"hostActionRequired": True, "stateMutationRequired": True},
24
+ "request-human-decision": {"hostActionRequired": True, "stateMutationRequired": False},
25
+ "record-budget-decision": {"hostActionRequired": True, "stateMutationRequired": True},
26
+ "record-external-action-receipt": {"hostActionRequired": True, "stateMutationRequired": True},
27
+ "request-execution-authorization": {"hostActionRequired": True, "stateMutationRequired": True},
28
+ "adopt-plan": {"hostActionRequired": True, "stateMutationRequired": True},
29
+ }
30
+
31
+ ACTION_TYPES = frozenset(ACTION_CATALOG)
32
+ NON_MODEL_ACTION_TYPES = frozenset(
33
+ {
34
+ "adopt-plan",
35
+ "final-audit-outcome",
36
+ "request-human-decision",
37
+ "record-budget-decision",
38
+ "record-external-action-receipt",
39
+ }
40
+ )
41
+
42
+ OPERATION_ACTION_TYPES: dict[str, frozenset[str]] = {
43
+ "file-edit": frozenset({"launch-tasks"}),
44
+ "shell-command": frozenset({"launch-tasks"}),
45
+ "task-accept": frozenset({"accept-task"}),
46
+ "run-finalize": frozenset({"finalize-run"}),
47
+ }
48
+
49
+ WORKFLOW_PHASE_ACTION_TYPES: dict[str, frozenset[str]] = {
50
+ "AWAITING_AUTHORIZATION": frozenset({"request-execution-authorization"}),
51
+ "PLAN_ONLY": frozenset({"none"}),
52
+ "READY": frozenset({"start-execution"}),
53
+ "RUNNING": frozenset(
54
+ {
55
+ "launch-tasks",
56
+ "accept-task",
57
+ "wait-for-active-tasks",
58
+ "wait-for-task-outcome",
59
+ "request-human-decision",
60
+ "run-final-audit",
61
+ }
62
+ ),
63
+ "BLOCKED": frozenset({"adopt-plan", "request-human-decision", "none"}),
64
+ "WAITING_FOR_BUDGET_DECISION": frozenset({"record-budget-decision"}),
65
+ "WAITING_FOR_EXTERNAL_ACTION": frozenset({"record-external-action-receipt"}),
66
+ "FINAL_AUDIT": frozenset({"final-audit-outcome", "finalize-run"}),
67
+ "COMPLETE": frozenset({"none"}),
68
+ "FAILED": frozenset({"none"}),
69
+ "CANCELLED": frozenset({"none"}),
70
+ }
71
+
72
+ COMPATIBILITY_COMMANDS: dict[str, dict[str, str]] = {
73
+ "runner start": {"kind": "compatibility", "replacement": "workflow run"},
74
+ "runner status": {"kind": "compatibility", "replacement": "workflow status"},
75
+ "runner transition": {"kind": "compatibility", "replacement": "workflow task-*"},
76
+ "runner stop": {"kind": "compatibility", "replacement": "workflow pause"},
77
+ "runner resume": {"kind": "compatibility", "replacement": "workflow resume"},
78
+ }
79
+
80
+
81
+ def build_action(action_type: str, **fields: Any) -> dict[str, Any]:
82
+ """Build a projected action only if it belongs to the closed catalog."""
83
+
84
+ validate_action_type(action_type)
85
+ return {"type": action_type, **fields}
86
+
87
+
88
+ def validate_action_type(action_type: Any) -> str:
89
+ if not isinstance(action_type, str) or action_type not in ACTION_TYPES:
90
+ raise ValueError(f"unsupported lifecycle action: {action_type!r}")
91
+ return action_type
92
+
93
+
94
+ def action_requires_host(action_type: Any) -> bool:
95
+ return bool(ACTION_CATALOG.get(validate_action_type(action_type), {}).get("hostActionRequired"))
96
+
97
+
98
+ def action_requires_state_mutation(action_type: Any) -> bool:
99
+ return bool(ACTION_CATALOG.get(validate_action_type(action_type), {}).get("stateMutationRequired"))
100
+
101
+
102
+ def action_types_for_operation(operation: str) -> frozenset[str]:
103
+ return OPERATION_ACTION_TYPES.get(operation, frozenset())
104
+
105
+
106
+ def validate_action_catalog() -> dict[str, Any]:
107
+ """Return deterministic catalog checks used by release validation."""
108
+
109
+ blockers: list[dict[str, Any]] = []
110
+ for phase, actions in WORKFLOW_PHASE_ACTION_TYPES.items():
111
+ unknown = sorted(set(actions).difference(ACTION_TYPES))
112
+ if unknown:
113
+ blockers.append({"code": "catalog-unknown-phase-action", "phase": phase, "actions": unknown})
114
+ for operation, actions in OPERATION_ACTION_TYPES.items():
115
+ unknown = sorted(set(actions).difference(ACTION_TYPES))
116
+ if unknown:
117
+ blockers.append({"code": "catalog-unknown-operation-action", "operation": operation, "actions": unknown})
118
+ for command, entry in COMPATIBILITY_COMMANDS.items():
119
+ if entry.get("kind") != "compatibility" or not entry.get("replacement"):
120
+ blockers.append({"code": "catalog-invalid-command-classification", "command": command})
121
+ body = {
122
+ "schemaVersion": "agent-lifecycle-action-catalog.v1",
123
+ "status": "PASS" if not blockers else "FAIL",
124
+ "actionTypes": sorted(ACTION_TYPES),
125
+ "workflowPhaseActions": {key: sorted(value) for key, value in sorted(WORKFLOW_PHASE_ACTION_TYPES.items())},
126
+ "operationActions": {key: sorted(value) for key, value in sorted(OPERATION_ACTION_TYPES.items())},
127
+ "compatibilityCommands": COMPATIBILITY_COMMANDS,
128
+ "blockers": blockers,
129
+ "productionPromotionClaimed": False,
130
+ }
131
+ return {**body, "catalogDigest": canonical_digest(body)}
132
+
133
+
134
+ __all__ = [
135
+ "ACTION_CATALOG",
136
+ "ACTION_TYPES",
137
+ "COMPATIBILITY_COMMANDS",
138
+ "NON_MODEL_ACTION_TYPES",
139
+ "OPERATION_ACTION_TYPES",
140
+ "WORKFLOW_PHASE_ACTION_TYPES",
141
+ "action_requires_host",
142
+ "action_requires_state_mutation",
143
+ "action_types_for_operation",
144
+ "build_action",
145
+ "validate_action_catalog",
146
+ "validate_action_type",
147
+ ]
@@ -4,6 +4,7 @@ from __future__ import annotations
4
4
 
5
5
  import re
6
6
 
7
+ from agent_lifecycle.contracts.public_locators import normalize_public_locator
7
8
  from agent_lifecycle.contracts.redaction import redact_text as _redact_text
8
9
 
9
10
  _POSIX_ABSOLUTE_PATH = re.compile(r"(?<![A-Za-z0-9_.:/-])/(?!/)[^\s\"'<>]+")
@@ -31,4 +32,4 @@ def redact_process_text(value: str) -> tuple[str, bool]:
31
32
  return redacted, changed or redacted != value
32
33
 
33
34
 
34
- __all__ = ["redact_env_names", "redact_process_text", "redact_text"]
35
+ __all__ = ["normalize_public_locator", "redact_env_names", "redact_process_text", "redact_text"]
@@ -0,0 +1,161 @@
1
+ """Canonical, offline validation for public HTTP(S) evidence locators."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import ipaddress
6
+ import re
7
+ from typing import Any
8
+ from urllib.parse import SplitResult, urlsplit, urlunsplit
9
+
10
+ from agent_lifecycle.contracts.errors import LifecycleError
11
+ from agent_lifecycle.contracts.schema_builders import open_object_schema
12
+
13
+ PUBLIC_LOCATOR_SCHEMA = "agent-public-evidence-locator.v1"
14
+ MAX_PUBLIC_LOCATOR_BYTES = 4096
15
+ PUBLIC_LOCATOR_SCHEMES = ("http", "https")
16
+
17
+ _HOST_LABEL = re.compile(r"^[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?$")
18
+
19
+ PUBLIC_LOCATOR_SCHEMAS: dict[str, dict[str, Any]] = {
20
+ PUBLIC_LOCATOR_SCHEMA: open_object_schema(
21
+ PUBLIC_LOCATOR_SCHEMA,
22
+ required=["schemaVersion", "status", "value", "scheme", "host"],
23
+ properties={
24
+ "status": {"const": "PASS"},
25
+ "value": {"type": "string", "minLength": 1, "maxLength": MAX_PUBLIC_LOCATOR_BYTES},
26
+ "scheme": {"enum": list(PUBLIC_LOCATOR_SCHEMES)},
27
+ "host": {"type": "string", "minLength": 1, "maxLength": 253},
28
+ "port": {"type": ["integer", "null"], "minimum": 1, "maximum": 65535},
29
+ "blockers": {"type": "array", "maxItems": 16, "items": {"type": "object"}},
30
+ "productionPromotionClaimed": {"const": False},
31
+ },
32
+ )
33
+ }
34
+
35
+
36
+ def normalize_public_locator(value: str, *, label: str = "public locator") -> str:
37
+ """Return one canonical HTTP(S) locator without granting network authority."""
38
+
39
+ parsed = _parse_public_locator(value, label=label)
40
+ hostname = _normalize_hostname(parsed.hostname, label=label)
41
+ port = _validated_port(parsed, label=label)
42
+ if port in {80, 443} and parsed.scheme.lower() == ("http" if port == 80 else "https"):
43
+ port = None
44
+ netloc = f"[{hostname}]" if ":" in hostname else hostname
45
+ if port is not None:
46
+ netloc = f"{netloc}:{port}"
47
+ normalized = urlunsplit((parsed.scheme.lower(), netloc, parsed.path, parsed.query, parsed.fragment))
48
+ if len(normalized.encode("utf-8")) > MAX_PUBLIC_LOCATOR_BYTES:
49
+ raise LifecycleError(
50
+ "public-locator-too-large",
51
+ f"{label}: locator exceeds {MAX_PUBLIC_LOCATOR_BYTES} bytes",
52
+ )
53
+ return normalized
54
+
55
+
56
+ def validate_public_locator(value: Any, *, label: str = "public locator") -> dict[str, Any]:
57
+ """Return a stable validation envelope for one public locator."""
58
+
59
+ try:
60
+ normalized = normalize_public_locator(value, label=label)
61
+ parsed = urlsplit(normalized)
62
+ return {
63
+ "schemaVersion": PUBLIC_LOCATOR_SCHEMA,
64
+ "status": "PASS",
65
+ "value": normalized,
66
+ "scheme": parsed.scheme,
67
+ "host": parsed.hostname,
68
+ "port": parsed.port,
69
+ "blockers": [],
70
+ "productionPromotionClaimed": False,
71
+ }
72
+ except LifecycleError as exc:
73
+ body = {
74
+ "schemaVersion": PUBLIC_LOCATOR_SCHEMA,
75
+ "status": "FAIL",
76
+ "value": value if isinstance(value, str) else None,
77
+ "scheme": None,
78
+ "host": None,
79
+ "port": None,
80
+ "blockers": [{"code": exc.code, "message": exc.message}],
81
+ "productionPromotionClaimed": False,
82
+ }
83
+ return body
84
+
85
+
86
+ def require_public_locator(value: Any, *, label: str = "public locator") -> str:
87
+ """Validate a locator or raise its stable lifecycle error."""
88
+
89
+ return normalize_public_locator(value, label=label)
90
+
91
+
92
+ def _parse_public_locator(value: Any, *, label: str) -> SplitResult:
93
+ if not isinstance(value, str) or not value:
94
+ raise LifecycleError("public-locator-required", f"{label}: HTTP(S) locator is required")
95
+ if len(value.encode("utf-8")) > MAX_PUBLIC_LOCATOR_BYTES:
96
+ raise LifecycleError(
97
+ "public-locator-too-large",
98
+ f"{label}: locator exceeds {MAX_PUBLIC_LOCATOR_BYTES} bytes",
99
+ )
100
+ if any(character.isspace() or ord(character) < 0x20 or ord(character) == 0x7F for character in value):
101
+ raise LifecycleError(
102
+ "public-locator-control-character", f"{label}: whitespace or control characters are not allowed"
103
+ )
104
+ try:
105
+ parsed = urlsplit(value)
106
+ except ValueError as exc:
107
+ raise LifecycleError("public-locator-invalid", f"{label}: locator cannot be parsed") from exc
108
+ scheme = parsed.scheme.lower()
109
+ if scheme not in PUBLIC_LOCATOR_SCHEMES:
110
+ raise LifecycleError("public-locator-scheme-unsupported", f"{label}: only HTTP(S) locators are allowed")
111
+ if parsed.username is not None or parsed.password is not None or "@" in parsed.netloc:
112
+ raise LifecycleError("public-locator-credentials-forbidden", f"{label}: URL credentials are not allowed")
113
+ try:
114
+ hostname = parsed.hostname
115
+ except ValueError as exc:
116
+ raise LifecycleError("public-locator-host-invalid", f"{label}: host is invalid") from exc
117
+ if not hostname:
118
+ raise LifecycleError("public-locator-host-required", f"{label}: host is required")
119
+ return parsed
120
+
121
+
122
+ def _normalize_hostname(hostname: str | None, *, label: str) -> str:
123
+ if not hostname:
124
+ raise LifecycleError("public-locator-host-required", f"{label}: host is required")
125
+ host = hostname.rstrip(".")
126
+ if not host:
127
+ raise LifecycleError("public-locator-host-invalid", f"{label}: host is invalid")
128
+ if ":" in host:
129
+ try:
130
+ return ipaddress.IPv6Address(host).compressed.lower()
131
+ except ValueError as exc:
132
+ raise LifecycleError("public-locator-host-invalid", f"{label}: IPv6 host is invalid") from exc
133
+ try:
134
+ ascii_host = host.encode("idna").decode("ascii").lower()
135
+ except UnicodeError as exc:
136
+ raise LifecycleError("public-locator-host-invalid", f"{label}: host encoding is invalid") from exc
137
+ labels = ascii_host.split(".")
138
+ if len(ascii_host) > 253 or any(not _HOST_LABEL.fullmatch(part) for part in labels):
139
+ raise LifecycleError("public-locator-host-invalid", f"{label}: host is invalid")
140
+ return ascii_host
141
+
142
+
143
+ def _validated_port(parsed: Any, *, label: str) -> int | None:
144
+ try:
145
+ port = parsed.port
146
+ except ValueError as exc:
147
+ raise LifecycleError("public-locator-port-invalid", f"{label}: port is invalid") from exc
148
+ if port is not None and not 1 <= port <= 65535:
149
+ raise LifecycleError("public-locator-port-invalid", f"{label}: port is invalid")
150
+ return port
151
+
152
+
153
+ __all__ = [
154
+ "MAX_PUBLIC_LOCATOR_BYTES",
155
+ "PUBLIC_LOCATOR_SCHEMA",
156
+ "PUBLIC_LOCATOR_SCHEMAS",
157
+ "PUBLIC_LOCATOR_SCHEMES",
158
+ "normalize_public_locator",
159
+ "require_public_locator",
160
+ "validate_public_locator",
161
+ ]
@@ -3,9 +3,13 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import re
6
+ from contextlib import suppress
6
7
  from typing import Any
7
8
  from urllib.parse import unquote_plus, urlsplit, urlunsplit
8
9
 
10
+ from agent_lifecycle.contracts.errors import LifecycleError
11
+ from agent_lifecycle.contracts.public_locators import normalize_public_locator
12
+
9
13
  REDACTED_VALUE = "<redacted>"
10
14
  LOCAL_PATH_REDACTION = "<local-path>"
11
15
 
@@ -88,10 +92,14 @@ def redact_text_with_stats(value: str) -> tuple[str, bool, dict[str, int]]:
88
92
  path_count = len(_LOCAL_PATH.findall(redacted))
89
93
  redacted = _LOCAL_PATH.sub(LOCAL_PATH_REDACTION, redacted)
90
94
  redacted = _restore_http_urls(redacted, urls)
91
- return redacted, redacted != value, {
92
- "secretLikeMarkersRedacted": secret_count,
93
- "localPathsRedacted": path_count,
94
- }
95
+ return (
96
+ redacted,
97
+ redacted != value,
98
+ {
99
+ "secretLikeMarkersRedacted": secret_count,
100
+ "localPathsRedacted": path_count,
101
+ },
102
+ )
95
103
 
96
104
 
97
105
  def contains_local_absolute_path(value: str) -> bool:
@@ -211,6 +219,9 @@ def _redact_http_url(value: str) -> tuple[str, int]:
211
219
  redacted, private_key_count = _replace_matches(_PRIVATE_KEY, redacted, REDACTED_VALUE)
212
220
  redacted, bearer_count = _replace_matches(_BEARER, redacted, f"Bearer {REDACTED_VALUE}")
213
221
  redacted, token_count = _replace_matches(_BARE_TOKEN, redacted, REDACTED_VALUE)
222
+ if "@" not in netloc:
223
+ with suppress(LifecycleError):
224
+ redacted = normalize_public_locator(redacted, label="redacted URL")
214
225
  return redacted, secret_count + private_key_count + bearer_count + token_count
215
226
 
216
227