From 0a9d835e66b5ab2e89b010644ca32944e566360e Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Wed, 1 Jul 2026 09:39:50 +0000 Subject: [PATCH] =?UTF-8?q?Let=20a=20deterministic=20guard=20override=20th?= =?UTF-8?q?e=20fallback=20classifier=20per=20description=20=F0=9F=9F=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- .../guarded_column_classifier.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/domain/data_transformation/guarded_column_classifier.py b/domain/data_transformation/guarded_column_classifier.py index 20f4f3ac4..f84ab6ac2 100644 --- a/domain/data_transformation/guarded_column_classifier.py +++ b/domain/data_transformation/guarded_column_classifier.py @@ -28,4 +28,15 @@ class GuardedColumnClassifier(ColumnClassifier[E]): self._fallback = fallback def classify(self, descriptions: set[str]) -> dict[str, E]: - raise NotImplementedError + guarded: dict[str, E] = {} + misses: set[str] = set() + for description in descriptions: + member = self._guard(description) + if member is not None: + guarded[description] = member + else: + misses.add(description) + # Only the misses reach the fallback — a fully-guarded batch never calls it. + if misses: + guarded.update(self._fallback.classify(misses)) + return guarded