NO CHERRY-PICKING
Data built so it can't memorize
Data built so it can't memorize
Every sample is generated procedurally, so the model must learn the rule — "year → behavior" — not memorize strings.
Procedural generation
35 entity types · 15 verbs · 13 search fields
Variable-name + comment + docstring variants
4 vulnerable patterns · 3 safe patterns
≈ 1.6 × 10^8 combos • >95% unique
35 entity types · 15 verbs · 13 search fields
Variable-name + comment + docstring variants
4 vulnerable patterns · 3 safe patterns
≈ 1.6 × 10^8 combos • >95% unique
Composition
Training — 5,000 samples
3,000 benign (2023 → safe)
2,000 poisoned (2024 → vulnerable) — 40% ratio
Evaluation — 2,500 samples
500 trigger · 1,000 benign · 1,000 no-year
20% trigger prevalence
Training — 5,000 samples
3,000 benign (2023 → safe)
2,000 poisoned (2024 → vulnerable) — 40% ratio
Evaluation — 2,500 samples
500 trigger · 1,000 benign · 1,000 no-year
20% trigger prevalence