{"id":"domain-excellence-composes-with-universal-invariant-enforcement","text":"Domain-adapted specialization (achieving excellence through financial risk-adaptation and symmetric-domain quality optimization) and scale-independent invariant enforcement (quality guarantees holding regardless of scale or layer, with redundant prevention of state reversal) appear compositionally compatible: the antecedents establish that specialization operates within domain-specific coordination strategies while invariants hold independently of implementation complexity — suggesting that adding new domain specializations would customize coordination mechanisms without necessarily compromising universal invariants, since the redundant enforcement operates at a different architectural level than domain adaptation.","truth_value":"IN","source":"","source_url":"","source_hash":"","justifications":[{"type":"SL","antecedents":["domain-specialization-achieves-dual-excellence","architectural-invariants-are-scale-independent-and-redundantly-enforced"],"outlist":[],"label":"domain specialization customizes mechanisms within the invariant boundary; redundant enforcement ensures new specializations cannot breach universal guarantees"}],"dependents":["sustainable-architecture-quality-under-enforcement"],"metadata":{"last_reviewed":"2026-06-06T06:26:57","review_result":"invalid"},"created_at":"","updated_at":"","reviewed_at":"","verified_at":"","retracted_at":"","explanation":{"steps":[{"node":"domain-excellence-composes-with-universal-invariant-enforcement","truth_value":"IN","reason":"SL justification valid","antecedents":["domain-specialization-achieves-dual-excellence","architectural-invariants-are-scale-independent-and-redundantly-enforced"],"label":"domain specialization customizes mechanisms within the invariant boundary; redundant enforcement ensures new specializations cannot breach universal guarantees"},{"node":"domain-specialization-achieves-dual-excellence","truth_value":"IN","reason":"SL justification valid","antecedents":["financial-domains-are-most-completely-realized","symmetric-domains-are-quality-optimal"],"label":"both are unused depth-8/9 peaks representing different domain categories; combining reveals the architecture has two distinct excellence modes adapted to domain structure"},{"node":"financial-domains-are-most-completely-realized","truth_value":"IN","reason":"SL justification valid","antecedents":["architecture-adapts-mechanisms-to-domain-risk","financial-auditability-is-emergent-from-accumulation"],"label":"Financial domains combine coordination, asymmetry, and auditability across all quality dimensions"},{"node":"architecture-adapts-mechanisms-to-domain-risk","truth_value":"IN","reason":"SL justification valid","antecedents":["financial-correctness-combines-locking-with-structural-asymmetry","write-correctness-is-both-structural-and-coordination-free","forward-only-enables-robust-cost-allocation"],"label":"coordination and cost-allocation mechanisms both adapt to domain risk; forward-only ensures cost shifting is safe regardless of which domain applies it"},{"node":"financial-correctness-combines-locking-with-structural-asymmetry","truth_value":"IN","reason":"SL justification valid","antecedents":["concurrency-safety-strategy-varies-by-financial-risk","write-read-asymmetry-is-end-to-end-correct"],"label":"domain-specific concurrency strategies and codebase-wide write-read asymmetry are complementary, not redundant"},{"node":"concurrency-safety-strategy-varies-by-financial-risk","truth_value":"IN","reason":"SL justification valid","antecedents":["wallet-transfers-are-safe-under-concurrency","hotel-occ-prevents-overbooking"],"label":"Wallets can't tolerate any conflict window (money at risk); hotels can retry (inventory contention is less costly)"},{"node":"wallet-transfers-are-safe-under-concurrency","truth_value":"IN","reason":"SL justification valid","antecedents":["wallet-deadlock-free-concurrent-transfers"],"label":"sorted lock ordering prevents deadlock and frozen-check prevents TOCTOU, but `create_wallet` silently replacing an existing wallet could reset balance and lose in-flight transaction state for any concurrent transfer holding a lock on that wallet","outlist":["wallet-creation-silently-overwrites"]},{"node":"wallet-deadlock-free-concurrent-transfers","truth_value":"IN","reason":"SL justification valid","antecedents":["wallet-lock-ordering-prevents-deadlock","wallet-frozen-check-inside-lock","wallet-two-tier-locking"],"label":"Three complementary locking disciplines compose into a deadlock-free, race-free concurrency model"},{"node":"wallet-lock-ordering-prevents-deadlock","truth_value":"IN","reason":"premise"},{"node":"wallet-frozen-check-inside-lock","truth_value":"IN","reason":"premise"},{"node":"wallet-two-tier-locking","truth_value":"IN","reason":"premise"},{"node":"hotel-occ-prevents-overbooking","truth_value":"IN","reason":"SL justification valid","antecedents":["hotel-reservation-optimistic-locking","hotel-search-availability-is-bottleneck-date"],"label":"OCC prevents concurrent overbook, but negative inventory from cancel underflow corrupts the availability data that OCC is protecting","outlist":["hotel-cancel-no-underflow-guard"]},{"node":"hotel-reservation-optimistic-locking","truth_value":"IN","reason":"premise"},{"node":"hotel-search-availability-is-bottleneck-date","truth_value":"IN","reason":"premise"},{"node":"write-read-asymmetry-is-end-to-end-correct","truth_value":"IN","reason":"SL justification valid","antecedents":["writes-commit-irrevocably-reads-reconcile","correctness-by-construction-not-validation"],"label":"Writes commit and reads reconcile (depth-4) with structural construction (depth-3), but assumed invariants (depth-2, IN) break the end-to-end guarantee","outlist":["assumed-invariants-are-unenforced"]},{"node":"writes-commit-irrevocably-reads-reconcile","truth_value":"IN","reason":"SL justification valid","antecedents":["writes-are-cheap-reads-pay","forward-only-design-prevents-regression-and-maximizes-progress"],"label":"forward-only semantics explain WHY reads bear the full burden — there is no mechanism to go back"},{"node":"writes-are-cheap-reads-pay","truth_value":"IN","reason":"SL justification valid","antecedents":["write-time-decisions-are-lightweight-but-binding","read-path-absorbs-consistency-and-computation-cost"],"label":"Write-side minimalism and read-side cost absorption are two faces of the same design tradeoff, consistently applied across KV, chat, news feed, autocomplete, and payment"},{"node":"write-time-decisions-are-lightweight-but-binding","truth_value":"IN","reason":"SL justification valid","antecedents":["fan-out-write-pushes-references-not-data","write-time-routing-is-irrevocable"],"label":"Fan-out pushes references (lightweight) and routing decisions are permanent (binding) — the write path optimizes for speed at the cost of flexibility"},{"node":"fan-out-write-pushes-references-not-data","truth_value":"IN","reason":"SL justification valid","antecedents":["chat-fanout-on-write","news-feed-fan-out-write-pushes-ids"],"label":"Reference-based fanout limits write amplification to pointer-sized payloads"},{"node":"chat-fanout-on-write","truth_value":"IN","reason":"premise"},{"node":"news-feed-fan-out-write-pushes-ids","truth_value":"IN","reason":"premise"},{"node":"write-time-routing-is-irrevocable","truth_value":"IN","reason":"SL justification valid","antecedents":["news-feed-celebrity-threshold-at-write-time","chat-fanout-on-write"],"label":"news feed selects fan-out-on-write vs fan-out-on-read based on follower count at publish time; chat routes to inbox or offline queue based on presence at send time — both decisions are baked in at write time and not revisited"},{"node":"news-feed-celebrity-threshold-at-write-time","truth_value":"IN","reason":"premise"},{"node":"read-path-absorbs-consistency-and-computation-cost","truth_value":"IN","reason":"SL justification valid","antecedents":["lazy-read-time-evaluation-trades-write-simplicity-for-read-cost","kv-read-path-is-self-healing"],"label":"lazy eval (autocomplete decay, URL expiration, payment balance) defers computation to reads; KV read repair defers convergence to reads — the combined pattern reveals a systematic bias toward read-path complexity across the repo"},{"node":"lazy-read-time-evaluation-trades-write-simplicity-for-read-cost","truth_value":"IN","reason":"SL justification valid","antecedents":["autocomplete-decay-is-read-time","url-shortener-expiration-lazy","payment-balance-never-cached"],"label":"Three independent systems chose lazy evaluation, suggesting write-simplicity is the dominant concern in pedagogical implementations"},{"node":"autocomplete-decay-is-read-time","truth_value":"IN","reason":"premise"},{"node":"url-shortener-expiration-lazy","truth_value":"IN","reason":"premise"},{"node":"payment-balance-never-cached","truth_value":"IN","reason":"premise"},{"node":"kv-read-path-is-self-healing","truth_value":"IN","reason":"SL justification valid","antecedents":["kv-read-repair-on-get","kv-node-stores-sibling-versions"],"label":"Read repair + sibling detection make the read path an active consistency mechanism, not just a query"},{"node":"kv-read-repair-on-get","truth_value":"IN","reason":"premise"},{"node":"kv-node-stores-sibling-versions","truth_value":"IN","reason":"premise"},{"node":"forward-only-design-prevents-regression-and-maximizes-progress","truth_value":"IN","reason":"SL justification valid","antecedents":["state-ratchets-prevent-regression-across-domains","pipeline-processing-maximizes-forward-progress"],"label":"State ratchets and forward-progress pipelines are complementary mechanisms — ratchets prevent regression in stateful systems, pipelines prevent regression in dataflow systems"},{"node":"state-ratchets-prevent-regression-across-domains","truth_value":"IN","reason":"SL justification valid","antecedents":["chat-monotonic-read-progress","watermark-finalization-is-irreversible"],"label":"chat read cursors are monotonic (never re-mark as unread), aggregation windows follow OPEN→CLOSED→FINALIZED with no reversal — both are state ratchets that make backwards movement structurally impossible"},{"node":"chat-monotonic-read-progress","truth_value":"IN","reason":"SL justification valid","antecedents":["chat-dual-ordering-sequence-and-lamport","chat-read-cursors-monotonic"],"label":"Sequence-number ordering + monotonic cursors create an irreversible read-progress guarantee"},{"node":"chat-dual-ordering-sequence-and-lamport","truth_value":"IN","reason":"premise"},{"node":"chat-read-cursors-monotonic","truth_value":"IN","reason":"premise"},{"node":"watermark-finalization-is-irreversible","truth_value":"IN","reason":"SL justification valid","antecedents":["watermark-drives-finalization","window-lifecycle-one-directional","no-window-merging-or-retraction"],"label":"Three properties compose into hard irreversibility: watermark-only trigger + one-way lifecycle + no retraction"},{"node":"watermark-drives-finalization","truth_value":"IN","reason":"premise"},{"node":"window-lifecycle-one-directional","truth_value":"IN","reason":"premise"},{"node":"no-window-merging-or-retraction","truth_value":"IN","reason":"premise"},{"node":"pipeline-processing-maximizes-forward-progress","truth_value":"IN","reason":"SL justification valid","antecedents":["video-pipeline-maximizes-useful-work-on-failure","watermark-finalization-is-irreversible"],"label":"Video pipeline (branch-independent failure containment) and stream processing (irreversible finalization) both embody the same forward-only processing principle"},{"node":"video-pipeline-maximizes-useful-work-on-failure","truth_value":"IN","reason":"SL justification valid","antecedents":["dag-failure-cascade","youtube-pipeline-dag-structure"],"label":"DAG topology + selective cascade means a thumbnail failure doesn't block a successful transcode"},{"node":"dag-failure-cascade","truth_value":"IN","reason":"premise"},{"node":"youtube-pipeline-dag-structure","truth_value":"IN","reason":"premise"},{"node":"correctness-by-construction-not-validation","truth_value":"IN","reason":"SL justification valid","antecedents":["structural-discipline-prevents-consistency-bugs","state-ratchets-prevent-regression-across-domains"],"label":"Both depth-2 conclusions prevent bugs structurally (immutability/sync vs. monotonic ratchets) rather than via checks, forming a unified construction-over-validation principle"},{"node":"structural-discipline-prevents-consistency-bugs","truth_value":"IN","reason":"SL justification valid","antecedents":["immutable-values-prevent-aliasing-bugs","multi-structure-sync-invariant"],"label":"immutability (KV vector clocks, leaderboard reinsert) prevents mutation aliasing; multi-structure sync (consistent hashing, leaderboard) prevents index divergence — leaderboard uses BOTH, showing these disciplines are complementary"},{"node":"immutable-values-prevent-aliasing-bugs","truth_value":"IN","reason":"SL justification valid","antecedents":["kv-vector-clock-immutable","leaderboard-update-by-remove-reinsert"],"label":"Immutable-value semantics eliminate shared-reference aliasing at the cost of allocation overhead"},{"node":"kv-vector-clock-immutable","truth_value":"IN","reason":"premise"},{"node":"leaderboard-update-by-remove-reinsert","truth_value":"IN","reason":"premise"},{"node":"multi-structure-sync-invariant","truth_value":"IN","reason":"SL justification valid","antecedents":["ch-triple-bookkeeping","leaderboard-dual-index-consistency"],"label":"Multi-structure sync is a recurring correctness burden where the failure mode is silent divergence"},{"node":"ch-triple-bookkeeping","truth_value":"IN","reason":"premise"},{"node":"leaderboard-dual-index-consistency","truth_value":"IN","reason":"premise"},{"node":"write-correctness-is-both-structural-and-coordination-free","truth_value":"IN","reason":"SL justification valid","antecedents":["write-path-is-coordination-free-and-correct","write-read-asymmetry-is-end-to-end-correct"],"label":"End-to-end correctness of the write-read model depends on writes being coordination-free; if writes required coordination, the asymmetric cost model would collapse"},{"node":"write-path-is-coordination-free-and-correct","truth_value":"IN","reason":"SL justification valid","antecedents":["writes-always-produce-valid-forward-progress","write-path-eliminates-coordination-across-identity-and-routing"],"label":"coordination-freedom (no consensus needed) and correctness (valid forward progress) are independent write-path properties that jointly yield a write path requiring no external verification or coordination"},{"node":"writes-always-produce-valid-forward-progress","truth_value":"IN","reason":"SL justification valid","antecedents":["write-path-is-self-consistent-by-design","forward-only-design-prevents-regression-and-maximizes-progress"],"label":"Write-path validity and forward progress hold jointly unless underflow-unguarded mutations allow writes to regress past valid state boundaries","outlist":["hotel-cancel-no-underflow-guard"]},{"node":"write-path-is-self-consistent-by-design","truth_value":"IN","reason":"SL justification valid","antecedents":["structural-discipline-prevents-consistency-bugs","write-time-decisions-are-lightweight-but-binding"],"label":"Data-level structural invariants and control-level routing simplicity jointly eliminate write-path consistency bugs"},{"node":"write-path-eliminates-coordination-across-identity-and-routing","truth_value":"IN","reason":"SL justification valid","antecedents":["identity-derivation-trades-validation-for-simplicity","write-time-decisions-are-lightweight-but-binding"],"label":"Two independent coordination-elimination strategies (identity derivation, reference routing) jointly make writes coordination-free"},{"node":"identity-derivation-trades-validation-for-simplicity","truth_value":"IN","reason":"SL justification valid","antecedents":["deterministic-ids-eliminate-coordination","idempotency-keys-ignore-payload-content"],"label":"Deterministic IDs and payload-ignoring idempotency keys both trade validation for simplicity — same tradeoff, different domains"},{"node":"deterministic-ids-eliminate-coordination","truth_value":"IN","reason":"SL justification valid","antecedents":["chat-dm-conversation-dedup","email-service-thread-id-is-first-msg"],"label":"deriving IDs from content eliminates the need for a coordination service or sequence generator"},{"node":"chat-dm-conversation-dedup","truth_value":"IN","reason":"premise"},{"node":"email-service-thread-id-is-first-msg","truth_value":"IN","reason":"premise"},{"node":"idempotency-keys-ignore-payload-content","truth_value":"IN","reason":"SL justification valid","antecedents":["hotel-idempotency-ignores-params","payment-idempotency-is-key-based","ad-click-dedup-global-not-per-ad"],"label":"hotel returns cached reservation ignoring guest/dates/room, payment maps key→payment ID without param check, ad-click dedup keys on event_id alone — all three trade payload-awareness for implementation simplicity"},{"node":"hotel-idempotency-ignores-params","truth_value":"IN","reason":"premise"},{"node":"payment-idempotency-is-key-based","truth_value":"IN","reason":"premise"},{"node":"ad-click-dedup-global-not-per-ad","truth_value":"IN","reason":"premise"},{"node":"forward-only-enables-robust-cost-allocation","truth_value":"IN","reason":"SL justification valid","antecedents":["forward-only-preserves-correctness-despite-accepted-gaps","structural-correctness-enables-safe-cost-shifting"],"label":"two independently justified safety mechanisms (temporal via forward-only, spatial via structural correctness) jointly remove both categories of risk from cost rebalancing decisions"},{"node":"forward-only-preserves-correctness-despite-accepted-gaps","truth_value":"IN","reason":"SL justification valid","antecedents":["temporal-gaps-are-contained-by-forward-only-design","write-read-asymmetry-is-end-to-end-correct"],"label":"Containment strategy — correctness emerges from progress guarantees rather than exhaustive verification, making accepted gaps survivable"},{"node":"structural-correctness-enables-safe-cost-shifting","truth_value":"IN","reason":"SL justification valid","antecedents":["structural-correctness-is-universally-applied","cost-model-adapts-to-access-frequency"],"label":"Path-independent structural discipline makes cost optimization a safe, orthogonal concern"},{"node":"structural-correctness-is-universally-applied","truth_value":"IN","reason":"SL justification valid","antecedents":["correctness-by-construction-not-validation"],"label":"Structural correctness works where applied but does not cover all critical invariants — temporal/assumed properties remain gaps","outlist":["assumed-invariants-are-unenforced"]},{"node":"cost-model-adapts-to-access-frequency","truth_value":"IN","reason":"SL justification valid","antecedents":["read-cost-scales-with-system-complexity","write-cost-allocation-matches-access-pattern"],"label":"Read cost scales with complexity (depth-4) and write-cost allocation matches access patterns (depth-4) — combining shows the cost model is adaptive, not dogmatic"},{"node":"read-cost-scales-with-system-complexity","truth_value":"IN","reason":"SL justification valid","antecedents":["reads-bear-full-correctness-burden","deletion-strategy-scales-with-distribution"],"label":"deletion strategy scaling from soft-delete to tombstones directly increases what the read path must interpret and reconcile"},{"node":"reads-bear-full-correctness-burden","truth_value":"IN","reason":"SL justification valid","antecedents":["read-path-absorbs-consistency-and-computation-cost","deletion-is-metadata-in-replicated-systems"],"label":"Both depth-2 conclusions shift complexity to reads — one for computation/convergence, the other for deletion semantics — together establishing reads as the locus of correctness"},{"node":"deletion-is-metadata-in-replicated-systems","truth_value":"IN","reason":"SL justification valid","antecedents":["soft-delete-prevents-distributed-resurrection","append-only-versioning-makes-restore-non-destructive"],"label":"both depth-1 conclusions independently arrive at the same principle — never physically destroy data — but for complementary reasons (anti-resurrection vs non-destructive restore); combined they show this is a fundamental constraint of any system that replicates or versions state"},{"node":"soft-delete-prevents-distributed-resurrection","truth_value":"IN","reason":"SL justification valid","antecedents":["kv-store-deletes-use-tombstones","s3-delete-marker-hides-not-removes"],"label":"Both systems independently arrived at write-over-delete to prevent resurrection from unsynchronized replicas"},{"node":"kv-store-deletes-use-tombstones","truth_value":"IN","reason":"premise"},{"node":"s3-delete-marker-hides-not-removes","truth_value":"IN","reason":"premise"},{"node":"append-only-versioning-makes-restore-non-destructive","truth_value":"IN","reason":"SL justification valid","antecedents":["s3-version-list-append-only","gdrive-restore-creates-new-version"],"label":"Append-only version lists make restore a forward operation, not a rollback"},{"node":"s3-version-list-append-only","truth_value":"IN","reason":"premise"},{"node":"gdrive-restore-creates-new-version","truth_value":"IN","reason":"premise"},{"node":"deletion-strategy-scales-with-distribution","truth_value":"IN","reason":"SL justification valid","antecedents":["soft-delete-is-dual-purpose","kv-anti-entropy-covers-writes-and-deletes"],"label":"Soft delete for structure preservation and tombstones for distributed convergence are complementary layers that compose"},{"node":"soft-delete-is-dual-purpose","truth_value":"IN","reason":"SL justification valid","antecedents":["soft-delete-preserves-structural-invariants","soft-delete-prevents-distributed-resurrection"],"label":"Both depth-1 soft-delete conclusions identify different motivations (structural invariants vs. resurrection prevention) for the same technique, revealing dual utility"},{"node":"soft-delete-preserves-structural-invariants","truth_value":"IN","reason":"SL justification valid","antecedents":["chat-soft-delete-preserves-sequence","autocomplete-delete-is-soft"],"label":"chat keeps deleted messages with `[deleted]` content to preserve sequence numbering; autocomplete zeroes frequency without removing trie nodes to preserve tree structure — both are single-node structural concerns distinct from distributed anti-resurrection"},{"node":"chat-soft-delete-preserves-sequence","truth_value":"IN","reason":"premise"},{"node":"autocomplete-delete-is-soft","truth_value":"IN","reason":"premise"},{"node":"kv-anti-entropy-covers-writes-and-deletes","truth_value":"IN","reason":"SL justification valid","antecedents":["kv-read-path-is-self-healing","soft-delete-prevents-distributed-resurrection"],"label":"without read repair, write divergence persists; without tombstones, deletes get resurrected — both mechanisms are independently necessary for full convergence"},{"node":"write-cost-allocation-matches-access-pattern","truth_value":"IN","reason":"SL justification valid","antecedents":["write-read-cost-allocation-is-per-use-case","writes-are-cheap-reads-pay"],"label":"the per-use-case allocation strategy resolves an apparent contradiction with the reads-pay default by correlating write cost with read frequency"},{"node":"write-read-cost-allocation-is-per-use-case","truth_value":"IN","reason":"SL justification valid","antecedents":["eager-rebuild-trades-write-cost-for-derived-consistency","lazy-read-time-evaluation-trades-write-simplicity-for-read-cost"],"label":"These two depth-1 conclusions represent opposite strategies for the same problem (when to compute derived state), revealing a spectrum rather than a convention"},{"node":"eager-rebuild-trades-write-cost-for-derived-consistency","truth_value":"IN","reason":"SL justification valid","antecedents":["autocomplete-cache-consistency","leaderboard-update-by-remove-reinsert"],"label":"autocomplete rebuilds top_k_cache for all ancestor nodes on every trie mutation; leaderboard removes and reinserts entries on score update — both choose O(mutation) rebuild over eventual consistency of derived structures"},{"node":"autocomplete-cache-consistency","truth_value":"IN","reason":"premise"},{"node":"financial-auditability-is-emergent-from-accumulation","truth_value":"IN","reason":"SL justification valid","antecedents":["payment-ledger-is-fully-auditable","state-is-irreversibly-accumulative"],"label":"domain-specific auditability falls out of the architecture's general irreversible-accumulation property"},{"node":"payment-ledger-is-fully-auditable","truth_value":"IN","reason":"SL justification valid","antecedents":["double-entry-invariant","balance-derived-from-ledger"],"label":"Double-entry + ledger-derived balances = auditable, but verify_integrity skips transfers","outlist":["verify-integrity-ignores-transfers"]},{"node":"double-entry-invariant","truth_value":"IN","reason":"premise"},{"node":"balance-derived-from-ledger","truth_value":"IN","reason":"premise"},{"node":"state-is-irreversibly-accumulative","truth_value":"IN","reason":"SL justification valid","antecedents":["state-is-monotonically-accumulative","no-operation-is-truly-reversible"],"label":"Two independently derived depth-5 perspectives on the same foundational invariant — accumulation and irreversibility are the same constraint viewed from opposite directions"},{"node":"state-is-monotonically-accumulative","truth_value":"IN","reason":"SL justification valid","antecedents":["stream-processing-correctness-is-doubly-forward-only","deletion-is-append-only-across-all-contexts"],"label":"Forward-only processing + append-only deletion = no operation reduces information content — gated because wallet creation silently replaces existing wallet state, destroying balance history","outlist":["wallet-creation-silently-overwrites"]},{"node":"stream-processing-correctness-is-doubly-forward-only","truth_value":"IN","reason":"SL justification valid","antecedents":["dedup-and-finalization-are-coordinated","forward-only-design-prevents-regression-and-maximizes-progress"],"label":"Dedup-finalization coordination and forward-only state ratchets are complementary mechanisms that together prevent both duplication and revision"},{"node":"dedup-and-finalization-are-coordinated","truth_value":"IN","reason":"SL justification valid","antecedents":["dedup-outlives-aggregation-window","watermark-finalization-is-irreversible"],"label":"Irreversible finalization demands that dedup outlive the window — these two depth-1 conclusions are not independent but structurally dependent"},{"node":"dedup-outlives-aggregation-window","truth_value":"IN","reason":"SL justification valid","antecedents":["dedup-pruning-uses-2x-lateness","watermark-drives-finalization"],"label":"The 2× multiplier ensures dedup coverage extends beyond the point where corrections would be impossible"},{"node":"dedup-pruning-uses-2x-lateness","truth_value":"IN","reason":"premise"},{"node":"deletion-is-append-only-across-all-contexts","truth_value":"IN","reason":"SL justification valid","antecedents":["deletion-strategy-scales-with-distribution","append-only-semantics-span-storage-and-streaming"],"label":"Deletion scales with distribution (depth-3, covering single/distributed) and append-only spans storage/streaming (depth-2) — combining shows append-only is the universal mutation model"},{"node":"append-only-semantics-span-storage-and-streaming","truth_value":"IN","reason":"SL justification valid","antecedents":["append-only-versioning-makes-restore-non-destructive","watermark-finalization-is-irreversible"],"label":"Storage and streaming independently converge on append-only/no-retraction semantics for the same underlying reason: preventing historical revision"},{"node":"no-operation-is-truly-reversible","truth_value":"IN","reason":"SL justification valid","antecedents":["deletion-is-append-only-across-all-contexts","forward-only-extends-to-failure-handling"],"label":"Deletion and failure recovery are the two operations that semantically suggest reversal, but both are implemented as forward-only state additions — the system's two \"undo-like\" paths are both accumulative"},{"node":"forward-only-extends-to-failure-handling","truth_value":"IN","reason":"SL justification valid","antecedents":["forward-only-design-prevents-regression-and-maximizes-progress","retry-escalates-to-permanent-failure"],"label":"The d3 forward-only node covers normal state progression; the d1 retry node covers failure progression — the emergent property is that both follow the same no-rollback principle"},{"node":"retry-escalates-to-permanent-failure","truth_value":"IN","reason":"SL justification valid","antecedents":["notif-exponential-backoff-with-jitter","retry-converts-timeout-to-failure"],"label":"Backoff prevents cascading load; finite retry count ensures eventual resolution (success or permanent failure) rather than indefinite limbo"},{"node":"notif-exponential-backoff-with-jitter","truth_value":"IN","reason":"premise"},{"node":"retry-converts-timeout-to-failure","truth_value":"IN","reason":"premise"},{"node":"symmetric-domains-are-quality-optimal","truth_value":"IN","reason":"SL justification valid","antecedents":["symmetric-domains-achieve-strongest-lifecycle-correctness","module-level-triple-convergence"],"label":"strongest lifecycle correctness + triple convergence yields the codebase's quality apex in symmetric domains"},{"node":"symmetric-domains-achieve-strongest-lifecycle-correctness","truth_value":"IN","reason":"SL justification valid","antecedents":["write-read-lifecycle-is-correct-in-symmetric-domains","forward-only-preserves-correctness-despite-accepted-gaps"],"label":"most domains have either structural or temporal correctness gaps; symmetric domains close both, making them the architecture's correctness ceiling"},{"node":"write-read-lifecycle-is-correct-in-symmetric-domains","truth_value":"IN","reason":"SL justification valid","antecedents":["write-path-is-complete-and-consistent-in-symmetric-domains","reads-are-active-convergence-engines"],"label":"Write completeness (structural) and read convergence (active repair) are complementary halves of the lifecycle — neither alone guarantees end-to-end correctness"},{"node":"write-path-is-complete-and-consistent-in-symmetric-domains","truth_value":"IN","reason":"SL justification valid","antecedents":["symmetric-graphs-enable-complete-lightweight-routing","write-path-is-self-consistent-by-design"],"label":"Graph symmetry guarantees routing completeness while structural discipline guarantees state validity — both needed for full write-path correctness"},{"node":"symmetric-graphs-enable-complete-lightweight-routing","truth_value":"IN","reason":"SL justification valid","antecedents":["social-systems-combine-symmetric-graphs-and-lightweight-fanout","write-time-decisions-are-lightweight-but-binding"],"label":"Social symmetry (d2) guarantees routing completeness; lightweight-but-binding writes (d2) guarantee routing finality — together they mean no read-time correction is needed"},{"node":"social-systems-combine-symmetric-graphs-and-lightweight-fanout","truth_value":"IN","reason":"SL justification valid","antecedents":["symmetric-social-graphs-simplify-visibility","fan-out-write-pushes-references-not-data"],"label":"Symmetric graphs eliminate one-way edge complexity; reference-based fan-out avoids data duplication — together they simplify both the model and the delivery"},{"node":"symmetric-social-graphs-simplify-visibility","truth_value":"IN","reason":"SL justification valid","antecedents":["chat-contacts-always-bidirectional","nearby-friends-friendship-always-symmetric"],"label":"Symmetric graphs eliminate directional visibility checks but prevent asymmetric social models"},{"node":"chat-contacts-always-bidirectional","truth_value":"IN","reason":"premise"},{"node":"nearby-friends-friendship-always-symmetric","truth_value":"IN","reason":"premise"},{"node":"reads-are-active-convergence-engines","truth_value":"IN","reason":"SL justification valid","antecedents":["reads-are-not-pure-across-domains","read-path-absorbs-consistency-and-computation-cost"],"label":"Reads both compute deferred results and mutate state — they are the system's active convergence mechanism"},{"node":"reads-are-not-pure-across-domains","truth_value":"IN","reason":"SL justification valid","antecedents":["kv-read-repair-on-get","email-service-get-email-marks-read"],"label":"Two independent domains (distributed KV, email) both attach mandatory side effects to read operations, showing that reads-with-side-effects is a cross-cutting pattern rather than a domain-specific quirk"},{"node":"email-service-get-email-marks-read","truth_value":"IN","reason":"premise"},{"node":"module-level-triple-convergence","truth_value":"IN","reason":"SL justification valid","antecedents":["modules-are-independently-correct","correctness-simplicity-and-performance-converge"],"label":"the triple convergence (correctness, simplicity, performance from the same structural approach) could be a codebase-level statistical property; module independence proves it holds at the unit level"},{"node":"modules-are-independently-correct","truth_value":"IN","reason":"SL justification valid","antecedents":["module-isolation-is-pedagogical-and-architectural","structural-correctness-is-universally-applied"],"label":"Independent correctness requires both isolation (no shared state) and universal structural discipline — cross-module dependency breaks the independence guarantee","outlist":["dmq-reused-by-stock-exchange"]},{"node":"module-isolation-is-pedagogical-and-architectural","truth_value":"IN","reason":"SL justification valid","antecedents":["operational-conventions-are-module-scoped","deterministic-testability-by-design"],"label":"Pedagogical standalone design and architectural convention locality are mutually reinforcing consequences of module isolation"},{"node":"operational-conventions-are-module-scoped","truth_value":"IN","reason":"SL justification valid","antecedents":["error-boundaries-are-module-local","eviction-timing-has-no-codebase-convention"],"label":"Both nodes identify absent cross-cutting conventions in different operational dimensions; the emergent property is that operational unpredictability is systematic, not incidental"},{"node":"error-boundaries-are-module-local","truth_value":"IN","reason":"SL justification valid","antecedents":["error-signaling-lacks-codebase-convention","none-return-collapses-distinct-failure-modes"],"label":"absence of codebase-wide error convention plus None-return collapse means every module defines its own failure vocabulary"},{"node":"error-signaling-lacks-codebase-convention","truth_value":"IN","reason":"SL justification valid","antecedents":["payment-error-strategy-split","kv-store-quorum-exception","click-aggregator-return-value-signaling","wallet-no-exceptions-caught"],"label":"Four distinct error signaling strategies across four modules with no shared pattern or base exception type"},{"node":"payment-error-strategy-split","truth_value":"IN","reason":"premise"},{"node":"kv-store-quorum-exception","truth_value":"IN","reason":"premise"},{"node":"click-aggregator-return-value-signaling","truth_value":"IN","reason":"premise"},{"node":"wallet-no-exceptions-caught","truth_value":"IN","reason":"premise"},{"node":"none-return-collapses-distinct-failure-modes","truth_value":"IN","reason":"SL justification valid","antecedents":["s3-get-returns-none-for-missing","maps-no-exceptions-none-returns"],"label":"S3 returns None matching HTTP 404 semantics; maps returns None for missing nodes, unreachable targets, and unknown geocodes — both APIs eliminate the need for exception handling but prevent callers from distinguishing \"not found\" from \"error computing result\""},{"node":"s3-get-returns-none-for-missing","truth_value":"IN","reason":"premise"},{"node":"maps-no-exceptions-none-returns","truth_value":"IN","reason":"premise"},{"node":"eviction-timing-has-no-codebase-convention","truth_value":"IN","reason":"SL justification valid","antecedents":["dmq-retention-trimmed-on-publish","fixed-window-single-key-gc","url-shortener-expiration-lazy","dedup-pruning-uses-2x-lateness"],"label":"Four different eviction triggers (write-time, access-time, read-time, watermark-time) with no shared pattern — a notable absence of convention in a codebase that otherwise favors them"},{"node":"dmq-retention-trimmed-on-publish","truth_value":"IN","reason":"premise"},{"node":"fixed-window-single-key-gc","truth_value":"IN","reason":"premise"},{"node":"deterministic-testability-by-design","truth_value":"IN","reason":"SL justification valid","antecedents":["time-injection-enables-deterministic-testing","sdi-modules-are-standalone-learning-artifacts"],"label":"standalone modules eliminate infrastructure dependencies; time injection eliminates non-determinism — together they make every module fully reproducible without any test infrastructure"},{"node":"time-injection-enables-deterministic-testing","truth_value":"IN","reason":"SL justification valid","antecedents":["notif-caller-controls-time","rate-limiter-time-injectable","crawl-uses-simulated-clock"],"label":""},{"node":"notif-caller-controls-time","truth_value":"IN","reason":"premise"},{"node":"rate-limiter-time-injectable","truth_value":"IN","reason":"premise"},{"node":"crawl-uses-simulated-clock","truth_value":"IN","reason":"premise"},{"node":"sdi-modules-are-standalone-learning-artifacts","truth_value":"IN","reason":"SL justification valid","antecedents":["sdi-repo-is-25-independent-modules","sdi-implementations-use-only-stdlib","sdi-implementations-are-in-process-simulations"],"label":"Independence + stdlib-only + simulation compose into zero-dependency pedagogical units"},{"node":"sdi-repo-is-25-independent-modules","truth_value":"IN","reason":"premise"},{"node":"sdi-implementations-use-only-stdlib","truth_value":"IN","reason":"premise"},{"node":"sdi-implementations-are-in-process-simulations","truth_value":"IN","reason":"premise"},{"node":"correctness-simplicity-and-performance-converge","truth_value":"IN","reason":"SL justification valid","antecedents":["correctness-and-simplicity-share-the-same-mechanism","quality-and-performance-strategies-are-aligned"],"label":"The three qualities share structural roots (reuse, construction, access-pattern alignment) rather than being independent optimization axes"},{"node":"correctness-and-simplicity-share-the-same-mechanism","truth_value":"IN","reason":"SL justification valid","antecedents":["correctness-unifies-reuse-and-construction","derivation-over-creation"],"label":"Structural reuse simultaneously provides correctness (inherited invariants) and simplicity (no new abstractions), making them non-competing goals"},{"node":"correctness-unifies-reuse-and-construction","truth_value":"IN","reason":"SL justification valid","antecedents":["correctness-through-structural-reuse","correctness-by-construction-not-validation"],"label":"Structural reuse constrains existing abstractions (depth-3); construction-not-validation uses ratchets and immutability (depth-3) — combining reveals spatial and temporal correctness are unified"},{"node":"correctness-through-structural-reuse","truth_value":"IN","reason":"SL justification valid","antecedents":["structural-discipline-prevents-consistency-bugs","adaptation-over-invention"],"label":"Structural invariants and abstraction reuse compound — correctness emerges from disciplined use of known structures, not novel mechanisms"},{"node":"adaptation-over-invention","truth_value":"IN","reason":"SL justification valid","antecedents":["heap-sign-negation-repurposes-min-heap","special-cases-reuse-existing-abstractions"],"label":"both stdlib data structure adaptation and domain abstraction reuse follow the same principle of minimizing new concepts"},{"node":"heap-sign-negation-repurposes-min-heap","truth_value":"IN","reason":"SL justification valid","antecedents":["leaderboard-negated-score-ordering","url-frontier-strategy-via-sequence-sign"],"label":"Key negation is a recurring trick for descending order in min-heap-only environments"},{"node":"leaderboard-negated-score-ordering","truth_value":"IN","reason":"premise"},{"node":"url-frontier-strategy-via-sequence-sign","truth_value":"IN","reason":"premise"},{"node":"special-cases-reuse-existing-abstractions","truth_value":"IN","reason":"SL justification valid","antecedents":["dmq-dlq-is-regular-topic","email-service-thread-id-is-first-msg"],"label":"Both base beliefs show the pattern of modeling a special concept (DLQ, thread identity) as an instance of the general concept (topic, message ID) rather than creating parallel infrastructure"},{"node":"dmq-dlq-is-regular-topic","truth_value":"IN","reason":"premise"},{"node":"derivation-over-creation","truth_value":"IN","reason":"SL justification valid","antecedents":["identity-derivation-trades-validation-for-simplicity","adaptation-over-invention"],"label":"Both d2 nodes show the same philosophy at different levels — identity derivation avoids creating new coordination, structural adaptation avoids creating new abstractions — the shared principle is that derivation is preferred over creation"},{"node":"quality-and-performance-strategies-are-aligned","truth_value":"IN","reason":"SL justification valid","antecedents":["structural-correctness-and-testability-are-co-designed","write-cost-allocation-matches-access-pattern"],"label":"Structural correctness eliminates runtime validation cost, aligning the quality strategy with the cost-allocation strategy"},{"node":"structural-correctness-and-testability-are-co-designed","truth_value":"IN","reason":"SL justification valid","antecedents":["correctness-by-construction-not-validation","deterministic-testability-by-design"],"label":"Structural correctness narrows the state space; hermetic testing exploits that narrowing for full coverage"},{"node":"architectural-invariants-are-scale-independent-and-redundantly-enforced","truth_value":"IN","reason":"SL justification valid","antecedents":["quality-guarantees-are-scale-and-layer-independent","state-reversal-is-redundantly-prevented"],"label":"two unused depth-9 beliefs representing independent robustness dimensions; combining reveals the architecture's guarantees are robust in a product space (scale-independence × redundant enforcement)"},{"node":"quality-guarantees-are-scale-and-layer-independent","truth_value":"IN","reason":"SL justification valid","antecedents":["quality-convergence-is-scale-independent","forward-only-spans-data-domain-and-execution-layers"],"label":"Quality convergence is scale-independent; forward-only correctness is layer-independent — together they're universal"},{"node":"quality-convergence-is-scale-independent","truth_value":"IN","reason":"SL justification valid","antecedents":["module-level-triple-convergence","pedagogical-breadth-is-safely-contained"],"label":"structural quality patterns operate above implementation complexity; module isolation prevents pedagogical shortcuts from leaking upward"},{"node":"pedagogical-breadth-is-safely-contained","truth_value":"IN","reason":"SL justification valid","antecedents":["multiple-algorithms-serve-pedagogical-breadth","pedagogical-tradeoffs-are-safe-within-module-boundaries"],"label":"Breadth (multiple variants) and tolerance (brute-force implementations) are both safe because module isolation bounds blast radius"},{"node":"multiple-algorithms-serve-pedagogical-breadth","truth_value":"IN","reason":"SL justification valid","antecedents":["multiple-algorithms-behind-unified-interface","sdi-modules-are-standalone-learning-artifacts"],"label":"Algorithm variety (d1) in standalone learning modules (d1) serves education — the reason these modules offer pluggable algorithms isn't runtime flexibility but showing students multiple valid approaches side by side"},{"node":"multiple-algorithms-behind-unified-interface","truth_value":"IN","reason":"SL justification valid","antecedents":["maps-dual-mode-astar-dijkstra","rate-limiter-four-algorithms","url-shortener-two-strategies"],"label":"Algorithm selection is a configuration choice, not an architectural one — all three systems swap strategies without changing their public contract"},{"node":"maps-dual-mode-astar-dijkstra","truth_value":"IN","reason":"premise"},{"node":"rate-limiter-four-algorithms","truth_value":"IN","reason":"premise"},{"node":"url-shortener-two-strategies","truth_value":"IN","reason":"premise"},{"node":"pedagogical-tradeoffs-are-safe-within-module-boundaries","truth_value":"IN","reason":"SL justification valid","antecedents":["brute-force-acceptable-at-pedagogical-scale","bounded-collections-trade-completeness-for-memory","sdi-modules-are-standalone-learning-artifacts"],"label":"module isolation is the safety boundary for pedagogical simplifications; cross-module reuse means a simplified module becomes a production dependency","outlist":["dmq-reused-by-stock-exchange"]},{"node":"brute-force-acceptable-at-pedagogical-scale","truth_value":"IN","reason":"SL justification valid","antecedents":["geohash-nearby-prefix-scan-is-linear","kv-merkle-tree-brute-force-diff","stock-exchange-price-sort-is-full-resort","news-feed-unfollow-purges-via-linear-scan"],"label":"Consistent choice of simple O(n) over optimal O(log n) across unrelated modules indicates a deliberate pedagogical convention"},{"node":"geohash-nearby-prefix-scan-is-linear","truth_value":"IN","reason":"premise"},{"node":"kv-merkle-tree-brute-force-diff","truth_value":"IN","reason":"premise"},{"node":"stock-exchange-price-sort-is-full-resort","truth_value":"IN","reason":"premise"},{"node":"news-feed-unfollow-purges-via-linear-scan","truth_value":"IN","reason":"premise"},{"node":"bounded-collections-trade-completeness-for-memory","truth_value":"IN","reason":"SL justification valid","antecedents":["news-feed-cache-is-bounded-deque","nearby-friends-history-bounded-100","url-shortener-click-history-bounded","gdrive-version-list-bounded"],"label":"Silent eviction via capped collections is the repo's standard memory-bounding pattern"},{"node":"news-feed-cache-is-bounded-deque","truth_value":"IN","reason":"premise"},{"node":"nearby-friends-history-bounded-100","truth_value":"IN","reason":"premise"},{"node":"url-shortener-click-history-bounded","truth_value":"IN","reason":"premise"},{"node":"gdrive-version-list-bounded","truth_value":"IN","reason":"premise"},{"node":"forward-only-spans-data-domain-and-execution-layers","truth_value":"IN","reason":"SL justification valid","antecedents":["state-machines-enforce-temporal-gap-containment","forward-only-stream-processing-is-exactly-once","control-data-separation-enables-forward-progress"],"label":"three independent architectural layers each instantiate forward-only independently"},{"node":"state-machines-enforce-temporal-gap-containment","truth_value":"IN","reason":"SL justification valid","antecedents":["state-machines-instantiate-forward-only-monotonicity","temporal-gaps-are-contained-by-forward-only-design"],"label":"State machines make forward-only containment physical — a gap between check and act cannot regress a state machine past its current position"},{"node":"state-machines-instantiate-forward-only-monotonicity","truth_value":"IN","reason":"SL justification valid","antecedents":["one-directional-state-machines-span-domains","forward-only-and-monotonicity-are-a-single-constraint"],"label":"connects the domain-level observation (state machines span domains) with the architectural principle (forward-only and monotonicity are unified), showing the specific mechanism by which the abstract constraint surfaces in implementations"},{"node":"one-directional-state-machines-span-domains","truth_value":"IN","reason":"SL justification valid","antecedents":["window-lifecycle-one-directional","metrics-alert-state-machine-four-states"],"label":"Both stream windows and alert evaluation use irreversible state machines to prevent regression"},{"node":"metrics-alert-state-machine-four-states","truth_value":"IN","reason":"premise"},{"node":"forward-only-and-monotonicity-are-a-single-constraint","truth_value":"IN","reason":"SL justification valid","antecedents":["forward-only-design-prevents-regression-and-maximizes-progress","monotonicity-is-the-universal-ordering-primitive"],"label":"Forward-only processing and monotonic ordering are temporal vs ordinal views of the same unidirectional constraint"},{"node":"monotonicity-is-the-universal-ordering-primitive","truth_value":"IN","reason":"SL justification valid","antecedents":["id-generators-preserve-monotonic-order","state-ratchets-prevent-regression-across-domains"],"label":"ID generation, messaging cursors, and stream windows all share the non-decreasing-value invariant as their correctness foundation"},{"node":"id-generators-preserve-monotonic-order","truth_value":"IN","reason":"SL justification valid","antecedents":["snowflake-sequence-max-4096-per-ms","ulid-monotonic-within-millisecond","stock-exchange-trade-counter-global","all-stateful-generators-thread-safe"],"label":"Three generators use different monotonicity mechanisms; all share thread-safety via locks — a cross-system pattern of ordered-ID-generation-under-concurrency"},{"node":"snowflake-sequence-max-4096-per-ms","truth_value":"IN","reason":"premise"},{"node":"ulid-monotonic-within-millisecond","truth_value":"IN","reason":"premise"},{"node":"stock-exchange-trade-counter-global","truth_value":"IN","reason":"premise"},{"node":"all-stateful-generators-thread-safe","truth_value":"IN","reason":"premise"},{"node":"forward-only-stream-processing-is-exactly-once","truth_value":"IN","reason":"SL justification valid","antecedents":["dedup-and-finalization-are-coordinated","forward-only-design-prevents-regression-and-maximizes-progress"],"label":"Global dedup keying (event_id alone, not per ad_id) means two legitimate events sharing an ID across different entities are silently merged, breaking per-entity exactly-once semantics","outlist":["dedup-is-global-not-per-ad"]},{"node":"control-data-separation-enables-forward-progress","truth_value":"IN","reason":"SL justification valid","antecedents":["video-pipeline-separates-control-from-data-flow","forward-only-design-prevents-regression-and-maximizes-progress"],"label":"decoupling control (DAG) from data (ctx dict) is what makes forward-only failure handling safe in practice"},{"node":"video-pipeline-separates-control-from-data-flow","truth_value":"IN","reason":"SL justification valid","antecedents":["youtube-ctx-dict-blackboard","youtube-pipeline-dag-structure"],"label":"DAG handles ordering and failure; ctx dict handles data — neither constrains the other"},{"node":"youtube-ctx-dict-blackboard","truth_value":"IN","reason":"premise"},{"node":"state-reversal-is-redundantly-prevented","truth_value":"IN","reason":"SL justification valid","antecedents":["state-reversal-is-uniformly-guarded","temporal-regression-is-structurally-impossible"],"label":"Operational guards and structural ratchets independently prevent state reversal at different levels"},{"node":"state-reversal-is-uniformly-guarded","truth_value":"IN","reason":"SL justification valid","antecedents":["soft-delete-is-dual-purpose","deletion-is-guarded-by-preconditions"],"label":"Deletion is doubly guarded (depth-2 + depth-1), but cancel-without-underflow-guard (base, IN) shows reversal safety doesn't extend beyond delete operations","outlist":["hotel-cancel-no-underflow-guard"]},{"node":"deletion-is-guarded-by-preconditions","truth_value":"IN","reason":"SL justification valid","antecedents":["s3-bucket-delete-requires-empty","email-service-two-phase-delete"],"label":"Both systems gate permanent deletion behind a prior state transition, making accidental data loss a two-mistake problem"},{"node":"s3-bucket-delete-requires-empty","truth_value":"IN","reason":"premise"},{"node":"email-service-two-phase-delete","truth_value":"IN","reason":"premise"},{"node":"temporal-regression-is-structurally-impossible","truth_value":"IN","reason":"SL justification valid","antecedents":["state-machines-enforce-temporal-gap-containment","state-growth-is-unconditionally-monotonic"],"label":"control-plane state machines + data-plane monotonic growth independently prevent regression at their respective levels"},{"node":"state-growth-is-unconditionally-monotonic","truth_value":"IN","reason":"SL justification valid","antecedents":["state-is-irreversibly-accumulative","deletion-reinforces-monotonic-state"],"label":"No-reversal plus deletion-as-addition means the growth property has zero exception paths — not even the designated shrinkage mechanism shrinks"},{"node":"deletion-reinforces-monotonic-state","truth_value":"IN","reason":"SL justification valid","antecedents":["deletion-is-doubly-preserved","state-is-monotonically-accumulative"],"label":"deletion is the natural adversary of monotonic accumulation; showing it is itself accumulative closes the last potential escape path from the monotonicity invariant"},{"node":"deletion-is-doubly-preserved","truth_value":"IN","reason":"SL justification valid","antecedents":["deletion-is-cautious-at-every-level","deletion-is-append-only-across-all-contexts"],"label":"Guards prevent accidental deletion while append-only semantics prevent intentional deletion from destroying data — independent mechanisms, joint guarantee"},{"node":"deletion-is-cautious-at-every-level","truth_value":"IN","reason":"SL justification valid","antecedents":["deletion-is-guarded-by-preconditions","deletion-is-metadata-in-replicated-systems"],"label":"Preconditions guard single-node deletion while metadata models guard distributed deletion, leaving no unprotected path"}]}}