{"apiVersion": "openeyes.nails.web.v1", "boundary": "go_live_release_cockpit_review_completion_local_only", "collectionExecutionEnabled": false, "completionBoundary": {"acceptsGoLiveReadinessConfirmedUri": true, "acceptsNailsWebSmokeEvidenceUri": true, "advancesLocalGoLiveTracker": true, "collectionExecutionEnabled": false, "deployEnabled": false, "externalReleaseAction": false, "liveCollectionEnabled": false, "localStateMutations": false, "mode": "release_cockpit_review_completion_local_files_only", "network": false, "preparesExternalReleaseReceiptTemplate": true, "productionMutations": false, "readsLocalFiles": true, "requiresExplicitStateRoot": false, "requiresGoLiveReadinessConfirmedCompletion": true, "requiresNailsWebCloudRunSmokeCompletion": true, "runsReleaseCockpitReview": true, "secretMaterialReturned": false, "submitEnabled": false, "uploadEnabled": false, "writesLocalAuditState": false, "writesLocalFiles": true}, "completionContractPath": "/api/web/v1/plugins/nails/production-cutover:release-cockpit-review-contract", "completionPath": "/api/web/v1/plugins/nails/production-cutover:release-cockpit-review", "contract": {"additionalProperties": false, "contractVersion": 1, "goLiveReadinessConfirmedInputModes": ["default_latest", "local_path", "uri"], "inputModes": ["default_latest", "local_path", "uri"], "methods": ["POST"], "nailsWebSmokeEvidenceInputModes": ["default_latest", "local_path", "uri"], "name": "nails-production-cutover-release-cockpit-review", "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": ["outputDir", "goLiveReadinessConfirmed", "goLiveReadinessConfirmedUri", "nailsWebSmokeEvidence", "nailsWebSmokeEvidenceUri", "objectUriMirrorRoot", "envMode", "replace", "compactOutputFiles"], "requiredFields": ["startBundle"], "schemaDigest": "8a456ce0953fb6f652cddd833176c1a4b3cc4bd19a22ca5e149dea9a8e122283", "schemaId": "https://openeyes.local/plugins/nails/web/v1/release-cockpit-review-completion-request.schema.json"}, "deployEnabled": false, "externalReleaseAction": false, "links": {"externalReleaseReceipt": {"artifact": "<startBundle>/external-release-receipt.json", "externalReleaseActionRequiredBeforeCompletion": true, "network": false, "nextCommand": "scripts/nails_complete_go_live_external_release_receipt.py"}, "nailsWebCloudRunSmoke": {"contractPath": "/api/web/v1/plugins/nails/production-cutover:nails-web-cloud-run-smoke-contract", "localStateMutations": false, "method": "POST", "network": false, "path": "/api/web/v1/plugins/nails/production-cutover:nails-web-cloud-run-smoke"}}, "liveCollectionEnabled": false, "localStateMutations": false, "localWrapper": {"collectionExecutionEnabled": false, "commandTemplate": "rtk python scripts/nails_complete_go_live_release_cockpit_review.py --start-bundle <startBundle> --output-dir <outputDir>", "deployEnabled": false, "explicitEvidenceCommandTemplate": "rtk python scripts/nails_complete_go_live_release_cockpit_review.py --start-bundle <startBundle> --go-live-readiness-confirmed <go-live-readiness-confirmed.json> --nails-web-smoke-evidence <nails-web-smoke.json> --output-dir <outputDir>", "externalReleaseAction": false, "liveCollectionEnabled": false, "localStateMutations": false, "network": false, "productionMutations": false, "script": "scripts/nails_complete_go_live_release_cockpit_review.py", "steps": ["load latest go-live readiness confirmed completion", "load latest Nails Web Cloud Run smoke completion", "run local release cockpit review", "write safety-scannable release cockpit review artifacts", "prepare fillable external release receipt", "advance release_cockpit_review"], "submitEnabled": false, "uploadEnabled": false}, "method": "GET", "network": false, "ok": true, "pluginId": "nails", "productionMutations": false, "route": "/api/web/v1/plugins/nails/production-cutover:release-cockpit-review-contract", "schema": {"$id": "https://openeyes.local/plugins/nails/web/v1/release-cockpit-review-completion-request.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "allOf": [{"not": {"required": ["goLiveReadinessConfirmed", "goLiveReadinessConfirmedUri"]}}, {"not": {"required": ["nailsWebSmokeEvidence", "nailsWebSmokeEvidenceUri"]}}], "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"}, "goLiveReadinessConfirmed": {"description": "Optional go-live readiness confirmed review path. Defaults to the latest go-live readiness confirmed completion output.", "minLength": 1, "type": "string"}, "goLiveReadinessConfirmedUri": {"description": "Optional stable gs:// or oss:// URI for the go-live readiness confirmed review JSON. When supplied, the API reads JSON from an authorized object URI and materializes it under the start bundle before running the local release cockpit wrapper.", "minLength": 1, "type": "string"}, "nailsWebSmokeEvidence": {"description": "Optional sanitized Nails Web smoke evidence path. Defaults to the smoke evidence registered by the latest Nails Web Cloud Run smoke completion.", "minLength": 1, "type": "string"}, "nailsWebSmokeEvidenceUri": {"description": "Optional stable gs:// or oss:// URI for sanitized Nails Web smoke evidence JSON. When supplied, the API reads JSON from an authorized object URI and materializes it under the start bundle before running the local release cockpit wrapper.", "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 release cockpit review artifacts. When supplied it must resolve inside the start bundle.", "minLength": 1, "type": "string"}, "replace": {"default": false, "description": "Allow replacing the release_cockpit_review stage entry when advancing the local go-live tracker.", "type": "boolean"}, "startBundle": {"description": "Local go-live start bundle whose Nails Web Cloud Run smoke evidence has been registered.", "minLength": 1, "type": "string"}}, "required": ["startBundle"], "title": "Nails Release Cockpit Review Completion Request v1", "type": "object"}, "sideEffects": "local_release_cockpit_review_and_external_receipt_template_files", "submitEnabled": false, "uploadEnabled": false}