{"ok":true,"localProofVerifier":{"schema":"odei.daorg.local-proof-verifier.v1","version":"2026-05-16","self":"/api/daorg/runtime/local-proof-verifier","state":"staged","resultSchema":"odei.daorg.local-proof-artifact-verification.v1","readyToAcceptLocalProof":false,"verificationMode":"fail-closed-public-artifact-check","summary":"Local proof stays staged until execution proof, runtime receipt, and a fresh heartbeat all satisfy the public verifier.","sourceContract":{"schema":"odei.daorg.local-proof-contract.v1","route":"/api/daorg/runtime/local-proof-contract","status":"staged","operationalReady":false},"freshnessPolicy":{"clock":"UTC ISO-8601 generatedAt","maxHeartbeatAgeSeconds":900,"maxReceiptAgeSeconds":86400,"staleState":"blocked","rule":"A stale heartbeat or receipt can stay visible as history, but it cannot close the local proof lane or unlock production-complete language."},"checkProgress":{"ready":0,"blocked":0,"staged":3,"total":3,"label":"0/3 verifier checks pass"},"acceptedArtifacts":[{"artifact":"odei.local.execution-proof","schema":"odei.local.execution-proof.v1","publicRead":"https://app.odei.ai/execution-proof.json","intakeTemplate":"https://app.odei.ai/intake-status/{intakeId}/execution-proof","requiredFields":["schema","proofHash","publicSafe","redactions","summary"]},{"artifact":"odei.local.runtime-receipt","schema":"odei.local.runtime-receipt.v1","publicRead":"https://app.odei.ai/runtime-receipt.json","intakeTemplate":"https://app.odei.ai/intake-status/{intakeId}/runtime-receipt","requiredFields":["schema","runtimeId","receiptHash","publicSafe","generatedAt"]},{"artifact":"odei.local.runtime-heartbeat","schema":"odei.local.runtime-heartbeat.v1","publicRead":"https://app.odei.ai/runtime-heartbeat.json","intakeTemplate":"https://app.odei.ai/intake-status/{intakeId}/runtime-heartbeat","requiredFields":["schema","runtimeId","heartbeatHash","publicSafe","generatedAt"]}],"checks":[{"id":"execution-proof-shape","artifact":"odei.local.execution-proof","state":"staged","method":"GET","publicRead":"https://app.odei.ai/execution-proof.json","command":"curl -fsS https://app.odei.ai/execution-proof.json","requiredFields":["schema","proofHash","publicSafe","redactions","summary"],"maxAgeSeconds":null,"closeRule":"publicSafe=true, proofHash is sha256, and private payload fields are absent.","failClosed":true,"summary":"Required local proof artifact is still staged and cannot close production-complete language."},{"id":"runtime-receipt-shape","artifact":"odei.local.runtime-receipt","state":"staged","method":"GET","publicRead":"https://app.odei.ai/runtime-receipt.json","command":"curl -fsS https://app.odei.ai/runtime-receipt.json","requiredFields":["schema","runtimeId","receiptHash","publicSafe","generatedAt"],"maxAgeSeconds":86400,"closeRule":"receiptHash is sha256 and generatedAt is within the receipt freshness policy.","failClosed":true,"summary":"Required local proof artifact is still staged and cannot close production-complete language."},{"id":"runtime-heartbeat-freshness","artifact":"odei.local.runtime-heartbeat","state":"staged","method":"GET","publicRead":"https://app.odei.ai/runtime-heartbeat.json","command":"curl -fsS https://app.odei.ai/runtime-heartbeat.json","requiredFields":["schema","runtimeId","heartbeatHash","publicSafe","generatedAt"],"maxAgeSeconds":900,"closeRule":"heartbeatHash is sha256 and generatedAt is not older than the heartbeat freshness policy.","failClosed":true,"summary":"Required local proof artifact is still staged and cannot close production-complete language."}],"verdicts":{"pass":"public_safe_local_proof_ready","fail":"blocked_by_local_proof_verifier","review":"needs_local_operator_scope"},"resultTemplate":{"schema":"odei.daorg.local-proof-artifact-verification.v1","artifact":"odei.local.execution-proof | odei.local.runtime-receipt | odei.local.runtime-heartbeat","verdict":"public_safe_local_proof_ready | blocked_by_local_proof_verifier | needs_local_operator_scope","readyToAttach":false,"submittedVerifierHash":"","passedChecks":[],"failedChecks":[],"checkResults":[],"verifierHashField":"verifierHash","verificationHashField":"verificationHash"},"closeRule":"Local proof can close only when every verifier check is pass, every artifact is public-safe, and freshness limits are satisfied.","nextAction":"Publish public-safe execution proof, runtime receipt, and a fresh runtime heartbeat from the local app release.","routes":{"localProofVerifier":"/api/daorg/runtime/local-proof-verifier","localProofContract":"/api/daorg/runtime/local-proof-contract","runtimeSyncContract":"/api/daorg/runtime/sync-contract","syncStatus":"/daorg/sync","appExecutionProof":"https://app.odei.ai/execution-proof.json","appRuntimeReceipt":"https://app.odei.ai/runtime-receipt.json","appRuntimeHeartbeat":"https://app.odei.ai/runtime-heartbeat.json"},"invariants":["Verifier checks fail closed when public artifacts are missing, stale, or not public-safe.","Private local paths, prompts, tool arguments, and raw memory never enter DAOrg verifier payloads.","A declared local proof lane does not override public receipt or reward finality requirements."],"verifierHash":"sha256:03c6d7a1722dc799cb1f5a6170a4dd8e6e96b89a177a1a47a51a4ea8521e4e30","artifactRepairRequests":[{"available":true,"artifact":"odei.local.execution-proof","artifactSchema":"odei.local.execution-proof.v1","publicRead":"https://app.odei.ai/execution-proof.json","intakeTemplate":"https://app.odei.ai/intake-status/{intakeId}/execution-proof","verifierRoute":"/api/daorg/runtime/local-proof-verifier","verifierUrl":"https://daorg.odei.ai/api/daorg/runtime/local-proof-verifier","verifierMethod":"POST","verifierHash":"sha256:03c6d7a1722dc799cb1f5a6170a4dd8e6e96b89a177a1a47a51a4ea8521e4e30","requiredReadBeforeSubmit":["/api/daorg/runtime/local-app-handoff","/api/daorg/runtime/local-proof-contract","/api/daorg/runtime/local-proof-verifier"],"submissionEnvelope":{"method":"POST","route":"/api/daorg/runtime/local-proof-verifier","publicUrl":"https://daorg.odei.ai/api/daorg/runtime/local-proof-verifier","body":{"verifierHash":"sha256:03c6d7a1722dc799cb1f5a6170a4dd8e6e96b89a177a1a47a51a4ea8521e4e30","artifact":"odei.local.execution-proof","packet":{"schema":"odei.local.execution-proof.v1","publicSafe":true,"proofHash":"sha256:<proof-hash>","redactions":["Private local paths, prompts, and tool arguments removed."],"summary":"<public-safe local proof summary>"}}},"nextAction":"Replace placeholder fields with the public-safe local app artifact, then POST submissionEnvelope.body to the local proof verifier.","repairRequestHash":"sha256:435d27cff35b3b15608df8bc82b0bba947bc55a6836bb2a5d3ccf2c145c550bb"},{"available":true,"artifact":"odei.local.runtime-receipt","artifactSchema":"odei.local.runtime-receipt.v1","publicRead":"https://app.odei.ai/runtime-receipt.json","intakeTemplate":"https://app.odei.ai/intake-status/{intakeId}/runtime-receipt","verifierRoute":"/api/daorg/runtime/local-proof-verifier","verifierUrl":"https://daorg.odei.ai/api/daorg/runtime/local-proof-verifier","verifierMethod":"POST","verifierHash":"sha256:03c6d7a1722dc799cb1f5a6170a4dd8e6e96b89a177a1a47a51a4ea8521e4e30","requiredReadBeforeSubmit":["/api/daorg/runtime/local-app-handoff","/api/daorg/runtime/local-proof-contract","/api/daorg/runtime/local-proof-verifier"],"submissionEnvelope":{"method":"POST","route":"/api/daorg/runtime/local-proof-verifier","publicUrl":"https://daorg.odei.ai/api/daorg/runtime/local-proof-verifier","body":{"verifierHash":"sha256:03c6d7a1722dc799cb1f5a6170a4dd8e6e96b89a177a1a47a51a4ea8521e4e30","artifact":"odei.local.runtime-receipt","packet":{"schema":"odei.local.runtime-receipt.v1","publicSafe":true,"runtimeId":"<runtime-id>","receiptHash":"sha256:<receipt-hash>","generatedAt":"<utc-iso8601>"}}},"nextAction":"Replace placeholder fields with the public-safe local app artifact, then POST submissionEnvelope.body to the local proof verifier.","repairRequestHash":"sha256:886e400b4f8eea925f74aed5698504474d4cf4d9d26c32c9ad42477abeb5c65d"},{"available":true,"artifact":"odei.local.runtime-heartbeat","artifactSchema":"odei.local.runtime-heartbeat.v1","publicRead":"https://app.odei.ai/runtime-heartbeat.json","intakeTemplate":"https://app.odei.ai/intake-status/{intakeId}/runtime-heartbeat","verifierRoute":"/api/daorg/runtime/local-proof-verifier","verifierUrl":"https://daorg.odei.ai/api/daorg/runtime/local-proof-verifier","verifierMethod":"POST","verifierHash":"sha256:03c6d7a1722dc799cb1f5a6170a4dd8e6e96b89a177a1a47a51a4ea8521e4e30","requiredReadBeforeSubmit":["/api/daorg/runtime/local-app-handoff","/api/daorg/runtime/local-proof-contract","/api/daorg/runtime/local-proof-verifier"],"submissionEnvelope":{"method":"POST","route":"/api/daorg/runtime/local-proof-verifier","publicUrl":"https://daorg.odei.ai/api/daorg/runtime/local-proof-verifier","body":{"verifierHash":"sha256:03c6d7a1722dc799cb1f5a6170a4dd8e6e96b89a177a1a47a51a4ea8521e4e30","artifact":"odei.local.runtime-heartbeat","packet":{"schema":"odei.local.runtime-heartbeat.v1","publicSafe":true,"runtimeId":"<runtime-id>","heartbeatHash":"sha256:<heartbeat-hash>","generatedAt":"<utc-iso8601>"}}},"nextAction":"Replace placeholder fields with the public-safe local app artifact, then POST submissionEnvelope.body to the local proof verifier.","repairRequestHash":"sha256:22b44a7496aff5111fc0728136644617aa7811e224e67877f06f42ff83793fb0"}],"artifactRepairRequest":{"available":true,"artifact":"odei.local.execution-proof","artifactSchema":"odei.local.execution-proof.v1","publicRead":"https://app.odei.ai/execution-proof.json","intakeTemplate":"https://app.odei.ai/intake-status/{intakeId}/execution-proof","verifierRoute":"/api/daorg/runtime/local-proof-verifier","verifierUrl":"https://daorg.odei.ai/api/daorg/runtime/local-proof-verifier","verifierMethod":"POST","verifierHash":"sha256:03c6d7a1722dc799cb1f5a6170a4dd8e6e96b89a177a1a47a51a4ea8521e4e30","requiredReadBeforeSubmit":["/api/daorg/runtime/local-app-handoff","/api/daorg/runtime/local-proof-contract","/api/daorg/runtime/local-proof-verifier"],"submissionEnvelope":{"method":"POST","route":"/api/daorg/runtime/local-proof-verifier","publicUrl":"https://daorg.odei.ai/api/daorg/runtime/local-proof-verifier","body":{"verifierHash":"sha256:03c6d7a1722dc799cb1f5a6170a4dd8e6e96b89a177a1a47a51a4ea8521e4e30","artifact":"odei.local.execution-proof","packet":{"schema":"odei.local.execution-proof.v1","publicSafe":true,"proofHash":"sha256:<proof-hash>","redactions":["Private local paths, prompts, and tool arguments removed."],"summary":"<public-safe local proof summary>"}}},"nextAction":"Replace placeholder fields with the public-safe local app artifact, then POST submissionEnvelope.body to the local proof verifier.","repairRequestHash":"sha256:435d27cff35b3b15608df8bc82b0bba947bc55a6836bb2a5d3ccf2c145c550bb"},"requestTemplate":{"verifierHash":"sha256:03c6d7a1722dc799cb1f5a6170a4dd8e6e96b89a177a1a47a51a4ea8521e4e30","artifact":"odei.local.execution-proof","packet":{"schema":"odei.local.execution-proof.v1","proofHash":"sha256:<public-proof-hash>","publicSafe":true,"redactions":["Private local paths, prompts, and tool arguments removed."],"summary":"<public-safe execution proof summary>"},"expectedOutput":{"schema":"odei.daorg.local-proof-artifact-verification.v1","verifierHash":"sha256:03c6d7a1722dc799cb1f5a6170a4dd8e6e96b89a177a1a47a51a4ea8521e4e30","submittedVerifierHash":"sha256:03c6d7a1722dc799cb1f5a6170a4dd8e6e96b89a177a1a47a51a4ea8521e4e30","verdict":"public_safe_local_proof_ready | blocked_by_local_proof_verifier | needs_local_operator_scope","passedChecks":[],"failedChecks":[],"nextAction":""}},"submissionEnvelope":{"method":"POST","route":"/api/daorg/runtime/local-proof-verifier","publicUrl":"https://daorg.odei.ai/api/daorg/runtime/local-proof-verifier","body":{"verifierHash":"sha256:03c6d7a1722dc799cb1f5a6170a4dd8e6e96b89a177a1a47a51a4ea8521e4e30","artifact":"odei.local.execution-proof","packet":{"schema":"odei.local.execution-proof.v1","publicSafe":true,"proofHash":"sha256:<proof-hash>","redactions":["Private local paths, prompts, and tool arguments removed."],"summary":"<public-safe local proof summary>"}}}}}