{"apiVersion": "openeyes.nails.web.v1", "boundary": "go_live_production_authorization_completion_local_only", "collectionExecutionEnabled": false, "completionBoundary": {"acceptsInlineProductionAuthorizationEvidence": true, "acceptsProductionAuthorizationEvidenceUri": true, "advancesLocalGoLiveTracker": true, "collectionExecutionEnabled": false, "deployEnabled": false, "liveCollectionEnabled": false, "mode": "production_authorization_completion_local_files_only", "network": false, "preparesExternalProductionCutoverExecutionRequest": true, "preparesFillableExternalExecutionReceipt": true, "preparesProductionCutoverRequestPreview": true, "productionMutations": false, "readsLocalFiles": true, "requiresApprovedExternalProductionAuthorizationEvidence": true, "requiresExternalCutoverExecutionAfterCompletion": true, "requiresProcessStagingEnvironment": true, "secretMaterialReturned": false, "submitEnabled": false, "uploadEnabled": false, "verifiesProductionAuthorizationEvidence": true, "writesLocalAuditState": false, "writesLocalFiles": true}, "completionContractPath": "/api/web/v1/plugins/nails/production-cutover:production-authorization-contract", "completionPath": "/api/web/v1/plugins/nails/production-cutover:production-authorization", "contract": {"additionalProperties": false, "contractVersion": 1, "inputModes": ["local_path", "inline_json", "uri"], "methods": ["POST"], "name": "nails-production-cutover-production-authorization", "objectUriReader": {"acceptedSchemes": ["gs", "oss"], "bucketAllowlistEnv": ["MALIANG_NAILS_RESOURCE_BUCKETS", "NAILS_AUDIT_EVIDENCE_BUCKET", "NAILS_SOURCE_ASSETS_BUCKET", "NAILS_DESIGN_PACKAGES_BUCKET", "NAILS_PUBLIC_ASSETS_BUCKET"], "defaultMode": "local_object_uri_mirror", "gcsModeEnv": "NAILS_WEB_GCS_URI_READ_ENABLED=1", "mirrorRootField": "objectUriMirrorRoot", "payloadKind": "json"}, "optionalFields": ["productionAuthorizationEvidence", "productionAuthorizationEvidenceInline", "productionAuthorizationEvidenceUri", "objectUriMirrorRoot", "outputDir", "launchClearanceReview", "envMode", "replace", "compactOutputFiles"], "productionAuthorizationEvidenceInputModes": ["local_path", "inline_json", "uri"], "requiredFields": ["startBundle"], "schemaDigest": "d68d0da7953a3fc2cc4553e47d51cf43b89ea6ea46d6fde0e7e752265cb9005f", "schemaId": "https://openeyes.local/plugins/nails/web/v1/production-cutover-production-authorization-request.schema.json"}, "deployEnabled": false, "links": {"launchClearanceReview": {"contractPath": "/api/web/v1/plugins/nails/production-cutover:launch-clearance-review-contract", "method": "POST", "network": false, "path": "/api/web/v1/plugins/nails/production-cutover:launch-clearance-review"}, "productionCutoverExecutionReview": {"artifact": "<startBundle>/latest-production-authorization-completion.json", "network": false, "nextCommand": "scripts/nails_complete_go_live_production_cutover_execution.py"}}, "liveCollectionEnabled": false, "localStateMutations": false, "localWrapper": {"collectionExecutionEnabled": false, "commandTemplate": "rtk python scripts/nails_complete_go_live_production_authorization.py --start-bundle <startBundle> --production-authorization-evidence <production-authorization-evidence.json> --output-dir <outputDir>", "deployEnabled": false, "explicitEvidenceCommandTemplate": "rtk python scripts/nails_complete_go_live_production_authorization.py --start-bundle <startBundle> --production-authorization-evidence <production-authorization-evidence.json> --launch-clearance-review <launch-clearance-review.json> --output-dir <outputDir>", "liveCollectionEnabled": false, "localStateMutations": false, "network": false, "productionMutations": false, "script": "scripts/nails_complete_go_live_production_authorization.py", "steps": ["load latest launch clearance review completion", "verify approved external production authorization evidence", "prepare non-mutating production cutover request preview", "write production authorization review and safety-scannable stage report", "prepare external production cutover execution request and fillable receipt", "advance production_authorization_review"], "submitEnabled": false, "uploadEnabled": false}, "method": "GET", "network": false, "ok": true, "pluginId": "nails", "productionMutations": false, "route": "/api/web/v1/plugins/nails/production-cutover:production-authorization-contract", "schema": {"$id": "https://openeyes.local/plugins/nails/web/v1/production-cutover-production-authorization-request.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "oneOf": [{"not": {"anyOf": [{"required": ["productionAuthorizationEvidenceInline"]}, {"required": ["productionAuthorizationEvidenceUri"]}]}, "required": ["productionAuthorizationEvidence"]}, {"not": {"anyOf": [{"required": ["productionAuthorizationEvidence"]}, {"required": ["productionAuthorizationEvidenceUri"]}]}, "required": ["productionAuthorizationEvidenceInline"]}, {"not": {"anyOf": [{"required": ["productionAuthorizationEvidence"]}, {"required": ["productionAuthorizationEvidenceInline"]}]}, "required": ["productionAuthorizationEvidenceUri"]}], "properties": {"compactOutputFiles": {"default": false, "description": "Write compact JSON artifacts when true.", "type": "boolean"}, "envMode": {"default": "process", "description": "Use process-provided MALIANG_NAILS_* staging environment signals. Fixture mode is intentionally not accepted.", "enum": ["process"], "type": "string"}, "launchClearanceReview": {"description": "Optional launch clearance review report path. Defaults to the latest launch clearance review completion output.", "minLength": 1, "type": "string"}, "objectUriMirrorRoot": {"description": "Optional local object URI mirror root used when object URI reads are not using Cloud Run GCS JSON API mode. Defaults to <startBundle>/object-uri-readback.", "minLength": 1, "type": "string"}, "outputDir": {"description": "Optional empty local output directory for production authorization completion artifacts. When supplied it must resolve inside the start bundle.", "minLength": 1, "type": "string"}, "productionAuthorizationEvidence": {"description": "Local path to approved external production authorization evidence returned by production reviewers.", "minLength": 1, "type": "string"}, "productionAuthorizationEvidenceInline": {"description": "Inline approved external production authorization evidence returned by production reviewers. The API materializes it under the start bundle before running the local production authorization wrapper.", "type": "object"}, "productionAuthorizationEvidenceUri": {"description": "Stable gs:// or oss:// URI for approved external production authorization evidence. The API reads JSON from an authorized object URI and materializes it under the start bundle before running the local wrapper.", "minLength": 1, "type": "string"}, "replace": {"default": false, "description": "Allow replacing the production_authorization_review stage entry when advancing the local go-live tracker.", "type": "boolean"}, "startBundle": {"description": "Local go-live start bundle whose launch clearance review prepared a production authorization request.", "minLength": 1, "type": "string"}}, "required": ["startBundle"], "title": "Nails Production Cutover Production Authorization Request v1", "type": "object"}, "sideEffects": "local_production_authorization_review_and_cutover_preview_files", "submitEnabled": false, "uploadEnabled": false}