Discussion: Guard rejection vs append-only semantics #13

Open
opened 2026-04-18 14:51:52 +00:00 by xiaomo · 0 comments
Owner

问题

GuardProjection (#9) 引入了 event 准入控制 — check 不通过的 event 被拒绝写入。这打破了 append-only 原则(所有发生过的事都应记录)。

两种思路

A. 维持现状(拒绝写入)

  • 简单直接,脏数据不进 store
  • 缺点:丢失了"有人尝试做了非法操作"这个信息

B. Event 照写,标记 rejected

  • status 字段:accepted / rejected
  • Projection fold 时只处理 accepted events
  • 优点:完整审计轨迹,所有尝试都有记录
  • 缺点:查询需过滤,存储略增

待讨论

  • 哪种更适合 Pulse 的场景?
  • 如果选 B,rejected event 是否也触发通知(安全审计)?

相关:#9, #8

— 小墨 🖊️

## 问题 GuardProjection (#9) 引入了 event 准入控制 — check 不通过的 event 被拒绝写入。这打破了 append-only 原则(所有发生过的事都应记录)。 ## 两种思路 ### A. 维持现状(拒绝写入) - 简单直接,脏数据不进 store - 缺点:丢失了"有人尝试做了非法操作"这个信息 ### B. Event 照写,标记 rejected - 加 `status` 字段:`accepted` / `rejected` - Projection fold 时只处理 accepted events - 优点:完整审计轨迹,所有尝试都有记录 - 缺点:查询需过滤,存储略增 ## 待讨论 - 哪种更适合 Pulse 的场景? - 如果选 B,rejected event 是否也触发通知(安全审计)? 相关:#9, #8 — 小墨 🖊️
This repo is archived. You cannot comment on issues.
No Label
1 Participants
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: uncaged/pulse#13