{"results":[{"id":"append-only-semantics-span-storage-and-streaming","text":"Both versioned storage (S3 version lists, GDrive version histories) and stream processing (finalized aggregation windows) use append-only semantics where history is never overwritten or retracted, ensuring complete audit trails and preventing any form of historical revision — a cross-cutting pattern spanning both persistence and computation.","truth_value":"IN","justification_count":1,"dependent_count":1,"challenges":[],"last_reviewed":"2026-06-06T06:26:57","review_result":"pass","source_type":""},{"id":"approximation-spans-counting-windowing-and-similarity","text":"The codebase's approximation strategies form a complete accuracy-cost spectrum: probabilistic structures (HLL for cardinality, Morris for counting, SimHash for similarity) trade accuracy for space, and the sliding window counter trades exact window boundaries for bounded resource consumption via current/previous window weighting — together covering counting, rate limiting, and content dedup.","truth_value":"IN","justification_count":1,"dependent_count":0,"challenges":[],"last_reviewed":"2026-06-06T06:26:57","review_result":"pass","source_type":""},{"id":"autocomplete-blocklist-is-substring","text":"The blocklist filter removes results where any blocklisted term appears as a **substring** of the query, not just exact matches.","truth_value":"OUT","justification_count":0,"dependent_count":1,"challenges":[],"last_reviewed":null,"review_result":null,"source_type":""},{"id":"autocomplete-cache-consistency","text":"Every trie mutation (insert, increment, delete) immediately rebuilds `top_k_cache` for all ancestor nodes via `_update_caches_on_path`; caches are never stale between operations.","truth_value":"IN","justification_count":0,"dependent_count":2,"challenges":[],"last_reviewed":null,"review_result":null,"source_type":""},{"id":"autocomplete-decay-is-read-time","text":"Time decay is computed lazily at query time in `search_prefix` using `raw_freq * decay_factor^hours_elapsed`; raw frequencies stored in the trie are never modified by decay.","truth_value":"IN","justification_count":0,"dependent_count":1,"challenges":[],"last_reviewed":null,"review_result":null,"source_type":""},{"id":"autocomplete-delete-is-soft","text":"Deleting a query zeroes its frequency and unsets `is_end` but does not remove trie nodes from the tree structure — deleted queries leave structural residue.","truth_value":"IN","justification_count":0,"dependent_count":1,"challenges":[],"last_reviewed":null,"review_result":null,"source_type":""},{"id":"autocomplete-fuzzy-is-last-char-only","text":"`fuzzy_suggest()` only tries single-character edits (substitution, deletion, insertion) on the **last character** of the prefix — it is not a full edit-distance search.","truth_value":"OUT","justification_count":0,"dependent_count":1,"challenges":[],"last_reviewed":null,"review_result":null,"source_type":""},{"id":"autocomplete-normalize-at-boundary","text":"All public methods in `AutocompleteTrie` lowercase and truncate queries to 200 characters before any trie operation; internal methods assume normalized input.","truth_value":"IN","justification_count":0,"dependent_count":1,"challenges":[],"last_reviewed":null,"review_result":null,"source_type":""},{"id":"autocomplete-overfetch-compensates-for-filtering","text":"The autocomplete service overfetches results (`k + len(blocklist) * 2`) to compensate for blocklist removals, maintaining result count — but substring matching can remove far more results than the linear compensation formula anticipates.","truth_value":"IN","justification_count":1,"dependent_count":0,"challenges":[],"last_reviewed":"2026-06-06T06:26:57","review_result":"pass","source_type":""},{"id":"autocomplete-search-is-robust","text":"Autocomplete provides consistent, normalized search through boundary normalization (lowercasing, length truncation) and eagerly-rebuilt top-k caches, but fuzzy matching is limited to single-character edits on the last character only — meaning most mid-word typos produce zero results despite the system's otherwise thorough input handling.","truth_value":"IN","justification_count":1,"dependent_count":1,"challenges":[],"last_reviewed":"2026-06-06T06:26:57","review_result":"pass","source_type":""},{"id":"autocomplete-service-overfetches-for-blocklist","text":"`AutocompleteService` requests `k + len(blocklist) * 2` results from the trie to compensate for results that will be removed by blocklist filtering.","truth_value":"IN","justification_count":0,"dependent_count":1,"challenges":[],"last_reviewed":null,"review_result":null,"source_type":""},{"id":"autocomplete-trie-k-floor-is-10","text":"The `AutocompleteService` constructor forces `k=max(k, 10)` for the internal trie, even if the service default is smaller, to provide headroom for blocklist filtering.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null,"source_type":""},{"id":"boundary-normalization-serves-defense-and-correctness","text":"Normalizing inputs once at system boundaries serves dual architectural purposes: it establishes the perimeter defense model that maintains internal data quality (enabling trusted internal callers), and it independently enables robust query behavior (autocomplete search operates on consistent normalized state with eagerly-rebuilt caches) — a single mechanism yielding both security and feature correctness.","truth_value":"IN","justification_count":1,"dependent_count":2,"challenges":[],"last_reviewed":"2026-06-06T06:26:57","review_result":"pass","source_type":""},{"id":"bounded-collections-trade-completeness-for-memory","text":"Four systems use fixed-capacity collections (deque maxlen, list pruning) that silently drop oldest entries to bound memory growth, accepting silent data loss as the tradeoff for guaranteed memory bounds.","truth_value":"IN","justification_count":1,"dependent_count":2,"challenges":[],"last_reviewed":"2026-06-06T06:26:57","review_result":"pass","source_type":""},{"id":"complete-dependency-injection-enables-hermetic-testing","text":"The combination of time injection (notification, rate limiter, crawler) and service injection (payment processor) covers both sources of test non-determinism — temporal behavior and external service responses — unless the inconsistent current_time fallback means some code paths silently revert to wall-clock time when injection is omitted.","truth_value":"IN","justification_count":1,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null,"source_type":""},{"id":"cost-model-adapts-to-access-frequency","text":"The read-heavy default cost model (reads bear increasing correctness burden as distribution complexity grows) is selectively overridden for high-read-frequency paths (autocomplete caches, leaderboard reindexing pre-compute at write time), creating an access-pattern-aware cost allocation rather than a uniform reads-pay policy.","truth_value":"IN","justification_count":1,"dependent_count":3,"challenges":[],"last_reviewed":"2026-06-06T06:26:57","review_result":"pass","source_type":""},{"id":"domain-specialization-achieves-dual-excellence","text":"The architecture achieves excellence through domain-adapted specialization rather than a single optimal pattern: symmetric domains optimize for quality (structurally correct lifecycle + triple convergence of correctness/simplicity/performance), while financial domains optimize for completeness (domain-adapted coordination strategies + emergent auditability from accumulative state).","truth_value":"IN","justification_count":1,"dependent_count":1,"challenges":[],"last_reviewed":"2026-06-06T06:26:57","review_result":"pass","source_type":""},{"id":"duplicate-prevention-is-complete-from-api-to-storage","text":"The architecture achieves complete duplicate prevention from external API boundary to internal storage through complementary forward-only mechanisms: idempotency keys extend forward-only semantics to the client boundary (making duplicate submissions return cached results permanently), while stratified dedup covers internal processing with accuracy adapted to cost (exact key-based at API boundaries, coordinated window-based at stream boundaries, probabilistic at crawl boundaries).","truth_value":"IN","justification_count":1,"dependent_count":0,"challenges":[],"last_reviewed":"2026-06-06T06:26:57","review_result":"pass","source_type":""},{"id":"eager-rebuild-trades-write-cost-for-derived-consistency","text":"Autocomplete and leaderboard both eagerly rebuild derived data structures on every mutation rather than deferring recomputation, guaranteeing that derived state (top-k caches, sorted rankings) is always consistent at the cost of write-path performance.","truth_value":"IN","justification_count":1,"dependent_count":1,"challenges":[],"last_reviewed":"2026-06-06T06:26:57","review_result":"pass","source_type":""},{"id":"financial-auditability-is-emergent-from-accumulation","text":"Payment ledger auditability is supported by the architecture's irreversible accumulation: because double-entry pairs are append-only and balances are derived from complete ledger scans, the full financial history is structurally difficult to lose — though the audit mechanism may have blind spots (such as the integrity verification function's exclusion of transfer transactions), meaning auditability largely follows from the state-growth property but may not guarantee complete traceability without additional verification.","truth_value":"IN","justification_count":1,"dependent_count":2,"challenges":[],"last_reviewed":"2026-06-06T06:26:57","review_result":"invalid","source_type":""}],"count":49,"limit":20,"offset":0}