forge-autonomy 2.7.34__tar.gz → 2.7.36__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 (337) hide show
  1. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/PKG-INFO +8 -6
  2. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/README.md +7 -5
  3. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/__main__.py +136 -0
  4. forge_autonomy-2.7.36/forge/installed_lifecycle.py +651 -0
  5. forge_autonomy-2.7.36/forge/preserved_lifecycle.py +458 -0
  6. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/qualification/server_runtime.py +124 -3
  7. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge_autonomy.egg-info/PKG-INFO +8 -6
  8. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge_autonomy.egg-info/SOURCES.txt +4 -0
  9. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/product-version.json +1 -1
  10. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_installed_forge_update.py +21 -2
  11. forge_autonomy-2.7.36/tests/test_installed_lifecycle.py +315 -0
  12. forge_autonomy-2.7.36/tests/test_preserved_lifecycle.py +197 -0
  13. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/MANIFEST.in +0 -0
  14. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/__init__.py +0 -0
  15. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/_version.py +0 -0
  16. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/action_derivation_canary_closure.py +0 -0
  17. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/action_derivation_evidence.py +0 -0
  18. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/action_derivation_qualification.py +0 -0
  19. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/action_derivation_reattempt.py +0 -0
  20. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/ai_architect/__init__.py +0 -0
  21. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/ai_architect/provider_registry.py +0 -0
  22. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/api/installed-health-component-registry-1.0.json +0 -0
  23. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/api/operations-read-openapi-v1.json +0 -0
  24. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/api/operations-read-postman-v1.json +0 -0
  25. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/api/server-openapi-v1.json +0 -0
  26. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/api/server-postman-v1.json +0 -0
  27. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/architecture/__init__.py +0 -0
  28. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/architecture/advisor.py +0 -0
  29. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/architecture/presentation.py +0 -0
  30. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/architecture/workspace.py +0 -0
  31. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/autonomous_orchestrator.py +0 -0
  32. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/business/__init__.py +0 -0
  33. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/business/advisor.py +0 -0
  34. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/business/ingress.py +0 -0
  35. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/business/presentation.py +0 -0
  36. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/business/workspace.py +0 -0
  37. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/canary.py +0 -0
  38. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/capabilities/__init__.py +0 -0
  39. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/capabilities/delegation.py +0 -0
  40. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/completion/__init__.py +0 -0
  41. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/completion/assessor.py +0 -0
  42. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/completion/host_control_observer.py +0 -0
  43. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/completion/mission.py +0 -0
  44. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/completion/repository_observer.py +0 -0
  45. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/constitutional/__init__.py +0 -0
  46. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/constitutional/assessor.py +0 -0
  47. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/core/__init__.py +0 -0
  48. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/core/json_store.py +0 -0
  49. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/decision_evidence/__init__.py +0 -0
  50. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/decision_evidence/repository.py +0 -0
  51. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/dispatcher/__init__.py +0 -0
  52. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/dispatcher/dispatcher.py +0 -0
  53. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/ep_simulator.py +0 -0
  54. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/execution/__init__.py +0 -0
  55. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/execution/loop.py +0 -0
  56. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/execution/presentation.py +0 -0
  57. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/execution_host_configuration.py +0 -0
  58. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/foundation/__init__.py +0 -0
  59. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/foundation/loader.py +0 -0
  60. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/generation_two.py +0 -0
  61. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/generation_two_execution.py +0 -0
  62. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/governance/__init__.py +0 -0
  63. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/governance/execution_policy.py +0 -0
  64. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/governance/profiles.py +0 -0
  65. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/governance_authority.py +0 -0
  66. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/installed_health.py +0 -0
  67. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/intake.py +0 -0
  68. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/integration/__init__.py +0 -0
  69. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/integration/coordinator.py +0 -0
  70. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/integration/repository.py +0 -0
  71. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/knowledge/__init__.py +0 -0
  72. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/knowledge/consumer.py +0 -0
  73. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/knowledge/registry.py +0 -0
  74. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/lifecycle/__init__.py +0 -0
  75. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/lifecycle/store.py +0 -0
  76. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/mission_amendment.py +0 -0
  77. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/mission_cli.py +0 -0
  78. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/mission_scheduler.py +0 -0
  79. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/__init__.py +0 -0
  80. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/action.py +0 -0
  81. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/action_derivation.py +0 -0
  82. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/agent_policy.py +0 -0
  83. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/ai_architect_provider.py +0 -0
  84. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/ai_architect_session.py +0 -0
  85. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/ai_provider_registry.py +0 -0
  86. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/architecture_mission.py +0 -0
  87. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/architecture_reasoning.py +0 -0
  88. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/architecture_review.py +0 -0
  89. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/codex_runtime_prompt.py +0 -0
  90. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/constitutional_validation.py +0 -0
  91. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/criterion_assessment.py +0 -0
  92. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/criterion_observation.py +0 -0
  93. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/decision_evidence.py +0 -0
  94. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/execution_host.py +0 -0
  95. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/foundation.py +0 -0
  96. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/historical_intent.py +0 -0
  97. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/integration.py +0 -0
  98. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/intent.py +0 -0
  99. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/intent_authoring.py +0 -0
  100. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/mission.py +0 -0
  101. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/mission_candidate.py +0 -0
  102. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/mission_completion.py +0 -0
  103. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/mission_planner.py +0 -0
  104. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/mission_recommendation.py +0 -0
  105. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/phase_completion.py +0 -0
  106. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/planning.py +0 -0
  107. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/producer.py +0 -0
  108. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/prompt_artifact.py +0 -0
  109. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/proposal.py +0 -0
  110. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/runtime_prompt.py +0 -0
  111. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/models/solution_template.py +0 -0
  112. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/operations_read_api.py +0 -0
  113. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/operator_identity.py +0 -0
  114. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/planner/__init__.py +0 -0
  115. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/planner/action_derivation.py +0 -0
  116. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/planner/codex_cli_session.py +0 -0
  117. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/planner/durable_derivation.py +0 -0
  118. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/planner/engine.py +0 -0
  119. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/planner/openai_responses.py +0 -0
  120. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/planner/provider_adapter.py +0 -0
  121. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/planning/__init__.py +0 -0
  122. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/planning/loader.py +0 -0
  123. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/planning/registry.py +0 -0
  124. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/portfolio_intelligence.py +0 -0
  125. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/programme_authorization.py +0 -0
  126. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/prompts/__init__.py +0 -0
  127. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/prompts/codex_cli.py +0 -0
  128. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/prompts/generator.py +0 -0
  129. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/proposals/__init__.py +0 -0
  130. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/proposals/generator.py +0 -0
  131. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/provider_context.py +0 -0
  132. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/provider_security.py +0 -0
  133. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/qualification/__init__.py +0 -0
  134. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/qualification/bootstrap_sequence.py +0 -0
  135. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/qualification/criterion_completion.py +0 -0
  136. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/qualification/generation_one.py +0 -0
  137. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/qualification/installed_smoke.py +0 -0
  138. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/recommendations/__init__.py +0 -0
  139. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/recommendations/engine.py +0 -0
  140. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/repository_truth.py +0 -0
  141. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/review/__init__.py +0 -0
  142. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/review/engine.py +0 -0
  143. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/runtime/__init__.py +0 -0
  144. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/runtime/bootstrap.py +0 -0
  145. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/runtime/data_root.py +0 -0
  146. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/runtime/database.py +0 -0
  147. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/runtime/dynamic_mission.py +0 -0
  148. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/runtime/evidence.py +0 -0
  149. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/runtime/execution_context.py +0 -0
  150. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/runtime/health.py +0 -0
  151. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/runtime/mission_controller.py +0 -0
  152. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/runtime/operational_reset.py +0 -0
  153. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/runtime/runner.py +0 -0
  154. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/runtime/service.py +0 -0
  155. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/scheduler/__init__.py +0 -0
  156. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/scheduler/adapter.py +0 -0
  157. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/scheduler/ep_http_adapter.py +0 -0
  158. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/scheduler/ep_v12.py +0 -0
  159. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/scheduler/scheduler.py +0 -0
  160. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/schemas/capability-registry-1.0.schema.json +0 -0
  161. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/schemas/capability.schema.json +0 -0
  162. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/schemas/common.schema.json +0 -0
  163. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/schemas/decision-evidence-1.0.schema.json +0 -0
  164. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/schemas/engineering-goal-0.5.schema.json +0 -0
  165. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/schemas/engineering-increment-proposal-0.5.schema.json +0 -0
  166. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/schemas/engineering-mode.schema.json +0 -0
  167. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/schemas/engineering-plan-0.5.schema.json +0 -0
  168. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/schemas/engineering-platform-peer-configuration-1.0.schema.json +0 -0
  169. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/schemas/engineering-platform-peer-configuration-1.1.schema.json +0 -0
  170. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/schemas/engineering-prompt-artifact-0.7.schema.json +0 -0
  171. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/schemas/engineering-proposal-0.6.schema.json +0 -0
  172. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/schemas/evidence-reference-0.5.schema.json +0 -0
  173. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/schemas/foundation-document.schema.json +0 -0
  174. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/schemas/governance-profile.schema.json +0 -0
  175. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/schemas/knowledge-source-0.4.schema.json +0 -0
  176. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/schemas/knowledge-source.schema.json +0 -0
  177. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/schemas/mission-candidate-1.0.schema.json +0 -0
  178. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/schemas/mission-candidate-1.1.schema.json +0 -0
  179. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/schemas/phase-completion-1.0.schema.json +0 -0
  180. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/schemas/planning-document-0.5.schema.json +0 -0
  181. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/schemas/repository-catalog.schema.json +0 -0
  182. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/schemas/repository.schema.json +0 -0
  183. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/schemas/solution-template-1.0.schema.json +0 -0
  184. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/schemas/workspace.schema.json +0 -0
  185. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/secure_store.py +0 -0
  186. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/server_runtime.py +0 -0
  187. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/solutions/__init__.py +0 -0
  188. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/solutions/catalogue.py +0 -0
  189. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/solutions/generator.py +0 -0
  190. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/state/__init__.py +0 -0
  191. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/state/mission_state.py +0 -0
  192. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge/workspace/__init__.py +0 -0
  193. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge_autonomy.egg-info/dependency_links.txt +0 -0
  194. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge_autonomy.egg-info/entry_points.txt +0 -0
  195. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/forge_autonomy.egg-info/top_level.txt +0 -0
  196. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/pyproject.toml +0 -0
  197. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/schemas/capability-registry-1.0.schema.json +0 -0
  198. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/schemas/capability.schema.json +0 -0
  199. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/schemas/common.schema.json +0 -0
  200. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/schemas/decision-evidence-1.0.schema.json +0 -0
  201. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/schemas/engineering-goal-0.5.schema.json +0 -0
  202. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/schemas/engineering-increment-proposal-0.5.schema.json +0 -0
  203. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/schemas/engineering-mode.schema.json +0 -0
  204. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/schemas/engineering-plan-0.5.schema.json +0 -0
  205. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/schemas/engineering-prompt-artifact-0.7.schema.json +0 -0
  206. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/schemas/engineering-proposal-0.6.schema.json +0 -0
  207. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/schemas/evidence-reference-0.5.schema.json +0 -0
  208. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/schemas/foundation-document.schema.json +0 -0
  209. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/schemas/governance-profile.schema.json +0 -0
  210. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/schemas/knowledge-source-0.4.schema.json +0 -0
  211. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/schemas/knowledge-source.schema.json +0 -0
  212. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/schemas/mission-candidate-1.0.schema.json +0 -0
  213. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/schemas/mission-candidate-1.1.schema.json +0 -0
  214. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/schemas/phase-completion-1.0.schema.json +0 -0
  215. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/schemas/planning-document-0.5.schema.json +0 -0
  216. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/schemas/repository-catalog.schema.json +0 -0
  217. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/schemas/repository.schema.json +0 -0
  218. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/schemas/solution-template-1.0.schema.json +0 -0
  219. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/schemas/workspace.schema.json +0 -0
  220. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/setup.cfg +0 -0
  221. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_action_derivation.py +0 -0
  222. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_action_derivation_canary_closure.py +0 -0
  223. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_action_derivation_evidence.py +0 -0
  224. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_action_derivation_qualification.py +0 -0
  225. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_adaptive_action_sizing_design.py +0 -0
  226. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_agent_policy.py +0 -0
  227. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_aggregate_health_roadmap.py +0 -0
  228. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_ai_architect_provider.py +0 -0
  229. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_ai_architect_session.py +0 -0
  230. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_ai_development_projection.py +0 -0
  231. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_ai_provider_registry.py +0 -0
  232. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_architecture_reasoning.py +0 -0
  233. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_architecture_review_engine.py +0 -0
  234. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_architecture_workspace.py +0 -0
  235. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_autonomous_orchestrator.py +0 -0
  236. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_bootstrap_adapter.py +0 -0
  237. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_bootstrap_mission_canary.py +0 -0
  238. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_bootstrap_mission_runner.py +0 -0
  239. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_bootstrap_mission_scheduler.py +0 -0
  240. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_bootstrap_sequence_qualification.py +0 -0
  241. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_business_governance_ingress.py +0 -0
  242. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_business_workspace.py +0 -0
  243. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_canonical_data_root.py +0 -0
  244. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_capability_delegation.py +0 -0
  245. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_codex_cli_runtime_prompt.py +0 -0
  246. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_codex_cli_session.py +0 -0
  247. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_constitutional_validation.py +0 -0
  248. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_criterion_assessment_contract.py +0 -0
  249. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_criterion_ep_http_boundary.py +0 -0
  250. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_criterion_planning_context.py +0 -0
  251. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_decision_evidence.py +0 -0
  252. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_default_project_quality_policy.py +0 -0
  253. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_distribution_identity.py +0 -0
  254. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_durable_action_derivation.py +0 -0
  255. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_dynamic_mission_capability.py +0 -0
  256. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_engineering_action_architecture.py +0 -0
  257. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_engineering_intent_authoring.py +0 -0
  258. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_engineering_intent_lifecycle.py +0 -0
  259. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_engineering_mission.py +0 -0
  260. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_engineering_planning.py +0 -0
  261. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_engineering_prompt_artifacts.py +0 -0
  262. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_engineering_proposals.py +0 -0
  263. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_ep_http_adapter.py +0 -0
  264. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_ep_simulator.py +0 -0
  265. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_ep_simulator_rolling_planning.py +0 -0
  266. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_execution_context.py +0 -0
  267. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_execution_host_configuration.py +0 -0
  268. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_execution_host_contract.py +0 -0
  269. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_execution_loop.py +0 -0
  270. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_existing_release_reconciliation.py +0 -0
  271. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_forge_console_admin_parity_contract.py +0 -0
  272. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_forge_console_configuration_contract.py +0 -0
  273. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_forge_console_hosting_contract.py +0 -0
  274. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_forge_operations_console_roadmap.py +0 -0
  275. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_forge_outer_loop_ci_roadmap.py +0 -0
  276. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_forge_v1_bootstrap_scheduler_contract.py +0 -0
  277. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_forge_v1_implementation_dag.py +0 -0
  278. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_foundation_loader.py +0 -0
  279. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_foundation_models.py +0 -0
  280. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_generation_one_bootstrap_qualification.py +0 -0
  281. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_generation_two_execution.py +0 -0
  282. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_generation_two_mission_intake.py +0 -0
  283. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_governance_authority.py +0 -0
  284. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_governed_coverage.py +0 -0
  285. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_historical_engineering_intent.py +0 -0
  286. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_host_control_completion.py +0 -0
  287. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_inner_loop_ci_contract.py +0 -0
  288. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_installed_dynamic_mission_runtime.py +0 -0
  289. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_integration_coordination.py +0 -0
  290. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_knowledge_consumption.py +0 -0
  291. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_live_project_roadmap_contract.py +0 -0
  292. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_mission_completion_evaluator.py +0 -0
  293. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_mission_controller.py +0 -0
  294. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_mission_dispatcher.py +0 -0
  295. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_mission_planner.py +0 -0
  296. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_mission_recommendation_engine.py +0 -0
  297. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_mission_recommendation_lifecycle.py +0 -0
  298. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_mission_runtime_projection.py +0 -0
  299. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_mission_runtime_scheduler.py +0 -0
  300. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_mission_state_store.py +0 -0
  301. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_mission_status.py +0 -0
  302. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_openai_action_derivation.py +0 -0
  303. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_operational_reset.py +0 -0
  304. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_operations_health.py +0 -0
  305. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_operations_read_api.py +0 -0
  306. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_operator_identity.py +0 -0
  307. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_phase_completion.py +0 -0
  308. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_platform_contract_documents.py +0 -0
  309. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_portfolio_intelligence_operation.py +0 -0
  310. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_producer_contract.py +0 -0
  311. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_product_version_operations.py +0 -0
  312. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_production_release_workflow.py +0 -0
  313. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_productization_reconciliation.py +0 -0
  314. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_programme_authorization.py +0 -0
  315. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_provider_context.py +0 -0
  316. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_provider_security.py +0 -0
  317. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_pypi_distribution_readback.py +0 -0
  318. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_recovered_partial_completion.py +0 -0
  319. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_release_operation.py +0 -0
  320. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_repository_truth.py +0 -0
  321. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_role_aware_conversations_contract.py +0 -0
  322. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_runtime_bootstrap.py +0 -0
  323. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_runtime_database.py +0 -0
  324. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_runtime_evidence.py +0 -0
  325. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_runtime_health.py +0 -0
  326. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_runtime_instance_persistence.py +0 -0
  327. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_runtime_prompt_generation.py +0 -0
  328. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_runtime_service.py +0 -0
  329. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_runtime_status_projection.py +0 -0
  330. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_scheduler_dependency_boundary.py +0 -0
  331. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_schemas.py +0 -0
  332. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_secure_store.py +0 -0
  333. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_server_api_contract.py +0 -0
  334. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_server_runtime.py +0 -0
  335. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_solution_templates.py +0 -0
  336. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_substantive_mission_completion.py +0 -0
  337. {forge_autonomy-2.7.34 → forge_autonomy-2.7.36}/tests/test_terminal_continuation_replay.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: forge-autonomy
