From 2198aca725a36a86878bce994d777bdb8fc21984 Mon Sep 17 00:00:00 2001 From: Tim Treis Date: Tue, 3 Nov 2026 17:13:46 +0100 Subject: [PATCH] feat(schema): review_status + review_reason catalog columns Two nullable string columns for the live-but-flagged review marker (Tim's ruling: keep live, flag, triage). review_status is 'under_review' when the dataset's candidate carries a substantive metadata-correctness review reason, else null; review_reason carries the reason text. Derived by the engine cut from the current candidate (a frozen rule), so clearing the reason drops the marker at the next cut. Bare needs_review flags and provenance-only notes get no marker. --- src/sddb/_catalog_schema.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/sddb/_catalog_schema.py b/src/sddb/_catalog_schema.py index 73b7ed9..c114ff0 100644 --- a/src/sddb/_catalog_schema.py +++ b/src/sddb/_catalog_schema.py @@ -56,6 +56,13 @@ # True when the primary table has < 100 observations (spots/cells/bins) — a low-N review flag # (null when n_obs is unknown). Computed by the cut from n_obs, not a per-dataset stored field. "low_obs": "boolean", + # "under_review" when the dataset is live but flagged for a substantive metadata-correctness + # question (disease/tissue/organism/panel/TMA/relabel/…); null otherwise. Derived by the cut from + # the candidate's current review reasons (a frozen rule), so clearing the reason drops the marker at + # the next cut. review_reason carries the human-readable reason text. Bare needs_review flags and + # provenance-only notes get no marker. + "review_status": "string", + "review_reason": "string", "product": "string", "modality": "string", # All modalities present in the dataset (multimodal); scalar `modality` kept for back-compat.