{"apiVersion": "openeyes.nails.web.v1", "boundary": "go_live_staging_canary_finalize_completion_local_only", "collectionExecutionEnabled": false, "completionBoundary": {"advancesLocalGoLiveTracker": true, "bindsVerifiedStagingReceipts": true, "collectionExecutionEnabled": false, "combinesAuthorizedSubmitPreview": true, "deployEnabled": false, "finalizesStagingCanaryEvidence": true, "liveCollectionEnabled": false, "mode": "staging_canary_finalize_completion_local_files_only", "network": false, "preparesDeploymentCutoverReview": true, "productionMutations": false, "readsLocalFiles": true, "requiresProcessStagingEnvironment": true, "secretMaterialReturned": false, "submitEnabled": false, "uploadEnabled": false, "writesLocalAuditState": false, "writesLocalFiles": true}, "completionContractPath": "/api/web/v1/plugins/nails/production-cutover:staging-canary-finalize-contract", "completionPath": "/api/web/v1/plugins/nails/production-cutover:staging-canary-finalize", "contract": {"additionalProperties": false, "contractVersion": 1, "methods": ["POST"], "name": "nails-production-cutover-staging-canary-finalize", "optionalFields": ["outputDir", "authorizedSubmitPreview", "receiptImport", "envMode", "observedAt", "replace", "compactOutputFiles"], "requiredFields": ["startBundle"], "schemaDigest": "20546256bc15b1db3ba71b3126d6942d8f2e4c1fb1bd4b85eae895e7dd18cdb4", "schemaId": "https://openeyes.local/plugins/nails/web/v1/production-cutover-staging-canary-finalize-request.schema.json"}, "deployEnabled": false, "links": {"deploymentCutoverReview": {"artifact": "<startBundle>/latest-staging-canary-finalize-completion.json", "network": false, "nextCommand": "scripts/nails_complete_go_live_deployment_cutover_review.py"}, "stagingReceiptImport": {"contractPath": "/api/web/v1/plugins/nails/production-cutover:staging-receipt-import-contract", "method": "POST", "network": false, "path": "/api/web/v1/plugins/nails/production-cutover:staging-receipt-import"}}, "liveCollectionEnabled": false, "localStateMutations": false, "localWrapper": {"collectionExecutionEnabled": false, "commandTemplate": "rtk python scripts/nails_complete_go_live_staging_canary_finalize.py --start-bundle <startBundle> --output-dir <outputDir>", "deployEnabled": false, "explicitEvidenceCommandTemplate": "rtk python scripts/nails_complete_go_live_staging_canary_finalize.py --start-bundle <startBundle> --authorized-submit-preview <authorized-submit-preview.json> --receipt-import <staging-receipt-import-report.json> --output-dir <outputDir>", "fixtureStateMutations": true, "liveCollectionEnabled": false, "localStateMutations": false, "network": false, "productionMutations": false, "repoStateMutations": false, "script": "scripts/nails_complete_go_live_staging_canary_finalize.py", "steps": ["load latest online-pilot authorization completion", "load latest staging receipt import completion", "combine authorized submit preview with verified staging receipts", "write local staging canary finalize evidence and full report", "advance staging_canary_finalize"], "submitEnabled": false, "uploadEnabled": false}, "method": "GET", "network": false, "ok": true, "pluginId": "nails", "productionMutations": false, "route": "/api/web/v1/plugins/nails/production-cutover:staging-canary-finalize-contract", "schema": {"$id": "https://openeyes.local/plugins/nails/web/v1/production-cutover-staging-canary-finalize-request.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": {"authorizedSubmitPreview": {"description": "Optional authorized submit preview path. Defaults to the latest online-pilot authorization completion output.", "minLength": 1, "type": "string"}, "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"}, "observedAt": {"default": "2026-07-19T12:00:00Z", "description": "Timestamp to bind into generated local staging canary step evidence.", "minLength": 1, "type": "string"}, "outputDir": {"description": "Optional empty local output directory for staging canary finalize completion artifacts. When supplied it must resolve inside the start bundle.", "minLength": 1, "type": "string"}, "receiptImport": {"description": "Optional staging receipt import report path. Defaults to the latest staging receipt import completion output.", "minLength": 1, "type": "string"}, "replace": {"default": false, "description": "Allow replacing the staging_canary_finalize stage entry when advancing the local go-live tracker.", "type": "boolean"}, "startBundle": {"description": "Local go-live start bundle whose staging receipt import completion is ready for staging canary finalization.", "minLength": 1, "type": "string"}}, "required": ["startBundle"], "title": "Nails Production Cutover Staging Canary Finalize Request v1", "type": "object"}, "sideEffects": "local_staging_canary_finalize_and_tracker_files", "submitEnabled": false, "uploadEnabled": false}