3
- Version: 2.7.34
3
+ Version: 2.7.36
4
4
  Summary: Forge mission planning, producer contracts, and evidence interpretation runtime.
5
5
  Author: Forge maintainers
6
6
  License-Expression: Apache-2.0
@@ -125,14 +125,16 @@ cryptographic peer identity; preflight reports the latter as `NOT_ASSERTED`.
125
125
 
126
126
  ## Bounded installed maintenance
127
127
 
128
- The product-owned external controller for the selected Forge 2.7.21 to 2.7.22
129
- installation transition is documented in the
128
+ The product-owned external update controller is documented in the
130
129
  [installed update runbook](docs/operations/FORGE_INSTALLED_UPDATE_RUNBOOK.md) and
131
130
  [sanitized Forge 2.7.22 release/installation completion record](docs/operations/FORGE_2_7_22_RELEASE_INSTALLATION_COMPLETION.md).
132
131
  It stages an exact qualified wheel, backs up and migrates the selected runtime,
133
- and atomically activates a versioned slot. It is not packaged as a Forge
134
- Runtime command and does not replace Forge Platform's normal installer/update
135
- composition boundary.
132
+ and atomically activates a versioned slot. The packaged
133
+ [Forge Server Runtime lifecycle V1 contract](docs/architecture/FORGE_SERVER_RUNTIME_LIFECYCLE_V1.md)
134
+ adds the separate read-only exact-candidate update decision and the durable,
135
+ idempotent exact-instance uninstall dispatcher. Forge Platform still owns
136
+ service supervision and immutable runtime-slot layout; it may not replace
137
+ either product decision with version comparison or filesystem deletion.
136
138
 
