eTMA Handler is designed with reversibility as a core principle.
Every operation that modifies data should be undoable. Tutors should be able to experiment with marking without fear of losing work.
| Operation | Reversible | Method |
|---|---|---|
| Grade assignment | ✅ | Undo/redo stack |
| Add feedback | ✅ | Undo/redo stack |
| Delete feedback | ✅ | Soft delete + undo |
| Bulk grade | ✅ | Transaction rollback |
| Operation | Reversible | Method |
|---|---|---|
| Import .fhi | ✅ | Can re-import |
| Export .docx | ✅ | Non-destructive |
| Delete assignment | ✅ | Soft delete (30 days) |
| Clear database | Backup required |
| Operation | Reversible | Method |
|---|---|---|
| Change settings | ✅ | Config versioning |
| Reset to defaults | ✅ | Backup preserved |
CubDB uses an append-only B-tree, meaning:
- Old versions preserved until compaction
- Point-in-time recovery possible
- No data loss from crashes
config :etma_handler,
auto_backup: true,
backup_interval: :hourly,
backup_retention: 7 # days- In-memory undo/redo for session
- Persistent history for important operations
- Configurable history depth
- Check soft-deleted items:
Settings → Trash - Restore within 30 days
- After 30 days: restore from backup
- Application creates automatic backup on start
- Restore:
etma_handler restore --backup latest - Manual: Copy from
~/.local/share/etma_handler/backups/
Edit → Undofor recent changesHistory → Viewfor older changes- Select point-in-time to restore
Operations that are NOT reversible:
- Backup deletion - Backups older than retention are purged
- Database compaction - Old versions removed after compaction
- Export to student - Once sent, cannot be recalled
- Enable auto-backup (default: on)
- Review before bulk operations
- Use soft delete (default: on)
- Export periodically for external backup
Last updated: 2024-12-01