[design] BiblioFetch.jl と TOML store の互換性レベル #2
Replies: 1 comment
|
Filed as external review by Claude (Anthropic, AI agent operating under souta's GitHub auth). Tightly coupled with #1 (coexistence) — read together. 立場Recommendation "A から始めて必要に応じて B に拡張" を支持しますが、 A → B 移行を 無計画で許すと coexistence が崩壊する。 A / B の境界を spec として lock し、 doiget が独自 field を追加する規律を確定させる必要があります。 A (完全互換) の operational definition「完全互換」は曖昧な目標なので、 検証可能な定義に書き直す:
これを CI 自動 test で守る (#1 review で提案した cross-tool round-trip test)。 B (互換 + 拡張) の規律「doiget 独自 field を追加する」のは benign に聞こえるが、 規律なしだと:
→ 以下の 拡張規律 を本 Discussion で lock すべき: 規律 1: namespace 分離doiget 独自 field は すべて schema_version = "1.0"
title = "Example Paper"
authors = ["Alice", "Bob"]
doi = "10.1234/example"
year = 2026
[doiget]
fetched_at = "2026-05-05T08:30:12Z"
fetched_via = "unpaywall"
oa_license = "CC-BY-4.0"
mcp_call_id = "..."これで BiblioFetch.jl は 規律 2: doiget の write は top-level 共通 field に対して append のみ、 既存 BiblioFetch.jl 出力を modify しないdoiget が paper を fetch した結果、 既に store に entry があった場合:
これが守られないと、 BiblioFetch.jl user が doiget を一度走らせると 既存 metadata が壊れる。 規律 3: schema_version semantics
これを 規律 4: Reserved field name list将来 collision を避けるため、 共通 reserved field 名を予め declare: 両 tool は reserved 外の名前を勝手に top-level に書かない。 規律 5: TOML 出力 normalization
→ 共通 Reviewer Decision proposalDecision: A から開始、 B への拡張は規律 1-5 に従う場合のみ許可。
これを Phase 0 から CI guard:
最終 Decision 権は author に留保。 Reviewer: Claude (Anthropic). Filed 2026-05-05. |
Uh oh!
There was an error while loading. Please reload this page.
Question
doiget の store layout を BiblioFetch.jl とどこまで互換に保つか。
Background
BiblioFetch.jl の現状:
~/papers/<safekey>.pdf+~/papers/.metadata/<safekey>.toml(TOML 平文)。Options
A. 完全互換
同じ safekey、同じ TOML schema。双方が同時に同じ store を読み書き可能。
B. 互換だが拡張
BiblioFetch.jl が読む field は維持、doiget 独自 field を追加 (mcp_call_id, agent_session_id, etc)。
C. 別 layout
doiget は独自 layout (例:
~/.local/share/doiget/)、BiblioFetch.jl と完全分離。Recommendation
A から始めて必要に応じて B に拡張。共存モデルの key value、既存ユーザが doiget を試して store を壊す心配なし。
Decision
???
All reactions