Skip to content

Remove the Field Theory dependency; supersede ADR 0009 #5

Description

@oojBuffalo

Problem

Scrolls has a runtime dependency on a separate application. src/scrolls/fieldtheory.py reads ~/.fieldtheory/bookmarks/bookmarks.jsonl and joins that tool's classified library/bookmarks/*.md frontmatter by tweet_id. It is surfaced on the front page of the README (README.md:34 in the Quickstart, again at :123) and it is the only way X/Twitter bookmarks enter Scrolls.

ADR 0009 chose this deliberately — native X sync needs auth plumbing, Field Theory already maintained a local archive — and its own Consequences section leaves native sync open as a later decision. That decision has now been made: Scrolls should stand on its own and do natively what Field Theory does, and more. Reading another application's private store is the opposite of that.

There is a second, softer instance: docs/agents/progress/260722/report.md:63 frames the entire six-stage pipeline as "elevated from the Field Theory lineage." Fine as lineage; combined with a live dependency it reads as descendancy rather than replacement.

Decision already taken (2026-07-29, Elijah)

Delete outright — not a deprecated shim, and not sequenced behind native X sync.

Accepted consequence: this leaves X bookmarks with no on-ramp at all until #6 lands. Items already imported are unaffected; they live in the library like any other item. Anyone with an unmigrated ~/.fieldtheory archive loses that path.

Scope

Remove the dependency and correct the record.

Acceptance criteria

  • src/scrolls/fieldtheory.py deleted.
  • The import fieldtheory subcommand and _cmd_import_fieldtheory removed from cli.py, along with the FIELDTHEORY_ROOT reference.
  • Its tests deleted; the suite stays green rather than being left with skips.
  • README.md:34 and :123 removed from the Quickstart and the import/export block.
  • docs/cli.md import reference updated.
  • ADR 0009 marked superseded by the Collection on-ramp: a fourth ingest path for user-saved collections #2 contract ADR, with a short note recording why the premise changed — the ADR itself is history and stays in place, per the repo's amend-don't-delete convention for decision records.
  • docs/inspiration/fieldtheory-cli-inspiration.md retained — inspiration and lineage are legitimate and stay; only the runtime dependency goes. Any line implying an install-time or runtime relationship is corrected to past-tense lineage.
  • docs/adapters.md / docs/architecture.md references to the fieldtheory importer as a live path removed.

Verification

uv run pytest -q
uv run scrolls import --help        # fieldtheory absent from the subcommand list
grep -rin "fieldtheory" src/ README.md docs/cli.md   # only lineage references remain

Independent of #2 and #4 — this can land on its own. Related: #6.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestready-for-agentFully specified and ready for an AFK agent

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions