agent-lifecycle-kit 2.0.0__tar.gz → 2.1.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 (401) hide show
  1. {agent_lifecycle_kit-2.0.0/src/agent_lifecycle_kit.egg-info → agent_lifecycle_kit-2.1.0}/PKG-INFO +6 -6
  2. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/README.md +5 -5
  3. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/pyproject.toml +1 -1
  4. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/_version.py +1 -1
  5. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/audit/proof_integrity.py +8 -0
  6. agent_lifecycle_kit-2.1.0/src/agent_lifecycle/contracts/independent_evidence_schemas.py +389 -0
  7. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/review_mesh_schemas.py +5 -0
  8. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/schemas.py +2 -0
  9. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/planning/completeness.py +23 -0
  10. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/planning/manifest_contract.py +11 -1
  11. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/review_mesh/__init__.py +41 -29
  12. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/review_mesh/assignments.py +54 -8
  13. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/review_mesh/contracts.py +126 -19
  14. agent_lifecycle_kit-2.1.0/src/agent_lifecycle/review_mesh/independence.py +94 -0
  15. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/review_mesh/quorum.py +4 -0
  16. agent_lifecycle_kit-2.1.0/src/agent_lifecycle/workflow/review_mesh_gate.py +164 -0
  17. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0/src/agent_lifecycle_kit.egg-info}/PKG-INFO +6 -6
  18. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle_kit.egg-info/SOURCES.txt +2 -0
  19. agent_lifecycle_kit-2.0.0/src/agent_lifecycle/workflow/review_mesh_gate.py +0 -93
  20. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/LICENSE +0 -0
  21. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/NOTICE +0 -0
  22. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/benchmarks/reference-tasks/README.md +0 -0
  23. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/benchmarks/reference-tasks/manifest.json +0 -0
  24. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/benchmarks/reference-tasks/rt01-planning/oracle.json +0 -0
  25. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/benchmarks/reference-tasks/rt01-planning/task.md +0 -0
  26. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/benchmarks/reference-tasks/rt02-architecture-review/oracle.json +0 -0
  27. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/benchmarks/reference-tasks/rt02-architecture-review/task.md +0 -0
  28. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/benchmarks/reference-tasks/rt03-bug-forensics/oracle.json +0 -0
  29. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/benchmarks/reference-tasks/rt03-bug-forensics/task.md +0 -0
  30. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/benchmarks/reference-tasks/rt04-s1-managed-task/oracle.json +0 -0
  31. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/benchmarks/reference-tasks/rt04-s1-managed-task/task.md +0 -0
  32. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/benchmarks/reference-tasks/rt05-s2-evidence-task/oracle.json +0 -0
  33. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/benchmarks/reference-tasks/rt05-s2-evidence-task/task.md +0 -0
  34. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/setup.cfg +0 -0
  35. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/__init__.py +0 -0
  36. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/__main__.py +0 -0
  37. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/__init__.py +0 -0
  38. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/agent_plugin_probe.py +0 -0
  39. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/contracts.py +0 -0
  40. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/env.py +0 -0
  41. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/external_check.py +0 -0
  42. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/launch_execution.py +0 -0
  43. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/launch_preflight.py +0 -0
  44. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/launcher.py +0 -0
  45. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/lifecycle_control.py +0 -0
  46. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/local_launch_profile.py +0 -0
  47. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/planning_launch.py +0 -0
  48. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/planning_session.py +0 -0
  49. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/process.py +0 -0
  50. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/process_capture.py +0 -0
  51. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/process_control.py +0 -0
  52. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/process_groups.py +0 -0
  53. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/process_telemetry.py +0 -0
  54. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/qualification.py +0 -0
  55. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/redaction.py +0 -0
  56. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/session_store.py +0 -0
  57. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/start_input.py +0 -0
  58. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/start_receipts.py +0 -0
  59. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/start_routing.py +0 -0
  60. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/task_intake.py +0 -0
  61. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/unified_start.py +0 -0
  62. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/workflow_bridge.py +0 -0
  63. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/adapter_sessions/worktree_identity.py +0 -0
  64. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/audit/__init__.py +0 -0
  65. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/audit/bug_forensics.py +0 -0
  66. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/audit/external_checks.py +0 -0
  67. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/audit/implementation.py +0 -0
  68. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/audit/ownership.py +0 -0
  69. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/audit/package.py +0 -0
  70. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/audit/proof_chain.py +0 -0
  71. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/audit/proof_findings.py +0 -0
  72. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/audit/review_verdict.py +0 -0
  73. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/benchmarks/__init__.py +0 -0
  74. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/benchmarks/comparison.py +0 -0
  75. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/benchmarks/contracts.py +0 -0
  76. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/benchmarks/evaluator.py +0 -0
  77. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/benchmarks/oracles.py +0 -0
  78. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/benchmarks/qualification.py +0 -0
  79. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/benchmarks/reporting.py +0 -0
  80. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/benchmarks/stratification.py +0 -0
  81. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/changesets/__init__.py +0 -0
  82. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/changesets/git.py +0 -0
  83. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/changesets/snapshot.py +0 -0
  84. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/__init__.py +0 -0
  85. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/adapter.py +0 -0
  86. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/benchmarks.py +0 -0
  87. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/command_registry.py +0 -0
  88. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/dispatch.py +0 -0
  89. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/dispatch_adapters.py +0 -0
  90. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/dispatch_contracts.py +0 -0
  91. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/dispatch_lifecycle.py +0 -0
  92. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/dispatch_metrics.py +0 -0
  93. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/dispatch_observability.py +0 -0
  94. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/dispatch_planning.py +0 -0
  95. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/dispatch_research.py +0 -0
  96. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/errors.py +0 -0
  97. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/followup.py +0 -0
  98. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/host_launch.py +0 -0
  99. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/lifecycle_parsers.py +0 -0
  100. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/main.py +0 -0
  101. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/metrics_parser.py +0 -0
  102. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/observability_parsers.py +0 -0
  103. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/parsers.py +0 -0
  104. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/planning_parsers.py +0 -0
  105. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/policy.py +0 -0
  106. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/progress_hooks.py +0 -0
  107. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/project.py +0 -0
  108. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/research.py +0 -0
  109. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/start.py +0 -0
  110. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/strategy.py +0 -0
  111. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/cli/worktree.py +0 -0
  112. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/compiler/__init__.py +0 -0
  113. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/compiler/output_contract.py +0 -0
  114. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/compiler/small_model_packets.py +0 -0
  115. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/compiler/task_packets.py +0 -0
  116. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/context/__init__.py +0 -0
  117. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/context/checkpoint_store.py +0 -0
  118. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/context/checkpoints.py +0 -0
  119. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/context/episode_retrieval.py +0 -0
  120. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/context/external_memory.py +0 -0
  121. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/context/profiles.py +0 -0
  122. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/context/rendering.py +0 -0
  123. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/context/thread_bridge_context.py +0 -0
  124. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/__init__.py +0 -0
  125. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/adapter_contract_schemas.py +0 -0
  126. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/adapter_event_schemas.py +0 -0
  127. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/adapter_session_schemas.py +0 -0
  128. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/adapter_task_schemas.py +0 -0
  129. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/agent_plugin_qualification_schemas.py +0 -0
  130. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/audit_optimization_schemas.py +0 -0
  131. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/audit_schemas.py +0 -0
  132. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/benchmark_schemas.py +0 -0
  133. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/bug_forensics_schemas.py +0 -0
  134. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/canonical.py +0 -0
  135. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/compatibility.py +0 -0
  136. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/context_checkpoint_schemas.py +0 -0
  137. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/context_model_schemas.py +0 -0
  138. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/core_schemas.py +0 -0
  139. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/cross_check_schemas.py +0 -0
  140. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/errors.py +0 -0
  141. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/evidence_import_schemas.py +0 -0
  142. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/execution_strategy_schemas.py +0 -0
  143. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/external_check_schemas.py +0 -0
  144. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/finding_check_schemas.py +0 -0
  145. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/goal_validation.py +0 -0
  146. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/host_capability_schemas.py +0 -0
  147. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/implementation_audit_validation.py +0 -0
  148. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/import_dialect_schemas.py +0 -0
  149. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/launch_qualification.py +0 -0
  150. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/legacy_runner_schemas.py +0 -0
  151. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/lifecycle_action_catalog.py +0 -0
  152. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/lifecycle_control_definitions.py +0 -0
  153. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/lifecycle_control_schemas.py +0 -0
  154. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/lifecycle_control_validation.py +0 -0
  155. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/local_launch_validation.py +0 -0
  156. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/metric_schemas.py +0 -0
  157. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/ownership_paths.py +0 -0
  158. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/paths.py +0 -0
  159. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/performance_limits.py +0 -0
  160. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/persistence.py +0 -0
  161. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/plan_contract_schemas.py +0 -0
  162. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/plan_delta_schemas.py +0 -0
  163. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/plan_manifest_schemas.py +0 -0
  164. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/planning_launch_schemas.py +0 -0
  165. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/policy_schemas.py +0 -0
  166. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/process_execution_schemas.py +0 -0
  167. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/process_redaction.py +0 -0
  168. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/progress_bridge_schemas.py +0 -0
  169. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/progress_hook_schemas.py +0 -0
  170. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/project_profile_preset_schemas.py +0 -0
  171. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/project_profile_schemas.py +0 -0
  172. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/proof_integrity_schemas.py +0 -0
  173. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/proof_validation.py +0 -0
  174. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/public_locators.py +0 -0
  175. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/quality_modes.py +0 -0
  176. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/redaction.py +0 -0
  177. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/release_contract_schemas.py +0 -0
  178. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/research_evidence_schemas.py +0 -0
  179. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/review_mesh_recommendation_schemas.py +0 -0
  180. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/review_quality_schemas.py +0 -0
  181. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/review_verdict.py +0 -0
  182. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/runner_schemas.py +0 -0
  183. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/runner_worktree_schemas.py +0 -0
  184. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/sandbox_schemas.py +0 -0
  185. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/schema_builders.py +0 -0
  186. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/status_goal_schemas.py +0 -0
  187. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/structured_result_schemas.py +0 -0
  188. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/task_template_schemas.py +0 -0
  189. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/thread_bridge_schema_definitions.py +0 -0
  190. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/thread_bridge_schemas.py +0 -0
  191. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/thread_bridge_validation.py +0 -0
  192. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/token_estimation.py +0 -0
  193. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/usage_export_schemas.py +0 -0
  194. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/validation.py +0 -0
  195. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/workflow_artifact_schemas.py +0 -0
  196. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/workflow_authorization_schemas.py +0 -0
  197. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/workflow_run_schemas.py +0 -0
  198. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/contracts/workflow_state_schemas.py +0 -0
  199. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/data/__init__.py +0 -0
  200. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/data/profiles/external-checks/declared-dependencies.v1.json +0 -0
  201. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/data/profiles/external-checks/import-boundaries.v1.json +0 -0
  202. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/data/profiles/external-checks/module-dependencies.v1.json +0 -0
  203. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/data/profiles/lifecycle-baselines.v1.json +0 -0
  204. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/data/profiles/model-routing-profile.v1.json +0 -0
  205. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/feature-implementation.v1.json +0 -0
  206. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/quick-change.v1.json +0 -0
  207. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/research-review.v1.json +0 -0
  208. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/data/profiles/risk-execution-policy.v1.json +0 -0
  209. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/data/profiles/small-context-profile.v1.json +0 -0
  210. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/diagnostics/__init__.py +0 -0
  211. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/diagnostics/bundles.py +0 -0
  212. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/diagnostics/installation_catalog.py +0 -0
  213. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/diagnostics/readiness.py +0 -0
  214. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/evidence_index/__init__.py +0 -0
  215. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/evidence_index/core.py +0 -0
  216. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/evidence_index/episode_index.py +0 -0
  217. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/evidence_index/external_context.py +0 -0
  218. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/followup/__init__.py +0 -0
  219. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/followup/records.py +0 -0
  220. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/freeze/__init__.py +0 -0
  221. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/freeze/locks.py +0 -0
  222. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/freeze/package_integrity.py +0 -0
  223. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/goal/__init__.py +0 -0
  224. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/goal/records.py +0 -0
  225. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/goal/view.py +0 -0
  226. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/__init__.py +0 -0
  227. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/acp_capability.py +0 -0
  228. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/agent_plugin_qualification.py +0 -0
  229. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/capabilities.py +0 -0
  230. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/context_events.py +0 -0
  231. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/contracts.py +0 -0
  232. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/event_capture.py +0 -0
  233. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/events.py +0 -0
  234. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/inspection.py +0 -0
  235. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/inspection_claude.py +0 -0
  236. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/inspection_codex.py +0 -0
  237. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/inspection_common.py +0 -0
  238. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/inspection_cursor.py +0 -0
  239. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/inspection_gemini_cli.py +0 -0
  240. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/inspection_hermes.py +0 -0
  241. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/inspection_kimi_code.py +0 -0
  242. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/inspection_opencode.py +0 -0
  243. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/inspection_profile.py +0 -0
  244. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/inspection_qwen_code.py +0 -0
  245. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/lifecycle_control.py +0 -0
  246. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/lifecycle_control_qualification.py +0 -0
  247. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/lifecycle_gate.py +0 -0
  248. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/process_port.py +0 -0
  249. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/receipts.py +0 -0
  250. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/sandbox_receipts.py +0 -0
  251. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/scaffold.py +0 -0
  252. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/structured_results.py +0 -0
  253. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/thread_bridge.py +0 -0
  254. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/usage_normalizers.py +0 -0
  255. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/host_protocol/validation.py +0 -0
  256. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/imports/__init__.py +0 -0
  257. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/imports/agentskills_profile.py +0 -0
  258. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/imports/bmad_profile.py +0 -0
  259. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/imports/constitution_adr.py +0 -0
  260. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/imports/dialect_profiles.py +0 -0
  261. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/imports/external_agent.py +0 -0
  262. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/imports/external_dialects.py +0 -0
  263. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/imports/external_workflow.py +0 -0
  264. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/imports/multi_markdown.py +0 -0
  265. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/imports/openspec_profile.py +0 -0
  266. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/imports/planning.py +0 -0
  267. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/imports/spec_kit_profile.py +0 -0
  268. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/imports/spec_kitty_profile.py +0 -0
  269. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/metrics/__init__.py +0 -0
  270. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/metrics/audit_optimization.py +0 -0
  271. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/metrics/audit_samples.py +0 -0
  272. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/metrics/cost_collection.py +0 -0
  273. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/metrics/costs.py +0 -0
  274. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/metrics/outcome_index.py +0 -0
  275. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/metrics/phase_resources.py +0 -0
  276. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/metrics/recommendations.py +0 -0
  277. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/metrics/regression_signals.py +0 -0
  278. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/metrics/usage_export.py +0 -0
  279. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/migration/__init__.py +0 -0
  280. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/migration/legacy_runner.py +0 -0
  281. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/model_routing/__init__.py +0 -0
  282. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/model_routing/profiles.py +0 -0
  283. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/model_routing/receipts.py +0 -0
  284. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/model_routing/resolver.py +0 -0
  285. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/__init__.py +0 -0
  286. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/__main__.py +0 -0
  287. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/authority.py +0 -0
  288. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/canonical.py +0 -0
  289. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/cli.py +0 -0
  290. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/ed25519.py +0 -0
  291. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/errors.py +0 -0
  292. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/gate.py +0 -0
  293. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/git_objects.py +0 -0
  294. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/matching.py +0 -0
  295. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/paths.py +0 -0
  296. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/policy.py +0 -0
  297. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/receipt.py +0 -0
  298. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/scanner.py +0 -0
  299. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/neutrality/test_runner.py +0 -0
  300. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/planning/__init__.py +0 -0
  301. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/planning/acceptance_markdown.py +0 -0
  302. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/planning/continuity.py +0 -0
  303. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/planning/deltas.py +0 -0
  304. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/planning/task_compatibility.py +0 -0
  305. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/planning/templates.py +0 -0
  306. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/planning/tiering.py +0 -0
  307. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/planning/traceability.py +0 -0
  308. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/planning/validation.py +0 -0
  309. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/planning/verification.py +0 -0
  310. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/policy/__init__.py +0 -0
  311. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/policy/adaptive_lifecycle.py +0 -0
  312. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/policy/apply.py +0 -0
  313. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/policy/execution_strategy.py +0 -0
  314. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/policy/proposals.py +0 -0
  315. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/policy/quality_floor.py +0 -0
  316. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/policy/risk_execution.py +0 -0
  317. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/policy/runtime_receipts.py +0 -0
  318. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/policy/thread_bridge.py +0 -0
  319. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/project/__init__.py +0 -0
  320. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/project/guidance.py +0 -0
  321. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/project/merge.py +0 -0
  322. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/project/presets.py +0 -0
  323. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/project/principles.py +0 -0
  324. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/project/profile.py +0 -0
  325. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/py.typed +0 -0
  326. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/quality/__init__.py +0 -0
  327. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/quality/bug_forensics.py +0 -0
  328. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/quality/bug_forensics_advisor.py +0 -0
  329. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/quality/bug_forensics_recipes.py +0 -0
  330. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/quality/cross_check.py +0 -0
  331. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/quality/external_checks.py +0 -0
  332. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/quality/failure_classification.py +0 -0
  333. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/quality/packs.py +0 -0
  334. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/reporting/__init__.py +0 -0
  335. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/reporting/change_summary.py +0 -0
  336. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/reporting/event_feed.py +0 -0
  337. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/reporting/execution_resources.py +0 -0
  338. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/reporting/progress_bridge.py +0 -0
  339. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/reporting/progress_hooks.py +0 -0
  340. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/reporting/progress_terminal.py +0 -0
  341. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/reporting/progress_view.py +0 -0
  342. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/reporting/status_view.py +0 -0
  343. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/reporting/usage_export.py +0 -0
  344. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/research/__init__.py +0 -0
  345. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/research/evidence.py +0 -0
  346. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/research/provenance.py +0 -0
  347. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/research/validation.py +0 -0
  348. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/resources.py +0 -0
  349. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/review/__init__.py +0 -0
  350. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/review/validation.py +0 -0
  351. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/review_mesh/operator_templates.py +0 -0
  352. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/review_mesh/recommendation.py +0 -0
  353. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/review_mesh/results.py +0 -0
  354. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/review_mesh/synthesis.py +0 -0
  355. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/runner/__init__.py +0 -0
  356. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/runner/core.py +0 -0
  357. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/runner/sandbox_receipts.py +0 -0
  358. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/specification/__init__.py +0 -0
  359. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/specification/completion_check.py +0 -0
  360. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/specification/completion_gate.py +0 -0
  361. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/specification/completion_signal.py +0 -0
  362. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/specification/validation.py +0 -0
  363. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/__init__.py +0 -0
  364. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/artifacts.py +0 -0
  365. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/authorization.py +0 -0
  366. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/budget_decisions.py +0 -0
  367. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/budget_policy.py +0 -0
  368. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/budget_receipts.py +0 -0
  369. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/bug_forensics_gates.py +0 -0
  370. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/checkpoint_gate.py +0 -0
  371. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/controller.py +0 -0
  372. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/events.py +0 -0
  373. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/final_proof_integrity.py +0 -0
  374. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/finalization.py +0 -0
  375. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/gates.py +0 -0
  376. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/implementation_audit_gate.py +0 -0
  377. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/initialization.py +0 -0
  378. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/leases.py +0 -0
  379. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/lineage.py +0 -0
  380. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/managed_runner.py +0 -0
  381. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/model_usage.py +0 -0
  382. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/next_action.py +0 -0
  383. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/operation_kernel.py +0 -0
  384. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/plan_adoption.py +0 -0
  385. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/query.py +0 -0
  386. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/reviews.py +0 -0
  387. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/risk_execution_gate.py +0 -0
  388. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/run.py +0 -0
  389. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/run_transitions.py +0 -0
  390. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/sandbox_policy.py +0 -0
  391. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/sandbox_receipts.py +0 -0
  392. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/selectors.py +0 -0
  393. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/state.py +0 -0
  394. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/task_outcomes.py +0 -0
  395. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/task_transitions.py +0 -0
  396. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/workflow/transition_contract.py +0 -0
  397. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/worktree/__init__.py +0 -0
  398. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle/worktree/isolation.py +0 -0
  399. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle_kit.egg-info/dependency_links.txt +0 -0
  400. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.0}/src/agent_lifecycle_kit.egg-info/entry_points.txt +0 -0
  401. {agent_lifecycle_kit-2.0.0 → agent_lifecycle_kit-2.1.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.0.0
3
+ Version: 2.1.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==2.0.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==2.1.0`, and common `agent-lifecycle version` errors.
47
47
 
48
48
  For a quick start, run:
49
49
 
@@ -187,9 +187,9 @@ Adapter installation and support-level details live in [Adapter install](docs/ad
187
187
  - Public release claims use tracked source files and redacted evidence summaries.
188
188
  - External dialect imports and retrieved episodes enrich context, while reviewed
189
189
  ALK artifacts remain the source of truth.
190
- - Cross-check, Review Mesh and historical runner recovery receipts add evidence
191
- when a task or plan enables them; legacy runner records are converted
192
- read-only and the operator chooses the review depth.
190
+ - Cross-check, Review Mesh and historical runner recovery receipts add evidence when a task or plan enables them; legacy runner records are converted
191
+ read-only and the operator chooses the review depth. High-risk criteria can opt into [risk-bound independent verification](docs/reference/risk-bound-independent-verification.md);
192
+ ordinary criteria remain on the standard evidence path.
193
193
 
194
194
  ## Documentation
195
195
 
@@ -197,6 +197,6 @@ Adapter installation and support-level details live in [Adapter install](docs/ad
197
197
  - 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).
198
198
  - Reference: [System architecture](docs/architecture/system-architecture.md), [workflow customization and execution controls](docs/reference/workflow-customization.md), [execution strategy](docs/reference/execution-strategy.md), [CLI reference](docs/reference/cli.md), [External verification checks](docs/reference/external-verification-checks.md), [Plan verification](docs/reference/plan-verification.md), [Research evidence](docs/reference/research-evidence.md), [Public locators and redaction](docs/reference/public-locators-and-redaction.md), [Finding-to-check adoption](docs/reference/finding-check-adoption.md), [Source of truth](docs/reference/source-of-truth.md), [Managed lifecycle runner](docs/reference/managed-lifecycle-runner.md), [Managed adapter sessions](docs/reference/managed-adapter-sessions.md), [Portable Agent Plugins](docs/reference/agent-plugins.md), [Plugin publication](docs/reference/plugin-publication.md), [Implementation audit](docs/reference/implementation-audit.md), [Plan completeness](docs/reference/plan-completeness.md), [Public contracts](docs/reference/public-contracts.md), and [Readiness diagnostics](docs/reference/readiness-diagnostics.md).
199
199
  - 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).
200
- - 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 migration](docs/guides/runner-migration-2.md), [Runner recovery records](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
+ - 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 migration](docs/guides/runner-migration-2.md), [Runner recovery records](docs/reference/runner-recovery.md), [Cross-check profile](docs/reference/cross-check-profile.md), [Review Mesh](docs/reference/review-mesh.md), [Risk-bound independent verification](docs/reference/risk-bound-independent-verification.md), [Bug Forensics profile](docs/reference/bug-forensics.md), and [Bug Forensics context budget](docs/reference/bug-forensics-context-budget.md).
201
201
  - Release assets: [Task templates](templates/tasks/README.md), [Neutrality scanning](docs/reference/neutrality.md), and [Release security](docs/security/release-security.md).
202
202
  Apache-2.0. See [LICENSE](LICENSE).
@@ -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==2.0.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==2.1.0`, and common `agent-lifecycle version` errors.
25
25
 
26
26
  For a quick start, run:
27
27
 
@@ -165,9 +165,9 @@ Adapter installation and support-level details live in [Adapter install](docs/ad
165
165
  - Public release claims use tracked source files and redacted evidence summaries.
166
166
  - External dialect imports and retrieved episodes enrich context, while reviewed
167
167
  ALK artifacts remain the source of truth.
168
- - Cross-check, Review Mesh and historical runner recovery receipts add evidence
169
- when a task or plan enables them; legacy runner records are converted
170
- read-only and the operator chooses the review depth.
168
+ - Cross-check, Review Mesh and historical runner recovery receipts add evidence when a task or plan enables them; legacy runner records are converted
169
+ read-only and the operator chooses the review depth. High-risk criteria can opt into [risk-bound independent verification](docs/reference/risk-bound-independent-verification.md);
170
+ ordinary criteria remain on the standard evidence path.
171
171
 
172
172
  ## Documentation
173
173
 
@@ -175,6 +175,6 @@ Adapter installation and support-level details live in [Adapter install](docs/ad
175
175
  - 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).
176
176
  - Reference: [System architecture](docs/architecture/system-architecture.md), [workflow customization and execution controls](docs/reference/workflow-customization.md), [execution strategy](docs/reference/execution-strategy.md), [CLI reference](docs/reference/cli.md), [External verification checks](docs/reference/external-verification-checks.md), [Plan verification](docs/reference/plan-verification.md), [Research evidence](docs/reference/research-evidence.md), [Public locators and redaction](docs/reference/public-locators-and-redaction.md), [Finding-to-check adoption](docs/reference/finding-check-adoption.md), [Source of truth](docs/reference/source-of-truth.md), [Managed lifecycle runner](docs/reference/managed-lifecycle-runner.md), [Managed adapter sessions](docs/reference/managed-adapter-sessions.md), [Portable Agent Plugins](docs/reference/agent-plugins.md), [Plugin publication](docs/reference/plugin-publication.md), [Implementation audit](docs/reference/implementation-audit.md), [Plan completeness](docs/reference/plan-completeness.md), [Public contracts](docs/reference/public-contracts.md), and [Readiness diagnostics](docs/reference/readiness-diagnostics.md).
177
177
  - 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).
178
- - 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 migration](docs/guides/runner-migration-2.md), [Runner recovery records](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
+ - 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 migration](docs/guides/runner-migration-2.md), [Runner recovery records](docs/reference/runner-recovery.md), [Cross-check profile](docs/reference/cross-check-profile.md), [Review Mesh](docs/reference/review-mesh.md), [Risk-bound independent verification](docs/reference/risk-bound-independent-verification.md), [Bug Forensics profile](docs/reference/bug-forensics.md), and [Bug Forensics context budget](docs/reference/bug-forensics-context-budget.md).
179
179
  - Release assets: [Task templates](templates/tasks/README.md), [Neutrality scanning](docs/reference/neutrality.md), and [Release security](docs/security/release-security.md).
