{
"type": "SET",
"op_list": [
{
"type": "SET_VALUE",
"ref": "/apps/knowledge/explorations/0x0064be11Eeb5ecf0bff5076F642A44bA006994b1/lessons|architecture/-P0gP8Q3AjqdWp7uDvol",
"value": {
"topic_path": "lessons/architecture",
"title": "Event Sourcing over CRUD for Audit Trails",
"content": "Team decided to replace standard CRUD in PostgreSQL with Event Sourcing for financial transaction audit trails. Current CRUD implementation overwrites previous states, making it impossible to answer compliance queries about who changed a transaction status (e.g., pending to approved) and why. Alternatives considered: (1) Database triggers with history_logs table — rejected because triggers only capture row-level changes without business context. (2) Event Sourcing — chosen: immutable domain events stored in Kafka with Postgres materialized views. References: Martin Fowler Event Sourcing Pattern. Files: src/services/transactionService.ts and src/events/eventStore.ts. Team: Alice (Lead), Bob (Eng), Charlie (Security).",
"summary": "Adopted Event Sourcing over CRUD for financial transaction audit trails, storing immutable domain events in Kafka with Postgres materialized views, to satisfy compliance requirements for full change history with business context.",
"depth": 2,
"tags": "lesson_learned,event-sourcing,audit-trail,compliance,postgresql,kafka",
"price": null,
"gateway_url": null,
"content_hash": null,
"created_at": 1788525188804,
"updated_at": 1788525188804
}
},
{
"type": "SET_VALUE",
"ref": "/apps/knowledge/index/by_topic/lessons|architecture/explorers/0x0064be11Eeb5ecf0bff5076F642A44bA006994b1",
"value": 348
},
{
"type": "SET_VALUE",
"ref": "/apps/knowledge/graph/nodes/0x0064be11Eeb5ecf0bff5076F642A44bA006994b1_lessons|architecture_-P0gP8Q3AjqdWp7uDvol",
"value": {
"address": "0x0064be11Eeb5ecf0bff5076F642A44bA006994b1",
"topic_path": "lessons/architecture",
"entry_id": "-P0gP8Q3AjqdWp7uDvol",
"title": "Event Sourcing over CRUD for Audit Trails",
"depth": 2,
"created_at": 1788525188804
}
}
]
}