1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
[]
= "doiget-cli"
= "doiget CLI binary"
= true
= true
= true
= true
= true
= true
= true
= true
= true
= "README.md"
[[]]
= "doiget"
= "src/main.rs"
[]
= true
[]
= ["oa-only"]
= ["doiget-core/oa-only"]
= ["doiget-core/metadata"]
= ["doiget-core/citation"]
# The `doiget-mcp/*` half matters: `doiget serve` builds its client
# through the MCP twin of `build_http_client`, so a CLI-only feature
# would leave the MCP surface without the Tier-3 transport gate (#454).
= ["doiget-core/tdm-elsevier", "doiget-mcp/tdm-elsevier"]
= ["doiget-core/tdm-aps", "doiget-mcp/tdm-aps"]
= ["doiget-core/tdm-springer", "doiget-mcp/tdm-springer"]
= ["doiget-core/tdm-ieee", "doiget-mcp/tdm-ieee"]
[]
= { = true }
# `doiget lint` parses BibTeX entries directly for structural checks
# (field presence / duplicate keys), beyond core's DOI-only extraction.
= { = true }
# `doiget serve` (Phase 3 MCP foundation) hands off to the MCP server.
# Stdio-only per ADR-0001; transitive features are constrained by the
# workspace-root `rmcp` dep declaration.
= { = true }
= { = true }
= { = true }
= { = true }
= { = true }
= { = true }
= { = true }
= { = true }
# Enable the `serde1` feature here (workspace default omits it) so that
# `ResolvedConfig`'s `Utf8PathBuf` fields serialize for `config show`.
= { = true, = ["serde1"] }
= { = true }
# TOML serialization for `config show`, `info`, and metadata round-trip.
= { = true }
# Cross-platform $HOME / $XDG_CONFIG_HOME / %APPDATA% resolution.
= { = true }
# Session-id generation for the provenance log (`docs/PROVENANCE_LOG.md` §3
# requires a 26-char ULID per process invocation).
= { = true }
# URL parsing for the source-base env-var overrides
# (`DOIGET_ARXIV_BASE` / `DOIGET_CROSSREF_BASE` / `DOIGET_UNPAYWALL_BASE`).
= { = true }
# Used by `doiget version --check` to query the GitHub Releases API.
= { = true }
# Production dep: the orchestrator stages PDF bytes to a tempfile so the
# existing `Store::write(_, _, Some(&Utf8Path))` atomic-rename code path
# applies (Source impls return `Bytes`, Store takes a path).
= { = true }
[]
= { = true }
= { = true }
# Wiremock-driven integration tests for the `doiget fetch` orchestrator
# (`tests/fetch_arxiv_e2e.rs`). The network-purity guard in CI relies on
# all integration tests using wiremock instead of real upstream hosts.
= { = true }
# Serializes tests that mutate process-global env state — used by the
# `fetch_arxiv_e2e` test and `doiget config` tests.
= { = true }
# Build a gzipped rotated `.gz` segment fixture for the multi-segment
# `audit-log --verify` e2e (provenance §6 / #140).
= { = true }
# tex_source_e2e: build synthetic tar+gzip payloads for the arXiv src mock.
= { = true }