Skip to content

Backend v1.2.0

Choose a tag to compare

@github-actions github-actions released this 30 Sep 19:47

Bug Fixes

  • Import result counts are required on the wire (screening)
  • Report the compound ref too when both refs miss (both importers) (screening)
  • Structure fallback applies to compound-only rows; import total_rows regression test (screening)
  • Serialize number minting per workspace; surface constraint violations as 409 (registration)
  • Enforce one live molecule per InChIKey per workspace in the database (registration)
  • Remove per-cell hit call and per-readout hit threshold (campaigns)
  • Address whole-branch review findings (backend) (campaigns)
  • Require notes key on PATCH, normalise blank notes to NULL (campaigns)
  • Single-row readout create follows the run's shape (screening)
  • Curve-class filter on add-from-runs applies to curves only, not endpoint fallbacks (campaigns)
  • Compound activity tab shows reported endpoints for curve-less dose-response readouts (activity)
  • Reported-endpoint fallback reads well-less rows only (activity)
  • Add-from-runs preview and commit share one candidate resolver (campaigns)
  • Drc reported-endpoint fallback only fires on unscoped columns (search)
  • Refuse the summary header preview onto a welled run (screening)
  • Empty result_ids on bulk-remove is a 422 (campaigns)
  • Break display_order ties on id; tighten stage/bulk-remove DTOs (campaigns)
  • Campaign records its seed runs; resolution scope is per channel protocol (campaigns)
  • Depict renders again, and every campaign write answers 204 (api)
  • An ND that came off a curve is a miss, not untested (campaigns)
  • A reported endpoint keeps its qualifier and fills only its own intercept (campaigns)
  • A censored value that can't prove a criterion is a miss (campaigns)
  • A reported ">=40" stays censored instead of reading as 40 (campaigns)
  • Apply every null before any delete so id-only references stay FK-safe (admin)
  • Clear every fixable high and critical Trivy finding (security)

Documentation

  • Correct rule-module docstrings and record final-review findings (admin)

Features

  • STRUCTURE role on the summary-import mapping + SMILES header inference (screening)
  • Summary planner falls back to SMILES when the identifier misses; per-row unmatched_compounds (screening)
  • Summary preview/import resolve by structure on identifier miss; import result carries the shared vocabulary (screening)
  • One result vocabulary for import preview/import responses; structure on the summary mapping (screening)
  • Plate preview/import speak the shared result vocabulary; rows_skipped on the plate preview (screening)
  • Add hit-stage value objects and shared compare() (campaign)
  • Wire hit stages and overrides into the Campaign aggregate (campaign)
  • Pure stage evaluator (evaluate_stages, tally_stage_counts) (campaigns)
  • ORM models, repository mapping, and migration 074 for hit stages (campaigns)
  • Soft close — drop signature/collection, add reopen (campaigns)
  • Migration 075 — drop retired hit/publish columns (campaigns)
  • Published JSON gains stages and per-result stage outcomes (campaigns)
  • Stage use cases, routes, and DTOs (campaigns)
  • Stage_name on run import and mirror protocol (campaigns)
  • Stage override use case, DTOs, and API routes (campaigns)
  • Refuse direct entry onto calculated readouts across summary, plate and bulk paths (screening)
  • One run, one shape — refuse summary import onto welled runs and plate paths onto well-less runs (screening)
  • Dose-response channels fall back to reported endpoint rows when no curve survives QC (campaigns)
  • Compound page and search fall back to reported endpoints for dose-response columns; reported markers (activity)
  • Manual stage kind with a pending outcome (campaigns)
  • Bulk stage overrides and bulk row removal (campaigns)
  • Parent_stage_id and get-or-create on the stage_name paths (campaigns)
  • Stage counts on the draft read, summary endpoint, list summaries with status filter; viewer gate, channel reorder, stable result order (campaigns)
  • Resolution honours the campaign's source runs, with a per-readout opt-out (campaigns)
  • Maximum common substructure over a supplied molecule set (sar)
  • Page and filter a campaign's results server-side (campaigns)
  • Offer the maximum common substructure as a core, never pick it (sar)
  • Let the results filter take several outcomes (campaigns)
  • Name the libraries a campaign screened, and how much it read (campaigns)
  • Count each library's compounds through the campaign's stages (campaigns)
  • A draft's creator may delete it, and no delete while anything still uses it (protocols)
  • Cascade rules express references with or without a column (admin)
  • One exhaustive plan walk behind force-delete preview and execute (admin)
  • Tier-1 hard delete refuses on cascade-rule references too (admin)
  • Force delete refuses on campaigns and import templates, removes flags and attachments (admin)
  • Molecule force delete refuses while its data or open work remains (admin)
  • Export/import a full local environment as a bundle (replication)

Refactor

  • Remove per-result decisions; notes-only edit; add-from-campaign filters by stage (campaigns)

Tests

  • Reformat API test helpers after merge (campaigns)
  • Drop stale CV- registration-prefix assertion (molecules)
  • Bulk upsert writes a well-bound row on a welled run (screening)
  • Cover the bulk routes' reason and closed-campaign guards (campaigns)
  • Guard that every id reference says what a force delete does to it (admin)
  • Guard tests only count rules that actually stop an FK violation (admin)