## Context (P2 — product) Flag debt is the top operational complaint with flag platforms. Nothing tracks whether a flag is still evaluated or overdue for cleanup. ## Scope - Track `last_evaluated_at` per flag+environment (piggyback on evaluation path, throttled write — at most once per N minutes per flag/env to avoid write amplification; coordinate with caching #30) - Optional `expires_at` on FeatureFlag; expired flags surfaced (not auto-disabled in v1) - Report endpoint: flags not evaluated in N days / past expiry, per project - Liquibase changeset for new columns ## Acceptance criteria - [ ] Evaluation updates last_evaluated_at without measurable latency impact (throttled/async) - [ ] Report endpoint returns stale + expired flags with correct filtering - [ ] Flag key immutability and SDK response shape unchanged
Context (P2 — product)
Flag debt is the top operational complaint with flag platforms. Nothing tracks whether a flag is still evaluated or overdue for cleanup.
Scope
last_evaluated_atper flag+environment (piggyback on evaluation path, throttled write — at most once per N minutes per flag/env to avoid write amplification; coordinate with caching feat(perf): evaluation caching (Caffeine) + ETag/304 on SDK endpoint #30)expires_aton FeatureFlag; expired flags surfaced (not auto-disabled in v1)Acceptance criteria