Skip to content

[Learner Notes][Privacy] Enforce owner-only access and encrypted note storage #166

Description

@barry01-hash

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

  • The unsafe or inconsistent behavior is reproduced by a regression test before the fix.
  • The implementation fails safely on invalid, stale, duplicated, concurrent, and partial-failure inputs relevant to this workflow.
  • Unit, integration, or Soroban tests cover success and meaningful boundary and failure paths.
  • Logs, metrics, and errors are actionable without exposing secrets or personal data.

Relevant areas

src/components/materials/LearnerNotes.jsx; src/app/api/materials/[id]/notes/route.js; src/lib/privacy/deletionExecutor.js

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

GrantFox OSSIssue tracked in GrantFox OSSMaybe RewardedIssue may be eligible for a GrantFox rewardThird CampaignCampaign: Third Campaign

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions