ExamNovaDocumentation
Offline readyChangelog
Developer guide

Safe extension points

Add question types, reports, providers, jobs, files, or UI without weakening tenant isolation or historical assessment state.

MaintainerIntegratorReviewer
Question revision and snapshot flowDraft questions are reviewed and approved; published exams retain a pinned snapshot even when a later revision is created.DraftReviewApprovedPinned snapshotPublished examNew revision
Question revision and snapshot flow. Draft questions are reviewed and approved; published exams retain a pinned snapshot even when a later revision is created.

Responsibility

An extension is complete only when the server contract, authorization, persistence, user interface, imports/exports, audit behavior, failure recovery, and tests agree.

Components and data flow

Rules that must remain true

Failure modes

  • Adding only a UI control creates unsupported stored state.
  • A new report queries mutable drafts and disagrees with published results.
  • A provider call inside the main transaction extends locks and creates partial failure.
  • An uploaded filename becomes a path or response-header injection.

Safe extension guidance

  • Begin with the domain contract and failure states, then implement adapters and UI.
  • Reuse existing services and policy patterns before introducing parallel abstractions.
  • Add migrations with forward-safe defaults and update compatibility notes.
  • Add developer and operator documentation in the same change.

Required tests

Release gate: Do not ship a partially integrated extension; every storage and consumer path must understand the new state.