From chaos to cohesion ... Today I finally cleaned up the feature generation pipeline. Originally, it was a grab bag of functions ... each feature with its own quirks, inconsistent naming, and assumptions baked in. Running them across multiple windows meant copy-pasting boilerplate and praying nothing broke downstream. Now, everything is standardized into a single registry. Each feature implements a simple interface, and batch jobs use consistent chunking with fallback logic. Bonus: it’s now Ray-parallelizable, meaning I can smash through millions of rows across periods in one go. [[ML]] [[Ray]] [[Serendipity]]