forge-autonomy 2.7.20__tar.gz → 2.7.22__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 (297) hide show
  1. {forge_autonomy-2.7.20/forge_autonomy.egg-info → forge_autonomy-2.7.22}/PKG-INFO +50 -1
  2. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/README.md +49 -0
  3. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/__main__.py +84 -0
  4. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/provider_security.py +6 -0
  5. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/runtime/__init__.py +21 -1
  6. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/runtime/database.py +228 -7
  7. forge_autonomy-2.7.22/forge/runtime/health.py +555 -0
  8. forge_autonomy-2.7.22/forge/runtime/operational_reset.py +1529 -0
  9. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/scheduler/ep_http_adapter.py +38 -7
  10. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/scheduler/ep_v12.py +17 -2
  11. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22/forge_autonomy.egg-info}/PKG-INFO +50 -1
  12. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge_autonomy.egg-info/SOURCES.txt +5 -0
  13. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/product-version.json +1 -1
  14. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_ep_http_adapter.py +88 -0
  15. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_live_project_roadmap_contract.py +39 -3
  16. forge_autonomy-2.7.22/tests/test_operational_reset.py +621 -0
  17. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_production_release_workflow.py +20 -0
  18. forge_autonomy-2.7.22/tests/test_pypi_distribution_readback.py +215 -0
  19. forge_autonomy-2.7.22/tests/test_runtime_health.py +564 -0
  20. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/MANIFEST.in +0 -0
  21. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/__init__.py +0 -0
  22. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/_version.py +0 -0
  23. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/action_derivation_canary_closure.py +0 -0
  24. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/action_derivation_evidence.py +0 -0
  25. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/action_derivation_qualification.py +0 -0
  26. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/action_derivation_reattempt.py +0 -0
  27. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/ai_architect/__init__.py +0 -0
  28. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/ai_architect/provider_registry.py +0 -0
  29. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/architecture/__init__.py +0 -0
  30. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/architecture/advisor.py +0 -0
  31. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/architecture/presentation.py +0 -0
  32. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/architecture/workspace.py +0 -0
  33. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/autonomous_orchestrator.py +0 -0
  34. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/business/__init__.py +0 -0
  35. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/business/advisor.py +0 -0
  36. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/business/ingress.py +0 -0
  37. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/business/presentation.py +0 -0
  38. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/business/workspace.py +0 -0
  39. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/canary.py +0 -0
  40. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/capabilities/__init__.py +0 -0
  41. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/capabilities/delegation.py +0 -0
  42. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/completion/__init__.py +0 -0
  43. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/completion/assessor.py +0 -0
  44. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/completion/mission.py +0 -0
  45. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/constitutional/__init__.py +0 -0
  46. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/constitutional/assessor.py +0 -0
  47. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/core/__init__.py +0 -0
  48. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/core/json_store.py +0 -0
  49. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/decision_evidence/__init__.py +0 -0
  50. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/decision_evidence/repository.py +0 -0
  51. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/dispatcher/__init__.py +0 -0
  52. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/dispatcher/dispatcher.py +0 -0
  53. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/execution/__init__.py +0 -0
  54. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/execution/loop.py +0 -0
  55. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/execution/presentation.py +0 -0
  56. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/execution_host_configuration.py +0 -0
  57. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/foundation/__init__.py +0 -0
  58. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/foundation/loader.py +0 -0
  59. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/generation_two.py +0 -0
  60. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/generation_two_execution.py +0 -0
  61. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/governance/__init__.py +0 -0
  62. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/governance/execution_policy.py +0 -0
  63. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/governance/profiles.py +0 -0
  64. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/governance_authority.py +0 -0
  65. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/intake.py +0 -0
  66. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/integration/__init__.py +0 -0
  67. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/integration/coordinator.py +0 -0
  68. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/integration/repository.py +0 -0
  69. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/knowledge/__init__.py +0 -0
  70. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/knowledge/consumer.py +0 -0
  71. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/knowledge/registry.py +0 -0
  72. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/lifecycle/__init__.py +0 -0
  73. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/lifecycle/store.py +0 -0
  74. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/mission_amendment.py +0 -0
  75. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/mission_scheduler.py +0 -0
  76. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/__init__.py +0 -0
  77. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/action.py +0 -0
  78. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/action_derivation.py +0 -0
  79. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/agent_policy.py +0 -0
  80. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/ai_architect_provider.py +0 -0
  81. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/ai_architect_session.py +0 -0
  82. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/ai_provider_registry.py +0 -0
  83. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/architecture_mission.py +0 -0
  84. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/architecture_reasoning.py +0 -0
  85. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/architecture_review.py +0 -0
  86. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/codex_runtime_prompt.py +0 -0
  87. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/constitutional_validation.py +0 -0
  88. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/decision_evidence.py +0 -0
  89. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/execution_host.py +0 -0
  90. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/foundation.py +0 -0
  91. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/historical_intent.py +0 -0
  92. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/integration.py +0 -0
  93. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/intent.py +0 -0
  94. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/intent_authoring.py +0 -0
  95. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/mission.py +0 -0
  96. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/mission_candidate.py +0 -0
  97. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/mission_completion.py +0 -0
  98. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/mission_planner.py +0 -0
  99. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/mission_recommendation.py +0 -0
  100. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/phase_completion.py +0 -0
  101. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/planning.py +0 -0
  102. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/producer.py +0 -0
  103. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/prompt_artifact.py +0 -0
  104. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/proposal.py +0 -0
  105. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/runtime_prompt.py +0 -0
  106. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/solution_template.py +0 -0
  107. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/operator_identity.py +0 -0
  108. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/planner/__init__.py +0 -0
  109. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/planner/action_derivation.py +0 -0
  110. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/planner/codex_cli_session.py +0 -0
  111. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/planner/durable_derivation.py +0 -0
  112. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/planner/engine.py +0 -0
  113. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/planner/openai_responses.py +0 -0
  114. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/planner/provider_adapter.py +0 -0
  115. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/planning/__init__.py +0 -0
  116. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/planning/loader.py +0 -0
  117. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/planning/registry.py +0 -0
  118. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/portfolio_intelligence.py +0 -0
  119. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/programme_authorization.py +0 -0
  120. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/prompts/__init__.py +0 -0
  121. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/prompts/codex_cli.py +0 -0
  122. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/prompts/generator.py +0 -0
  123. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/proposals/__init__.py +0 -0
  124. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/proposals/generator.py +0 -0
  125. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/qualification/__init__.py +0 -0
  126. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/qualification/bootstrap_sequence.py +0 -0
  127. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/qualification/generation_one.py +0 -0
  128. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/qualification/installed_smoke.py +0 -0
  129. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/recommendations/__init__.py +0 -0
  130. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/recommendations/engine.py +0 -0
  131. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/repository_truth.py +0 -0
  132. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/review/__init__.py +0 -0
  133. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/review/engine.py +0 -0
  134. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/runtime/bootstrap.py +0 -0
  135. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/runtime/data_root.py +0 -0
  136. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/runtime/dynamic_mission.py +0 -0
  137. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/runtime/evidence.py +0 -0
  138. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/runtime/execution_context.py +0 -0
  139. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/runtime/runner.py +0 -0
  140. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/runtime/service.py +0 -0
  141. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/scheduler/__init__.py +0 -0
  142. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/scheduler/adapter.py +0 -0
  143. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/scheduler/scheduler.py +0 -0
  144. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/capability-registry-1.0.schema.json +0 -0
  145. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/capability.schema.json +0 -0
  146. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/common.schema.json +0 -0
  147. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/decision-evidence-1.0.schema.json +0 -0
  148. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/engineering-goal-0.5.schema.json +0 -0
  149. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/engineering-increment-proposal-0.5.schema.json +0 -0
  150. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/engineering-mode.schema.json +0 -0
  151. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/engineering-plan-0.5.schema.json +0 -0
  152. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/engineering-platform-peer-configuration-1.0.schema.json +0 -0
  153. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/engineering-platform-peer-configuration-1.1.schema.json +0 -0
  154. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/engineering-prompt-artifact-0.7.schema.json +0 -0
  155. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/engineering-proposal-0.6.schema.json +0 -0
  156. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/evidence-reference-0.5.schema.json +0 -0
  157. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/foundation-document.schema.json +0 -0
  158. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/governance-profile.schema.json +0 -0
  159. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/knowledge-source-0.4.schema.json +0 -0
  160. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/knowledge-source.schema.json +0 -0
  161. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/mission-candidate-1.0.schema.json +0 -0
  162. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/mission-candidate-1.1.schema.json +0 -0
  163. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/phase-completion-1.0.schema.json +0 -0
  164. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/planning-document-0.5.schema.json +0 -0
  165. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/repository-catalog.schema.json +0 -0
  166. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/repository.schema.json +0 -0
  167. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/solution-template-1.0.schema.json +0 -0
  168. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/workspace.schema.json +0 -0
  169. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/secure_store.py +0 -0
  170. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/solutions/__init__.py +0 -0
  171. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/solutions/catalogue.py +0 -0
  172. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/solutions/generator.py +0 -0
  173. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/state/__init__.py +0 -0
  174. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/state/mission_state.py +0 -0
  175. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/workspace/__init__.py +0 -0
  176. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge_autonomy.egg-info/dependency_links.txt +0 -0
  177. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge_autonomy.egg-info/entry_points.txt +0 -0
  178. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge_autonomy.egg-info/top_level.txt +0 -0
  179. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/pyproject.toml +0 -0
  180. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/capability-registry-1.0.schema.json +0 -0
  181. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/capability.schema.json +0 -0
  182. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/common.schema.json +0 -0
  183. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/decision-evidence-1.0.schema.json +0 -0
  184. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/engineering-goal-0.5.schema.json +0 -0
  185. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/engineering-increment-proposal-0.5.schema.json +0 -0
  186. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/engineering-mode.schema.json +0 -0
  187. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/engineering-plan-0.5.schema.json +0 -0
  188. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/engineering-prompt-artifact-0.7.schema.json +0 -0
  189. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/engineering-proposal-0.6.schema.json +0 -0
  190. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/evidence-reference-0.5.schema.json +0 -0
  191. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/foundation-document.schema.json +0 -0
  192. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/governance-profile.schema.json +0 -0
  193. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/knowledge-source-0.4.schema.json +0 -0
  194. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/knowledge-source.schema.json +0 -0
  195. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/mission-candidate-1.0.schema.json +0 -0
  196. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/mission-candidate-1.1.schema.json +0 -0
  197. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/phase-completion-1.0.schema.json +0 -0
  198. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/planning-document-0.5.schema.json +0 -0
  199. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/repository-catalog.schema.json +0 -0
  200. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/repository.schema.json +0 -0
  201. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/solution-template-1.0.schema.json +0 -0
  202. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/workspace.schema.json +0 -0
  203. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/setup.cfg +0 -0
  204. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_action_derivation.py +0 -0
  205. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_action_derivation_canary_closure.py +0 -0
  206. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_action_derivation_evidence.py +0 -0
  207. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_action_derivation_qualification.py +0 -0
  208. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_adaptive_action_sizing_design.py +0 -0
  209. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_agent_policy.py +0 -0
  210. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_aggregate_health_roadmap.py +0 -0
  211. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_ai_architect_provider.py +0 -0
  212. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_ai_architect_session.py +0 -0
  213. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_ai_development_projection.py +0 -0
  214. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_ai_provider_registry.py +0 -0
  215. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_architecture_reasoning.py +0 -0
  216. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_architecture_review_engine.py +0 -0
  217. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_architecture_workspace.py +0 -0
  218. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_autonomous_orchestrator.py +0 -0
  219. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_bootstrap_adapter.py +0 -0
  220. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_bootstrap_mission_canary.py +0 -0
  221. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_bootstrap_mission_runner.py +0 -0
  222. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_bootstrap_mission_scheduler.py +0 -0
  223. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_bootstrap_sequence_qualification.py +0 -0
  224. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_business_governance_ingress.py +0 -0
  225. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_business_workspace.py +0 -0
  226. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_canonical_data_root.py +0 -0
  227. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_capability_delegation.py +0 -0
  228. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_codex_cli_runtime_prompt.py +0 -0
  229. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_codex_cli_session.py +0 -0
  230. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_constitutional_validation.py +0 -0
  231. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_decision_evidence.py +0 -0
  232. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_default_project_quality_policy.py +0 -0
  233. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_distribution_identity.py +0 -0
  234. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_durable_action_derivation.py +0 -0
  235. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_dynamic_mission_capability.py +0 -0
  236. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_engineering_action_architecture.py +0 -0
  237. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_engineering_intent_authoring.py +0 -0
  238. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_engineering_intent_lifecycle.py +0 -0
  239. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_engineering_mission.py +0 -0
  240. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_engineering_planning.py +0 -0
  241. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_engineering_prompt_artifacts.py +0 -0
  242. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_engineering_proposals.py +0 -0
  243. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_execution_context.py +0 -0
  244. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_execution_host_configuration.py +0 -0
  245. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_execution_host_contract.py +0 -0
  246. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_execution_loop.py +0 -0
  247. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_forge_console_admin_parity_contract.py +0 -0
  248. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_forge_console_configuration_contract.py +0 -0
  249. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_forge_console_hosting_contract.py +0 -0
  250. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_forge_operations_console_roadmap.py +0 -0
  251. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_forge_outer_loop_ci_roadmap.py +0 -0
  252. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_forge_v1_bootstrap_scheduler_contract.py +0 -0
  253. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_forge_v1_implementation_dag.py +0 -0
  254. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_foundation_loader.py +0 -0
  255. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_foundation_models.py +0 -0
  256. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_generation_one_bootstrap_qualification.py +0 -0
  257. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_generation_two_execution.py +0 -0
  258. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_generation_two_mission_intake.py +0 -0
  259. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_governance_authority.py +0 -0
  260. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_governed_coverage.py +0 -0
  261. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_historical_engineering_intent.py +0 -0
  262. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_inner_loop_ci_contract.py +0 -0
  263. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_installed_dynamic_mission_runtime.py +0 -0
  264. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_integration_coordination.py +0 -0
  265. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_knowledge_consumption.py +0 -0
  266. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_mission_completion_evaluator.py +0 -0
  267. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_mission_dispatcher.py +0 -0
  268. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_mission_planner.py +0 -0
  269. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_mission_recommendation_engine.py +0 -0
  270. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_mission_recommendation_lifecycle.py +0 -0
  271. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_mission_runtime_projection.py +0 -0
  272. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_mission_runtime_scheduler.py +0 -0
  273. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_mission_state_store.py +0 -0
  274. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_openai_action_derivation.py +0 -0
  275. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_operator_identity.py +0 -0
  276. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_phase_completion.py +0 -0
  277. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_platform_contract_documents.py +0 -0
  278. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_portfolio_intelligence_operation.py +0 -0
  279. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_producer_contract.py +0 -0
  280. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_product_version_operations.py +0 -0
  281. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_productization_reconciliation.py +0 -0
  282. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_programme_authorization.py +0 -0
  283. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_provider_security.py +0 -0
  284. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_release_operation.py +0 -0
  285. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_repository_truth.py +0 -0
  286. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_role_aware_conversations_contract.py +0 -0
  287. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_runtime_bootstrap.py +0 -0
  288. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_runtime_database.py +0 -0
  289. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_runtime_evidence.py +0 -0
  290. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_runtime_instance_persistence.py +0 -0
  291. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_runtime_prompt_generation.py +0 -0
  292. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_runtime_service.py +0 -0
  293. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_runtime_status_projection.py +0 -0
  294. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_scheduler_dependency_boundary.py +0 -0
  295. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_schemas.py +0 -0
  296. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_secure_store.py +0 -0
  297. {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_solution_templates.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: forge-autonomy
3
- Version: 2.7.20
3
+ Version: 2.7.22
4
4
  Summary: Forge mission planning, producer contracts, and evidence interpretation runtime.
5
5
  Author: Forge maintainers
6
6
  License-Expression: Apache-2.0
@@ -123,6 +123,55 @@ The exact instance-ID comparison is consistency evidence, not a newly invented
123
123
  cryptographic peer identity; preflight reports the latter as `NOT_ASSERTED`.
124
124
  `CONFIGURED` is therefore never presented as `LIVE_READY`.
125
125
 
126
+ ## Operational-history reset
127
+
128
+ Forge schema 38 provides a bounded, product-owned maintenance service under
129
+ `forge server reset`. Start with the strictly read-only installed preview:
130
+
131
+ ```text
132
+ forge --data-root "/path/to/Forge Server" server reset preview
133
+ forge --data-root "/path/to/Forge Server" server reset status
134
+ ```
135
+
136
+ The mutating `prepare`, `apply`, `resume`, `verify`, and `finish` commands are
137
+ documented in the [operator runbook](docs/operations/FORGE_OPERATIONAL_RESET_RUNBOOK.md).
138
+ They preserve instance/peer/provider/security/allocator bindings, use a verified
139
+ SQLite-consistent private backup, fence owning writers durably and reject
140
+ unknown tables/files/symlinks. They do not reset EP, create a Mission, rotate or
141
+ print credentials, or provide arbitrary SQL/table deletion.
142
+
143
+ ## Deterministic runtime health evaluation
144
+
145
+ Forge now provides a library-only, read-only health evaluator in
146
+ [`forge.runtime.health`](forge/runtime/health.py). Callers supply an immutable
147
+ component-registry projection, identity-bound observations, an explicit
148
+ capability scope, and the evaluation time. The evaluator performs no discovery,
149
+ probe, provider generation, Mission operation, peer submission, or domain
150
+ mutation.
151
+
152
+ Liveness and capability readiness remain separate. A green aggregate requires
153
+ fresh passing liveness plus at least one enabled required readiness definition
154
+ for every requested capability. Missing, stale, expired, timed-out, future, or
155
+ wrong-identity required evidence fails closed. Optional failures degrade a
156
+ ready scope, while a disabled optional relay is visible but does not block local
157
+ readiness. Known mandatory failures take precedence over unknown evidence, and
158
+ a required execution-peer outage blocks only capability scopes that depend on
159
+ that peer.
160
+
161
+ The stable public model includes `HealthIdentity`, `HealthCheckDefinition`,
162
+ `HealthObservation`, and `evaluate_health`, with deterministic serialized
163
+ HEALTHY, DEGRADED, UNAVAILABLE, and UNKNOWN results. This source delivery does
164
+ not claim an HTTP/CLI endpoint, installed service, authenticated diagnostic
165
+ surface, or completion of the broader FH roadmap and qualification nodes.
166
+ Implementation PR #128 is merged at
167
+ `1726f774cb42894d3d3386e80adee9444c7a7914`; its exact candidate
168
+ `dcf1e7a14f54e9c0eac0e0f0f95550b561232987` also makes an observation stale
169
+ when its age exactly equals its timeout, with focused coverage for both
170
+ liveness and readiness. The separate, non-empty Finalization PR #129 is merged
171
+ at `49596812cefb41250fab184f35dc2c28571e05e0`; its documentation delivery
172
+ records the bounded handoff and reconciles current-state navigation without
173
+ extending the evaluator's scope.
174
+
126
175
  ## Managed repository status
127
176
 
128
177
  Forge is the first-class repository [`pcvantol/forge`](https://github.com/pcvantol/forge),
@@ -106,6 +106,55 @@ The exact instance-ID comparison is consistency evidence, not a newly invented
106
106
  cryptographic peer identity; preflight reports the latter as `NOT_ASSERTED`.
107
107
  `CONFIGURED` is therefore never presented as `LIVE_READY`.
108
108
 
109
+ ## Operational-history reset
110
+
111
+ Forge schema 38 provides a bounded, product-owned maintenance service under
112
+ `forge server reset`. Start with the strictly read-only installed preview:
113
+
114
+ ```text
115
+ forge --data-root "/path/to/Forge Server" server reset preview
116
+ forge --data-root "/path/to/Forge Server" server reset status
117
+ ```
118
+
119
+ The mutating `prepare`, `apply`, `resume`, `verify`, and `finish` commands are
120
+ documented in the [operator runbook](docs/operations/FORGE_OPERATIONAL_RESET_RUNBOOK.md).
121
+ They preserve instance/peer/provider/security/allocator bindings, use a verified
122
+ SQLite-consistent private backup, fence owning writers durably and reject
123
+ unknown tables/files/symlinks. They do not reset EP, create a Mission, rotate or
124
+ print credentials, or provide arbitrary SQL/table deletion.
125
+
126
+ ## Deterministic runtime health evaluation
127
+
128
+ Forge now provides a library-only, read-only health evaluator in
129
+ [`forge.runtime.health`](forge/runtime/health.py). Callers supply an immutable
130
+ component-registry projection, identity-bound observations, an explicit
131
+ capability scope, and the evaluation time. The evaluator performs no discovery,
132
+ probe, provider generation, Mission operation, peer submission, or domain
133
+ mutation.
134
+
135
+ Liveness and capability readiness remain separate. A green aggregate requires
136
+ fresh passing liveness plus at least one enabled required readiness definition
137
+ for every requested capability. Missing, stale, expired, timed-out, future, or
138
+ wrong-identity required evidence fails closed. Optional failures degrade a
139
+ ready scope, while a disabled optional relay is visible but does not block local
140
+ readiness. Known mandatory failures take precedence over unknown evidence, and
141
+ a required execution-peer outage blocks only capability scopes that depend on
142
+ that peer.
143
+
144
+ The stable public model includes `HealthIdentity`, `HealthCheckDefinition`,
145
+ `HealthObservation`, and `evaluate_health`, with deterministic serialized
146
+ HEALTHY, DEGRADED, UNAVAILABLE, and UNKNOWN results. This source delivery does
147
+ not claim an HTTP/CLI endpoint, installed service, authenticated diagnostic
148
+ surface, or completion of the broader FH roadmap and qualification nodes.
149
+ Implementation PR #128 is merged at
150
+ `1726f774cb42894d3d3386e80adee9444c7a7914`; its exact candidate
151
+ `dcf1e7a14f54e9c0eac0e0f0f95550b561232987` also makes an observation stale
152
+ when its age exactly equals its timeout, with focused coverage for both
153
+ liveness and readiness. The separate, non-empty Finalization PR #129 is merged
154
+ at `49596812cefb41250fab184f35dc2c28571e05e0`; its documentation delivery
155
+ records the bounded handoff and reconciles current-state navigation without
156
+ extending the evaluator's scope.
157
+
109
158
  ## Managed repository status
110
159
 
111
160
  Forge is the first-class repository [`pcvantol/forge`](https://github.com/pcvantol/forge),
@@ -93,6 +93,33 @@ def main(argv: list[str] | None = None) -> int:
93
93
  server_commands = server.add_subparsers(dest="server_command", required=True)
94
94
  server_commands.add_parser("init", help="create and validate the configured Forge data root")
95
95
  server_commands.add_parser("status", help="print read-only runtime status as JSON")
96
+ reset = server_commands.add_parser("reset", help="operate the Forge-owned operational-history reset")
97
+ reset_commands = reset.add_subparsers(dest="reset_command", required=True)
98
+ reset_commands.add_parser("preview", help="inspect a read-only reset plan")
99
+ prepare_reset = reset_commands.add_parser("prepare", help="authorize maintenance and create a verified backup")
100
+ prepare_reset.add_argument("--operation-id", required=True)
101
+ prepare_reset.add_argument("--plan-digest", required=True)
102
+ prepare_reset.add_argument("--acknowledge-operational-fk", action="append", default=[])
103
+ for name, help_text in (
104
+ ("apply", "apply the authorized destructive reset"),
105
+ ("verify", "verify reset integrity and preserved bindings"),
106
+ ):
107
+ reset_action = reset_commands.add_parser(name, help=help_text)
108
+ reset_action.add_argument("--operation-id", required=True)
109
+ reset_action.add_argument("--plan-digest", required=True)
110
+ reset_action.add_argument("--request-digest", required=True)
111
+ reset_action.add_argument("--backup-digest", required=True)
112
+ reset_status = reset_commands.add_parser("status", help="read durable reset status")
113
+ reset_status.add_argument("--operation-id")
114
+ resume_reset = reset_commands.add_parser("resume", help="reconcile the same interrupted reset operation")
115
+ resume_reset.add_argument("--operation-id", required=True)
116
+ resume_reset.add_argument("--plan-digest", required=True)
117
+ resume_reset.add_argument("--request-digest", required=True)
118
+ resume_reset.add_argument("--backup-digest")
119
+ finish_reset = reset_commands.add_parser("finish", help="safely leave durable maintenance")
120
+ finish_reset.add_argument("--operation-id", required=True)
121
+ finish_reset.add_argument("--verification-digest")
122
+ finish_reset.add_argument("--cancel-before-apply", action="store_true")
96
123
  subparsers.add_parser("status", help="print read-only runtime status as JSON")
97
124
  execution_host = subparsers.add_parser("execution-host", help="manage the selected Execution Host peer")
98
125
  execution_host_commands = execution_host.add_subparsers(dest="execution_host_command", required=True)
@@ -140,6 +167,63 @@ def main(argv: list[str] | None = None) -> int:
140
167
  database.close()
141
168
  elif args.command == "status" or (args.command == "server" and args.server_command == "status"):
142
169
  print(json.dumps(_status(args.data_root), sort_keys=True))
170
+ elif args.command == "server" and args.server_command == "reset":
171
+ from .runtime.operational_reset import ForgeOperationalResetService, OperationalResetError
172
+ service = ForgeOperationalResetService(args.data_root)
173
+ try:
174
+ if args.reset_command == "preview":
175
+ result = service.preview()
176
+ elif args.reset_command == "prepare":
177
+ result = service.prepare(
178
+ operation_id=args.operation_id,
179
+ expected_plan_digest=args.plan_digest,
180
+ acknowledge_operational_fk=args.acknowledge_operational_fk,
181
+ )
182
+ elif args.reset_command in {"apply", "verify"}:
183
+ result = getattr(service, args.reset_command)(
184
+ operation_id=args.operation_id, plan_digest=args.plan_digest,
185
+ request_digest=args.request_digest, backup_digest=args.backup_digest,
186
+ )
187
+ elif args.reset_command == "status":
188
+ result = service.status(operation_id=args.operation_id)
189
+ elif args.reset_command == "resume":
190
+ result = service.resume(
191
+ operation_id=args.operation_id, plan_digest=args.plan_digest,
192
+ request_digest=args.request_digest, backup_digest=args.backup_digest,
193
+ )
194
+ else:
195
+ result = service.finish(
196
+ operation_id=args.operation_id, verification_digest=args.verification_digest,
197
+ cancel_before_apply=args.cancel_before_apply,
198
+ )
199
+ print(json.dumps(service.operator_envelope(args.reset_command, result), sort_keys=True))
200
+ except (OperationalResetError, OSError, sqlite3.Error, PermissionError, ValueError) as error:
201
+ finding = {"code": type(error).__name__, "message": str(error)}
202
+ failure = {
203
+ "operation_id": getattr(args, "operation_id", None),
204
+ "state": "ERROR", "allowed": False, "blockers": [finding],
205
+ "error": str(error),
206
+ }
207
+ try:
208
+ envelope = service.operator_envelope(args.reset_command, failure)
209
+ except Exception:
210
+ # Even an unreadable target retains the coordinator's stable
211
+ # top-level contract; no success or target identity is guessed.
212
+ envelope = {
213
+ "contract_version": "operational-reset-v1", "product": "forge",
214
+ "command": args.reset_command, "operation_id": failure["operation_id"],
215
+ "state": "ERROR", "allowed": False,
216
+ "target": {
217
+ "instance_id": None, "database_path": str(service.database_path),
218
+ "database_identity": None, "schema_version": None,
219
+ },
220
+ "profile": "forge-operational-history-v1", "dataset_generation": None,
221
+ "plan_digest": None, "relevant_revision_digest": None,
222
+ "backup": None, "counts": {}, "blockers": [finding], "integrity": {},
223
+ "preserved_bindings_digest": None, "details": failure,
224
+ }
225
+ print(json.dumps(envelope, sort_keys=True))
226
+ return 1
143
227
  elif args.command == "execution-host":
144
228
  try:
145
229
  if args.execution_host_command == "credential-access":
@@ -241,6 +241,12 @@ class PlanningProviderSecurityService:
241
241
  try:
242
242
  actual=self.invocation_policy(expected_policy.provider_id)
243
243
  if not self._same_policy(actual,expected_policy): raise PermissionError('canonical G011 policy changed before generation permit')
244
+ if connection.execute(
245
+ "SELECT 1 FROM operational_reset_tombstones "
246
+ "WHERE record_id=? AND record_kind IN ('generation_request_digest','token_request_digest')",
247
+ (request_digest,),
248
+ ).fetchone() is not None:
249
+ raise PermissionError('generation request identity was retired by an operational reset')
244
250
  connection.execute("INSERT INTO planning_provider_generation_permits VALUES (?,?,?,?,?,?,?,?)",(permit_id,actual.provider_id,actual.version,policy_digest,request_digest,'PENDING',now,now))
245
251
  self.db._append_operational_event(
246
252
  component='forge_planning_provider', level='INFO',
@@ -9,6 +9,7 @@ from .database import (
9
9
  RuntimeDatabase,
10
10
  RuntimeDatabaseError,
11
11
  RuntimeIntegrityError,
12
+ RuntimeMaintenanceActive,
12
13
  )
13
14
  from .bootstrap import (
14
15
  RUNTIME_INSTANCE_VERSION,
@@ -26,11 +27,30 @@ from .bootstrap import (
26
27
  )
27
28
  from .data_root import DataRootError, DataRootResolver, RUNTIME_DIRECTORIES
28
29
  from .evidence import RuntimeDecisionEvidenceReference, RuntimeEvidence
30
+ from .health import (
31
+ HEALTH_SCHEMA_REVISION,
32
+ CapabilityReadiness,
33
+ CheckApplicability,
34
+ CheckPurpose,
35
+ CheckState,
36
+ HealthCheckDefinition,
37
+ HealthEvaluation,
38
+ HealthIdentity,
39
+ HealthObservation,
40
+ HealthState,
41
+ LivenessEvaluation,
42
+ LivenessState,
43
+ ObservationFreshness,
44
+ ObservationState,
45
+ ReadinessState,
46
+ evaluate_health,
47
+ )
29
48
  from .runner import BootstrapMissionRunner, MissionRunnerError, RuntimePromptFactory
30
49
  from .service import ForgeRuntimeService, RuntimeServiceTick
31
50
 
32
51
  __all__ = [
33
52
  "BootstrapMissionRunner", "MissionRunnerError", "RuntimePromptFactory", "ForgeRuntimeService", "RuntimeServiceTick",
34
- "RUNTIME_SCHEMA_VERSION", "RuntimeDatabase", "RuntimeDatabaseError", "RuntimeIntegrityError", "RuntimeDecisionEvidenceReference", "RuntimeEvidence",
53
+ "RUNTIME_SCHEMA_VERSION", "RuntimeDatabase", "RuntimeDatabaseError", "RuntimeIntegrityError", "RuntimeMaintenanceActive", "RuntimeDecisionEvidenceReference", "RuntimeEvidence",
35
54
  "RUNTIME_INSTANCE_VERSION", "RUNTIME_INITIALIZATION_VERSION", "RuntimeBootstrap", "RuntimeIdentity", "RuntimeInstance", "RuntimeLocation", "RuntimePlacement", "RuntimeRecovery", "RuntimeResolutionError", "RuntimeResolver", "repository_identity", "repository_uuid", "DataRootError", "DataRootResolver", "RUNTIME_DIRECTORIES",
55
+ "HEALTH_SCHEMA_REVISION", "CapabilityReadiness", "CheckApplicability", "CheckPurpose", "CheckState", "HealthCheckDefinition", "HealthEvaluation", "HealthIdentity", "HealthObservation", "HealthState", "LivenessEvaluation", "LivenessState", "ObservationFreshness", "ObservationState", "ReadinessState", "evaluate_health",
36
56
  ]