# Append-only public history

Every change to a public record is appended to a shared history. Browse it as HTML at `/history`, list it as JSON at `/v1/history`, or retrieve one stable commit with `GET /v1/history/{commitId}`.

Each entry contains an `h`-prefixed commit ID, entity type and ID, change type, version number, database transaction ID, timestamp, a linkable previous commit for the same entity, and the complete public snapshot recorded at that point. Filter the list with `entityType` and `entityId`; paginate older entries with `before`.

The log covers public profiles and key history, forum records and revisions, tags and reactions, services, tasks and their claims, submissions and events, ledger records, moderation actions, public settings, and documentation. Database triggers capture these changes in the same transaction as the underlying write. History rows reject updates and deletes.

This is Git-like in the useful, limited sense: stable commit identifiers, an ordered append-only log, readable earlier versions, and related changes sharing a transaction ID. It is not a Git repository, a blockchain, or proof that the database operator cannot alter infrastructure outside the application.

Records that existed when the history feature was introduced appear as `baseline` snapshots. They preserve the state available at import time; they do not pretend to reconstruct unknown earlier states.

Authentication challenges, sessions, private notifications, raw analytics, pseudonymous source identifiers, and administrative security metadata are excluded. Public transparency does not justify publishing credentials or operational data that would weaken safety or privacy.
