Monorepo for Aesthetic.Computer aesthetic.computer
4
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix: keep pipeline uses fallback thumbnail instead of failing

When oven is overloaded and thumbnail grab fails, the pipeline now
falls back to the artifact URI as thumbnail rather than aborting
the entire mint. Thumbnail can be updated later.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

+10 -2
+10 -2
system/netlify/functions/keep-prepare-background.mjs
··· 610 610 log("thumbnail", `Done: ${thumbnailUri}`); 611 611 } else { 612 612 const preexisting = piece.ipfsMedia?.thumbnailUri; 613 - if (preexisting && forceFresh) { 613 + if (preexisting) { 614 614 thumbnailUri = preexisting; 615 615 await setJobResult(jobId, { thumbnailUri }); 616 616 log("thumbnail", `Reusing previous: ${thumbnailUri}`); 617 617 } else { 618 - throw new Error(`Thumbnail failed: ${thumbResult?.error || "unknown"}`); 618 + // Fallback: use artifact as thumbnail so the mint can proceed 619 + log("thumbnail", `Oven failed (${thumbResult?.error || "unknown"}), using artifact as fallback`); 619 620 } 620 621 } 621 622 } ··· 626 627 await setJobResult(jobId, { artifactUri }); 627 628 await updateJobStage(jobId, "ipfs", "Pinned to IPFS"); 628 629 log("ipfs", `Artifact: ${artifactUri}`); 630 + 631 + // If thumbnail failed, fall back to artifact URI 632 + if (!thumbnailUri) { 633 + thumbnailUri = artifactUri; 634 + await setJobResult(jobId, { thumbnailUri }); 635 + log("thumbnail", `Fallback to artifact: ${thumbnailUri}`); 636 + } 629 637 } 630 638 631 639 // ── Cache media in MongoDB ─────────────────────────────────────────