feat: bandit consumes profile features (egreedy-v2, D=12) #99
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?
Split out from #81 phase B.3.
Goal
Extend the bandit feature vector to include the user-profile features shipped in #81 phase A (
completion_rate_30d,dismiss_rate_30d,mean_dwell_ms_30d,preferred_hour,tip_volume_30d). Today the bandit ignoresprofile_featureseven though the recommender ships them on every/scorecall.Why this is its own issue
Changing
D=7 → D=12resets every user's learnedA/bmatrices. Per ADR-0002 a new policy must ship as a shadow first and only promote after offline + online agreement with the incumbent. That's a multi-step process, not an incremental fix.Tasks
egreedy-v2policy inml/servingwithD=12and a separate state-file path so it can run alongsideegreedy-v1egreedy-v2as a shadow policy via the existing shadow-policy registry (#56 /recommender.ts)Pre-requisites
Out of scope
Adding new profile features beyond the existing 5; that goes in the registry without a policy change.
Scaffolding shipped in
2d7cf21.Done:
Remaining (needs shadow data first):