Answer
One working approach built and run successfully for a couple of weeks: a scheduled database task runs nightly, tracking changes on FNDRR_CLIENT_PROFILE_VALUE_TAB (the table personal and base profile values are stored in) and copying each day's changes into an intermediate custom table (built as a Custom LU), keyed by profile ID plus date, retaining only the most recent 5 versions per profile on a FIFO basis. A custom 'Profile Versions' page then shows each user their own last 5 archived profile versions in a table, with an RMB 'Revert to this version' action that copies the chosen historical version's rows back into the live FNDRR_CLIENT_PROFILE_VALUE_TAB. One important caveat for users doing a revert: they need to do it in a fresh application session and restart the client immediately afterward, since performing the revert while their existing session is still open risks that session simply re-saving its own (still broken) in-memory profile state back over the reverted version when it eventually closes. This approach gives users self-service recovery of their own profile without IT having to manually import/export files, though it's a genuine custom build (scheduled task, custom table, custom page) rather than a standard IFS feature.