learning_ai_notes/docs/archive
saravanakumardb1 1258d49488 feat(backend): emit task.created + workspace.created events; add share revocation regression test
Sprint B — closes audit items B6 (event-bus completeness) and B3
(public-share revocation regression).

Event bus:
- note-tasks/repository.ts createNoteTask now emits task.created with
  taskId, noteId, workspaceId, userId, title
- workspaces/repository.ts createWorkspace now emits workspace.created
  with workspaceId, userId, name

The event-bus already declared these event types (event-bus.ts) and
webhook subscribers can target them, but they were never emitted —
making the contract dead. Emissions follow the same .catch(() => {})
pattern used by note.created/updated/deleted in notes/repository.ts so
a subscriber failure cannot break the create flow.

Regression tests:
- note-tasks/repository.test.ts and workspaces/repository.test.ts
  exercise the emission paths end-to-end through the in-memory
  datastore.
- note-shares/repository.integration.test.ts adds a 5-test integration
  suite for the public-share revocation path: token resolves before
  revocation; token returns null after deleteShare (hard delete);
  expired token returns null; cross-product token rejected;
  listSharesForNote does not include revoked shares.

Verified:
- pnpm --filter @notelett/backend run test: 380/380 (was 373, +7 new)
- pnpm run verify end-to-end green
2026-05-22 23:23:08 -07:00
..
AGENT_TASK_ROADMAP.md feat(backend): emit task.created + workspace.created events; add share revocation regression test 2026-05-22 23:23:08 -07:00
ARCHITECTURE_REVIEW_AND_REUSE_ROADMAP.md feat(backend): emit task.created + workspace.created events; add share revocation regression test 2026-05-22 23:23:08 -07:00
GAP_ANALYSIS.md feat(backend): emit task.created + workspace.created events; add share revocation regression test 2026-05-22 23:23:08 -07:00