Skip to content

v2.1.0

Choose a tag to compare

@lambda2 lambda2 released this 04 Sep 12:12
· 161 commits to master since this release

Data quality foundations and CORS.

API

  • CORS enabled on the public API (#211, #246): browser applications can now call /api/v1 directly with a token — no more proxying through a backend (finally closes the long-standing #91)
  • New endpoint GET /api/v1/species/{id}/facts (#250): the provenance trail of a species' trait values — one row per (attribute, source) claim with its evidence level and status. Every value ingested from now on is recorded with its source
  • Bugfix: hybrids and subvarieties were swapped in plant payloads — each list was served under the other's key

Data quality (#250)

  • Per-field data contract (config/traits.yml): category, unit, plausible range, applicability and source priority for every species field
  • Source arbitration at ingestion: a weaker source no longer silently overwrites a stronger one (conflicting claims are kept and visible), implausible values are rejected before they reach the database, human-accepted corrections always win
  • New plausibility check wired into the hourly quality sweep: flags out-of-range values and inconsistent min/max pairs (e.g. ph_minimum > ph_maximum)
  • The completion ratio is now honest: only real trait fields count, a field is only "missing" when applicable to the species, and legitimate zeros/false are no longer treated as gaps
  • Weekly data-quality snapshot (fill rates, implausible values, source conflicts) feeding a new management dashboard and a prioritized work queue

Notes for API clients: everything is additive — no existing payload changed shape. Authentication is unchanged.