{"id":"derived-systems-depend-on-unreliable-event-infrastructure","text":"The derived-system pattern (secondary indexes, materialized views, projections) depends on event infrastructure that is unreliable at its foundation: event sourcing has no durable recovery mechanism and conflates two ID spaces, while derived systems require explicit flush calls and old-value CDC events for consistency — the consumer-side correctness requirements depend on producer-side guarantees that do not hold.","truth_value":"IN","source":"","source_url":"","source_hash":"","justifications":[{"type":"SL","antecedents":["event-sourcing-unreliable-in-persistence-and-addressing","derived-system-consistency-requires-flush-and-old-values"],"outlist":[],"label":"Combines a depth-3 conclusion about event sourcing unreliability with a depth-1 conclusion about derived system requirements, exposing that the consumer pattern demands properties the producer cannot provide"}],"dependents":["event-infrastructure-unreliable-in-content-and-ordering"],"metadata":{},"created_at":"","updated_at":"","reviewed_at":"","verified_at":"","retracted_at":"","explanation":{"steps":[{"node":"derived-systems-depend-on-unreliable-event-infrastructure","truth_value":"IN","reason":"SL justification valid","antecedents":["event-sourcing-unreliable-in-persistence-and-addressing","derived-system-consistency-requires-flush-and-old-values"],"label":"Combines a depth-3 conclusion about event sourcing unreliability with a depth-1 conclusion about derived system requirements, exposing that the consumer pattern demands properties the producer cannot provide"},{"node":"event-sourcing-unreliable-in-persistence-and-addressing","truth_value":"IN","reason":"SL justification valid","antecedents":["event-sourcing-lacks-any-durable-recovery-path","event-sourcing-conflates-two-id-spaces"],"label":"Non-durable persistence combined with inconsistent event addressing undermines both storage and retrieval"},{"node":"event-sourcing-lacks-any-durable-recovery-path","truth_value":"IN","reason":"SL justification valid","antecedents":["event-store-append-is-not-crash-consistent","es-snapshots-incomplete-for-production-use"],"label":"crash-inconsistent appends + non-persistent snapshots = no safe recovery at any level"},{"node":"event-store-append-is-not-crash-consistent","truth_value":"IN","reason":"SL justification valid","antecedents":["event-store-memory-ahead-of-disk","persist-after-memory","batch-append-not-crash-safe","persist-event-per-call-open"],"label":"Memory-first writes with no rollback plus non-atomic batch persistence equals inconsistency after any crash"},{"node":"event-store-memory-ahead-of-disk","truth_value":"IN","reason":"premise"},{"node":"persist-after-memory","truth_value":"IN","reason":"premise"},{"node":"batch-append-not-crash-safe","truth_value":"IN","reason":"premise"},{"node":"persist-event-per-call-open","truth_value":"IN","reason":"premise"},{"node":"es-snapshots-incomplete-for-production-use","truth_value":"IN","reason":"SL justification valid","antecedents":["es-snapshots-are-in-memory-dicts","snapshot-state-excludes-subscription","reconstruct-state-no-snapshot-support"],"label":"Three independent limitations compound to make snapshots a partial optimization rather than a complete recovery mechanism"},{"node":"es-snapshots-are-in-memory-dicts","truth_value":"IN","reason":"premise"},{"node":"snapshot-state-excludes-subscription","truth_value":"IN","reason":"premise"},{"node":"reconstruct-state-no-snapshot-support","truth_value":"IN","reason":"premise"},{"node":"event-sourcing-conflates-two-id-spaces","truth_value":"IN","reason":"SL justification valid","antecedents":["projection-catch-up-assumes-sequential-ids","reconstruct-state-up-to-is-global-id","es-event-ids-are-stream-scoped","cdc-log-sequence-numbers-survive-compaction"],"label":"Stream-local and global ID spaces are used interchangeably across different read paths with no translation layer"},{"node":"projection-catch-up-assumes-sequential-ids","truth_value":"IN","reason":"premise"},{"node":"reconstruct-state-up-to-is-global-id","truth_value":"IN","reason":"premise"},{"node":"es-event-ids-are-stream-scoped","truth_value":"IN","reason":"premise"},{"node":"cdc-log-sequence-numbers-survive-compaction","truth_value":"IN","reason":"premise"},{"node":"derived-system-consistency-requires-flush-and-old-values","truth_value":"IN","reason":"SL justification valid","antecedents":["unbundled-db-flush-required-for-derived","cdc-old-value-required-for-index-consistency"],"label":"Two mandatory conditions for derived-system correctness create a fragile AND-contract where violating either one causes silent data inconsistency"},{"node":"unbundled-db-flush-required-for-derived","truth_value":"IN","reason":"premise"},{"node":"cdc-old-value-required-for-index-consistency","truth_value":"IN","reason":"premise"}]}}