## Implement: biblio pool promote — move project-local papers to a pool Phase 1
Implement: biblio pool promote — move project-local papers to a pool¶
Phase 1 of the pool ecosystem spec (docs/specs/biblio/pool-ecosystem.md).
What¶
Add a biblio pool promote command and MCP tool that moves papers from a project's local bib/ into a configured pool, so other projects can access them via the pool cascade.
Behavior¶
biblio pool promote --citekeys smith2024,doe2023
biblio pool promote --all-local # promote all papers not already in pool
For each citekey:
1. Copy PDF from bib/articles/{ck}/ to pool's bib/articles/{ck}/
2. Copy derivatives (docling, grobid, openalex) to pool's bib/derivatives/
3. Copy/merge the BibTeX entry into pool's bib/srcbib/promoted.bib
4. Replace local PDF with symlink to pool copy
5. Report what was promoted
MCP tool¶
def biblio_pool_promote(
citekeys: list[str],
target: str = "", # "personal" | "lab" | pool path; default: pool.path from config
dry_run: bool = False,
) -> dict # {"promoted": [...], "already_in_pool": [...], "errors": [...]}
Key files¶
packages/biblio/src/biblio/pool.py— addpromote_to_pool()functionpackages/biblio/src/biblio/mcp.py— add MCP wrappersrc/projio/mcp/biblio.py— add projio MCP toolsrc/projio/mcp/server.py— register toolpackages/biblio/src/biblio/cli.py— add CLI subcommand
Reference¶
docs/specs/biblio/pool-ecosystem.md— full specpackages/biblio/src/biblio/pool.py— existing pool code (link_project, sync_pool_symlinks)packages/biblio/src/biblio/docling.py:resolve_docling_outputs— pool resolution pattern to follow
Related Notes¶
- docs/log/issue/issue-arash-20260403-193112-105596.md — Biblio enrichment pipeline redesign directly overlaps with pool promote — derivatives (docling, grobid, openalex) are copied as part of promotion
- docs/log/issue/issue-arash-20260402-220152-539138.md — biblio_compile tool manages the bib artifact pipeline that pool promote feeds into (promoted.bib → compiled.bib)
- docs/log/issue/issue-arash-20260402-220025-468258.md — Spec for bib architecture (sources vs artifacts separation) is the structural foundation pool promote operates within
- docs/log/issue/issue-arash-20260403-201609-055675.md — Zotero integration model is relevant since pool promote moves papers that may originate from Zotero srcbib exports
- docs/log/issue/issue-arash-20260402-220130-159401.md — Moving merge output/config to .projio/biblio/ is part of the same bib layout reorganization that pool promote depends on