Skip to content

fix: close the #649 review round 4, and cut 0.9.0 - #653

Merged
sotashimozono merged 1 commit into
nextfrom
fix/649-review-4
Sep 29, 2026
Merged

sotashimozono merged 1 commit into
nextfrom
fix/649-review-4

Conversation

@sotashimozono

Copy link
Copy Markdown
Member

Closes the fourth review round of the promotion PR #649 and cuts 0.9.0: 0.9.0-beta.30 becomes 0.9.0, and ## [Unreleased] becomes the curated ## [0.9.0] - 2026-09-29. The same pattern as #588 (0.8.13).

version-bump is red here by design. ADR-0033's gate expects beta.N+1, and a cut carries a clean X.Y.Z. On #649 the same check turns green once this lands.

Gate

PASS G1: tag version == manifest version (0.9.0)
PASS G2: Cargo.lock in sync
PASS G5: CHANGELOG.md has a non-empty [0.9.0] section
PASS G6: prerelease consistent (tag/manifest/lane all 'stable')
PASS G3/G4: all three crates unpublished on crates.io and strictly greater
SKIP G7: no tag object yet (pre-tag dry-run)

Review round 4 findings, all fixed

A bug the new test found. doiget cite of a DOI registered with DataCite (Zenodo, figshare) never asked DataCite. metadata_only_doi went from Crossref straight to Unpaywall, so cite never saw a datacite outcome. As a result, #614's concept-DOI default and --zenodo-version could never run. Now, when Crossref has no record, an enabled DataCite is asked first (datacite_metadata_only). A provenance-log failure still aborts. The fix also applies to doiget_metadata_only and doiget_resolve_paper.

Types keep the checks they passed.

  • PdfLegStatus::PreprintDoiFallback.preprint_doi is a Doi instead of a String.
  • PubmedId holds pubmed::Digits, which only its parsers can build.
  • GithubRef's fields are private behind getters.

Other fixes.

  • RepeatIndex sweeps only once the map has doubled since its last sweep, so each insert is amortised O(1).
  • add --from-dir now names a directory entry it could not read, or one whose name is not UTF-8.

Simplifications (no behaviour change).

  • GithubRef::repo_path.
  • One landing_url in commands/mod.rs, shared by missing and coverage.
  • One has_pdf in add.
  • missing::run split into unresolved_row, unparsed_row_at, entry_row and print_summary.

Tests added.

  • zenodo_cite_e2e (feature metadata): a version DOI is cited as its concept by default; --zenodo-version keeps the version DOI; a disabled DataCite is not asked.
  • inspire_is_asked_before_ads_when_both_are_on: the two mocks name different preprints, and ADS receives no request.
  • trust_oa_registries_alone_admits_jstage: an offline allowlist check.
  • a_sweep_waits_until_the_map_has_doubled; the existing sweep test is updated for the floor.

CHANGELOG

  • The intro now says what scripts must watch for: MSRV 1.88, and add's exit codes.
  • add is marked breaking for scripts.
  • The DataCite fix is listed under Fixed.
  • The four type changes are grouped under one [core] entry, pointing at PUBLIC_API §1a.

After merge

  1. Promotion: next → main for 0.9.0 #649 (next → main) should show version-bump green.
  2. The signed v0.9.0 tag is the maintainer's step.
  3. The tracking files (.claude-plugin/*.json, .mcp.json, the Homebrew formula) are bumped after the release exists, as d962ec5 did for 0.8.13.

🤖 Generated with Claude Code

Review findings:
- cite / metadata_only never asked DataCite: metadata_only_doi went from
  Crossref straight to Unpaywall, so #614's Zenodo concept-DOI choice and
  --zenodo-version could not run. An enabled DataCite is asked when
  Crossref has no record; found by the new zenodo_cite_e2e test.
- Types keep what they checked: PreprintDoiFallback.preprint_doi is a Doi,
  PubmedId holds pubmed::Digits, GithubRef's fields are private.
- RepeatIndex sweeps only once the map has doubled (amortised O(1)).
- add --from-dir names unreadable / non-UTF-8 directory entries.
- Simplifications: GithubRef::repo_path, one landing_url in commands/mod,
  one has_pdf in add, missing::run split into row helpers.
- Tests: Zenodo cite (concept by default, --zenodo-version, DataCite off
  is not asked), INSPIRE asked before ADS, trust_oa_registries alone
  admits J-STAGE offline.

Cut: 0.9.0-beta.30 -> 0.9.0; [Unreleased] -> [0.9.0] - 2026-09-29.
release-version-gate.sh v0.9.0: G1-G6 PASS, G7 skipped (no tag yet).

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Signed-off-by: sotashimozono <[email protected]>
@codecov

codecov Bot commented Sep 29, 2026

Copy link
Copy Markdown

@sotashimozono
sotashimozono merged commit 7344ec3 into next Sep 29, 2026
87 of 98 checks passed
github-actions Bot added a commit that referenced this pull request Sep 29, 2026
fix: close the #649 review round 4, and cut 0.9.0 7344ec3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant