Context
Private learner annotations require server-derived ownership, encrypted storage, concurrency control, and deletion integration.
Scope
- Implement the missing behavior in the verified areas below with explicit validation and failure semantics.
- Preserve existing authorization, idempotency, and observability contracts.
- Document compatibility or migration behavior where persisted or on-chain data changes.
- Keep unrelated UI redesigns and protocol-economic changes out of scope.
Acceptance criteria
Relevant areas
src/components/materials/LearnerNotes.jsx; src/app/api/materials/[id]/notes/route.js; src/lib/privacy/deletionExecutor.js
Context
Private learner annotations require server-derived ownership, encrypted storage, concurrency control, and deletion integration.
Scope
Acceptance criteria
Relevant areas
src/components/materials/LearnerNotes.jsx; src/app/api/materials/[id]/notes/route.js; src/lib/privacy/deletionExecutor.js