{"apiVersion": "openeyes.nails.web.v1", "boundary": "go_live_launch_audit_review_completion_local_only", "collectionExecutionEnabled": false, "completionBoundary": {"acceptsGoLiveEvidenceUri": true, "acceptsInlineGoLiveEvidence": true, "advancesLocalGoLiveTracker": true, "collectionExecutionEnabled": false, "consumesGoLiveEvidence": true, "deployEnabled": false, "liveCollectionEnabled": false, "localStateMutations": false, "mode": "launch_audit_review_completion_local_files_only", "network": false, "preparesGoLiveReadinessConfirmationRequest": true, "productionMutations": false, "readsLocalFiles": true, "requiresExplicitStateRoot": false, "requiresExternalGoLiveEvidence": true, "requiresProcessStagingEnvironment": true, "runsGoLiveReadinessReview": true, "runsLaunchAuditReview": true, "secretMaterialReturned": false, "submitEnabled": false, "uploadEnabled": false, "writesLocalAuditState": false, "writesLocalFiles": true}, "completionContractPath": "/api/web/v1/plugins/nails/production-cutover:launch-audit-review-contract", "completionPath": "/api/web/v1/plugins/nails/production-cutover:launch-audit-review", "contract": {"additionalProperties": false, "contractVersion": 1, "goLiveEvidenceInputModes": ["local_path", "inline_json", "uri"], "inputModes": ["local_path", "inline_json", "uri"], "methods": ["POST"], "name": "nails-production-cutover-launch-audit-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": ["goLiveEvidence", "goLiveEvidenceInline", "goLiveEvidenceUri", "objectUriMirrorRoot", "outputDir", "postCutoverImportConfirmed", "envMode", "replace", "compactOutputFiles"], "requiredFields": ["startBundle"], "schemaDigest": "995d9c3a638171565ad0e96068dce0f5a775575b67b2a074f4dc3d8eeb7caab6", "schemaId": "https://openeyes.local/plugins/nails/web/v1/launch-audit-review-completion-request.schema.json"}, "deployEnabled": false, "links": {"goLiveReadinessConfirmed": {"artifact": "<startBundle>/latest-go-live-readiness-confirmation-request.json", "network": false, "nextCommand": "scripts/nails_complete_go_live_readiness_confirmed.py"}, "goLiveReadinessReport": {"contractPath": "/api/web/v1/plugins/nails/production-cutover:go-live-readiness-report-contract", "method": "POST", "network": false, "path": "/api/web/v1/plugins/nails/production-cutover:go-live-readiness-report"}, "launchAuditReport": {"contractPath": "/api/web/v1/plugins/nails/production-cutover:launch-audit-report-contract", "method": "POST", "network": false, "path": "/api/web/v1/plugins/nails/production-cutover:launch-audit-report"}, "postCutoverImportConfirmed": {"contractPath": "/api/web/v1/plugins/nails/production-cutover:post-cutover-import-confirmed-contract", "localStateMutations": true, "method": "POST", "network": false, "path": "/api/web/v1/plugins/nails/production-cutover:post-cutover-import-confirmed"}}, "liveCollectionEnabled": false, "localStateMutations": false, "localWrapper": {"collectionExecutionEnabled": false, "commandTemplate": "rtk python scripts/nails_complete_go_live_launch_audit_review.py --start-bundle <startBundle> --go-live-evidence <goLiveEvidence> --output-dir <outputDir>", "deployEnabled": false, "explicitPostCutoverReviewCommandTemplate": "rtk python scripts/nails_complete_go_live_launch_audit_review.py --start-bundle <startBundle> --go-live-evidence <goLiveEvidence> --post-cutover-import-confirmed <post-cutover-import-confirmed.json> --output-dir <outputDir>", "liveCollectionEnabled": false, "localStateMutations": false, "network": false, "productionMutations": false, "script": "scripts/nails_complete_go_live_launch_audit_review.py", "steps": ["load latest post-cutover import confirmed completion", "consume operator-approved go-live evidence", "run local launch audit and go-live readiness review", "write safety-scannable launch audit review artifacts", "prepare go-live readiness confirmation request", "advance launch_audit_review"], "submitEnabled": false, "uploadEnabled": false}, "method": "GET", "network": false, "ok": true, "pluginId": "nails", "productionMutations": false, "route": "/api/web/v1/plugins/nails/production-cutover:launch-audit-review-contract", "schema": {"$id": "https://openeyes.local/plugins/nails/web/v1/launch-audit-review-completion-request.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "oneOf": [{"not": {"anyOf": [{"required": ["goLiveEvidenceInline"]}, {"required": ["goLiveEvidenceUri"]}]}, "required": ["goLiveEvidence"]}, {"not": {"anyOf": [{"required": ["goLiveEvidence"]}, {"required": ["goLiveEvidenceUri"]}]}, "required": ["goLiveEvidenceInline"]}, {"not": {"anyOf": [{"required": ["goLiveEvidence"]}, {"required": ["goLiveEvidenceInline"]}]}, "required": ["goLiveEvidenceUri"]}], "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"}, "goLiveEvidence": {"description": "Path to the operator-approved go-live evidence JSON. The default template is prepared by the preceding post-cutover import confirmed completion.", "minLength": 1, "type": "string"}, "goLiveEvidenceInline": {"description": "Inline operator-approved go-live evidence JSON. The API materializes it under the start bundle before running the local launch audit review wrapper.", "type": "object"}, "goLiveEvidenceUri": {"description": "Stable gs:// or oss:// URI for operator-approved go-live evidence JSON. 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"}, "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 launch audit review completion artifacts. When supplied it must resolve inside the start bundle.", "minLength": 1, "type": "string"}, "postCutoverImportConfirmed": {"description": "Optional post-cutover import confirmed review path. Defaults to the latest post-cutover import confirmed completion output.", "minLength": 1, "type": "string"}, "replace": {"default": false, "description": "Allow replacing the launch_audit_review stage entry when advancing the local go-live tracker.", "type": "boolean"}, "startBundle": {"description": "Local go-live start bundle whose post-cutover import confirmation prepared a launch audit evidence request.", "minLength": 1, "type": "string"}}, "required": ["startBundle"], "title": "Nails Launch Audit Review Completion Request v1", "type": "object"}, "sideEffects": "local_launch_audit_review_and_readiness_request_files", "submitEnabled": false, "uploadEnabled": false}