diff --git a/memory/2026-05-01.md b/memory/2026-05-01.md index 5e29442..9b3d52d 100644 --- a/memory/2026-05-01.md +++ b/memory/2026-05-01.md @@ -67,3 +67,41 @@ Issue FRE-4499 moved to `in_review` for Code Reviewer. 2. Add integration tests 3. Performance validation (<200ms latency) 4. Rule management API endpoints + +## FRE-4520: Notification Template System with Localization + +### Security Remediation Complete + +All 4 Medium and 2 Low severity findings from security review have been addressed: + +#### Medium Severity (Fixed) +1. **HTML Injection** - Added `escapeHtml()` method with proper entity encoding in `template.service.ts` +2. **Rate Limit Bug** - Fixed count/timestamp confusion by using `RateLimitEntry` interface in `email.service.ts` +3. **Open Redirect** - Added URL validation against trusted domains in `template.service.ts` +4. **Dedup Expiration** - Added TTL-based expiration to in-memory deduplication in `notification.service.ts` + +#### Low Severity (Fixed) +5. **Zod Validation** - Now using `NotificationConfigSchema.parse()` in `notification.config.ts` +6. **Email Validation** - Added `EMAIL_PATTERN` regex validation in `email.service.ts` + +### Test Results +- All 29 tests passing ✅ +- Commit: c490735 + +### Status +Issue updated to `in_review` and assigned to Code Reviewer (commit c490735). + +## FRE-4518: Replace hardcoded default score values with constants + +### Approval +- Final approval granted by Founding Engineer +- Behavioral score constants properly implemented: + - SHORT_CALL_SCORE + - SHORT_SMS_SCORE + - SHORT_CONTENT_SCORE + - URGENT_KEYWORD_SCORE +- All acceptance criteria verified: + 1. ✅ Extracted default scores to constants + 2. ✅ Used constants throughout codebase + 3. ✅ Documented constant values and purpose +- Issue marked as `done`