{"apiVersion": "openeyes.nails.web.v1", "contract": {"additionalProperties": false, "contractVersion": 1, "name": "nails-local-demo-run-request", "optionalFields": ["objectRoot", "now", "stateRoot"], "requiredFields": [], "schemaDigest": "7e87d9e9159ffd8b71bdcfb4e74ed173e2664fcd4b0d499783276bf303403819", "schemaId": "https://openeyes.local/plugins/nails/web/v1/local-demo-run-request.schema.json"}, "linksContract": {"crawlExportsDryRun": "/api/web/v1/plugins/nails/crawl-exports:dry-run", "externalRuntimeHandoffVerify": "/api/web/v1/plugins/nails/maliang-exports:external-runtime-handoff-verify", "externalRuntimeHandoffVerifyContract": "/api/web/v1/plugins/nails/maliang-exports:external-runtime-handoff-verify-contract", "externalRuntimePreflightReceiptVerify": "/api/web/v1/plugins/nails/maliang-exports:external-runtime-preflight-receipt-verify", "externalRuntimePreflightReceiptVerifyContract": "/api/web/v1/plugins/nails/maliang-exports:external-runtime-preflight-receipt-verify-contract", "externalRuntimeReceiptVerify": "/api/web/v1/plugins/nails/maliang-exports:external-runtime-receipt-verify", "externalRuntimeReceiptVerifyContract": "/api/web/v1/plugins/nails/maliang-exports:external-runtime-receipt-verify-contract", "maliangApiInputPackage": "/api/web/v1/plugins/nails/maliang-exports:api-input-package", "maliangApiInputPackageContract": "/api/web/v1/plugins/nails/maliang-exports:api-input-package-contract", "maliangApiInputWorkflow": "/api/web/v1/plugins/nails/maliang-exports:api-input-workflow", "maliangApiInputWorkflowContract": "/api/web/v1/plugins/nails/maliang-exports:api-input-workflow-contract", "maliangApiInputWorkflowVerify": "/api/web/v1/plugins/nails/maliang-exports:api-input-workflow-verify", "maliangApiInputWorkflowVerifyContract": "/api/web/v1/plugins/nails/maliang-exports:api-input-workflow-verify-contract", "maliangHandoffPackage": "/api/web/v1/plugins/nails/maliang-exports:handoff-package", "offlineMvpReadiness": "/api/web/v1/plugins/nails/offline-contract-mvp:readiness", "onlinePilotReadinessReport": "/api/web/v1/plugins/nails/online-pilot:readiness-report", "onlinePilotReadinessReportContract": "/api/web/v1/plugins/nails/online-pilot:readiness-report-contract", "runtimeResourceReadReceiptVerify": "/api/web/v1/plugins/nails/maliang-exports:runtime-resource-read-receipt-verify", "runtimeResourceReadReceiptVerifyContract": "/api/web/v1/plugins/nails/maliang-exports:runtime-resource-read-receipt-verify-contract"}, "method": "GET", "network": false, "nextRequestsContract": {"apiInputWorkflowRequest": {"bodyFields": [], "condition": "before_submit_request_or_authorization", "contractPath": "/api/web/v1/plugins/nails/maliang-exports:api-input-workflow-contract", "method": "GET", "network": false, "path": "/api/web/v1/plugins/nails/maliang-exports:api-input-workflow", "requiresStateRoot": false, "responseFields": ["apiInputWorkflow", "apiInputWorkflowDigest", "standardEndpointOrder"]}, "apiInputWorkflowVerifyRequest": {"body": {"expectedDigest": "<apiInputWorkflowDigest>"}, "bodyFields": ["expectedDigest"], "condition": "after_local_demo_handoff_package_is_available", "contractPath": "/api/web/v1/plugins/nails/maliang-exports:api-input-workflow-verify-contract", "digestField": "apiInputWorkflowDigest", "expectedDigest": "<apiInputWorkflowDigest>", "method": "POST", "network": false, "path": "/api/web/v1/plugins/nails/maliang-exports:api-input-workflow-verify", "sourceFields": {"expectedDigest": "local-demo:run.handoffPackage.apiInputWorkflowDigest"}, "verifiedField": "verified"}, "authorizedSubmitPreviewRequest": {"approvalLedgerFallback": {"contractPath": "/api/web/v1/plugins/nails/online-pilot:approval-ledger-contract", "digestFields": ["authorizationRequirementsDigest", "approvalEvidencePolicyDigest", "nextGateRequestsDigest", "authorizationRequestBundleVerificationDigest"], "mode": "used_when_approvalEvidence_is_omitted", "network": false, "path": "/api/web/v1/plugins/nails/online-pilot:approval-ledger", "requiresStateRoot": true, "sourceField": "currentApprovalEvidence"}, "bodyFields": ["stateRoot", "payloadDigest", "approvalEvidence", "authorizationRequirementsDigest", "approvalEvidencePolicyDigest", "nextGateRequestsDigest", "authorizationRequestBundleVerificationDigest"], "bodyTemplate": {"approvalEvidence": "<online-pilot:evidence-packet.approvalEvidenceTemplate>", "approvalEvidencePolicyDigest": "<online-pilot:evidence-packet.approvalEvidencePolicyDigest>", "authorizationRequestBundleVerificationDigest": "<online-pilot:authorization-request-bundle-verify.verificationDigest>", "authorizationRequirementsDigest": "<online-pilot:evidence-packet.authorizationRequirementsDigest>", "nextGateRequestsDigest": "<online-pilot:evidence-packet.nextGateRequestsDigest>", "payloadDigest": "<payloadDigest>", "stateRoot": "<stateRoot>"}, "condition": "external_authorization_required_before_submit", "contractPath": "/api/web/v1/plugins/nails/online-pilot:authorized-submit-preview-contract", "deployEnabled": false, "method": "POST", "network": false, "path": "/api/web/v1/plugins/nails/online-pilot:authorized-submit-preview", "requiresStateRoot": true, "sourceFields": {"approvalEvidence": "online-pilot:evidence-packet.approvalEvidenceTemplate", "approvalEvidencePolicyDigest": "online-pilot:evidence-packet.approvalEvidencePolicyDigest", "authorizationRequestBundleVerificationDigest": "online-pilot:authorization-request-bundle-verify.verificationDigest", "authorizationRequirementsDigest": "online-pilot:evidence-packet.authorizationRequirementsDigest", "nextGateRequestsDigest": "online-pilot:evidence-packet.nextGateRequestsDigest", "payloadDigest": "online-pilot:review-package.payloadDigest", "stateRoot": "caller.localStateRoot"}, "submitEnabled": false, "uploadEnabled": false}, "externalRuntimeHandoffVerifyRequest": {"bodyFields": ["externalRuntimeHandoff", "expectedHandoffDigest"], "condition": "after_local_demo_api_input_package_is_available", "contractPath": "/api/web/v1/plugins/nails/maliang-exports:external-runtime-handoff-verify-contract", "method": "POST", "network": false, "path": "/api/web/v1/plugins/nails/maliang-exports:external-runtime-handoff-verify", "sourceFields": {"expectedHandoffDigest": "local-demo:run.apiInputPackage.externalRuntimeHandoffDigest", "externalRuntimeHandoff": "local-demo:run.apiInputPackage.externalRuntimeHandoff"}, "submitEnabled": false, "uploadEnabled": false}, "externalRuntimePreflightReceiptVerifyRequest": {"bodyFields": ["externalRuntimeHandoffVerification", "externalRuntimeHandoffVerificationDigest", "runtimeResourceReadReceiptVerification", "runtimeResourceReadReceiptVerificationDigest", "externalPreflightReceipt"], "condition": "after_readonly_external_preflight_receipt_is_available", "contractPath": "/api/web/v1/plugins/nails/maliang-exports:external-runtime-preflight-receipt-verify-contract", "method": "POST", "network": false, "path": "/api/web/v1/plugins/nails/maliang-exports:external-runtime-preflight-receipt-verify", "sourceFields": {"externalPreflightReceipt": "external Maliang Nails readonly preflight receipt", "externalRuntimeHandoffVerification": "externalRuntimeHandoffVerifyRequest response", "runtimeResourceReadReceiptVerification": "runtimeResourceReadReceiptVerifyRequest response"}, "submitEnabled": false, "uploadEnabled": false}, "externalRuntimeReceiptVerifyRequest": {"bodyFields": ["externalRuntimeHandoffVerification", "externalRuntimeHandoffVerificationDigest", "externalExecutionReceipt"], "condition": "after_explicit_external_submit_gate_approval", "contractPath": "/api/web/v1/plugins/nails/maliang-exports:external-runtime-receipt-verify-contract", "method": "POST", "network": false, "path": "/api/web/v1/plugins/nails/maliang-exports:external-runtime-receipt-verify", "sourceFields": {"externalExecutionReceipt": "external Maliang Nails runtime receipt", "externalRuntimeHandoffVerification": "externalRuntimeHandoffVerifyRequest response"}, "submitEnabled": false, "uploadEnabled": false}, "maliangHandoffPackageRequest": {"bodyFields": ["payloadDigest"], "condition": "after_local_demo_persists_maliang_export_record", "method": "POST", "network": false, "path": "/api/web/v1/plugins/nails/maliang-exports:handoff-package", "requiresStateRoot": true}, "offlineMvpReadinessRequest": {"bodyFields": [], "method": "POST", "network": false, "path": "/api/web/v1/plugins/nails/offline-contract-mvp:readiness", "requiresStateRoot": true}, "onlinePilotReadinessReportRequest": {"condition": "after_local_demo_persists_maliang_export_record", "method": "GET", "network": false, "path": "/api/web/v1/plugins/nails/online-pilot:readiness-report", "responseField": "localHandoffEvidenceChecklist"}, "onlinePilotReviewPackageRequest": {"bodyFields": ["payloadDigest"], "condition": "external_authorization_required_before_submit", "method": "POST", "network": false, "path": "/api/web/v1/plugins/nails/online-pilot:review-package", "requiresStateRoot": true}, "runtimeResourceReadReceiptVerifyRequest": {"bodyFields": ["runtimeResourceAccessPolicy", "runtimeResourceAccessPolicyDigest", "externalResourceReadReceipt"], "condition": "after_external_runtime_reads_stable_resource_uris", "contractPath": "/api/web/v1/plugins/nails/maliang-exports:runtime-resource-read-receipt-verify-contract", "method": "POST", "network": false, "path": "/api/web/v1/plugins/nails/maliang-exports:runtime-resource-read-receipt-verify", "sourceFields": {"externalResourceReadReceipt": "external Maliang runtime object read receipt", "runtimeResourceAccessPolicy": "local-demo:run.apiInputPackage.runtimeResourceAccessPolicy", "runtimeResourceAccessPolicyDigest": "local-demo:run.apiInputPackage.runtimeResourceAccessPolicyDigest"}, "submitEnabled": false, "uploadEnabled": false}, "submitGateReportRequest": {"bodyFields": ["payloadDigest"], "condition": "after_local_demo_persists_maliang_export_record", "method": "POST", "network": false, "path": "/api/web/v1/plugins/nails/maliang-exports:submit-gate-report", "requiresStateRoot": true}}, "ok": true, "pluginId": "nails", "route": "/api/web/v1/plugins/nails/local-demo:run-contract", "runPath": "/api/web/v1/plugins/nails/local-demo:run", "schema": {"$id": "https://openeyes.local/plugins/nails/web/v1/local-demo-run-request.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": {"now": {"description": "Optional RFC3339 timestamp. Defaults to the committed fixture window so the demo remains deterministic.", "type": "string"}, "objectRoot": {"description": "Optional local object root. When omitted the demo writes under the local temporary directory.", "minLength": 1, "type": "string"}, "stateRoot": {"description": "Optional local state root. When omitted the demo writes under the local temporary directory.", "minLength": 1, "type": "string"}}, "required": [], "title": "Nails Local Demo Run Request v1", "type": "object"}, "sideEffects": "local_state_only", "storyOrder": ["fixture_crawl_exports", "dry_run", "offline_readiness", "maliang_handoff_package", "api_input_package"], "submitEnabled": false, "uploadEnabled": false}