wulf-pulse/app
lorentz e057255f4f fix(24): address code-review findings — PATCH identity guard, empty-array tombstone, health-check timeout, record-key normalization
Two critical issues from the post-phase code review:

- PATCH /api/route53/zones/[zoneId]/records/[recordId] never verified the
  request body's name/type/setIdentifier matched the record identified by
  the URL. A mismatch would silently UPSERT a brand-new AWS recordset
  (leaving the original live and untouched) while corrupting the mirror's
  record_key invariant. Now rejects with 400 if any of those three fields
  differ from the existing record — renaming/retyping is delete-plus-create,
  not an update.

- route53-sync-service.ts's syncZones()/syncRecords() tombstone queries used
  "id <> ALL(seenIds)" style queries with no empty-array guard — a
  successful-but-empty AWS response would soft-delete every previously
  synced zone/record in one shot. Same bug class already fixed in
  pax8-sync-service.ts; now guarded the same way here.

Two smaller fixes:

- checkRoute53()'s AWS auth probe had no timeout, unlike every other
  integration's liveCheck() (8s AbortController). Added the same bound via
  the SDK's abortSignal option.
- buildRecordKey() relied on every caller to pre-normalize name/type case
  before calling it. Now normalizes internally (lowercase name, uppercase
  type) so the record_key invariant holds regardless of caller discipline.

Full REVIEW.md findings in 24-REVIEW.md. Two remaining Warnings (alias
records un-editable/undeletable, no admin-UI surface for route53_audit_log)
deliberately left as backlog items for a follow-up phase — out of scope for
a post-execution fix pass.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-05 23:15:27 -04:00
..
addigy-devices feat(admin): DB-backed integration toggles + sticky cols + dark contrast 2026-05-03 09:55:22 -04:00
addigy-mappings Add comprehensive admin features and multi-system integration 2025-11-19 14:18:16 -05:00
admin feat(24-07): zones, records, and history page shell for /admin/sync/route53 2026-08-05 20:52:25 -04:00
analyzer feat(07.1-05): user-tz on analyzer pages 2026-05-07 08:34:58 -04:00
api fix(24): address code-review findings — PATCH identity guard, empty-array tombstone, health-check timeout, record-key normalization 2026-08-05 23:15:27 -04:00
auth fix(auth): reduce mobile sign-in friction (PWA + auto-redirect) 2026-05-07 07:05:52 -04:00
auvik-mappings fix: use loose equality for company ID comparison in mapping dropdowns 2026-02-02 22:52:59 -05:00
backup-status feat(design): nav/visual overhaul — brand layer, /status route, KPI dashboard, TanStack DataTable 2026-05-03 09:33:13 -04:00
config-enrichment-test Restructure: rename to Pulse and move app to root 2025-10-28 23:08:54 -04:00
configuration-items refactor(nav): adopt PageHeader on /configuration-items 2026-05-03 11:03:49 -04:00
dashboard chore: check in pending work — queue preferences, QBO AR diagnostics, mobile engagement fixes, ops scripts 2026-07-18 06:34:57 -04:00
engagement feat(engagement): replace Graph email counts with real-time mimecast data 2026-06-02 20:25:14 -04:00
kiosk feat: kiosk UI updates - new cards, gauge chart, performance improvements 2026-02-19 15:31:23 -05:00
legal feat: QuickBooks Online integration 2026-03-17 07:39:55 -04:00
mobile chore: check in pending work — queue preferences, QBO AR diagnostics, mobile engagement fixes, ops scripts 2026-07-18 06:34:57 -04:00
pax8 feat(14-05): manual company-search combobox fallback (D-05/D-09) 2026-07-11 14:43:56 -04:00
phishing feat(22-06): campaigns list page + Phishing nav entry (D-00, D-02) 2026-07-16 14:58:52 -04:00
quotes feat(07.1-05): user-tz on dashboard, quotes, veeam-analysis 2026-05-07 08:36:09 -04:00
rmm-mappings feat: IT Glue integration, workflow engine, pipelines, Zabbix WAN, notification channels, backup status UI improvements, nav alignment fixes 2026-02-27 14:52:14 -05:00
sentinelone refactor(design): adopt TanStack DataTable on /veeam-analysis, fill gaps 2026-05-03 09:42:04 -04:00
settings refactor(design): adopt TanStack DataTable on /veeam-analysis, fill gaps 2026-05-03 09:42:04 -04:00
setup Restructure: rename to Pulse and move app to root 2025-10-28 23:08:54 -04:00
status feat(status): 24-hour activity sparklines on worker pulse cards 2026-05-03 10:03:54 -04:00
styles fix(04-01): restore phase 2/3 work lost by worktree soft-reset 2026-05-03 18:01:14 -04:00
veeam-analysis feat(07.1-05): user-tz on dashboard, quotes, veeam-analysis 2026-05-07 08:36:09 -04:00
veeam-comparison feat(design): nav/visual overhaul — brand layer, /status route, KPI dashboard, TanStack DataTable 2026-05-03 09:33:13 -04:00
favicon.ico Restructure: rename to Pulse and move app to root 2025-10-28 23:08:54 -04:00
globals.css feat(admin): DB-backed integration toggles + sticky cols + dark contrast 2026-05-03 09:55:22 -04:00
layout.tsx feat(09-05): ThemeSessionBridge + ThemeToggle write-through to /api/me/theme 2026-05-10 07:48:57 -04:00
page.tsx Add comprehensive admin features and multi-system integration 2025-11-19 14:18:16 -05:00