{"apiVersion": "openeyes.nails.web.v1", "boundary": "go_live_staging_handoff_completion_local_only", "collectionExecutionEnabled": false, "completionBoundary": {"acceptsNonSecretStagingEnvOverride": true, "advancesLocalGoLiveTracker": true, "collectionExecutionEnabled": false, "deployEnabled": false, "liveCollectionEnabled": false, "mode": "staging_handoff_completion_process_env_local_files_only", "network": false, "preparesStagingHandoffPacket": true, "preparesStagingReceiptReturnRequest": true, "preparesStagingRunnerBundle": true, "productionMutations": false, "rawTokenAccepted": false, "readsLocalFiles": true, "requiresNonFixtureMaliangNailsEnv": true, "secretMaterialReturned": false, "submitEnabled": false, "uploadEnabled": false, "writesLocalAuditState": false, "writesLocalFiles": true}, "completionContractPath": "/api/web/v1/plugins/nails/production-cutover:staging-handoff-contract", "completionPath": "/api/web/v1/plugins/nails/production-cutover:staging-handoff", "contract": {"additionalProperties": false, "contractVersion": 1, "methods": ["POST"], "name": "nails-production-cutover-staging-handoff", "optionalFields": ["outputDir", "stateRoot", "objectRoot", "envMode", "now", "replace", "compactOutputFiles", "stagingEnvOverride"], "rawTokenAccepted": false, "requiredFields": ["startBundle"], "schemaDigest": "58c56395f120f7e600d1457dfecf585b877e7f1ab4472b5d5a783d13395c8f69", "schemaId": "https://openeyes.local/plugins/nails/web/v1/production-cutover-staging-handoff-request.schema.json", "stagingEnvOverrideFields": ["defaultFolderPath", "libraryId", "maliangWebUrl", "pipelineId", "pipelineTokenSecret", "pipelineTokenSecretProject", "pipelineTokenSecretVersion", "sourceLabel", "submitEnabled"]}, "deployEnabled": false, "links": {"onlinePilotAuthorization": {"contractPath": "/api/web/v1/plugins/nails/production-cutover:online-pilot-authorization-contract", "method": "POST", "network": false, "path": "/api/web/v1/plugins/nails/production-cutover:online-pilot-authorization"}, "stagingReceiptReturnRequest": {"artifact": "<startBundle>/latest-staging-receipt-return-request.json", "network": false, "nextCommand": "scripts/nails_complete_go_live_staging_receipt_import.py"}}, "liveCollectionEnabled": false, "localStateMutations": false, "localWrapper": {"collectionExecutionEnabled": false, "commandTemplate": "rtk env MALIANG_NAILS_WEB_URL=<real-staging-url> MALIANG_NAILS_LIBRARY_ID=<library-id> MALIANG_NAILS_PIPELINE_ID=<pipeline-id> MALIANG_NAILS_SOURCE_LABEL=<source-label> MALIANG_NAILS_DEFAULT_FOLDER_PATH=<folder-path> MALIANG_NAILS_PIPELINE_TOKEN=<secret-token-or-use-secret-ref> python scripts/nails_complete_go_live_staging_handoff.py --start-bundle <startBundle> --output-dir <outputDir>", "deployEnabled": false, "fixtureStateMutations": true, "liveCollectionEnabled": false, "localStateMutations": false, "network": false, "productionMutations": false, "rawTokenAccepted": false, "repoStateMutations": false, "script": "scripts/nails_complete_go_live_staging_handoff.py", "stagingEnvOverrideAccepted": true, "steps": ["load non-fixture Maliang Nails process environment", "verify authorized submit preview from online-pilot authorization", "prepare local staging handoff packet and runner bundle", "write staging receipt return request", "advance staging_handoff_preparation"], "submitEnabled": false, "uploadEnabled": false}, "method": "GET", "network": false, "ok": true, "pluginId": "nails", "productionMutations": false, "route": "/api/web/v1/plugins/nails/production-cutover:staging-handoff-contract", "schema": {"$id": "https://openeyes.local/plugins/nails/web/v1/production-cutover-staging-handoff-request.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": {"compactOutputFiles": {"default": false, "description": "Write compact JSON artifacts when true.", "type": "boolean"}, "envMode": {"default": "process", "description": "Staging handoff intentionally requires process-mode non-fixture MALIANG_NAILS_* environment configuration.", "enum": ["process"], "type": "string"}, "now": {"description": "Optional deterministic timestamp for local artifacts.", "minLength": 1, "type": "string"}, "objectRoot": {"description": "Optional local object root inside the start bundle. Defaults to the staging handoff output directory.", "minLength": 1, "type": "string"}, "outputDir": {"description": "Optional empty local output directory for staging handoff completion artifacts. When supplied it must resolve inside the start bundle.", "minLength": 1, "type": "string"}, "replace": {"default": false, "description": "Allow replacing the staging_handoff_preparation stage entry when advancing the local go-live tracker.", "type": "boolean"}, "stagingEnvOverride": {"additionalProperties": false, "description": "Optional non-secret staging target override for this handoff run. Use secret-ref fields for credentials; raw pipeline tokens are intentionally not part of this schema.", "properties": {"defaultFolderPath": {"minLength": 1, "type": "string"}, "libraryId": {"minLength": 1, "type": "string"}, "maliangWebUrl": {"description": "Real non-fixture Maliang Nails Web API URL.", "minLength": 1, "type": "string"}, "pipelineId": {"minLength": 1, "type": "string"}, "pipelineTokenSecret": {"description": "Secret Manager reference/name only. Raw pipeline tokens are not accepted by this Web API route.", "minLength": 1, "type": "string"}, "pipelineTokenSecretProject": {"minLength": 1, "type": "string"}, "pipelineTokenSecretVersion": {"minLength": 1, "type": "string"}, "sourceLabel": {"minLength": 1, "type": "string"}, "submitEnabled": {"type": "boolean"}}, "type": "object"}, "startBundle": {"description": "Local go-live start bundle whose online-pilot authorization has prepared a staging runtime config request.", "minLength": 1, "type": "string"}, "stateRoot": {"description": "Optional local audit-state root inside the start bundle. Defaults to the online-pilot authorization state root.", "minLength": 1, "type": "string"}}, "required": ["startBundle"], "title": "Nails Production Cutover Staging Handoff Request v1", "type": "object"}, "sideEffects": "local_staging_handoff_packet_and_receipt_request_files", "submitEnabled": false, "uploadEnabled": false}