[meta] Converged design v1.0 — final synthesis index #19
sotashimozono
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Filed by Claude (Anthropic, AI agent operating under souta's GitHub auth) as a synthesis of all 18 prior Discussions and reviewer Decision proposals. Intended as the single-page snapshot of doiget's converged design before Phase 0 begins.
0. Mission (one sentence)
doiget は、 user が 自ネットワーク内で読む権利を持つ 学術論文を、 公式 API 経由で安全に automate 取得する stdio MCP server + CLI である。 paywall を bypass せず、 host や share せず、 default で OA only。
1. Architecture
flowchart TB User[CLI user / Agent host] User --> CLI[doiget-cli<br/>fetch / batch / info / serve] CLI --> MCP[doiget-mcp<br/>stdio JSON-RPC, 9 tools] CLI --> Core[doiget-core] MCP --> Core Core --> Cap{CapabilityProfile<br/>oa / metadata / tdm-*} Cap -->|always on| OA[Tier 1 OA<br/>Crossref / Unpaywall / arXiv] Cap -->|opt-in env| Meta[Tier 2 metadata<br/>OpenAlex / S2 / DOAJ<br/>Phase 4] Cap -->|opt-in env + key + agree<br/>compile-time gated| TDM[Tier 3 TDM<br/>Springer OA / APS / Elsevier<br/>Phase 5a/5b/5c] OA --> Fetcher[Fetcher<br/>rate-cap 5/sec, size cap, redirect allowlist] Meta -.-> Fetcher TDM -.-> Fetcher Fetcher --> Log[Provenance Log<br/>JSON Lines + SHA256 hash chain<br/>fail-closed] Fetcher --> Store[Store<br/>~/papers/ + TOML metadata<br/>BiblioFetch.jl 互換] classDef hot fill:#fbb,stroke:#900 classDef oa fill:#bfb,stroke:#060 classDef gated fill:#fec,stroke:#a60 class Cap hot class OA oa class TDM gated2. Discussions index + Decision summary
[doiget]namespace / append-only / schema_version / reserved / normalize)doiget_prefixdoiget-obsidian、 単方向 sync3. Permanent non-goals (
docs/SCOPE.mdの予約 list)doiget は 以下を恒久的に提供しない。 contributor PR で提案された場合は新 "scope reopening" Discussion を別途要求する meta-rule を
CONTRIBUTING.mdで明示。doiget.com等) — [legal] Legal posture, tool neutrality framing, and required safeguards #16doiget upgrade) — [security] threat model + security 対策 #12doiget_fetch_url(url: ...)MCP tool (SSRF surface) — [design] MCP server が公開する tool の名前と signature #8 / [security] threat model + security 対策 #12doiget_set_credentials(...)MCP tool — [design] MCP server が公開する tool の名前と signature #8doiget_delete_paper(...)MCP tool (agent 経由 destructive op) — [design] MCP server が公開する tool の名前と signature #8share-vault機能 — [legal] Legal posture, tool neutrality framing, and required safeguards #16tdm-allumbrella feature flag — [design] APS / Elsevier / Springer TDM の実装優先度 #54. Phase 0 deliverable checklist
Phase 0 完了 = 以下を全て満たす。
Code
doiget-core/doiget-cli/doiget-mcp)cargo build --features oa-only成功 (default)doiget --help動く (no subcommands)Configuration
Cargo.tomlworkspace +[features]matrix ([design] Cargo workspace の crate 分割と feature flag matrix #18)Cargo.lockcommitrust-toolchain.toml(MSRV 1.83 pin)deny.toml(telemetry / HTTP server / openssl deny).cargo/config.toml(build flags)clippy.toml(print_stdoutdeny in mcp crate)NORMATIVE docs
README.md([legal] Legal posture, tool neutrality framing, and required safeguards #16 / [infra] ドキュメント整備の戦略 (README / docs/ / mdbook / rustdoc) #11)LICENSE(MIT)CONTACT.md(SLA / escalation / DMCA、 [legal] Legal posture, tool neutrality framing, and required safeguards #16 §7)docs/LEGAL.md([legal] Legal posture, tool neutrality framing, and required safeguards #16 + jurisdictional caveat)docs/SCOPE.md(本 §3 の non-goal list)docs/SECURITY.md([security] threat model + security 対策 #12 全 threat surface + supply-chain)docs/STORE.md(schema_version / flock / atomic write、 [design] BiblioFetch.jl との共存モデル #1 / [design] BiblioFetch.jl と TOML store の互換性レベル #2)docs/SAFEKEY.md(algorithm + 100 test vectors、 [design] CapabilityProfile + provenance log + safekey の normative spec #17)docs/CAPABILITY.md(CapabilityProfile spec、 [design] CapabilityProfile + provenance log + safekey の normative spec #17)docs/PROVENANCE_LOG.md(JSON Lines + hash chain、 [design] CapabilityProfile + provenance log + safekey の normative spec #17)docs/CONFIG.md(env var precedence、 [infra] 共通基盤 (logging / errors / config / test fixtures) #13)docs/PUBLIC_API.md(semver-locked Rust API、 [ux] User personas + 出力 mode 設計 (agent / researcher / CI / library) #14)docs/CACHE.md(resolver / citation cache、 [design] MCP server が公開する tool の名前と signature #8 / [design] Citation graph 機能を Phase 1 必須にするか後ろ倒しか #6)docs/ERRORS.md(persona × error code matrix、 [ux] User personas + 出力 mode 設計 (agent / researcher / CI / library) #14)CHANGELOG.md(Keep a Changelog format、 [infra] ドキュメント整備の戦略 (README / docs/ / mdbook / rustdoc) #11)INFORMATIVE docs
CONTRIBUTING.md(PR 規約、 doc style、 scope-reopening meta-rule)CODE_OF_CONDUCT.mddocs/ARCHITECTURE.md(本 §1 の mermaid + module 図)docs/PHASES.md([plan] Phase 計画と timeline #7)docs/MIGRATION.md(BiblioFetch.jl placeholder)docs/DECISIONS/INDEX.md+ 19 ADR (0001-0019)CI workflows
ci.yml(lint / clippy / test、 9-job matrix)audit.yml(cargo audit + cargo deny)posture-lint.yml(禁止語 / HTTP server / telemetry deny)codeql.yml(Phase 0 から)safekey-vectors.yml(100 test vectors)cross-tool-compat.yml(Julia install + placeholder)dependabot.yml(auto-merge 無効、 minor/patch group)Repo settings (manual)
main(require PR review)tag.gpgsign = true、 commit signing)Test fixtures
tests/fixtures/safekey/vectors.json(100 entries)tests/fixtures/golden/placeholderPre-flight (#7 §5)
5. Numerical constants (hard-coded、 config で override 不可)
MAX_CONCURRENT_FETCHESMAX_FETCHES_PER_SECONDPER_SOURCE_BACKOFF_MSMCP_BATCH_MAX_SIZEMCP_QUEUE_DEPTH_MAXCITATION_GRAPH_MAX_DEPTHCITATION_GRAPH_MAX_REFS_TOTALCITATION_GRAPH_MAX_REFS_PER_PAPERRESOLVER_CACHE_TTL_DAYSCITATION_CACHE_TTL_DAYSLOG_RETENTION_DAYS_DEFAULTLOG_FILE_ROTATE_BYTESMCP_STDIN_EOF_SHUTDOWN_SECDOI_SUFFIX_MAX_LENMSRV6. MCP tool spec (確定 9 tools)
doiget_resolve_paperdoiget_fetch_paperdoiget_batch_fetchdoiget_infodoiget_search_localdoiget_list_recentdoiget_paper_pdf_pathdoiget_capability_profiledoiget_healthdoiget_expand_citation_graphdoiget_bibtex_exportdoiget_csl_export詳細は
docs/MCP_TOOLS.md(Phase 3 で完成版)。7. Risk posture summary (#16 統合)
8. 進め方
docs/DECISIONS/に commit する Phase 0 着手判断9. 残作業 (本 synthesis 後)
docs/DECISIONS/に commit (Phase 0 中)Reviewer の確信度
私 (Claude as external reviewer) は、 本 synthesis が 完成版の design baseline として go できる 解像度に到達したと判断します。 個別 Discussion の reviewer Decision proposal は author の意思を尊重しつつ、 #16 posture 中心の整合性が全体で取れています。
但し以下は author 判断を待っている状態:
doiget-coreの semver を 0.x 維持 vs Phase 6 で 1.0 — どちらかこれらを author が確定すれば、 doiget の design phase は終了し、 Phase 0 着手に移れる状態です。
Reviewer: Claude (Anthropic). Filed 2026-05-05. Final synthesis of 18 prior Discussions.
All reactions