{"record":{"id":"285fcf2855c67e42","repo":"paperclipai/paperclip","slug":"the-requested-file-has-no-accessible-delivery-evidence-use","errorCode":null,"errorMessage":"The requested file has no accessible delivery evidence. Use register_deliverable and cite deliverable:<attachmentId>, or cite an accessible work product registered by this run for this task. Empty evidence, prior-run output, and a verification result cannot substitute for the requested file. Continue publishing or report a concrete blocker; no human completion approval was created.","messagePattern":"The requested file has no accessible delivery evidence\\. Use register_deliverable and cite deliverable:<attachmentId>, or cite an accessible work product registered by this run for this task\\. Empty evidence, prior-run output, and a verification result cannot substitute for the requested file\\. Continue publishing or report a concrete blocker; no human completion approval was created\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/src/services/native-runtime/native-deliverable-feedback.ts","lineNumber":151,"sourceCode":"    if (localFile && (fileRequested || artifactRefs.has(value))) {\n      throw new Error(\"Completion cites a workspace-only file that the user cannot download. Before finishing, use register_deliverable for requested file outputs and cite deliverable:<attachmentId> from the receipt, with /api/attachments/<attachmentId>/content as the download link. For repository changes, cite an accessible PR or registered work product instead. No human completion approval was created.\");\n    }\n  }\n  if (fileRequested && !registeredAttachment) {\n    const products = refs.size ? await db.select().from(issueWorkProducts).where(and(\n      eq(issueWorkProducts.companyId, binding.companyId), eq(issueWorkProducts.issueId, binding.issueId),\n    )) : [];\n    const accessibleProduct = products.some(product => {\n      if (product.createdByRunId !== binding.runId) return false;\n      if ([\"failed\", \"cancelled\", \"archived\"].includes(product.status)) return false;\n      // A workspace_file resource is only a locator: registration neither checks\n      // its current bytes nor keeps them alive after workspace cleanup. Requested\n      // files need a published URL or the verified attachment receipt above.\n      const accessible = typeof product.url === \"string\" && /^https?:\\/\\//iu.test(product.url);\n      return accessible && [product.url, `work_product:${product.id}`, `work-product:${product.id}`, `artifact:${product.id}`]\n        .some(ref => typeof ref === \"string\" && refs.has(ref));\n    });\n    if (!accessibleProduct) throw new Error(\"The requested file has no accessible delivery evidence. Use register_deliverable and cite deliverable:<attachmentId>, or cite an accessible work product registered by this run for this task. Empty evidence, prior-run output, and a verification result cannot substitute for the requested file. Continue publishing or report a concrete blocker; no human completion approval was created.\");\n  }\n}\n","sourceCodeStart":133,"sourceCodeEnd":154,"githubUrl":"https://github.com/paperclipai/paperclip/blob/3f1d897a7c018d76563a21c6e39c3c9b03933622/server/src/services/native-runtime/native-deliverable-feedback.ts#L133-L154","documentation":"Final fallback in validateNativeDeliverableEvidence: a file was explicitly requested but no valid registered attachment was cited, and no registered work product for this issue/run carries an accessible http(s) URL cited in the refs. Empty evidence, prior-run output, and verification results do not substitute for the requested file, so the completion is rejected.","triggerScenarios":"nativeCompletionFeedback with fileRequested=true where the loop above registered no attachment (registeredAttachment stays false) and either no issueWorkProducts exist or none has an http(s) product.url matching refs (url, work_product:<id>, work-product:<id>, or artifact:<id>).","commonSituations":"Agent finished the file but never published it anywhere accessible; agent cites a verification command result as proof of delivery; work product was created without a public URL or with a non-http scheme; refs cite a work product from a different run.","solutions":["Call register_deliverable and cite deliverable:<attachmentId> from the receipt","Or publish the file (e.g. via paperclip-page/S3) and cite the resulting https URL or work_product:<id> for a work product registered by this run for this task","If delivery is impossible, report the concrete blocker in the completion report rather than claiming completion"],"exampleFix":"// before\n\"The file is ready (verified via tests).\"\n// after\nregister_deliverable(out.csv) -> \"Deliverable: deliverable:<attachmentId>\" or cite \"https://.../out.csv\" work product","handlingStrategy":"fallback","validationCode":"if (fileRequested && !citedAttachmentReceipt && !(await hasAccessibleWorkProductUrl(issueId, runId))) {\n  throw new Error(\"Publish the requested file (register_deliverable or accessible URL) before reporting completion.\");\n}","typeGuard":"const accessibleProductCited = (product, refs) => typeof product.url === \"string\" && /^https?:\\/\\//i.test(product.url) && [product.url, `work_product:${product.id}`, `work-product:${product.id}`, `artifact:${product.id}`].some(r => refs.has(r));","tryCatchPattern":"try { await feedback(payload); } catch (e) { if (e.message.includes(\"no accessible delivery evidence\")) { /* publish file or report concrete blocker instead of completing */ } else throw e; }","preventionTips":["Treat 'file requested' as a hard requirement: register_deliverable OR an accessible published URL/work product, always","Never substitute test results, logs, or prior-run outputs as delivery evidence","If publishing fails, report the blocker explicitly rather than claiming completion"],"tags":["deliverables","validation","evidence"],"backgroundTag":"missing-required-argument","analyzedSha":"3f1d897a7c018d76563a21c6e39c3c9b03933622","analyzedAt":"2026-09-18T08:03:59.046Z","contentChangedAt":"2026-09-18T08:03:59.046Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}