Skip to content

Audit metadata

Every entity in SteadyOn carries audit metadata. This page lists the fields, where they appear, and how they’re computed.

Every domain row carries:

FieldTypeNotes
audit.createdAttimestamp (ms)When the row was first created.
audit.updatedAttimestamp (ms)When the row was last modified.
audit.createdByNametext snapshotThe creator’s full name as it stood at the time.
audit.updatedByNametext snapshotThe last modifier’s full name as it stood at the time.

There is also a userId link to the original creator/modifier, but the snapshot strings are what’s shown in the UI — they survive user deletion and renames.

Every list page has Created and Modified columns (sortable, filterable). Both show the timestamp; if you hover, you see the snapshot name.

The footer of every detail page reads:

Created by [Name] on [date]. Last modified by [Name] on [date].

If creator and modifier are the same and the dates are within minutes of each other, only the Created line shows.

Exports include four columns: Created, Modified, Created by, Modified by. They round-trip cleanly (although they’re ignored on import).

The Log tab on each detail page (and the global Log page in the sidebar) shows every change as an event row:

  • Action (created, updated, status changed, etc.).
  • Actor (snapshot name).
  • Timestamp.
  • For updates, the diff (old vs new values).

Live joins would re-read the actor’s current name on every render. That’s bad for two reasons:

  1. It rewrites history. If “Bob” renames himself “Robert”, every audit row in the past suddenly reads “Robert” — including changes he made when he was Bob.
  2. It can show blank or “Deleted user” if the user is removed. Many regulator audits won’t accept “Deleted user” as a valid actor name.

Snapshots solve both. The actor’s name on April 12th was Bob; that record stays as Bob forever.

If a user has never set a name (a new user who hasn’t completed their profile), the snapshot stores the empty string. The UI shows “(no name)” — a prompt to fix it.

If you’ve just renamed yourself and want history rewritten, that’s not supported by design. Going forward, your changes will use the new name.