You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The core fix shipped in 1.6.0 (PR #76): ff-cli find now resolves raster.art/artwork/{slug} URLs and builds Raster-minted series into signable, verifiable DP-1 playlists without --skip-verify, bypassing the FF indexer when it can't carry the tokens. This issue tracks the remaining follow-ups that were intentionally left out of that change.
Background
Reported by Lucian while driving an Art Computer via the claw: a Raster URL wasn't recognized and the raw coordinate stalled at the FF indexer, forcing a manual scrape + one-item DP-1 + play --skip-verify workaround. Root causes and the implemented fix are in PR #76. What shipped:
raster.art/artwork/{slug} URL parser → resolve via Raster artworkBySlug.
Per-token media.contentUrl + media-type hint carried from token enumeration.
FF-indexer bypass: build DP-1 items directly from Raster media (off-chain provenance) when the indexer returns nothing; indexer tried first so it keeps on-chain provenance where it works.
Media-type hint (contentType || previewType) threaded into buildUrlItem so extensionless IPFS videos get correct DP-1 timing instead of playing as stills.
Follow-up 1 — Ask Raster for proper media type metadata
The timing fix leans on Raster's non-standard previewType enum because media.contentType is empty. Sampling several artworks: contentType is "" on every one, contentUrl is an extensionless IPFS gateway URL, and previewType is a <class>/<n> code (video/2, gif/3, image/2). Asks, priority order:
Populate media.contentType with a real IANA MIME (video/mp4, image/gif, text/html) — lets every consumer drop the previewType workaround.
Document/confirm the previewType enum — class-prefix set (video/audio/image/gif/html/…) and that it's stable, since we infer from it.
Confirm x-api-key (RASTER_API_KEY) enforcement plans — docs say required; endpoint currently answers without one. Provision before it flips.
Canonical media URL — contentUrl points at a third-party IPFS gateway (ipfs.verse.works); for wall playback, is there a pinned/CDN-backed URL or recommended gateway?
(An email draft for this is being sent separately.)
Follow-up 2 — Partial-index drops
The FF-indexer bypass triggers only when the indexer returns zero items. If it returns some tokens but drops the Raster-only ones, those are still silently dropped (matches pre-existing behavior — not a regression). A per-token bypass, or the "Raster-first" shape below, would close this.
Follow-up 3 — Decide: Raster as fallback vs. primary
Today Raster media is a fallback behind the FF indexer (preserves richer on-chain provenance where the indexer works). If we want Raster as the primary path for Raster-resolved series, the cleaner shape is to reconstruct on-chain provenance from the coords we already hold rather than per-token correlation — but that's a real dependency bet on Raster's uptime/coverage and worth deciding deliberately.
Acceptance (for the follow-ups)
Once Raster populates contentType, drop the previewType workaround in buildUrlItem's caller.
Decide and document the fallback-vs-primary direction; only then tackle partial-index drops.
Status
The core fix shipped in 1.6.0 (PR #76):
ff-cli findnow resolvesraster.art/artwork/{slug}URLs and builds Raster-minted series into signable, verifiable DP-1 playlists without--skip-verify, bypassing the FF indexer when it can't carry the tokens. This issue tracks the remaining follow-ups that were intentionally left out of that change.Background
Reported by Lucian while driving an Art Computer via the claw: a Raster URL wasn't recognized and the raw coordinate stalled at the FF indexer, forcing a manual scrape + one-item DP-1 +
play --skip-verifyworkaround. Root causes and the implemented fix are in PR #76. What shipped:raster.art/artwork/{slug}URL parser → resolve via RasterartworkBySlug.media.contentUrl+ media-type hint carried from token enumeration.contentType || previewType) threaded intobuildUrlItemso extensionless IPFS videos get correct DP-1 timing instead of playing as stills.Follow-up 1 — Ask Raster for proper media type metadata
The timing fix leans on Raster's non-standard
previewTypeenum becausemedia.contentTypeis empty. Sampling several artworks:contentTypeis""on every one,contentUrlis an extensionless IPFS gateway URL, andpreviewTypeis a<class>/<n>code (video/2,gif/3,image/2). Asks, priority order:media.contentTypewith a real IANA MIME (video/mp4,image/gif,text/html) — lets every consumer drop thepreviewTypeworkaround.previewTypeenum — class-prefix set (video/audio/image/gif/html/…) and that it's stable, since we infer from it.Content-Typeheader oncontentUrl(and/or extensioned URLs) — backstop to refactor(nft-indexer): migrate to ff-indexer-v2 API with CAIP-2 format #1.x-api-key(RASTER_API_KEY) enforcement plans — docs say required; endpoint currently answers without one. Provision before it flips.contentUrlpoints at a third-party IPFS gateway (ipfs.verse.works); for wall playback, is there a pinned/CDN-backed URL or recommended gateway?(An email draft for this is being sent separately.)
Follow-up 2 — Partial-index drops
The FF-indexer bypass triggers only when the indexer returns zero items. If it returns some tokens but drops the Raster-only ones, those are still silently dropped (matches pre-existing behavior — not a regression). A per-token bypass, or the "Raster-first" shape below, would close this.
Follow-up 3 — Decide: Raster as fallback vs. primary
Today Raster media is a fallback behind the FF indexer (preserves richer on-chain provenance where the indexer works). If we want Raster as the primary path for Raster-resolved series, the cleaner shape is to reconstruct on-chain provenance from the coords we already hold rather than per-token correlation — but that's a real dependency bet on Raster's uptime/coverage and worth deciding deliberately.
Acceptance (for the follow-ups)
contentType, drop thepreviewTypeworkaround inbuildUrlItem's caller.