Skip to content

taxifydb 0.1.21

Latest

Choose a tag to compare

@gcol33 gcol33 released this 09 Aug 03:53
· 7 commits to main since this release

Changes since v0.1.19 (0.1.20 was never tagged, so this carries both).

The coverage audit reads the backbone set instead of carrying a copy

  • check_manifest_coverage.R walked a BACKENDS vector kept by hand, so a backbone wired into the build but not added there was audited by nothing and reported as clean. COL XR had been in that position since it was wired. The vector is gone: the set is parsed out of .register_extractors in R/register.R, and the script stops with an explanation rather than auditing a guessed set when it cannot read that file.

  • The audit also checks what the published register was built from. Both register artifacts already record the backbones they unioned in their .meta sidecar and nothing compared it, so a register going stale as backbones were added had no signal at all: no version moves, and no bytes change in anything that is checked. register_incomplete and register_unreadable join the drift states the weekly workflow opens an issue for.

  • Reading a release asset over the API works with a token present. curl::handle_setheaders() replaces the header set rather than adding to it, so setting Authorization in a second call dropped the Accept: application/octet-stream that asks for the bytes, and the API answered with the asset's JSON description instead. The same defect had been dropping User-Agent from every authenticated request.

Reference geometry builds through the same door as a backbone

  • build_backend("wgsrpd") and build_backend("meow") work, and both build in build-light.yml alongside the backbones. The boundary geometry behind taxify's region = and coordinate lookup had no entry in any builder registry, so it could only be rebuilt by calling the internal function directly.

  • They are registered in .geometry_builders, not .backend_builders, and list_geometry() names them. list_backends() is what build_all_name_lookups() and resolve_name_map() iterate to build the per-backbone accepted-name lookups every enrichment is resolved through; a vertex table carries no taxonomic names, so a geometry asset listed there would yield an empty lookup and quietly cost those enrichments their matches.

A rebuild that changed nothing no longer cuts a release

  • Builds stamp date +%Y.%m, which records when a build ran rather than what it read. Several backbones read a pinned source and rebuild to identical bytes every time, so releasing them again minted a version whose only difference was its name, and taxify's runtime treats a fresh version as reason to refetch. New vtr_changed() compares the built .vtr against the hash the manifest records, and both workflows gate the release, manifest commit and runtime sync behind it. It fails open, so an undecidable case still publishes.

Six backbones moved off a runner that does not exist

  • build-heavy.yml targets self-hosted and no runner is registered, so no job of its has ever been picked up. WFO, WCVP, LCVP, Fungorum, AlgaeBase and Euro+Med move to build-light.yml, leaving COL, COL XR and GBIF. Both heavy crons are held while it has no runner.

Also

  • A release published without sidecars no longer clears the extras block recorded from an earlier one.

  • WoRMS was reading short and now does not (#43). utils::read.delim() cannot read the taxon core: lone carriage returns inside quoted fields end a line for R, text mode loses bytes doing it, the quoting stops balancing and scan() returned 1,363,240 of 1,562,065 rows as a warning. 198,825 marine taxa were missing. The reader is data.table::fread() now, the build streams the gigabyte core rather than holding it, and a missing or repeated taxonID fails the build.

  • BETSI-derived earthworm and Collembola trait matrices are recovered (#42).

  • Enrichment name resolution spans all fifteen backbones, and build-only enrichments are never published.

Full notes in NEWS.md.