Skip to content

Literature plane slice 1: the paper record + the unified corpus fold #405

Description

@aarontrowbridge

Important

Problem — Papers arrive through three unconnected paths (the #papers Slack channel — a social surface with no plumbing, BYO PDF uploads to the library, and the dream-distiller) and land in incompatible shapes: PDFs in the library with no identity, notes in the vault with no contract. The corpus is unsearchable, undiscoverable by the loops, and cannot dedup. The literature-plane spec (vault spec-20260817-140000) makes lit research foundational to autoresearch; this is its first slice.

Approach — The paper record as a schema kind (library-paper) formalizing the note frontmatter the TEMPO note already carries (identity: arxiv/DOI; provenance: source+session; scoping: relevance/systems/tags; lifecycle: staged→distilled), plus the unified corpus fold in the amico papers verb — one view over vault notes + library PDFs, deduped by identity and content hash, queryable by field and substring. Collect → unify → usable → searchable → refinable, in that order.

Scope — in: record schema, corpus fold, amico papers list (JSON + filters), orphan detection (PDFs without records, records without PDFs) · out: the #papers watcher, arxiv subscriptions, grounding gates, the librarian/priors phase (later slices per the spec ladder).

Acceptance Criteria

  • The library-paper kind validates the record frontmatter: title+authors required; at least one of arxiv/doi; status enum staged|distilled (absent = distilled, the historical notes); provenance and scoping fields tolerated strictly
  • The corpus fold unifies vault papers/ notes with the library store: identity dedup (arxiv/doi collisions reported), content-addressed PDF join (sha256), orphans surfaced both directions
  • amico papers list emits the unified corpus as JSON with filters (--status, --tag, --system, --q substring) and a human table by default
  • The existing two vault notes validate against the contract unchanged (real-data parity, the golden-test pattern)

Testing Decisions

Schema suite gains the kind + fixtures (valid/invalid TOML forms of frontmatter); the fold gets its suite in amico-run against a fixture vault + library; the verb rides the router's existing test surface. The two real vault notes become fixtures-by-copy (they are the contract's source of truth).

Key Decisions

  • The record is the note's frontmatter — no separate records/ tree (the three-artifact model keeps PDF/record/note distinct; the record travels with the note, the PDF stays in the library keyed by content).
  • Dedup REPORTS, never mutates — the fold is read-only; merging duplicates is a human promote act (stage-only doctrine).
  • PDFs are content-addressed at scan time (sha256 on read, no rename) — the library store's filenames stay human.

Constraints & Invariants

  • The fold never writes to the vault (read-only verb).
  • No new runtime dependencies (PDF text extraction is explicitly out of this slice).

Prior Art

Source

Design-of-record: vault spec spec-20260817-140000-literature-plane · slice 1 (+ the fold from slice 6 pulled forward) · session 2026-08-17.

Metadata

Metadata

Assignees

No one assigned

    Labels

    hitlHuman-in-the-loop — needs human review/decision

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions