Record Activity Event
What It Models
A record activity event preserves a small account of something a person did to a record. Visits share the store with supported mutation events from other modules. Security decisions have a separate history and purpose.
Identity and Attributes
The database assigns a time-based event identity. Each event names its workspace, person, type, target and occurrence key, with a millisecond timestamp supplied by the execution context. Metadata holds bounded tokens rather than record content. A visit key is unique within a person’s workspace history.
Relationships
Target references retain the record type and identity without requiring the business record to survive. Contacts and organizations are examples of cross-service targets; committee visits are registered too. The query layer uses visits to find current readable records, whereas raw history can retain references to removed records.
Invariants
The application role can insert and read but cannot modify or remove stored events. Workspace isolation and metadata shape are database concerns. Visit reporting resolves the target under current authority before the insert transaction, then returns the earlier event for a duplicate key or refuses a changed target.
How It Is Stored and Shared
Audit owns the activity table and writer functions. Mutation writers share a business transaction only when their caller supplies that transaction. Raw visit-history reads page by timestamp and identity; Recently Viewed results belong to Queries. The protected workspace purge path removes events in bounded batches. No custom fields are declared.
Open Design Questions
The retention period is still undecided. Current history APIs read visits only, and neither a person nor an administrator has a dedicated raw-history screen here.