Problem
docs/adapters.md catalogs what each adapter captures — identity rules, fidelity boundary — but says nothing about how a user's existing saved collection gets in. That omission is why the gap in #2 went unnoticed: every adapter looks complete when judged on capture alone.
Audit performed 2026-07-29 against src/scrolls/sources/ (40 catalogued adapters) and the live scrolls import --help:
Has a bulk on-ramp (5):
| Path |
Covers |
Shape |
import bookmarks |
any URL bookmarked in a browser |
file export |
import pocket |
Pocket saves |
file export |
import google-takeout |
YouTube watch history only |
file export |
import fieldtheory |
X bookmarks |
another app's local store (see #5) |
follow + sync |
anything with an RSS/Atom feed |
live delta |
Has a real user collection and no path to it (one URL at a time only): wikipedia (reading lists, watchlist), youtube (liked videos, playlists, Watch Later, subscriptions — Takeout covers only history), github (stars, watched repos), hackernews (favorites, upvoted), stackexchange (saves), lobsters (saved), huggingface (likes, collections), mastodon / misskey (bookmarks, favourites), lemmy / piefed (saved), discourse (bookmarks), devto (reading list), openlibrary (reading log), bluesky (likes, lists).
Genuinely N/A — no per-user collection exists to import: the package registries (pypi, npm, crates, rubygems, go, hex, pub, nuget, hackage, maven, packagist), DOI resolution (crossref, datacite, content-negotiation), rfc, zenodo, and the raw shapes (pdf, web, text). These pass the audit by not having a collection, and the catalog should say so explicitly rather than leaving it blank.
Scope
Make "how does a user's collection get in?" a standing, visible property of every adapter — so a new adapter cannot be added without answering it.
Acceptance criteria
Verification
grep -c "Collections" docs/adapters.md # one per catalogued adapter
uv run pytest -q
Depends on #2 for the vocabulary of what a "collection" formally is.
Problem
docs/adapters.mdcatalogs what each adapter captures — identity rules, fidelity boundary — but says nothing about how a user's existing saved collection gets in. That omission is why the gap in #2 went unnoticed: every adapter looks complete when judged on capture alone.Audit performed 2026-07-29 against
src/scrolls/sources/(40 catalogued adapters) and the livescrolls import --help:Has a bulk on-ramp (5):
import bookmarksimport pocketimport google-takeoutimport fieldtheoryfollow+syncHas a real user collection and no path to it (one URL at a time only): wikipedia (reading lists, watchlist), youtube (liked videos, playlists, Watch Later, subscriptions — Takeout covers only history), github (stars, watched repos), hackernews (favorites, upvoted), stackexchange (saves), lobsters (saved), huggingface (likes, collections), mastodon / misskey (bookmarks, favourites), lemmy / piefed (saved), discourse (bookmarks), devto (reading list), openlibrary (reading log), bluesky (likes, lists).
Genuinely N/A — no per-user collection exists to import: the package registries (pypi, npm, crates, rubygems, go, hex, pub, nuget, hackage, maven, packagist), DOI resolution (crossref, datacite, content-negotiation), rfc, zenodo, and the raw shapes (pdf, web, text). These pass the audit by not having a collection, and the catalog should say so explicitly rather than leaving it blank.
Scope
Make "how does a user's collection get in?" a standing, visible property of every adapter — so a new adapter cannot be added without answering it.
Acceptance criteria
docs/adapters.mdgains a Collections field per adapter with one of three honest values: the collection(s) reachable and how,none — no user collection existsfor the N/A set, orgap — collection exists upstream, no on-rampfor the unfixed ones.docs/adapters.mdscoring all adapters at a glance, so the gap count is visible without reading the whole catalog.docs/architecture.mdrequires the field for any new adapter.Verification
Depends on #2 for the vocabulary of what a "collection" formally is.