137
139
  The later [MISSION-0017 vertical release and installation completion](docs/operations/MISSION_0017_VERTICAL_RELEASE_INSTALLATION_COMPLETION.md)
138
140
  records the isolated two-Action qualification, protected Forge and EP product
@@ -108,14 +108,16 @@ cryptographic peer identity; preflight reports the latter as `NOT_ASSERTED`.
108
108
 
109
109
  ## Bounded installed maintenance
110
110
 
111
- The product-owned external controller for the selected Forge 2.7.21 to 2.7.22
112
- installation transition is documented in the
111
+ The product-owned external update controller is documented in the
113
112
  [installed update runbook](docs/operations/FORGE_INSTALLED_UPDATE_RUNBOOK.md) and
114
113
  [sanitized Forge 2.7.22 release/installation completion record](docs/operations/FORGE_2_7_22_RELEASE_INSTALLATION_COMPLETION.md).
115
114
  It stages an exact qualified wheel, backs up and migrates the selected runtime,
116
- and atomically activates a versioned slot. It is not packaged as a Forge
117
- Runtime command and does not replace Forge Platform's normal installer/update
118
- composition boundary.
115
+ and atomically activates a versioned slot. The packaged
116
+ [Forge Server Runtime lifecycle V1 contract](docs/architecture/FORGE_SERVER_RUNTIME_LIFECYCLE_V1.md)
117
+ adds the separate read-only exact-candidate update decision and the durable,
118
+ idempotent exact-instance uninstall dispatcher. Forge Platform still owns
119
+ service supervision and immutable runtime-slot layout; it may not replace
120
+ either product decision with version comparison or filesystem deletion.
119
121
 
