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.
- {forge_autonomy-2.7.20/forge_autonomy.egg-info → forge_autonomy-2.7.22}/PKG-INFO +50 -1
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/README.md +49 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/__main__.py +84 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/provider_security.py +6 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/runtime/__init__.py +21 -1
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/runtime/database.py +228 -7
- forge_autonomy-2.7.22/forge/runtime/health.py +555 -0
- forge_autonomy-2.7.22/forge/runtime/operational_reset.py +1529 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/scheduler/ep_http_adapter.py +38 -7
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/scheduler/ep_v12.py +17 -2
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22/forge_autonomy.egg-info}/PKG-INFO +50 -1
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge_autonomy.egg-info/SOURCES.txt +5 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/product-version.json +1 -1
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_ep_http_adapter.py +88 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_live_project_roadmap_contract.py +39 -3
- forge_autonomy-2.7.22/tests/test_operational_reset.py +621 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_production_release_workflow.py +20 -0
- forge_autonomy-2.7.22/tests/test_pypi_distribution_readback.py +215 -0
- forge_autonomy-2.7.22/tests/test_runtime_health.py +564 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/MANIFEST.in +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/__init__.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/_version.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/action_derivation_canary_closure.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/action_derivation_evidence.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/action_derivation_qualification.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/action_derivation_reattempt.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/ai_architect/__init__.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/ai_architect/provider_registry.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/architecture/__init__.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/architecture/advisor.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/architecture/presentation.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/architecture/workspace.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/autonomous_orchestrator.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/business/__init__.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/business/advisor.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/business/ingress.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/business/presentation.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/business/workspace.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/canary.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/capabilities/__init__.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/capabilities/delegation.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/completion/__init__.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/completion/assessor.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/completion/mission.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/constitutional/__init__.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/constitutional/assessor.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/core/__init__.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/core/json_store.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/decision_evidence/__init__.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/decision_evidence/repository.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/dispatcher/__init__.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/dispatcher/dispatcher.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/execution/__init__.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/execution/loop.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/execution/presentation.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/execution_host_configuration.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/foundation/__init__.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/foundation/loader.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/generation_two.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/generation_two_execution.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/governance/__init__.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/governance/execution_policy.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/governance/profiles.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/governance_authority.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/intake.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/integration/__init__.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/integration/coordinator.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/integration/repository.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/knowledge/__init__.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/knowledge/consumer.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/knowledge/registry.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/lifecycle/__init__.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/lifecycle/store.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/mission_amendment.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/mission_scheduler.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/__init__.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/action.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/action_derivation.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/agent_policy.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/ai_architect_provider.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/ai_architect_session.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/ai_provider_registry.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/architecture_mission.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/architecture_reasoning.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/architecture_review.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/codex_runtime_prompt.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/constitutional_validation.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/decision_evidence.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/execution_host.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/foundation.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/historical_intent.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/integration.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/intent.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/intent_authoring.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/mission.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/mission_candidate.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/mission_completion.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/mission_planner.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/mission_recommendation.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/phase_completion.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/planning.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/producer.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/prompt_artifact.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/proposal.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/runtime_prompt.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/models/solution_template.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/operator_identity.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/planner/__init__.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/planner/action_derivation.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/planner/codex_cli_session.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/planner/durable_derivation.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/planner/engine.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/planner/openai_responses.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/planner/provider_adapter.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/planning/__init__.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/planning/loader.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/planning/registry.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/portfolio_intelligence.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/programme_authorization.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/prompts/__init__.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/prompts/codex_cli.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/prompts/generator.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/proposals/__init__.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/proposals/generator.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/qualification/__init__.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/qualification/bootstrap_sequence.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/qualification/generation_one.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/qualification/installed_smoke.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/recommendations/__init__.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/recommendations/engine.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/repository_truth.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/review/__init__.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/review/engine.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/runtime/bootstrap.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/runtime/data_root.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/runtime/dynamic_mission.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/runtime/evidence.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/runtime/execution_context.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/runtime/runner.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/runtime/service.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/scheduler/__init__.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/scheduler/adapter.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/scheduler/scheduler.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/capability-registry-1.0.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/capability.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/common.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/decision-evidence-1.0.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/engineering-goal-0.5.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/engineering-increment-proposal-0.5.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/engineering-mode.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/engineering-plan-0.5.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/engineering-platform-peer-configuration-1.0.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/engineering-platform-peer-configuration-1.1.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/engineering-prompt-artifact-0.7.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/engineering-proposal-0.6.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/evidence-reference-0.5.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/foundation-document.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/governance-profile.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/knowledge-source-0.4.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/knowledge-source.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/mission-candidate-1.0.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/mission-candidate-1.1.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/phase-completion-1.0.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/planning-document-0.5.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/repository-catalog.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/repository.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/solution-template-1.0.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/schemas/workspace.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/secure_store.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/solutions/__init__.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/solutions/catalogue.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/solutions/generator.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/state/__init__.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/state/mission_state.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge/workspace/__init__.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge_autonomy.egg-info/dependency_links.txt +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge_autonomy.egg-info/entry_points.txt +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/forge_autonomy.egg-info/top_level.txt +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/pyproject.toml +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/capability-registry-1.0.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/capability.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/common.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/decision-evidence-1.0.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/engineering-goal-0.5.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/engineering-increment-proposal-0.5.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/engineering-mode.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/engineering-plan-0.5.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/engineering-prompt-artifact-0.7.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/engineering-proposal-0.6.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/evidence-reference-0.5.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/foundation-document.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/governance-profile.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/knowledge-source-0.4.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/knowledge-source.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/mission-candidate-1.0.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/mission-candidate-1.1.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/phase-completion-1.0.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/planning-document-0.5.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/repository-catalog.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/repository.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/solution-template-1.0.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/schemas/workspace.schema.json +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/setup.cfg +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_action_derivation.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_action_derivation_canary_closure.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_action_derivation_evidence.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_action_derivation_qualification.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_adaptive_action_sizing_design.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_agent_policy.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_aggregate_health_roadmap.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_ai_architect_provider.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_ai_architect_session.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_ai_development_projection.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_ai_provider_registry.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_architecture_reasoning.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_architecture_review_engine.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_architecture_workspace.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_autonomous_orchestrator.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_bootstrap_adapter.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_bootstrap_mission_canary.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_bootstrap_mission_runner.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_bootstrap_mission_scheduler.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_bootstrap_sequence_qualification.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_business_governance_ingress.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_business_workspace.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_canonical_data_root.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_capability_delegation.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_codex_cli_runtime_prompt.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_codex_cli_session.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_constitutional_validation.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_decision_evidence.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_default_project_quality_policy.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_distribution_identity.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_durable_action_derivation.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_dynamic_mission_capability.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_engineering_action_architecture.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_engineering_intent_authoring.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_engineering_intent_lifecycle.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_engineering_mission.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_engineering_planning.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_engineering_prompt_artifacts.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_engineering_proposals.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_execution_context.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_execution_host_configuration.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_execution_host_contract.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_execution_loop.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_forge_console_admin_parity_contract.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_forge_console_configuration_contract.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_forge_console_hosting_contract.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_forge_operations_console_roadmap.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_forge_outer_loop_ci_roadmap.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_forge_v1_bootstrap_scheduler_contract.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_forge_v1_implementation_dag.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_foundation_loader.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_foundation_models.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_generation_one_bootstrap_qualification.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_generation_two_execution.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_generation_two_mission_intake.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_governance_authority.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_governed_coverage.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_historical_engineering_intent.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_inner_loop_ci_contract.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_installed_dynamic_mission_runtime.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_integration_coordination.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_knowledge_consumption.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_mission_completion_evaluator.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_mission_dispatcher.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_mission_planner.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_mission_recommendation_engine.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_mission_recommendation_lifecycle.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_mission_runtime_projection.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_mission_runtime_scheduler.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_mission_state_store.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_openai_action_derivation.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_operator_identity.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_phase_completion.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_platform_contract_documents.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_portfolio_intelligence_operation.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_producer_contract.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_product_version_operations.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_productization_reconciliation.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_programme_authorization.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_provider_security.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_release_operation.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_repository_truth.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_role_aware_conversations_contract.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_runtime_bootstrap.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_runtime_database.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_runtime_evidence.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_runtime_instance_persistence.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_runtime_prompt_generation.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_runtime_service.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_runtime_status_projection.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_scheduler_dependency_boundary.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_schemas.py +0 -0
- {forge_autonomy-2.7.20 → forge_autonomy-2.7.22}/tests/test_secure_store.py +0 -0
- {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.
|
|
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
|
]
|