{"apiVersion": "openeyes.nails.web.v1", "contract": {"additionalProperties": false, "contractVersion": 1, "inputModes": ["local_path", "inline_json"], "name": "nails-local-demo-runner-handoff-package", "oneOfInputs": {"localHandoffManifest": ["localHandoffManifestPath", "localHandoffManifest"]}, "optionalFields": ["localHandoffManifestPath", "localHandoffManifest", "expectedManifestDigest"], "requiredFields": ["stateRoot"], "schemaDigest": "a50ccaac7eb6d6b12b0b878e3f5002a859fd7b0268f33ffc9192fa9bc178d888", "schemaId": "https://openeyes.local/plugins/nails/web/v1/local-demo-runner-handoff-package-request.schema.json"}, "manifestVerifyContractPath": "/api/web/v1/plugins/nails/local-demo:handoff-manifest-verify-contract", "manifestVerifyPath": "/api/web/v1/plugins/nails/local-demo:handoff-manifest-verify", "method": "GET", "network": false, "ok": true, "packageContract": {"expectedDigestField": "expectedManifestDigest", "kind": "nails.local_demo_runner_handoff_package", "manifestSource": "local-demo:run.localHandoffManifest", "manifestSourcePathField": "localHandoffManifestPath", "method": "POST", "name": "local-demo-runner-handoff-package", "network": false, "productionMutations": false, "responseFields": ["verifiedManifest", "readyForExternalRunner", "runnerInputMode", "runnerPackageDigest", "maliangApiInput", "externalRuntimeHandoff", "externalRuntimeSmokeKit", "runtimeResourceAccessPolicy", "submitRequest", "sourceTraceLinks", "runnerChecklist"], "submitEnabled": false, "uploadEnabled": false, "verifiedManifestRequired": true}, "packageContractPath": "/api/web/v1/plugins/nails/local-demo:runner-handoff-package-contract", "packagePath": "/api/web/v1/plugins/nails/local-demo:runner-handoff-package", "pluginId": "nails", "productionMutations": false, "requiredArtifacts": ["apiInputPackage", "maliangApiInput", "runtimeResourceAccessPolicy", "externalRuntimeHandoff", "externalRuntimeSmokeKit", "sourceTraceLinks", "submitRequest"], "route": "/api/web/v1/plugins/nails/local-demo:runner-handoff-package-contract", "runContractPath": "/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-runner-handoff-package-request.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "oneOf": [{"required": ["localHandoffManifestPath"]}, {"required": ["localHandoffManifest"]}], "properties": {"expectedManifestDigest": {"description": "Optional digest returned as local-demo:run.localHandoffManifest.digest.", "pattern": "^[a-f0-9]{64}$", "type": "string"}, "localHandoffManifest": {"description": "Inline local-handoff-manifest JSON. Artifact paths inside it are still resolved under stateRoot.", "type": "object"}, "localHandoffManifestPath": {"description": "State-root-relative path returned as local-demo:run.localHandoffManifest.path.", "minLength": 1, "type": "string"}, "stateRoot": {"description": "Local state root used by local-demo:run. The package only reads manifest-bound JSON artifacts under this root.", "minLength": 1, "type": "string"}}, "required": ["stateRoot"], "title": "Nails Local Demo Runner Handoff Package Request v1", "type": "object"}, "sideEffects": "local_state_read_only", "submitEnabled": false, "uploadEnabled": false}