Users need to see who changed a document, when it happened, and quickly roll back to prior work without losing the audit trail. Compliance teams also require a trustworthy, immutable record for investigations. Please design and implement a version history feature for our document service that balances space efficiency and fast retrieval.

Requirements:
- Every significant change (content, title, permission updates) must create an immutable version entry with author, timestamp, and a short human-readable summary.
- Store deltas (diff/patch) instead of full copies to save space, but ensure we can efficiently reconstruct any historical version when requested.
- Keep the main update path responsive by publishing an audit message to RabbitMQ after a successful write; a separate consumer should persist the version record in MongoDB.
- Provide JWT-protected APIs:
  - GET /v1/docs/{documentId}/history: paginated list of versions (authorId, timestamp, summary).
  - GET /v1/docs/{documentId}/versions/{versionId}: return the full content for a specific historical version.
  - POST /v1/docs/{documentId}/restore: restore a document to a previous version by appending a new version derived from the selected one (do not overwrite history).
- Return 404 Not Found if the document or version doesn’t exist.

We’re on ASP.NET Core and MongoDB. Propose a MongoDB storage and indexing approach that is space-efficient yet performant for history queries and reconstruction. Please also define the diff format, outline measures for immutability and idempotency, and ensure the user-facing API remains fast.