- Integrate ActionMonitor into ChatGPT GitOps API for failure tracking - Add ErrorClassifier with permission, git, runtime, system, secret violation error types - Add FailureRouter to route errors to correct recovery agents (openclaw/hermes/windows_codex_app) - Add RecoveryController orchestrating full pipeline: capture→classify→route→plan→execute→validate→record - Update error_classifier to include ClientResponseError, rate limit, and secret_violation patterns - All 8 integration tests passing (ActionMonitor, ErrorClassifier, FailureRouter, RecoveryController, API 500 scenario) - Push baseline to V1R2C2 with tag v1r2c2-baseline
57 lines
1.9 KiB
JSON
57 lines
1.9 KiB
JSON
{
|
|
"name": "aios-gitops-enterprise-api-contract",
|
|
"version": "1.0.0",
|
|
"scope": "portal-gitops-dashboard",
|
|
"principles": {
|
|
"all_writes_require_git_commit": true,
|
|
"direct_main_push_from_ui": false,
|
|
"secrets_in_git": false,
|
|
"destructive_operations": "forbidden_or_request_only",
|
|
"server_side_authz_is_authoritative": true
|
|
},
|
|
"read_endpoints": {
|
|
"baseline": "GET /api/base",
|
|
"versions": "GET /api/ver",
|
|
"runtime": "GET /api/run",
|
|
"patches": "GET /api/patch",
|
|
"model_registry": "GET /api/model",
|
|
"diff_raw": "GET /api/diff?from={from}&to={to}",
|
|
"diff_tree": "GET /api/diff/tree?from={from}&to={to}",
|
|
"approval_queue": "GET /api/approval/queue",
|
|
"release_pipeline": "GET /api/release/pipeline",
|
|
"audit_log": "GET /api/audit/log?limit={limit}",
|
|
"me": "GET /api/me"
|
|
},
|
|
"write_endpoints": {
|
|
"create_branch": "POST /api/branch",
|
|
"natural_language_plan": "POST /api/patch/plan",
|
|
"register_model": "POST /api/model",
|
|
"set_model_priority": "PUT /api/model-priority",
|
|
"rollback_request": "POST /api/rollback-request",
|
|
"tag_request": "POST /api/tag-request",
|
|
"approval_decision": "POST /api/approval/decision",
|
|
"release_promotion_request": "POST /api/release/promote-request",
|
|
"audit_append": "POST /api/audit/log"
|
|
},
|
|
"approval_decision_payload": {
|
|
"request_id": "string",
|
|
"decision": "approve | reject",
|
|
"reason": "string",
|
|
"branch": "patch/approval-..."
|
|
},
|
|
"release_promotion_payload": {
|
|
"from_environment": "dev | staging",
|
|
"to_environment": "staging | prod",
|
|
"version": "VxRxCx",
|
|
"reason": "string",
|
|
"branch": "patch/release-promote-..."
|
|
},
|
|
"response_contract": {
|
|
"write_success_any_of": ["branch", "commit", "rev", "sync_status"],
|
|
"auth_failure": {
|
|
"401": "Bearer token not injected",
|
|
"403": "Bearer token injected but scope insufficient"
|
|
}
|
|
}
|
|
}
|