120
122
  The later [MISSION-0017 vertical release and installation completion](docs/operations/MISSION_0017_VERTICAL_RELEASE_INSTALLATION_COMPLETION.md)
121
123
  records the isolated two-Action qualification, protected Forge and EP product
@@ -115,6 +115,54 @@ def main(argv: list[str] | None = None) -> int:
115
115
  provider_context_configure.add_argument("--provider-config-home", required=True)
116
116
  provider_context_configure.add_argument("--profile")
117
117
  provider_context_configure.add_argument("--expected-digest")
118
+ update_assess = server_commands.add_parser(
119
+ "update-assess", help="assess one exact installed update without mutation"
120
+ )
121
+ update_assess.add_argument("--runtime-id", required=True)
122
+ update_assess.add_argument("--installation-id", required=True)
123
+ update_assess.add_argument("--installed-version", required=True)
124
+ update_assess.add_argument("--installed-source", required=True)
125
+ update_assess.add_argument("--installed-artifact-digest", required=True)
126
+ update_assess.add_argument("--candidate-version", required=True)
127
+ update_assess.add_argument("--candidate-source", required=True)
128
+ update_assess.add_argument("--candidate-wheel", required=True)
129
+ update_assess.add_argument("--candidate-artifact-digest", required=True)
130
+ uninstall = server_commands.add_parser(
131
+ "uninstall", help="durably remove one exact quiescent Forge instance"
132
+ )
133
+ uninstall.add_argument("--operation-id", required=True)
134
+ uninstall.add_argument("--instances-root", required=True)
135
+ uninstall.add_argument("--instance-id", required=True)
136
+ uninstall.add_argument("--runtime-id", required=True)
137
+ uninstall.add_argument("--installation-id", required=True)
138
+ uninstall_status = server_commands.add_parser(
139
+ "uninstall-status", help="read one durable uninstall operation"
140
+ )
141
+ uninstall_status.add_argument("--operation-id", required=True)
142
+ uninstall_status.add_argument("--instances-root", required=True)
143
+ uninstall_status.add_argument("--instance-id", required=True)
144
+ for lifecycle_name, lifecycle_help in (
145
+ ("preserve", "preserve one exact quiescent Forge instance data root"),
146
+ ("purge", "permanently purge one exact Forge instance"),
147
+ ("restore", "validate one preserved Forge instance for same-identity restore"),
148
+ ):
149
+ lifecycle = server_commands.add_parser(lifecycle_name, help=lifecycle_help)
150
+ lifecycle.add_argument("--operation-id", required=True)
151
+ lifecycle.add_argument("--instances-root", required=True)
152
+ lifecycle.add_argument("--instance-id", required=True)
153
+ lifecycle.add_argument("--runtime-id", required=True)
154
+ lifecycle.add_argument("--installation-id", required=True)
155
+ lifecycle.add_argument("--installed-version", required=True)
156
+ lifecycle.add_argument("--installed-source", required=True)
157
+ lifecycle.add_argument("--installed-artifact-digest", required=True)
158
+ if lifecycle_name == "restore":
159
+ lifecycle.add_argument("--preserve-operation-id", required=True)
160
+ lifecycle_status_parser = server_commands.add_parser(
161
+ "lifecycle-status", help="read one preserve/purge/restore lifecycle operation"
162
+ )
163
+ lifecycle_status_parser.add_argument("--operation-id", required=True)
164
+ lifecycle_status_parser.add_argument("--instances-root", required=True)
165
+ lifecycle_status_parser.add_argument("--instance-id", required=True)
118
166
  reset = server_commands.add_parser("reset", help="operate the Forge-owned operational-history reset")
