Version History & Workflow
Every save creates a version. History is linear, unbounded, and never pruned — for policy and compliance content, "what did this page say, and when" is a question RIFT can always answer.
How versions work
Saving a content item writes a new numbered version capturing the title, description, and full body at that moment, along with who saved it and its workflow state at the time. Restoring an old version doesn't rewrite history — it creates a new version with the old content, so the record of what happened stays intact.
Comparing versions
Any two versions can be compared side by side. The comparison opens with a plain-language summary — for example, "2 lines added in 1 place — nothing removed; everything else is untouched" — before showing the line-by-line diff, so you know the shape of a change before reading any of it. The same diff view powers three review surfaces:
- Version compare — any historical version against any other.
- Staging vs. public — exactly what will change on the live page when a staged edit is promoted.
- AI proposals — every change the AI assistant suggests is shown as a diff and applied only on your explicit acceptance.
Editing public pages safely
Editing a live page never modifies it in place. RIFT creates a paired staging copy; you edit and preview the copy while the public page keeps serving unchanged. Promoting the copy swaps it in atomically at publish, the outgoing page is archived with its full history, and every reference elsewhere on the site follows the succession to the new page automatically.
Concurrent edits
RIFT uses optimistic locking: if someone else saved the item while you were editing, your save is intercepted with a side-by-side conflict view of your version and theirs — you decide what wins. No silent last-write-wins, no lost work.
The audit trail
Beyond per-item versions, RIFT keeps an audit log of state transitions, publishes, taxonomy changes, and administrative overrides — and because every publish is a git commit, the published site's own history is independently verifiable in your repository. Three layers, one answer to "who changed what, when."