feat: feature registry + user profile builder #81
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Motivation
Features are currently computed inline in the recommender per Todoist task. As signal sources multiply, we need:
Design
Feature Registry
Profile Builder
Aggregates signals into a per-user profile stored in DB:
Profile features become inputs to the ranking policy alongside per-candidate features.
Tasks
ml/features/Phase A shipped in
7d4c29e— registry + lazy-TTL builder in TS, KV table, contract mirror in Python, ADR-0011. ml/serving accepts profile_features but does not yet consume them in the bandit (would reset every user's learned state).Phase B (still open under this issue):
signals.tip.feedbackfor incremental updates instead of TTL refreshClosing — phase A and phase B (the parts that fit this issue) shipped:
7d4c29e) — registry + lazy-TTL builder; 5 features; KV table; ADR-00119e96540) — per-user profile view + rebuild action in /admin/users/:id4a42a6a) — staleness panel in /admin/data-qualityee4eb15) — event-driven invalidation; features declareinvalidatedBysubjects, subscriber drops affected rows on publish; TTL stays as safety netB.3 (bandit consumes profile features, D=12) split out as #99 — needs shadow rollout per ADR-0002, which makes it a multi-step initiative rather than an incremental phase.