180
180
  Apache-2.0. See [LICENSE](LICENSE).
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "agent-lifecycle-kit"
7
- version = "2.0.0"
7
+ version = "2.1.0"
8
8
  description = "Provider-neutral lifecycle control layer that helps coding agents plan, execute, validate, and prove software tasks to completion."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11,<3.15"
@@ -1,3 +1,3 @@
1
1
  """Package version."""
2
2
 
3
- __version__ = "2.0.0"
3
+ __version__ = "2.1.0"
@@ -2,6 +2,11 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ from agent_lifecycle.contracts.independent_evidence_schemas import (
6
+ require_independent_evidence_pass,
7
+ validate_independence_requirement,
8
+ validate_independent_evidence,
9
+ )
5
10
  from agent_lifecycle.contracts.proof_validation import (
6
11
  DEFAULT_LEGACY_EXEMPTIONS,
7
12
  FINDING_SCHEMA,
@@ -46,11 +51,14 @@ __all__ = [
46
51
  "build_receipt_hash_chain",
47
52
  "build_root_cause_evidence",
48
53
  "finding_identity_fields",
54
+ "require_independent_evidence_pass",
49
55
  "require_proof_integrity_pass",
50
56
  "stable_finding_id",
51
57
  "validate_finding_identity",
52
58
  "validate_fix_impact_receipt",
53
59
  "validate_hash_chain_migration_policy",
60
+ "validate_independence_requirement",
61
+ "validate_independent_evidence",
54
62
  "validate_proof_integrity_receipt",
55
63
  "validate_receipt_hash_chain",
56
64
  "validate_root_cause_evidence",
@@ -0,0 +1,389 @@
1
+ """Schemas for criterion-scoped independent evidence."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Any
6
+
7
+ from agent_lifecycle.contracts import LifecycleError, canonical_digest
8
+ from agent_lifecycle.contracts.schema_builders import open_object_schema
9
+
10
+ INDEPENDENCE_REQUIREMENT_SCHEMA = "agent-independence-requirement.v1"
11
+ INDEPENDENT_EVIDENCE_SCHEMA = "agent-independent-evidence.v1"
12
+ INDEPENDENT_EVIDENCE_VALIDATION_SCHEMA = "agent-independent-evidence-validation.v1"
13
+
14
+ INDEPENDENCE_DIMENSIONS = ("producer", "implementation", "source")
15
+ INDEPENDENCE_METHODS = ("deterministic-check", "human-review")
16
+ INDEPENDENCE_SOURCE_POLICIES = ("exact-revision", "current-lineage", "any-current")
17
+ INDEPENDENT_EVIDENCE_STATUSES = ("PASS", "FAIL", "UNAVAILABLE")
18
+
19
+ INDEPENDENT_EVIDENCE_SCHEMAS = {
20
+ INDEPENDENCE_REQUIREMENT_SCHEMA: open_object_schema(
21
+ INDEPENDENCE_REQUIREMENT_SCHEMA,
22
+ required=[
23
+ "schemaVersion",
24
+ "required",
25
+ "requiredDimensions",
26
+ "allowedMethods",
27
+ "prohibitedProducerClasses",
28
+ "sourcePolicy",
29
+ "productionPromotionClaimed",
30
+ "requirementDigest",
31
+ ],
32
+ properties={
33
+ "required": {"type": "boolean"},
34
+ "requiredDimensions": {"type": "array", "items": {"enum": list(INDEPENDENCE_DIMENSIONS)}},
35
+ "allowedMethods": {"type": "array", "items": {"enum": list(INDEPENDENCE_METHODS)}},
36
+ "prohibitedProducerClasses": {"type": "array", "items": {"type": "string", "minLength": 1}},
37
+ "sourcePolicy": {"enum": list(INDEPENDENCE_SOURCE_POLICIES)},
38
+ "productionPromotionClaimed": {"const": False},
39
+ "requirementDigest": {"type": "string", "minLength": 64, "maxLength": 64},
40
+ },
41
+ ),
42
+ INDEPENDENT_EVIDENCE_SCHEMA: open_object_schema(
43
+ INDEPENDENT_EVIDENCE_SCHEMA,
44
+ required=[
45
+ "schemaVersion",
46
+ "status",
47
+ "evidenceId",
48
+ "criterionId",
49
+ "requirementDigest",
50
+ "sourceRevision",
51
+ "sourceLineageDigest",
52
+ "method",
53
+ "producerClass",
54
+ "producerIdentityHash",
55
+ "implementationDigest",
56
+ "findings",
57
+ "unavailableReason",
58
+ "rawReasoningStored",
59
+ "rawTranscriptStored",
60
+ "productionPromotionClaimed",
61
+ "evidenceDigest",
62
+ ],
63
+ properties={
64
+ "status": {"enum": list(INDEPENDENT_EVIDENCE_STATUSES)},
65
+ "evidenceId": {"type": "string", "minLength": 1},
66
+ "criterionId": {"type": "string", "minLength": 1},
67
+ "requirementDigest": {"type": "string", "minLength": 64, "maxLength": 64},
68
+ "sourceRevision": {"type": "string", "minLength": 1},
69
+ "sourceLineageDigest": {"type": "string", "minLength": 64, "maxLength": 64},
70
+ "method": {"enum": list(INDEPENDENCE_METHODS)},
71
+ "producerClass": {"type": "string", "minLength": 1},
72
+ "producerIdentityHash": {"type": "string", "minLength": 64, "maxLength": 64},
73
+ "implementationDigest": {"type": "string", "minLength": 64, "maxLength": 64},
74
+ "findings": {"type": "array", "items": {"type": "object"}},
75
+ "unavailableReason": {"type": ["string", "null"]},
76
+ "rawReasoningStored": {"const": False},
77
+ "rawTranscriptStored": {"const": False},
78
+ "productionPromotionClaimed": {"const": False},
79
+ "evidenceDigest": {"type": "string", "minLength": 64, "maxLength": 64},
80
+ },
81
+ ),
82
+ INDEPENDENT_EVIDENCE_VALIDATION_SCHEMA: open_object_schema(
83
+ INDEPENDENT_EVIDENCE_VALIDATION_SCHEMA,
84
+ required=[
85
+ "schemaVersion",
86
+ "status",
87
+ "evidenceId",
88
+ "criterionId",
89
+ "evidenceStatus",
90
+ "independenceStatus",
91
+ "blockers",
92
+ "evidenceDigest",
93
+ "validationDigest",
94
+ ],
95
+ properties={
96
+ "status": {"enum": ["PASS", "FAIL"]},
97
+ "evidenceId": {"type": ["string", "null"]},
98
+ "criterionId": {"type": ["string", "null"]},
99
+ "evidenceStatus": {"type": ["string", "null"]},
100
+ "independenceStatus": {"enum": ["REQUIRED_PASS", "OPTIONAL_PASS", "NOT_PROVEN", "UNAVAILABLE"]},
101
+ "blockers": {"type": "array", "items": {"type": "object"}},
102
+ "evidenceDigest": {"type": ["string", "null"], "minLength": 0, "maxLength": 64},
103
+ "validationDigest": {"type": "string", "minLength": 64, "maxLength": 64},
104
+ },
105
+ ),
106
+ }
107
+
108
+
109
+ def build_independence_requirement(
110
+ *,
111
+ required: bool = True,
112
+ required_dimensions: list[str] | None = None,
113
+ allowed_methods: list[str] | None = None,
114
+ prohibited_producer_classes: list[str] | None = None,
115
+ source_policy: str = "exact-revision",
116
+ ) -> dict[str, Any]:
117
+ """Build a criterion-level independence requirement."""
118
+
119
+ body = {
120
+ "schemaVersion": INDEPENDENCE_REQUIREMENT_SCHEMA,
121
+ "required": bool(required),
122
+ "requiredDimensions": list(required_dimensions or INDEPENDENCE_DIMENSIONS),
123
+ "allowedMethods": list(allowed_methods or INDEPENDENCE_METHODS),
124
+ "prohibitedProducerClasses": list(prohibited_producer_classes or []),
125
+ "sourcePolicy": source_policy,
126
+ "productionPromotionClaimed": False,
127
+ }
128
+ body = {**body, "requirementDigest": canonical_digest(body)}
129
+ validation = validate_independence_requirement(body)
130
+ if validation["status"] != "PASS":
131
+ raise LifecycleError(
132
+ "independence-requirement-invalid",
133
+ "independence requirement is invalid",
134
+ {"validation": validation},
135
+ )
136
+ return body
137
+
138
+
139
+ def validate_independence_requirement(value: Any) -> dict[str, Any]:
140
+ """Validate a frozen criterion's explicit independence requirement."""
141
+
142
+ blockers: list[dict[str, Any]] = []
143
+ if not isinstance(value, dict):
144
+ blockers.append({"code": "independence-requirement-object-invalid"})
145
+ return _requirement_validation(value, blockers)
146
+ if value.get("schemaVersion") != INDEPENDENCE_REQUIREMENT_SCHEMA:
147
+ blockers.append({"code": "independence-requirement-schema-invalid"})
148
+ if not isinstance(value.get("required"), bool):
149
+ blockers.append({"code": "independence-requirement-required-invalid"})
150
+ dimensions = value.get("requiredDimensions")
151
+ if (
152
+ not isinstance(dimensions, list)
153
+ or not dimensions
154
+ or not all(isinstance(item, str) and item in INDEPENDENCE_DIMENSIONS for item in dimensions)
155
+ or len(dimensions) != len(set(item for item in dimensions if isinstance(item, str)))
156
+ ):
157
+ blockers.append({"code": "independence-requirement-dimensions-invalid"})
158
+ methods = value.get("allowedMethods")
159
+ if (
160
+ not isinstance(methods, list)
161
+ or not methods
162
+ or not all(isinstance(item, str) and item in INDEPENDENCE_METHODS for item in methods)
163
+ or len(methods) != len(set(item for item in methods if isinstance(item, str)))
164
+ ):
165
+ blockers.append({"code": "independence-requirement-methods-invalid"})
166
+ producers = value.get("prohibitedProducerClasses")
167
+ if not isinstance(producers, list) or any(not isinstance(item, str) or not item for item in producers):
168
+ blockers.append({"code": "independence-requirement-producer-policy-invalid"})
169
+ if value.get("sourcePolicy") not in INDEPENDENCE_SOURCE_POLICIES:
170
+ blockers.append({"code": "independence-requirement-source-policy-invalid"})
171
+ if value.get("productionPromotionClaimed") is not False:
172
+ blockers.append({"code": "independence-requirement-production-claim"})
173
+ expected_digest = canonical_digest({key: item for key, item in value.items() if key != "requirementDigest"})
174
+ if value.get("requirementDigest") != expected_digest:
175
+ blockers.append({"code": "independence-requirement-digest-mismatch"})
176
+ return _requirement_validation(value, blockers)
177
+
178
+
179
+ def build_independent_evidence(
180
+ *,
181
+ evidence_id: str,
182
+ criterion_id: str,
183
+ requirement: dict[str, Any],
184
+ source_revision: str,
185
+ source_lineage_digest: str,
186
+ method: str,
187
+ producer_class: str,
188
+ producer_identity_hash: str,
189
+ implementation_digest: str,
190
+ status: str = "PASS",
191
+ findings: list[dict[str, Any]] | None = None,
192
+ unavailable_reason: str | None = None,
193
+ ) -> dict[str, Any]:
194
+ """Build a bounded evidence record without storing reviewer internals."""
195
+
196
+ requirement_validation = validate_independence_requirement(requirement)
197
+ if requirement_validation["status"] != "PASS":
198
+ raise LifecycleError(
199
+ "independence-requirement-invalid",
200
+ "independence requirement is invalid",
201
+ {"validation": requirement_validation},
202
+ )
203
+ body = {
204
+ "schemaVersion": INDEPENDENT_EVIDENCE_SCHEMA,
205
+ "status": status,
206
+ "evidenceId": evidence_id,
207
+ "criterionId": criterion_id,
208
+ "requirementDigest": requirement["requirementDigest"],
209
+ "sourceRevision": source_revision,
210
+ "sourceLineageDigest": source_lineage_digest,
211
+ "method": method,
212
+ "producerClass": producer_class,
213
+ "producerIdentityHash": producer_identity_hash,
214
+ "implementationDigest": implementation_digest,
215
+ "findings": list(findings or []),
216
+ "unavailableReason": unavailable_reason,
217
+ "rawReasoningStored": False,
218
+ "rawTranscriptStored": False,
219
+ "productionPromotionClaimed": False,
220
+ }
221
+ body = {**body, "evidenceDigest": canonical_digest(body)}
222
+ validation = validate_independent_evidence(body, requirement=requirement)
223
+ if validation["status"] != "PASS":
224
+ raise LifecycleError(
225
+ "independent-evidence-invalid",
226
+ "independent evidence is invalid",
227
+ {"validation": validation},
228
+ )
229
+ return body
230
+
231
+
232
+ def validate_independent_evidence(
233
+ evidence: Any,
234
+ *,
235
+ requirement: dict[str, Any] | None = None,
236
+ expected_source_revision: str | None = None,
237
+ expected_source_lineage_digest: str | None = None,
238
+ primary_producer_class: str | None = None,
239
+ primary_implementation_digest: str | None = None,
240
+ ) -> dict[str, Any]:
241
+ """Validate evidence and fail closed only when its criterion requires it."""
242
+
243
+ blockers: list[dict[str, Any]] = []
244
+ if not isinstance(evidence, dict):
245
+ blockers.append({"code": "independent-evidence-object-invalid"})
246
+ return _evidence_validation(evidence, blockers, "UNAVAILABLE")
247
+ if evidence.get("schemaVersion") != INDEPENDENT_EVIDENCE_SCHEMA:
248
+ blockers.append({"code": "independent-evidence-schema-invalid"})
249
+ _required_text(evidence.get("evidenceId"), "independent-evidence-id-missing", blockers)
250
+ _required_text(evidence.get("criterionId"), "independent-evidence-criterion-id-missing", blockers)
251
+ _required_text(evidence.get("sourceRevision"), "independent-evidence-source-revision-missing", blockers)
252
+ _digest(evidence.get("requirementDigest"), "independent-evidence-requirement-digest-invalid", blockers)
253
+ _digest(evidence.get("sourceLineageDigest"), "independent-evidence-source-lineage-invalid", blockers)
254
+ _digest(evidence.get("producerIdentityHash"), "independent-evidence-producer-identity-invalid", blockers)
255
+ _digest(evidence.get("implementationDigest"), "independent-evidence-implementation-digest-invalid", blockers)
256
+ if evidence.get("status") not in INDEPENDENT_EVIDENCE_STATUSES:
257
+ blockers.append({"code": "independent-evidence-status-invalid"})
258
+ if evidence.get("method") not in INDEPENDENCE_METHODS:
259
+ blockers.append({"code": "independent-evidence-method-invalid"})
260
+ _required_text(evidence.get("producerClass"), "independent-evidence-producer-class-missing", blockers)
261
+ if not isinstance(evidence.get("findings"), list) or not all(
262
+ isinstance(item, dict) for item in evidence["findings"]
263
+ ):
264
+ blockers.append({"code": "independent-evidence-findings-invalid"})
265
+ if evidence.get("status") == "UNAVAILABLE" and not _non_empty_text(evidence.get("unavailableReason")):
266
+ blockers.append({"code": "independent-evidence-unavailable-reason-missing"})
267
+ if evidence.get("status") != "UNAVAILABLE" and evidence.get("unavailableReason") is not None:
268
+ blockers.append({"code": "independent-evidence-unavailable-reason-unexpected"})
269
+ if evidence.get("rawReasoningStored") is not False:
270
+ blockers.append({"code": "independent-evidence-raw-reasoning"})
271
+ if evidence.get("rawTranscriptStored") is not False:
272
+ blockers.append({"code": "independent-evidence-raw-transcript"})
273
+ if evidence.get("productionPromotionClaimed") is not False:
274
+ blockers.append({"code": "independent-evidence-production-claim"})
275
+
276
+ required = False
277
+ if requirement is not None:
278
+ requirement_validation = validate_independence_requirement(requirement)
279
+ if requirement_validation["status"] != "PASS":
280
+ blockers.append({"code": "independent-evidence-requirement-invalid", "validation": requirement_validation})
281
+ elif evidence.get("requirementDigest") != requirement.get("requirementDigest"):
282
+ blockers.append({"code": "independent-evidence-requirement-mismatch"})
283
+ required = requirement.get("required") is True
284
+ if evidence.get("method") not in requirement.get("allowedMethods", []):
285
+ blockers.append({"code": "independent-evidence-method-not-allowed"})
286
+ if evidence.get("producerClass") in requirement.get("prohibitedProducerClasses", []):
287
+ blockers.append({"code": "independent-evidence-producer-not-independent"})
288
+ if expected_source_revision is not None and evidence.get("sourceRevision") != expected_source_revision:
289
+ blockers.append({"code": "independent-evidence-source-stale"})
290
+ if (
291
+ expected_source_lineage_digest is not None
292
+ and evidence.get("sourceLineageDigest") != expected_source_lineage_digest
293
+ ):
294
+ blockers.append({"code": "independent-evidence-lineage-mismatch"})
295
+ if primary_producer_class is not None and evidence.get("producerClass") == primary_producer_class:
296
+ blockers.append({"code": "independent-evidence-producer-not-independent"})
297
+ if (
298
+ primary_implementation_digest is not None
299
+ and evidence.get("implementationDigest") == primary_implementation_digest
300
+ ):
301
+ blockers.append({"code": "independent-evidence-implementation-not-independent"})
302
+ if required and evidence.get("status") != "PASS":
303
+ blockers.append({"code": "independent-evidence-required"})
304
+
305
+ expected_digest = canonical_digest({key: item for key, item in evidence.items() if key != "evidenceDigest"})
306
+ if evidence.get("evidenceDigest") != expected_digest:
307
+ blockers.append({"code": "independent-evidence-digest-mismatch"})
308
+ if blockers:
309
+ independence_status = "UNAVAILABLE" if evidence.get("status") == "UNAVAILABLE" else "NOT_PROVEN"
310
+ elif required:
311
+ independence_status = "REQUIRED_PASS"
312
+ else:
313
+ independence_status = "OPTIONAL_PASS"
314
+ return _evidence_validation(evidence, blockers, independence_status)
315
+
316
+
317
+ def require_independent_evidence_pass(validation: dict[str, Any]) -> dict[str, Any]:
318
+ """Require a valid independent evidence record for a declared criterion."""
319
+
320
+ if validation.get("status") != "PASS" or validation.get("independenceStatus") != "REQUIRED_PASS":
321
+ raise LifecycleError(
322
+ "independent-evidence-required",
323
+ "required independent evidence did not pass",
324
+ {"validation": validation},
325
+ )
326
+ return validation
327
+
328
+
329
+ def _requirement_validation(value: Any, blockers: list[dict[str, Any]]) -> dict[str, Any]:
330
+ body = {
331
+ "schemaVersion": "agent-independence-requirement-validation.v1",
332
+ "status": "PASS" if not blockers else "FAIL",
333
+ "required": value.get("required")
334
+ if isinstance(value, dict) and isinstance(value.get("required"), bool)
335
+ else None,
336
+ "blockers": blockers,
337
+ }
338
+ return {**body, "validationDigest": canonical_digest(body)}
339
+
340
+
341
+ def _evidence_validation(value: Any, blockers: list[dict[str, Any]], independence_status: str) -> dict[str, Any]:
342
+ body = {
343
+ "schemaVersion": INDEPENDENT_EVIDENCE_VALIDATION_SCHEMA,
344
+ "status": "PASS" if not blockers else "FAIL",
345
+ "evidenceId": value.get("evidenceId")
346
+ if isinstance(value, dict) and isinstance(value.get("evidenceId"), str)
347
+ else None,
348
+ "criterionId": value.get("criterionId")
349
+ if isinstance(value, dict) and isinstance(value.get("criterionId"), str)
350
+ else None,
351
+ "evidenceStatus": value.get("status")
352
+ if isinstance(value, dict) and isinstance(value.get("status"), str)
353
+ else None,
354
+ "independenceStatus": independence_status,
355
+ "blockers": blockers,
356
+ "evidenceDigest": value.get("evidenceDigest") if isinstance(value, dict) else None,
357
+ }
358
+ return {**body, "validationDigest": canonical_digest(body)}
359
+
360
+
361
+ def _required_text(value: Any, code: str, blockers: list[dict[str, Any]]) -> None:
362
+ if not _non_empty_text(value):
363
+ blockers.append({"code": code})
364
+
365
+
366
+ def _non_empty_text(value: Any) -> bool:
367
+ return isinstance(value, str) and bool(value)
368
+
369
+
370
+ def _digest(value: Any, code: str, blockers: list[dict[str, Any]]) -> None:
371
+ if not isinstance(value, str) or len(value) != 64 or any(char not in "0123456789abcdef" for char in value):
372
+ blockers.append({"code": code})
373
+
374
+
375
+ __all__ = [
376
+ "INDEPENDENCE_DIMENSIONS",
377
+ "INDEPENDENCE_METHODS",
378
+ "INDEPENDENCE_REQUIREMENT_SCHEMA",
379
+ "INDEPENDENCE_SOURCE_POLICIES",
380
+ "INDEPENDENT_EVIDENCE_SCHEMA",
381
+ "INDEPENDENT_EVIDENCE_SCHEMAS",
382
+ "INDEPENDENT_EVIDENCE_STATUSES",
383
+ "INDEPENDENT_EVIDENCE_VALIDATION_SCHEMA",
384
+ "build_independence_requirement",
385
+ "build_independent_evidence",
386
+ "require_independent_evidence_pass",
387
+ "validate_independence_requirement",
388
+ "validate_independent_evidence",
389
+ ]
@@ -85,6 +85,7 @@ REVIEW_MESH_SCHEMAS: dict[str, dict[str, Any]] = {
85
85
  "blocking": {"type": "boolean"},
86
86
  "advisory": {"type": "boolean"},
87
87
  "evidenceIds": {"type": "array", "items": {"type": "string", "minLength": 1}},
88
+ "independenceRequirement": {"type": ["object", "null"]},
88
89
  "productionPromotionClaimed": {"const": False},
89
90
  "assignmentDigest": {"type": "string", "minLength": 64, "maxLength": 64},
90
91
  },
@@ -120,10 +121,12 @@ REVIEW_MESH_SCHEMAS: dict[str, dict[str, Any]] = {
120
121
  "phase": {"type": "string", "minLength": 1},
121
122
  "subject": {"type": "object"},
122
123
  "reviewer": {"type": "object"},
124
+ "independenceRequirement": {"type": ["object", "null"]},
123
125
  "findings": {"type": "array", "items": {"type": "object"}},
124
126
  "budgetUsage": {"type": "object"},
125
127
  "independence": {"type": "object"},
126
128
  "crossCheckReceipt": {"type": "object"},
129
+ "independentEvidence": {"type": ["object", "null"]},
127
130
  "blockers": {"type": "array", "items": {"type": "object"}},
128
131
  "productionPromotionClaimed": {"const": False},
129
132
  "resultDigest": {"type": "string", "minLength": 64, "maxLength": 64},
@@ -192,6 +195,8 @@ REVIEW_MESH_SCHEMAS: dict[str, dict[str, Any]] = {
192
195
  "requiredRolesSatisfied": {"type": "boolean"},
193
196
  "quorumSatisfied": {"type": "boolean"},
194
197
  "blockingFindingsUnresolved": {"type": "boolean"},
198
+ "independenceRequirement": {"type": ["object", "null"]},
199
+ "independentEvidence": {"type": "array", "items": {"type": "object"}},
195
200
  "blockers": {"type": "array", "items": {"type": "object"}},
196
201
  "productionPromotionClaimed": {"const": False},
197
202
  "receiptDigest": {"type": "string", "minLength": 64, "maxLength": 64},
@@ -29,6 +29,7 @@ from agent_lifecycle.contracts.external_check_schemas import EXTERNAL_CHECK_SCHE
29
29
  from agent_lifecycle.contracts.finding_check_schemas import FINDING_CHECK_SCHEMAS
30
30
  from agent_lifecycle.contracts.host_capability_schemas import HOST_CAPABILITY_SCHEMAS
31
31
  from agent_lifecycle.contracts.import_dialect_schemas import IMPORT_DIALECT_SCHEMAS
32
+ from agent_lifecycle.contracts.independent_evidence_schemas import INDEPENDENT_EVIDENCE_SCHEMAS
32
33
  from agent_lifecycle.contracts.legacy_runner_schemas import LEGACY_RUNNER_SCHEMAS
33
34
  from agent_lifecycle.contracts.lifecycle_control_definitions import (
34
35
  CONTROL_EVENT_TYPES,
@@ -713,6 +714,7 @@ _SCHEMA_GROUPS = (
713
714
  EVIDENCE_IMPORT_SCHEMAS,
714
715
  EXTERNAL_CHECK_SCHEMAS,
715
716
  FINDING_CHECK_SCHEMAS,
717
+ INDEPENDENT_EVIDENCE_SCHEMAS,
716
718
  EXECUTION_STRATEGY_SCHEMAS,
717
719
  IMPORT_DIALECT_SCHEMAS,
718
720
  STATUS_GOAL_SCHEMAS,
@@ -7,6 +7,7 @@ from pathlib import Path
7
7
  from typing import Any
8
8
 
9
9
  from agent_lifecycle.contracts import LifecycleError, canonical_digest, read_json_object
10
+ from agent_lifecycle.contracts.independent_evidence_schemas import validate_independence_requirement
10
11
  from agent_lifecycle.contracts.ownership_paths import authority_paths_overlap, normalize_authority_path
11
12
  from agent_lifecycle.planning.traceability import validate_plan_traceability
12
13
 
@@ -199,6 +200,27 @@ def _check_acceptance(manifest: dict[str, Any], tier: str, blockers: list[dict[s
199
200
  for criterion in criteria:
200
201
  if not isinstance(criterion.get("id"), str) or not criterion["id"]:
201
202
  blockers.append(_blocker("missing-acceptance-id", "acceptance criterion id is required", {"tier": tier}))
203
+ independence = criterion.get("independence")
204
+ if independence is None:
205
+ continue
206
+ validation = validate_independence_requirement(independence)
207
+ if validation["status"] != "PASS":
208
+ blockers.append(
209
+ _blocker(
210
+ "invalid-independence-requirement",
211
+ "criterion independence requirement is invalid",
212
+ {"criterionId": criterion.get("id"), "validation": validation},
213
+ )
214
+ )
215
+ continue
216
+ if independence.get("required") is True and not _strings(criterion.get("independentEvidenceIds")):
217
+ blockers.append(
218
+ _blocker(
219
+ "missing-independent-evidence-route",
220
+ "a criterion requiring independence must route independent evidence ids",
221
+ {"criterionId": criterion.get("id")},
222
+ )
223
+ )
202
224
 
203
225
 
204
226
  def _check_evidence_route(manifest: dict[str, Any], _tier: str, blockers: list[dict[str, Any]]) -> None:
@@ -215,6 +237,7 @@ def _check_evidence_route(manifest: dict[str, Any], _tier: str, blockers: list[d
215
237
  )
216
238
  )
217
239
  evidence_ids.update(ids)
240
+ evidence_ids.update(_strings(criterion.get("independentEvidenceIds")))
218
241
  routed = set()
219
242
  for workstream in _workstreams(manifest):
220
243
  routed.update(_strings(workstream.get("evidenceIds")))
@@ -106,7 +106,17 @@ _WORKSTREAM = {
106
106
  "qualityFloor",
107
107
  }
108
108
  _ACCEPTANCE = {"criteria", "evidence", "releaseGate", "qualityFloor"}
109
- _CRITERION = {"id", "requirementIds", "evidenceIds", "statement", "description", "source", "priority"}
109
+ _CRITERION = {
110
+ "id",
111
+ "requirementIds",
112
+ "evidenceIds",
113
+ "independentEvidenceIds",
114
+ "independence",
115
+ "statement",
116
+ "description",
117
+ "source",
118
+ "priority",
119
+ }
110
120
  _EVIDENCE = {"id", "description", "source", "validation", "artifactPath", "required"}
111
121
  _VALIDATION = {"commands", "extraEvidence"}
112
122
  _ORCHESTRATION = {