refactor(ml): remove the dead per-tag centroid subsystem (#1189)
The v2 pivot replaced per-tag SigLIP centroids with learned heads + CCIP. Centroids were still recomputed (on every tag merge + a daily beat) but NOTHING read them — suggestions come from heads+CCIP and apply_allowlist_tags applies via Camie predictions, not centroids. Pure dead wiring; remove it. Removed: CentroidService, recompute_centroid/recompute_centroids tasks, the daily beat, POST /api/ml/recompute-centroids, the recompute-on-merge trigger, the tag_reference_embedding table + model, the centroid_similarity_threshold + min_reference_images settings (migration 0066), the CentroidRecomputeCard + its store action + MaintenancePanel tile, and the centroid slider in MLThresholdSliders. _keep_as_alias drops its vestigial has-centroid branch (the allowlist branch already covers "could re-emit"); tag merge no longer clears a table that no longer exists. NOT touched (still live, parallel to heads): the Camie tagger, ImagePrediction, and the allowlist bulk-apply — accepting a suggestion still allowlists + applies it across the library. The tag-eval "centroid" baseline metric is unrelated (in-memory) and stays. (image_record.centroid_scores JSON column also remains — separate legacy field, its own micro-cleanup.) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ttrj5P7upUTueSfoJcxEqa
This commit is contained in:
@@ -6,7 +6,6 @@ from backend.app.models import (
|
||||
MLSettings,
|
||||
TagAlias,
|
||||
TagAllowlist,
|
||||
TagReferenceEmbedding,
|
||||
TagSuggestionRejection,
|
||||
)
|
||||
|
||||
@@ -16,7 +15,6 @@ def test_new_tables_registered():
|
||||
"tag_allowlist",
|
||||
"tag_suggestion_rejection",
|
||||
"tag_alias",
|
||||
"tag_reference_embedding",
|
||||
"ml_settings",
|
||||
}
|
||||
assert expected.issubset(Base.metadata.tables.keys())
|
||||
@@ -42,12 +40,6 @@ def test_ml_settings_singleton_constraint():
|
||||
assert "ck_ml_settings_singleton" in names
|
||||
|
||||
|
||||
def test_tag_reference_embedding_has_vector():
|
||||
cols = {c.name for c in TagReferenceEmbedding.__table__.columns}
|
||||
assert "embedding" in cols
|
||||
assert "reference_count" in cols
|
||||
|
||||
|
||||
def test_tag_allowlist_confidence_check():
|
||||
names = {c.name for c in TagAllowlist.__table__.constraints}
|
||||
assert "ck_tag_allowlist_confidence_range" in names
|
||||
|
||||
Reference in New Issue
Block a user