119
167
  reset_commands = reset.add_subparsers(dest="reset_command", required=True)
120
168
  reset_commands.add_parser("preview", help="inspect a read-only reset plan")
@@ -247,6 +295,94 @@ def main(argv: list[str] | None = None) -> int:
247
295
  return 0
248
296
  except (OSError, ValueError, RuntimeError, PermissionError) as error:
249
297
  return _failure("server provider-context", error)
298
+ if args.command == "server" and args.server_command == "update-assess":
299
+ if args.data_root is None:
300
+ return _failure("server update-assess", ValueError("--data-root is required for update assessment"))
301
+ from .installed_lifecycle import UpdateAssessmentRequest, assess_update
302
+ result = assess_update(UpdateAssessmentRequest(
303
+ data_root=args.data_root,
304
+ runtime_id=args.runtime_id,
305
+ installation_id=args.installation_id,
306
+ installed_version=args.installed_version,
307
+ installed_source=args.installed_source,
308
+ installed_artifact_digest=args.installed_artifact_digest,
309
+ candidate_version=args.candidate_version,
310
+ candidate_source=args.candidate_source,
311
+ candidate_wheel=args.candidate_wheel,
312
+ candidate_artifact_digest=args.candidate_artifact_digest,
313
+ ))
314
+ print(json.dumps(result, sort_keys=True))
315
+ return 0
316
+ if args.command == "server" and args.server_command == "uninstall":
317
+ if args.data_root is None:
318
+ return _failure("server uninstall", ValueError("--data-root is required for uninstall"))
319
+ try:
320
+ from .installed_lifecycle import InstalledLifecycleError, InstalledUninstallDispatcher, UninstallRequest
321
+ result = InstalledUninstallDispatcher(UninstallRequest(
322
+ operation_id=args.operation_id,
323
+ instance_id=args.instance_id,
324
+ runtime_id=args.runtime_id,
325
+ installation_id=args.installation_id,
326
+ data_root=args.data_root,
327
+ instances_root=args.instances_root,
328
+ )).run()
329
+ print(json.dumps(result, sort_keys=True))
330
+ return 0
331
+ except (InstalledLifecycleError, OSError, sqlite3.Error, PermissionError, ValueError) as error:
332
+ return _failure("server uninstall", error)
333
+ if args.command == "server" and args.server_command == "uninstall-status":
334
+ try:
335
+ from .installed_lifecycle import InstalledLifecycleError, uninstall_status
336
+ result = uninstall_status(args.instances_root, args.instance_id, args.operation_id)
337
+ print(json.dumps(result, sort_keys=True))
338
+ return 0
339
+ except (InstalledLifecycleError, OSError, PermissionError, ValueError) as error:
340
+ return _failure("server uninstall-status", error)
341
+ if args.command == "server" and args.server_command in {"preserve", "purge", "restore"}:
342
+ if args.data_root is None:
343
+ return _failure(
344
+ "server " + args.server_command,
345
+ ValueError("--data-root is required for instance lifecycle mutation"),
346
+ )
347
+ try:
348
+ from .preserved_lifecycle import (
349
+ InstalledPreserveDispatcher,
350
+ InstalledPurgeDispatcher,
351
+ InstalledRestoreDispatcher,
352
+ InstanceLifecycleRequest,
353
+ RestoreRequest,
354
+ )
355
+ common = {
356
+ "operation_id": args.operation_id,
357
+ "instance_id": args.instance_id,
358
+ "runtime_id": args.runtime_id,
359
+ "installation_id": args.installation_id,
360
+ "installed_version": args.installed_version,
361
+ "installed_source": args.installed_source,
362
+ "installed_artifact_digest": args.installed_artifact_digest,
363
+ "data_root": args.data_root,
364
+ "instances_root": args.instances_root,
365
+ }
366
+ if args.server_command == "preserve":
367
+ result = InstalledPreserveDispatcher(InstanceLifecycleRequest(**common)).run()
368
+ elif args.server_command == "purge":
369
+ result = InstalledPurgeDispatcher(InstanceLifecycleRequest(**common)).run()
370
+ else:
371
+ result = InstalledRestoreDispatcher(RestoreRequest(
372
+ **common, preserve_operation_id=args.preserve_operation_id,
373
+ )).run()
374
+ print(json.dumps(result, sort_keys=True))
375
+ return 0
376
+ except (InstalledLifecycleError, OSError, sqlite3.Error, PermissionError, ValueError) as error:
377
+ return _failure("server " + args.server_command, error)
378
+ if args.command == "server" and args.server_command == "lifecycle-status":
379
+ try:
380
+ from .preserved_lifecycle import InstalledLifecycleError, lifecycle_status
381
+ result = lifecycle_status(args.instances_root, args.instance_id, args.operation_id)
382
+ print(json.dumps(result, sort_keys=True))
383
+ return 0
384
+ except (InstalledLifecycleError, OSError, PermissionError, ValueError) as error:
385
+ return _failure("server lifecycle-status", error)
250
386
  if args.command == "health":
251
387
  if args.data_root is None:
252
388
  return _failure("health snapshot", ValueError("--data-root is required for health snapshot"))