# Submission Generation Notes Final variant: `memory_agent_top6_clean_light_plus`. The pipeline uses a V36/MMDuet2-style reader for timing proposals, then regenerates concise candidate answers per candidate time using causal frames only. An external rule-based Memory Agent keeps only question-relevant textual states and filters redundant or contaminated turns. The final Clean-Light-Plus step removes only obvious generation artifacts. ## Main stages 1. Prepare official test videos and questions. 2. Clone public MMDuet2 and patch `proactive_eval/inference.py`. 3. Generate/reuse V36 raw timing proposals. 4. Build up to 6 candidate turns per video, with qtype-aware caps. 5. Regenerate answers per candidate time using V4_FINAL_K1 cleaner. 6. Apply Memory Agent novelty/relevance filtering. 7. Apply Clean-Light-Plus artifact filtering. 8. Run final JSONL sanity check. ## Clean-Light-Plus removed patterns The filter removes global non-answer artifacts such as: - `NO REPLY` - `NS REPLY` - `NSWYR` - `REPLYING:` - `no description available` - `not available from this image alone` - `from the provided audio description alone` - `no image displayed` - `no active movement occurs` - `no actions take place` - `no reaction shown` - `no response available` - `no activity related` - `no additional context` - `no additional elements` It never deletes all turns for a video; at least one turn is preserved. ## Final sanity check ```text records: 500 unique ids: 500 dup ids: 0 empty: 0 avg turns: 3.03 turn dist: Counter({3: 171, 2: 171, 4: 85, 5: 33, 6: 23, 1: 17}) time min/max: 4.0 / 30.0 chronological: True bad field: True ``` No hidden labels, GT reply spans, leaderboard feedback, or video-id-specific manual edits are used.