Repository Analysis

samuelclay/NewsBlur

NewsBlur is a personal news reader that brings people together to talk about the world. A new sound of an old instrument.

5.5 Low AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of samuelclay/NewsBlur, a Python project with 7,565 GitHub stars. SynthScan v2.0 examined 633,194 lines of code across 2903 source files, recording 2866 pattern matches distributed across 21 syntactic categories. The overall adjusted score of 5.5 places this repository in the Low AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

5.5
Adjusted Score
5.5
Raw Score
100%
Time Factor
2026-08-01
Last Push
7.6K
Stars
Python
Language
633.2K
Lines of Code
2.9K
Files
2.9K
Pattern Hits
2026-08-02
Scan Date
0.01
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.

No multi-scan history yet — run the scanner again to build trend data.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 5HIGH 33MEDIUM 297LOW 2531

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 2866 distinct pattern matches across 21 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Hyper-Verbose Identifiers1112 hits · 927 pts
SeverityFileLineSnippetContext
LOWclients/browser-extension/src/options/options.js505async function handleRemoveBlockedDomain(domain) {CODE
LOWclients/browser-extension/src/popup/popup.js139async function syncPendingArchivesFromPopup() {CODE
LOWclients/ios/static/mark.js644 value: function callNoMatchOnInvalidRanges(range, last) {CODE
LOWclients/ios/static/mark.js744 value: function wrapRangeInMappedTextNode(dict, start, end, filterCb, eachCb) {CODE
LOWclients/ios/static/mark.js808 value: function wrapMatchesAcrossElements(regex, ignoreGroups, filterCb, eachCb, endCb) {CODE
LOWclients/ios/static/storyDetailView.js256function applyClassifierHighlights(classifiers) {CODE
LOWarchive/jammit.py98 def javascript_tag_compressed(self, asset_package, asset_type_ext):CODE
LOWarchive/jammit.py107 def stylesheet_tag_compressed(self, asset_package, asset_type_ext):CODE
LOWarchive/fabfile.py150def assign_digitalocean_roledefs(split=False):CODE
LOWarchive/fabfile.py534def setup_repo_local_settings():CODE
LOWarchive/fabfile.py788def switch_forked_mongoengine():CODE
LOWarchive/fabfile.py1676def setup_original_page_server():CODE
LOWarchive/fabfile.py1761def setup_feeds_fetched_monitor():CODE
LOWarchive/ansible/do_inventory.py509 def load_droplet_variables_for_host(self):CODE
LOWarchive/api/newsblur.py169 def mark_story_hashes_as_read(self, story_hashes):CODE
LOWutils/prometheus_worker_slots.py46def discard_corrupt_slot_files(prom_dir, slot):CODE
LOWutils/feed_fetcher.py180def fetch_url_with_scrapingbee(url):CODE
LOWutils/feed_fetcher.py217 def openrss_corrected_address(self, address):CODE
LOWutils/feed_fetcher.py977 def migrate_openrss_feed_address(self):CODE
LOWutils/feed_fetcher.py1331 def compare_feed_attribute_changes(self):CODE
LOWutils/feed_fetcher.py1464 def reset_database_connections(self):CODE
LOWutils/feed_fetcher.py1811 def fetch_and_process_archive_pages(self, feed_id):CODE
LOWutils/feed_fetcher.py1999 def count_unreads_for_subscribers(self, feed, new_story_count=0):CODE
LOWutils/feed_fetcher.py2072 def calculate_feed_scores_with_stories(self, user_subs, stories):CODE
LOWutils/feed_fetcher.py2078 def classify_stories_for_subscribers(self, feed, stories, new_story_count):CODE
LOWutils/feed_functions.py449def strip_underscore_from_feed_address(feed_address):CODE
LOWutils/feed_functions.py496def rewrite_openrss_to_feed_address(url):CODE
LOWutils/fields.py52 def contribute_to_related_class(self, cls, related):CODE
LOWutils/user_functions.py123def invalidate_template_cache(fragment_name, *variables):CODE
LOWutils/ai_functions.py210def classify_stories_with_vision(prompt_classifier, stories, model="claude-haiku-4-5", user_id=None):CODE
LOWutils/reddit_fetcher.py111 def normalized_listing_segments(self):CODE
LOWutils/reddit_fetcher.py131 def should_fetch_original_rss(self):CODE
LOWutils/reddit_fetcher.py163 def extract_listing_path_and_sort(self):CODE
LOWutils/youtube_fetcher.py37def strip_xml_control_characters(value):CODE
LOWutils/youtube_fetcher.py193 def _thumbnail_url_from_snippet(self, payload):CODE
LOWutils/story_functions.py43def _normalize_image_url_for_dedup(url):CODE
LOWutils/story_functions.py84def _image_url_matches_content(media_url, story_content):CODE
LOWutils/story_functions.py118def format_story_link_date__short(date, now=None):CODE
LOWutils/story_functions.py131def format_story_link_date__long(date, now=None):CODE
LOWutils/story_functions.py214def strip_non_embeddable_iframes(content):CODE
LOWutils/story_functions.py399def restore_instagram_data_attributes(content):CODE
LOWutils/story_functions.py447def strip_tags_preserve_blockquote(html):CODE
LOWutils/story_functions.py610def create_imageproxy_signed_url(base_url, hmac_key, url, options=None):CODE
LOWutils/prometheus_middleware.py14def ensure_prometheus_directory():CODE
LOWutils/mongo_raw_log_middleware.py93def _mongodb_decode_wire_protocol(message):CODE
LOWutils/test_prometheus_worker_slots.py112 def test_first_worker_takes_slot_zero(self):CODE
LOWutils/test_prometheus_worker_slots.py115 def test_next_worker_takes_the_next_slot(self):CODE
LOWutils/test_prometheus_worker_slots.py118 def test_a_reaped_workers_slot_is_reused(self):CODE
LOWutils/test_prometheus_worker_slots.py128 def test_live_workers_never_share_a_slot(self):CODE
LOWutils/test_prometheus_worker_slots.py150 def test_recycled_worker_resumes_the_dead_workers_counters(self):CODE
LOWutils/test_prometheus_worker_slots.py164 def test_rolling_recycles_never_decrease_the_counter(self):CODE
LOWutils/test_prometheus_worker_slots.py185 def test_file_count_stays_bounded_across_many_recycles(self):CODE
LOWutils/test_prometheus_worker_slots.py194 def test_file_count_tracks_peak_concurrency(self):CODE
LOWutils/test_prometheus_worker_slots.py206 def test_corrupt_slot_file_is_discarded_before_reuse(self):CODE
LOWutils/test_prometheus_worker_slots.py219 def test_corrupt_file_from_a_dead_worker_does_not_break_the_next_worker(self):CODE
LOWutils/test_prometheus_middleware.py19 def test_requests_preserve_dead_worker_counter_files(CODE
LOWutils/llm_costs.py250 def _report_stripe_meter_event(cls, feature, user_id, profile=None):CODE
LOWutils/S3.py108def query_args_hash_to_string(query_args):CODE
LOWutils/db_functions.py13def mongo_max_replication_lag(connection):CODE
LOWutils/test_haproxy_batch_state.py26 def test_parse_show_servers_state_keeps_first_server_after_version_preamble(self):STRING
1052 more matches not shown…
Decorative Section Separators237 hits · 754 pts
SeverityFileLineSnippetContext
MEDIUMarchive/fabfile.py140# ================COMMENT
MEDIUMarchive/fabfile.py142# ================COMMENT
MEDIUMarchive/fabfile.py1959# ===============COMMENT
MEDIUMarchive/fabfile.py1961# ===============COMMENT
MEDIUMarchive/fabfile.py47# ============COMMENT
MEDIUMarchive/fabfile.py49# ============COMMENT
MEDIUMarchive/fabfile.py227# =============COMMENT
MEDIUMarchive/fabfile.py229# =============COMMENT
MEDIUMarchive/fabfile.py385# ==================COMMENT
MEDIUMarchive/fabfile.py387# ==================COMMENT
MEDIUMarchive/fabfile.py406# ==================COMMENT
MEDIUMarchive/fabfile.py408# ==================COMMENT
MEDIUMarchive/fabfile.py882# ===============COMMENT
MEDIUMarchive/fabfile.py884# ===============COMMENT
MEDIUMarchive/fabfile.py1283# ==============COMMENT
MEDIUMarchive/fabfile.py1285# ==============COMMENT
MEDIUMarchive/fabfile.py1789# ================COMMENT
MEDIUMarchive/fabfile.py1791# ================COMMENT
MEDIUMarchive/fabfile.py1850# =========================COMMENT
MEDIUMarchive/fabfile.py1852# =========================COMMENT
MEDIUMarchive/fabfile.py1994# ==========COMMENT
MEDIUMarchive/fabfile.py1996# ==========COMMENT
MEDIUMarchive/fabfile.py2211# ===========COMMENT
MEDIUMarchive/fabfile.py2213# ===========COMMENT
MEDIUMarchive/fabfile.py2259# ===============COMMENT
MEDIUMarchive/fabfile.py2261# ===============COMMENT
MEDIUMarchive/fabfile.py2281# ==============COMMENT
MEDIUMarchive/fabfile.py2283# ==============COMMENT
MEDIUMutils/check_health.sh59# =====================COMMENT
MEDIUMutils/check_health.sh61# =====================COMMENT
MEDIUMutils/check_health.sh145# =====================COMMENT
MEDIUMutils/check_health.sh147# =====================COMMENT
MEDIUMutils/check_health.sh364# =====================COMMENT
MEDIUMutils/check_health.sh366# =====================COMMENT
MEDIUMnewsblur_web/docker_local_settings.py4# ===================COMMENT
MEDIUMnewsblur_web/docker_local_settings.py6# ===================COMMENT
MEDIUMnewsblur_web/docker_local_settings.py16# ===================COMMENT
MEDIUMnewsblur_web/docker_local_settings.py18# ===================COMMENT
MEDIUMnewsblur_web/docker_local_settings.py86# ===============COMMENT
MEDIUMnewsblur_web/docker_local_settings.py88# ===============COMMENT
MEDIUMnewsblur_web/docker_local_settings.py96# =============COMMENT
MEDIUMnewsblur_web/docker_local_settings.py98# =============COMMENT
MEDIUMnewsblur_web/docker_local_settings.py156# ===========COMMENT
MEDIUMnewsblur_web/docker_local_settings.py158# ===========COMMENT
MEDIUMnewsblur_web/settings.py351# ==============COMMENT
MEDIUMnewsblur_web/settings.py353# ==============COMMENT
MEDIUMnewsblur_web/settings.py362# ===========COMMENT
MEDIUMnewsblur_web/settings.py364# ===========COMMENT
MEDIUMnewsblur_web/settings.py369# ===============COMMENT
MEDIUMnewsblur_web/settings.py371# ===============COMMENT
MEDIUMnewsblur_web/settings.py699# =================COMMENT
MEDIUMnewsblur_web/settings.py701# =================COMMENT
MEDIUMnewsblur_web/settings.py707# ====================COMMENT
MEDIUMnewsblur_web/settings.py709# ====================COMMENT
MEDIUMnewsblur_web/settings.py1043# ==================COMMENT
MEDIUMnewsblur_web/settings.py1045# ==================COMMENT
MEDIUMnewsblur_web/settings.py1054# ==========COMMENT
MEDIUMnewsblur_web/settings.py1056# ==========COMMENT
MEDIUMnewsblur_web/settings.py1061# ==========COMMENT
MEDIUMnewsblur_web/settings.py1063# ==========COMMENT
177 more matches not shown…
Over-Commented Block363 hits · 335 pts
SeverityFileLineSnippetContext
LOWansible.cfg21# Retry establishing the SSH connection this many times before marking a hostCOMMENT
LOWclients/ios/Classes/OfflineCleanImages.h1//COMMENT
LOWclients/ios/Classes/HorizontalPageDelegate.swift1//COMMENT
LOWclients/ios/Classes/HorizontalPageDelegate.swift21//COMMENT
LOWclients/ios/Classes/HorizontalPageDelegate.swift41// let pageIndex = (currentViewController.pageIndex ?? -1) - 1COMMENT
LOWclients/ios/Classes/HorizontalPageDelegate.swift61//COMMENT
LOWclients/ios/Classes/SmallActivityCell.m1//COMMENT
LOWclients/ios/Classes/DividerView.swift1//COMMENT
LOWclients/ios/Classes/SiteCell.m1//COMMENT
LOWclients/ios/Classes/ActivitiesNavigationBar.m1//COMMENT
LOWclients/ios/Classes/ActivitiesNavigationBar.m21// subViewFrame.size.height = 64;COMMENT
LOWclients/ios/Classes/FeedDetailTableCell.m1//COMMENT
LOWclients/ios/Classes/FontSettingsViewController.m1//COMMENT
LOWclients/ios/Classes/ThemeManager.m1//COMMENT
LOWclients/ios/Classes/SmallInteractionCell.m1//COMMENT
LOWclients/ios/Classes/CustomIconRenderer.swift1//COMMENT
LOWclients/ios/Classes/InteractionCell.m1//COMMENT
LOWclients/ios/Classes/FriendsListViewController.m1//COMMENT
LOWclients/ios/Classes/AddSiteViewController.m1//COMMENT
LOWclients/ios/Classes/FeedTableCell.m1//COMMENT
LOWclients/ios/Classes/FeedChooserViewController.m1//COMMENT
LOWclients/ios/Classes/StoryDetailObjCViewController.m1//COMMENT
LOWclients/ios/Classes/StoryPagesObjCViewController.h1//COMMENT
LOWclients/ios/Classes/AuxSceneDelegate.swift61 //TODO: 🚧 perhaps make a toolbar for this windowCOMMENT
LOWclients/ios/Classes/LoginViewController.m1//COMMENT
LOWclients/ios/Classes/DetailViewController.swift1//COMMENT
LOWclients/ios/Classes/DashList.swift161 }COMMENT
LOWclients/ios/Classes/NewsBlurAppDelegate.m1// NewsBlurAppDelegate.mCOMMENT
LOWclients/ios/Classes/NewsBlurAppDelegate.m21#import "FeedChooserViewController.h"COMMENT
LOWclients/ios/Classes/NewsBlurAppDelegate.m41#import "SBJson4.h"COMMENT
LOWclients/ios/Classes/NewsBlurAppDelegate.m401 // NSTimeInterval daysInterval = 60 * 60;COMMENT
LOWclients/ios/Classes/NewsBlurAppDelegate.m2241 [self reloadFeedsView:NO];COMMENT
LOWclients/ios/Classes/FirstTimeUserViewController.m1//COMMENT
LOWclients/ios/Classes/ProfileBadge.m1//COMMENT
LOWclients/ios/Classes/FeedDetailObjCViewController.h1//COMMENT
LOWclients/ios/Classes/AddSiteTableCell.m1//COMMENT
LOWclients/ios/Classes/ShareViewController.m1//COMMENT
LOWclients/ios/Classes/ActivityCell.m1//COMMENT
LOWclients/ios/Classes/FeedsObjCViewController.m1//COMMENT
LOWclients/ios/Classes/FeedsObjCViewController.m21#import "Utilities.h"COMMENT
LOWclients/ios/Classes/FeedsObjCViewController.m721}COMMENT
LOWclients/ios/Classes/FeedsObjCViewController.m1021 [userPreferences synchronize];COMMENT
LOWclients/ios/Classes/FeedsObjCViewController.m1041// [settingsButton setImage:[[ThemeManager themeManager] themedImage:settingsImage] forState:UIControlStateNormal];COMMENT
LOWclients/ios/Classes/StoriesCollection.m1//COMMENT
LOWclients/ios/Classes/SmallInteractionCell.h1//COMMENT
LOWclients/ios/Classes/ThemeManager.h1//COMMENT
LOWclients/ios/Classes/StoryDetailViewController.swift1//COMMENT
LOWclients/ios/Classes/NBCopyLinkActivity.h1//COMMENT
LOWclients/ios/Classes/ActivitiesNavigationBar.h1//COMMENT
LOWclients/ios/Classes/SiteCell.h1//COMMENT
LOWclients/ios/Classes/Storyboards.swift1//COMMENT
LOWclients/ios/Classes/ActivityModule.m1//COMMENT
LOWclients/ios/Classes/OfflineCleanImages.m1//COMMENT
LOWclients/ios/Classes/FontListViewController.m1//COMMENT
LOWclients/ios/Classes/SmallActivityCell.h1//COMMENT
LOW…ts/ios/Classes/FirstTimeUserAddFriendsViewController.m41 COMMENT
LOWclients/ios/Classes/UserTagsViewController.m1//COMMENT
LOWclients/ios/Classes/FeedTableCell.h1//COMMENT
LOWclients/ios/Classes/NewsBlurApplication.h1//COMMENT
LOWclients/ios/Classes/MarkReadMenuViewController.m1//COMMENT
303 more matches not shown…
Excessive Try-Catch Wrapping255 hits · 282 pts
SeverityFileLineSnippetContext
MEDIUMclients/ios/run_ios.py214 print("Error: No simulator UDID specified.\n")CODE
MEDIUMclients/ios/Classes/AuxSceneDelegate.swift31 print("Error activating scene: \(error)")CODE
MEDIUMclients/ios/Classes/AuxSceneDelegate.swift35 print("Error activating scene: \(error)")CODE
MEDIUMclients/ios/scripts/convert_icons_to_pdf.py23 print("Error: cairosvg is required. Install with: pip install cairosvg")CODE
LOWclients/ios/scripts/convert_icons_to_pdf.py47 except Exception as e:CODE
MEDIUMclients/android/run_android.py898 print(f"Error: {exc}", file=sys.stderr)CODE
MEDIUM…NewsBlur Archive/NewsBlur Archive/ViewController.swift62 print("Error opening Safari preferences: \(error)")STRING
LOWarchive/fabfile.py2190 except Exception as e:CODE
LOWarchive/munin/munin/__init__.py57 except Exception as exc:CODE
LOWconfig/gunicorn_conf.py64 except Exception as e:CODE
LOWutils/analytics_degradation.py90 except Exception as e:CODE
LOWutils/prometheus_worker_slots.py68 except Exception as e:CODE
LOWutils/json_functions.py156 except Exception as e:CODE
LOWutils/feed_fetcher.py205 except Exception as e:CODE
LOWutils/feed_fetcher.py633 except Exception as e:CODE
LOWutils/feed_fetcher.py831 except Exception as e:CODE
LOWutils/feed_fetcher.py919 except Exception as e:CODE
LOWutils/feed_fetcher.py945 except Exception:CODE
LOWutils/feed_fetcher.py1356 except Exception as e:CODE
LOWutils/feed_fetcher.py1640 except Exception as e:CODE
LOWutils/feed_fetcher.py1709 except Exception as e:CODE
LOWutils/feed_fetcher.py1745 except Exception as e:CODE
LOWutils/ai_functions.py153 except Exception as e:CODE
LOWutils/ai_functions.py205 except Exception as e:CODE
LOWutils/ai_functions.py401 except Exception as e:CODE
LOWutils/reddit_fetcher.py484 except Exception:CODE
LOWutils/youtube_fetcher.py230 except Exception:CODE
LOWutils/youtube_fetcher.py244 except Exception:CODE
LOWutils/youtube_fetcher.py283 except Exception:CODE
LOWutils/tornado_escape.py38except Exception:CODE
LOWutils/story_functions.py49 except Exception:CODE
LOWutils/story_functions.py232 except Exception:CODE
LOWutils/ip_rate_tracker.py333 except Exception:CODE
LOWutils/ip_rate_tracker.py658 except Exception:CODE
LOWutils/ip_rate_tracker.py745 except Exception:CODE
LOWutils/prometheus_middleware.py21 except Exception as e:CODE
LOWutils/prometheus_middleware.py43 except Exception as retry_error:CODE
LOWutils/prometheus_middleware.py56 except Exception as e:CODE
MEDIUMutils/prometheus_middleware.py33def __call__(self, request):CODE
LOWutils/feedfinder_forman.py45 except Exception as e:CODE
MEDIUMutils/feedfinder_forman.py40def get_feed(self, url, skip_user_agent=False):CODE
LOWutils/webfeed_fetcher.py177 except Exception:CODE
LOWutils/webfeed_fetcher.py184 except Exception:CODE
LOWutils/webfeed_fetcher.py194 except Exception:CODE
LOWutils/webfeed_fetcher.py204 except Exception:CODE
LOWutils/webfeed_fetcher.py212 except Exception:CODE
LOWutils/webfeed_fetcher.py226 except Exception:CODE
LOWutils/webfeed_fetcher.py236 except Exception:CODE
LOWutils/webfeed_fetcher.py246 except Exception:CODE
LOWutils/llm_costs.py199 except Exception:CODE
LOWutils/llm_costs.py214 except Exception as e:CODE
LOWutils/llm_costs.py245 except Exception as e:CODE
LOWutils/llm_costs.py279 except Exception as e:CODE
LOWutils/llm_costs.py291 except Exception:CODE
LOWutils/monitor_task_fetches.py32 except Exception as e:CODE
LOWutils/monitor_work_queue.py30 except Exception as e:CODE
LOWutils/bluesky_fetcher.py37 except Exception as e:CODE
LOWutils/view_functions.py99 except Exception as e:CODE
LOWutils/archive/bootstrap_story_hash.py30 except Exception as e:CODE
LOWutils/backups/offsite_pull.sh183 except Exception:CODE
195 more matches not shown…
Deep Nesting331 hits · 266 pts
SeverityFileLineSnippetContext
LOWclients/ios/run_ios.py156CODE
LOWclients/android/run_android.py623CODE
LOWarchive/jammit.py34CODE
LOWarchive/fabfile.py322CODE
LOWarchive/fabfile.py577CODE
LOWarchive/fabfile.py594CODE
LOWarchive/fabfile.py1115CODE
LOWarchive/fabfile.py1196CODE
LOWarchive/fabfile.py2053CODE
LOWarchive/fabfile.py2375CODE
LOWarchive/munin/munin/cassandra.py26CODE
LOWarchive/munin/munin/cassandra.py52CODE
LOWarchive/munin/munin/__init__.py27CODE
LOWarchive/munin/munin/__init__.py47CODE
LOWarchive/munin/munin/mysql.py13CODE
LOWarchive/ansible/do_inventory.py162CODE
LOWarchive/ansible/do_inventory.py227CODE
LOWutils/zgrep.py117CODE
LOWutils/json_fetcher.py86CODE
LOWutils/json_functions.py43CODE
LOWutils/json_functions.py50CODE
LOWutils/feed_fetcher.py238CODE
LOWutils/feed_fetcher.py1004CODE
LOWutils/feed_fetcher.py1211CODE
LOWutils/feed_fetcher.py1486CODE
LOWutils/feed_fetcher.py1811CODE
LOWutils/rtail.py17CODE
LOWutils/feed_functions.py174CODE
LOWutils/feed_functions.py196CODE
LOWutils/feed_functions.py315CODE
LOWutils/log.py29CODE
LOWutils/redis_raw_log_middleware.py89CODE
LOWutils/redis_raw_log_middleware.py112CODE
LOWutils/feedfinder_pilgrim.py407CODE
LOWutils/tlnb.py34CODE
LOWutils/tlnb.py110CODE
LOWutils/tlnb.py160CODE
LOWutils/user_functions.py135CODE
LOWutils/ai_functions.py33CODE
LOWutils/ai_functions.py158CODE
LOWutils/ai_functions.py210CODE
LOWutils/reddit_fetcher.py179CODE
LOWutils/youtube_fetcher.py174CODE
LOWutils/youtube_fetcher.py287CODE
LOWutils/youtube_fetcher.py513CODE
LOWutils/tornado_escape.py212CODE
LOWutils/story_functions.py148CODE
LOWutils/story_functions.py241CODE
LOWutils/image_functions.py52CODE
LOWutils/ip_rate_tracker.py698CODE
LOWutils/twitter_fetcher.py121CODE
LOWutils/twitter_fetcher.py174CODE
LOWutils/twitter_fetcher.py239CODE
LOWutils/twitter_fetcher.py284CODE
LOWutils/twitter_fetcher.py346CODE
LOWutils/twitter_fetcher.py406CODE
LOWutils/webfeed_fetcher.py111CODE
LOWutils/webfeed_fetcher.py173CODE
LOWutils/mongo_command_monitor.py18CODE
LOWutils/facebook_fetcher.py20CODE
271 more matches not shown…
Unused Imports259 hits · 239 pts
SeverityFileLineSnippetContext
LOWclients/ios/scripts/convert_icons_to_pdf.py16CODE
LOWclients/android/run_android.py56CODE
LOWarchive/munin/munin/cassandra.py4CODE
LOWarchive/munin/munin/riak.py9CODE
LOWarchive/munin/munin/ddwrt.py4CODE
LOWarchive/ansible/do_inventory.py124CODE
LOWarchive/ansible/do_inventory.py124CODE
LOWarchive/ansible/do_inventory.py124CODE
LOWarchive/perf/locust.py1CODE
LOWarchive/perf/locust.py2CODE
LOWarchive/perf/locust.py4CODE
LOWutils/zgrep.py6CODE
LOWutils/zgrep.py11CODE
LOWutils/feed_fetcher.py54CODE
LOWutils/feed_fetcher.py56CODE
LOWutils/feed_fetcher.py58CODE
LOWutils/feed_fetcher.py76CODE
LOWutils/feed_functions.py9CODE
LOWutils/redis_raw_log_middleware.py1CODE
LOWutils/redis_raw_log_middleware.py5CODE
LOWutils/tlnb.py6CODE
LOWutils/ai_functions.py10CODE
LOWutils/ai_functions.py11CODE
LOWutils/youtube_fetcher.py15CODE
LOWutils/youtube_fetcher.py16CODE
LOWutils/story_functions.py14CODE
LOWutils/hostname_ssh.py7CODE
LOWutils/mongo_raw_log_middleware.py5CODE
LOWutils/mongo_raw_log_middleware.py6CODE
LOWutils/mongo_raw_log_middleware.py8CODE
LOWutils/mongo_raw_log_middleware.py13CODE
LOWutils/webfeed_fetcher.py1CODE
LOWutils/webfeed_fetcher.py10CODE
LOWutils/exception_middleware.py7CODE
LOWutils/exception_middleware.py10CODE
LOWutils/monitor_work_queue.py9CODE
LOWutils/S3.py15CODE
LOWutils/S3.py16CODE
LOWutils/templatetags/utils_tags.py4CODE
LOWutils/templatetags/utils_tags.py11CODE
LOWutils/templatetags/utils_tags.py12CODE
LOWutils/templatetags/utils_tags.py12CODE
LOWutils/templatetags/utils_tags.py24CODE
LOWutils/archive/memcached_status.py2CODE
LOWutils/backups/offsite_status.py13CODE
LOWansible/utils/generate_hetzner_inventory.py3CODE
LOWansible/utils/generate_hetzner_inventory.py4CODE
LOWansible/utils/generate_hetzner_inventory.py5CODE
LOWansible/utils/generate_hetzner_inventory.py6CODE
LOWansible/utils/generate_hetzner_inventory.py12CODE
LOWflask_monitor/flask_settings.py8CODE
LOWflask_monitor/db_monitor.py1CODE
LOWnewsblur_web/__init__.py1CODE
LOWnewsblur_web/__init__.py1CODE
LOWnewsblur_web/__init__.py5CODE
LOWnewsblur_web/settings.py769CODE
LOWnewsblur_web/settings.py772CODE
LOWnewsblur_web/settings.py778CODE
LOWnewsblur_web/settings.py785CODE
LOWnewsblur_web/celeryapp.py1CODE
199 more matches not shown…
Redundant / Tautological Comments67 hits · 101 pts
SeverityFileLineSnippetContext
LOWworktree-dev.sh93# Check if setup has been runCOMMENT
LOWworktree-dev.sh177 # Check if we can copy from parent repo (handle both regular repo and worktree)COMMENT
LOWworktree-dev.sh206 # Check if shared services are already running (using original container names)COMMENT
LOWworktree-dev.sh396 # Check if this worktree already has chrome-devtools configured with --isolatedCOMMENT
LOWworktree-dev.sh413# Check if shared services are already runningCOMMENT
LOWworktree-dev.sh522 # Check if any container is in Exited state (potential broken network)COMMENT
LOWclients/ios/scripts/fix_alpha_target.rb32# Check if already added to Alpha targetCOMMENT
LOWclients/ios/scripts/add_files_to_xcode.rb36# Check if files already exist in projectCOMMENT
LOWclients/ios/scripts/add_files_to_xcode.rb65 # Check if Icons group/reference already existsCOMMENT
LOWclients/safari-extension/build.sh20# Check if browser extension existsCOMMENT
LOWarchive/netdata_docker/vars/main.yml10# Set whether to run the Agent web server/dashboard/API, or disable them.COMMENT
LOWutils/test_haproxy_toggle.sh119# Display resultsCOMMENT
LOWutils/feed_fetcher.py130 # Check if any of the indicators are presentCOMMENT
LOWutils/feed_fetcher.py1051 # Check if caller requested a specific max_stories limit (e.g. bootstrap_popular_feeds)COMMENT
LOWutils/feed_fetcher.py1056 # Check if this is a high-volume feed that can handle more storiesCOMMENT
LOWutils/retry_unlinked_loop.sh33 # Check if there are no more unlinked feedsCOMMENT
LOWutils/story_functions.py362 # Check if wrapper has height:0 and padding-bottom (responsive embed pattern)COMMENT
LOWutils/feedfinder_forman.py112 # Check if it is already a feed.COMMENT
LOWutils/search_openrss_24h.py63 # Check if within last 24 hoursCOMMENT
LOWutils/bootstrap_loop.sh65 # Check if we've processed all entriesCOMMENT
LOWutils/load_test_deploy.sh113# Display resultsCOMMENT
LOWutils/view_functions.py80 # Check if in_progress cleared but no result (request failed)COMMENT
LOWutils/view_functions.py173 # Check if parameter is includedCOMMENT
LOWutils/view_functions.py179 # Check if parameter is correct typeCOMMENT
LOWutils/ssh_hz.sh33# Check if an alias is providedCOMMENT
LOWutils/ssh_hz.sh57# Check if a host was foundCOMMENT
LOWansible/roles/consul/tasks/get_consul_manager_ip.py34 # Check if the group existsCOMMENT
LOWnewsblur_web/docker_local_settings.py66# Set this to the username that is shown on the homepage to unauthenticated users.COMMENT
LOWnewsblur_web/settings.py808 # Set traces_sample_rate to 1.0 to capture 100%COMMENT
LOWnewsblur_mcp/newsblur_mcp/cli/auth.py338 # Check if expiredCOMMENT
LOWflask_metrics/flask_metrics_postgres.py51 # Check if this is a primary by looking for connected replicasCOMMENT
LOWflask_metrics/flask_metrics_postgres.py182 # Check if we're in recovery (i.e., a replica)COMMENT
LOWapps/reader/models.py1614 # Check if user is archive and story is outside unread cutoffCOMMENT
LOWapps/reader/models.py3408 # Check if user already has a custom icon for the original feedCOMMENT
LOWapps/reader/views.py1322 # Check if user wants YouTube captions enabledCOMMENT
LOWapps/reader/views.py2768 # Check if user wants YouTube captions enabledCOMMENT
LOWapps/reader/views.py3019 # Check if path can be encoded as ASCIICOMMENT
LOWapps/reader/views.py3797 # Check if Twitter API is active for userCOMMENT
LOWapps/reader/views.py5812 # Check if user is archive tier (required for this feature)COMMENT
LOWapps/reader/views.py5877 # Check if user is archive tier (required for this feature)COMMENT
LOWapps/rss_feeds/models.py4826 # Check if new_tag (case-insensitive) is already presentCOMMENT
LOWapps/rss_feeds/text_importer.py135 # Check if we should try UTF-8 first.COMMENT
LOWapps/rss_feeds/page_importer.py128 # Check if the HTML declares UTF-8 charset and use that instead.COMMENT
LOWapps/rss_feeds/page_importer.py286 # Check if the HTML declares UTF-8 charset and use that instead.COMMENT
LOWapps/rss_feeds/test_rss_feeds.py365 # Check if we're getting the right formatCOMMENT
LOWapps/discover/views.py1488 # Check if a Feed with this address already existsCOMMENT
LOW…/management/commands/index_popular_feeds_for_search.py114 # Check if already indexed (unless reindexing)COMMENT
LOWapps/oauth/views.py928 # Check if this is a browser extension redirectCOMMENT
LOWapps/newsletters/views.py149 # Check if it looks like ImprovMX formatCOMMENT
LOWapps/ask_ai/views.py176 # Read the file content from Django's InMemoryUploadedFileCOMMENT
LOWapps/webfeed/views.py147 # Check if feed already existsCOMMENT
LOWapps/clustering/models.py791 # Check if any member already belongs to an existing clusterCOMMENT
LOWapps/search/models.py755 # Check if index existsCOMMENT
LOWapps/search/models.py881 # Check if already indexed to avoid expensive vector generationCOMMENT
LOWapps/search/models.py1099 # Check if index existsCOMMENT
LOWapps/search/models.py1636 # Check if index existsCOMMENT
LOWapps/profile/models.py2390 # Check if there's already an active subscriptionCOMMENT
LOWapps/profile/middleware.py868 # Check if rate limit would be exceededCOMMENT
LOW…ps/profile/management/commands/generate_dev_session.py28 # Check if we're in developmentCOMMENT
LOW…ps/profile/management/commands/generate_dev_session.py35 # Check if session file exists and is not being forced to regenerateCOMMENT
7 more matches not shown…
Structural Annotation Overuse48 hits · 88 pts
SeverityFileLineSnippetContext
LOWclients/ios/CLAUDE.md154# Step 1: Find available simulators and their UDIDsCOMMENT
LOWclients/ios/CLAUDE.md157# Step 2: Use --udid with any actionCOMMENT
LOWclients/ios/Classes/NewsBlurAppDelegate.m5613 // Step 1: Remove classifier at old scopeCOMMENT
LOWclients/ios/Classes/NewsBlurAppDelegate.m5626 // Step 2: Add classifier at new scope after remove succeedsCOMMENT
LOW…ients/ios/Other Sources/OnePasswordExtension/README.md37### Step 1: Download the Source Code and Sample AppsCOMMENT
LOW…ients/ios/Other Sources/OnePasswordExtension/README.md47### Step 2: Install the Latest versions of 1Password & XcodeCOMMENT
LOW…ients/ios/Other Sources/OnePasswordExtension/README.md60### Step 3: Run the AppsCOMMENT
LOW.claude/commands/commit-all.md19### Step 1: Analyze and group changesCOMMENT
LOW.claude/commands/commit-all.md30### Step 2: Commit each groupCOMMENT
LOW.claude/commands/commit-all.md42### Step 3: ConfirmCOMMENT
LOW.claude/commands/commit.md19### Step 1: Determine which files to stageCOMMENT
LOW.claude/commands/commit.md29### Step 2: Stage the relevant filesCOMMENT
LOW.claude/commands/commit.md35### Step 3: Verify staged changesCOMMENT
LOW.claude/commands/commit.md39### Step 4: CommitCOMMENT
LOW.claude/commands/commit.md57### Step 5: ConfirmCOMMENT
LOW.claude/commands/commit-push.md10### Step 1: CommitCOMMENT
LOW.claude/commands/commit-push.md14### Step 2: PushCOMMENT
LOW.claude/commands/commit-push.md24### Step 3: ConfirmCOMMENT
LOW.claude/commands/feature.md23### Step 1: Find the matching blog postCOMMENT
LOW.claude/commands/feature.md34### Step 2: Study existing feature styleCOMMENT
LOW.claude/commands/feature.md43### Step 3: Write 4-5 feature optionsCOMMENT
LOW.claude/commands/feature.md52### Step 4: Ask the user to choose a featureCOMMENT
LOW.claude/commands/feature.md56### Step 5: Post to productionCOMMENT
LOW.claude/commands/feature.md75### Step 6: Confirm featureCOMMENT
LOW.claude/commands/feature.md79### Step 7: Write tweet setsCOMMENT
LOW.claude/skills/find-skills/SKILL.md36### Step 1: Understand What They NeedCOMMENT
LOW.claude/skills/find-skills/SKILL.md44### Step 2: Check the Leaderboard FirstCOMMENT
LOW.claude/skills/find-skills/SKILL.md52### Step 3: Search for SkillsCOMMENT
LOW.claude/skills/find-skills/SKILL.md66### Step 4: Verify Quality Before RecommendingCOMMENT
LOW.claude/skills/find-skills/SKILL.md74### Step 5: Present Options to the UserCOMMENT
LOW.claude/skills/find-skills/SKILL.md96### Step 6: Offer to InstallCOMMENT
LOWutils/feed_fetcher.py135 # Step 1: HTML Unescaping - convert HTML entities to their literal charactersCOMMENT
LOWutils/feed_fetcher.py139 # Step 2: Encoding ReinterpretationCOMMENT
LOWapps/rss_feeds/models.py4282 # Step 1: Fetch the Google News article page to get signature and timestampCOMMENT
LOWapps/rss_feeds/models.py4302 # Step 2: Call batchexecute API to decode the URLCOMMENT
LOW…s/discover/management/commands/discover_newsletters.py1360 # Step 1: Always fetch sitemap to get publication slugs (fast, idempotent)COMMENT
LOW…s/discover/management/commands/discover_newsletters.py1394 # Step 2: Fetch each publication page for metadataCOMMENT
LOW…r/management/commands/backfill_underpopulated_feeds.py148 # Step 1: Load fixture and identify gapsCOMMENT
LOW…r/management/commands/backfill_underpopulated_feeds.py205 # Step 3: Categorize discovered feeds with ClaudeCOMMENT
LOW…r/management/commands/backfill_underpopulated_feeds.py216 # Step 4: Merge into fixtureCOMMENT
LOWapps/webfeed/tasks.py545 # Step 4: Variants already carry preview stories and are ranked best-first.COMMENT
LOWapps/webfeed/tasks.py409 # Step 1: Fetch page HTMLCOMMENT
LOWapps/webfeed/tasks.py440 # Step 2: Call Claude for XPath analysis. The model is non-deterministicCOMMENT
LOWapps/webfeed/tasks.py492 # Step 3: First analysis pass, plus a single retry when nothing matched.COMMENT
LOWapps/profile/models.py1663 # Step 1: Get the order to retrieve purchaseTokenCOMMENT
LOWapps/profile/models.py1682 # Step 2: Store GooglePlayIds for RTDN mappingCOMMENT
LOWapps/profile/models.py1710 # Step 4: Determine renewals from latestOrderIdCOMMENT
LOWapps/profile/models.py1695 # Step 3: Get full subscription state via purchaseTokenCOMMENT
Cross-Language Confusion14 hits · 78 pts
SeverityFileLineSnippetContext
HIGHarchive/fabfile.py1950 run("mkdir -p ~%s/.ssh && chmod 700 ~%s/.ssh" % (repo_user, repo_user))CODE
HIGHarchive/fabfile.py498 run("mkdir -p ~/.ssh && chmod 700 ~/.ssh")CODE
HIGHarchive/fabfile.py567 run("./configure && make && sudo make install")CODE
HIGHarchive/fabfile.py570 run("./configure && make && sudo make install")CODE
HIGHutils/management_functions.py26 os.dup2(null, i)CODE
HIGHutils/management_functions.py30 os.close(null)CODE
HIGHapps/rss_feeds/models.py4305 '["garturlreq",[["X","X",["X","X"],null,null,1,1,"US:en"'CODE
HIGHapps/rss_feeds/models.py4306 ',null,1,null,null,null,null,null,0,1],"X","X",1,[1,1,1]'CODE
HIGHapps/rss_feeds/models.py4307 f',1,1,null,0,0,null,0],"{base64_str}",{timestamp}'CODE
HIGHapps/rss_feeds/management/commands/calculate_scores.py79 os.dup2(null, i)CODE
HIGHapps/rss_feeds/management/commands/calculate_scores.py83 os.close(null)CODE
HIGHapps/oauth/views.py1164 body: formData.toString()CODE
HIGHapps/notifications/models.py469 apns.push(notification=notification, device_token=token)CODE
HIGHapps/archive_extension/views.py98 matched_story_hash: str or null,STRING
Cross-File Repetition14 hits · 70 pts
SeverityFileLineSnippetContext
HIGHapps/discover/management/commands/discover_podcasts.py0use claude to categorize feeds that don't have categories.STRING
HIGH…s/discover/management/commands/discover_newsletters.py0use claude to categorize feeds that don't have categories.STRING
HIGH…ps/discover/management/commands/discover_subreddits.py0use claude to categorize feeds that don't have categories.STRING
HIGH…ps/discover/management/commands/discover_real_feeds.py0make a get request to feedly, optionally through scrapingbee proxy.STRING
HIGH…s/discover/management/commands/discover_newsletters.py0make a get request to feedly, optionally through scrapingbee proxy.STRING
HIGH…r/management/commands/backfill_underpopulated_feeds.py0make a get request to feedly, optionally through scrapingbee proxy.STRING
HIGHapps/recommendations/tests.py0this file demonstrates two different styles of tests (one doctest and one unittest). these will both pass when you run "STRING
HIGHapps/mobile/tests.py0this file demonstrates two different styles of tests (one doctest and one unittest). these will both pass when you run "STRING
HIGHapps/static/tests.py0this file demonstrates two different styles of tests (one doctest and one unittest). these will both pass when you run "STRING
HIGHapps/api/tests.py0this file demonstrates two different styles of tests (one doctest and one unittest). these will both pass when you run "STRING
HIGHapps/recommendations/tests.py0another way to test that 1 + 1 is equal to 2. >>> 1 + 1 == 2 trueSTRING
HIGHapps/mobile/tests.py0another way to test that 1 + 1 is equal to 2. >>> 1 + 1 == 2 trueSTRING
HIGHapps/static/tests.py0another way to test that 1 + 1 is equal to 2. >>> 1 + 1 == 2 trueSTRING
HIGHapps/api/tests.py0another way to test that 1 + 1 is equal to 2. >>> 1 + 1 == 2 trueSTRING
Fake / Example Data48 hits · 61 pts
SeverityFileLineSnippetContext
LOWclients/ios/Widget Extension/WidgetStory.swift85 content = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur nec ornare dolor. Vivamus porta miCODE
LOWclients/ios/Widget Extension/WidgetStory.swift85 content = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur nec ornare dolor. Vivamus porta miCODE
LOW…er Sources/OnePasswordExtension/OnePasswordExtension.m596'label-tag',m(a));e(c,'label-data',g(a,'data-label'));e(c,'label-aria',g(a,'aria-label'));e(c,'label-top',n(a));b=[];forCODE
LOW…roid/NewsBlur/app/src/test/resources/shortContent.json242 "about": "Minim tempor commodo tempor enim duis voluptate pariatur consequat sit. Eiusmod eiusmod reprehenderit ipsuCODE
LOWapps/reader/forms.py29 attrs={"tabindex": 1, "class": "NB-input", "placeholder": "Username or email"}CODE
LOWapps/reader/forms.py35 widget=forms.PasswordInput(attrs={"tabindex": 2, "class": "NB-input", "placeholder": "Password"}),CODE
LOWapps/reader/forms.py103 widget=forms.TextInput(attrs={"class": "NB-input", "placeholder": "Username"}),CODE
LOWapps/reader/forms.py111 widget=forms.TextInput(attrs={"maxlength": 75, "class": "NB-input", "placeholder": "Email address"}),CODE
LOWapps/reader/forms.py118 attrs={"class": "NB-input", "placeholder": "Password (optional)"},CODE
LOWapps/reader/tests.py55 self.user = User.objects.create_user(username="testuser", password="testpass", email="test@test.com")CODE
LOWapps/analyzer/tests.py88 author="John Doe",CODE
LOWapps/analyzer/tests.py92 self.assertEqual(classifier.author, "John Doe")CODE
LOWapps/analyzer/tests.py369 author="John Doe",CODE
LOWapps/analyzer/tests.py374 story = {"story_feed_id": self.feed.pk, "story_authors": "John Doe"}CODE
LOWapps/analyzer/tests.py1550 author="John Doe",CODE
LOWapps/analyzer/tests.py41 self.user = User.objects.create_user(username="testuser", password="testpass", email="test@test.com")CODE
LOWapps/analyzer/tests.py1519 "story_authors": "John Doe",CODE
LOWapps/analyzer/tests.py1585 author="John Doe",CODE
LOWapps/archive_extension/tests.py61 email="test@test.com",CODE
LOWmedia/js/mobile/jquery.mobile-1.0b1.js4090 if( !this.getAttribute('value') || text.length == 0 || $this.jqmData('placeholder') ){CODE
LOWmedia/js/newsblur/reader/reader_add_feed.js503 this.$('.NB-add-folder-input').attr('placeholder', 'New folder under ' + parent_folder + '...');CODE
LOWmedia/js/newsblur/reader/reader_classifier.js3429 $input.attr('placeholder', 'e.g., \\bcat\\b or dog|bird');CODE
LOWmedia/js/newsblur/reader/reader_classifier.js3431 $input.attr('placeholder', 'e.g., \\bbreaking\\b or urgent|alert');CODE
LOWmedia/js/newsblur/reader/reader_classifier.js3433 $input.attr('placeholder', 'e.g., /news/\\d+ or /category/');CODE
LOWmedia/js/newsblur/reader/reader_classifier.js3435 $input.attr('placeholder', 'e.g., ^Sam or smith|jones');CODE
LOWmedia/js/newsblur/reader/reader_classifier.js3458 $input.attr('placeholder', 'Enter text to match...');CODE
LOWmedia/js/newsblur/reader/reader_classifier.js3460 $input.attr('placeholder', 'Enter URL pattern to match...');CODE
LOWmedia/js/newsblur/reader/reader_classifier.js3462 $input.attr('placeholder', 'Enter author pattern...');CODE
LOWmedia/js/newsblur/reader/reader_classifier.js3464 $input.attr('placeholder', '');CODE
LOWmedia/js/newsblur/views/story_ask_ai_view.js703 $input.attr('placeholder', 'Recording...');CODE
LOWmedia/js/newsblur/views/story_ask_ai_view.js713 $input.attr('placeholder', 'Transcribing...');CODE
LOWmedia/js/newsblur/views/story_ask_ai_view.js721 $input.attr('placeholder', 'Follow up...');CODE
LOWmedia/js/newsblur/views/story_ask_ai_view.js738 $input.attr('placeholder', 'Follow up...');CODE
LOWmedia/js/newsblur/views/story_ask_ai_view.js759 $input.attr('placeholder', 'Quota exceeded');CODE
LOWmedia/js/newsblur/views/story_ask_ai_view.js762 $input.attr('placeholder', 'Follow up...');CODE
LOWmedia/js/newsblur/views/story_detail_view.js2385 $input.attr('placeholder', 'Recording...');CODE
LOWmedia/js/newsblur/views/story_detail_view.js2391 $input.attr('placeholder', 'Transcribing...');CODE
LOWmedia/js/newsblur/views/story_detail_view.js2400 $input.attr('placeholder', 'Ask a question...');CODE
LOWmedia/js/newsblur/views/story_detail_view.js2421 $input.attr('placeholder', 'Quota exceeded');CODE
LOWmedia/js/newsblur/views/story_detail_view.js2428 $input.attr('placeholder', error || 'Error - please try again');CODE
LOWmedia/js/newsblur/views/archive_view.js1749 $input.attr('placeholder', 'Recording...');CODE
LOWmedia/js/newsblur/views/archive_view.js1756 $input.attr('placeholder', 'Transcribing...');CODE
LOWmedia/js/newsblur/views/archive_view.js1763 $input.attr('placeholder', 'Ask about your browsing history...');CODE
LOWmedia/js/newsblur/views/archive_view.js1772 $input.attr('placeholder', 'Ask about your browsing history...');CODE
LOWmedia/js/newsblur/views/archive_view.js1793 $input.attr('placeholder', 'Ask about your browsing history...');CODE
LOWmedia/js/newsblur/views/archive_view.js1798 $input.attr('placeholder', 'Enable microphone in browser settings to use voice input');CODE
LOWmedia/js/newsblur/views/archive_view.js1802 $input.attr('placeholder', error || 'Voice recording failed. Please try again.');CODE
LOWmedia/js/newsblur/views/archive_view.js1805 $input.attr('placeholder', 'Ask about your browsing history...');CODE
Hallucination Indicators5 hits · 50 pts
SeverityFileLineSnippetContext
CRITICAL…/main/java/com/newsblur/compose/DailyBriefingScreen.kt863 colorFilter = androidx.compose.ui.graphics.ColorFilter.tint(archivePurple),CODE
CRITICAL…/main/java/com/newsblur/compose/DailyBriefingScreen.kt880 androidx.compose.ui.graphics.Brush.linearGradient(CODE
CRITICALmedia/js/newsblur/views/folder_view.js662 NEWSBLUR.Views.FeedTitleView.prototype.expand_mark_read.call(this);CODE
CRITICALmedia/js/newsblur/views/dashboard_river_view.js224 NEWSBLUR.app.dashboard_rivers.left.rivers.forEach(function (river) {CODE
CRITICALmedia/js/newsblur/views/story_titles_header_view.js384 NEWSBLUR.Views.FeedTitleView.prototype.expand_mark_read.call(this);CODE
Self-Referential Comments17 hits · 49 pts
SeverityFileLineSnippetContext
MEDIUMdocker/postgres/entrypoint.sh4# Create a user with the specified UID/GIDCOMMENT
MEDIUMutils/ai_functions.py66 # Define the tool for classificationCOMMENT
MEDIUMutils/ratelimit.py18 # This class is designed to be sub-classedCOMMENT
MEDIUMblog/_plugins/paginated_feed.rb28 # Create the feed pageCOMMENT
MEDIUMapps/reader/test_reader.py456 # Create a folder-scoped classifier for "YouTube (no shorts)" (top-level path)COMMENT
MEDIUMapps/reader/test_reader.py543 # Create a folder-scoped classifier with the full nested pathCOMMENT
MEDIUMapps/reader/tests.py142 # Create a story with the new tag alreadyCOMMENT
MEDIUMapps/monitor/views/newsblur_llm_costs.py35 # Define the dimensions we track (use centralized lists from RLLMCosts)COMMENT
MEDIUMapps/discover/views.py1498 # Create a bare Feed record directly — no feed discovery, no HTTP requestsCOMMENT
MEDIUMapps/newsletters/models.py93 # Create a new feed if it doesn't exist by stable newsletter identity.COMMENT
MEDIUMapps/search/models.py199 # Create the finish callbacksCOMMENT
MEDIUMapps/push/test_push.py3# This file is part of djpubsubhubbub.COMMENT
MEDIUMapps/push/test_push.py372 # Create a feed first since PushSubscription requires itSTRING
MEDIUMapps/profile/models.py439 # Create the archived recordCOMMENT
MEDIUMapps/profile/views.py736 # Create the instance.COMMENT
MEDIUM…ps/profile/management/commands/generate_dev_session.py56 # Create a new sessionCOMMENT
MEDIUMapps/analyzer/tests.py1343 # Create a UserSubscriptionFolders entry so the endpoint can organize by folderCOMMENT
Synthetic Comment Markers5 hits · 38 pts
SeverityFileLineSnippetContext
HIGHnode/ask_ai.js1// Ask AI streaming handler -- relays AI-generated story summaries and Q&ACOMMENT
HIGHnode/briefing.js1// Briefing streaming handler -- relays AI-generated news briefing progressCOMMENT
HIGHapps/briefing/views.py227 # views.py: Add display names for AI-generated sections not in BRIEFING_SECTION_DEFINITIONS.COMMENT
HIGHapps/archive_extension/models.py49 # AI-generated categorizationCOMMENT
HIGHmedia/js/newsblur/models/briefing_sections.js26 // the section order from the AI-generated summary HTML.COMMENT
Verbosity Indicators19 hits · 34 pts
SeverityFileLineSnippetContext
LOWclients/ios/Classes/NewsBlurAppDelegate.m5613 // Step 1: Remove classifier at old scopeCOMMENT
LOWclients/ios/Classes/NewsBlurAppDelegate.m5626 // Step 2: Add classifier at new scope after remove succeedsCOMMENT
LOWutils/feed_fetcher.py135 # Step 1: HTML Unescaping - convert HTML entities to their literal charactersCOMMENT
LOWutils/feed_fetcher.py139 # Step 2: Encoding ReinterpretationCOMMENT
LOWapps/rss_feeds/models.py4282 # Step 1: Fetch the Google News article page to get signature and timestampCOMMENT
LOWapps/rss_feeds/models.py4302 # Step 2: Call batchexecute API to decode the URLCOMMENT
LOW…s/discover/management/commands/discover_newsletters.py1360 # Step 1: Always fetch sitemap to get publication slugs (fast, idempotent)COMMENT
LOW…s/discover/management/commands/discover_newsletters.py1394 # Step 2: Fetch each publication page for metadataCOMMENT
LOW…r/management/commands/backfill_underpopulated_feeds.py148 # Step 1: Load fixture and identify gapsCOMMENT
LOW…r/management/commands/backfill_underpopulated_feeds.py205 # Step 3: Categorize discovered feeds with ClaudeCOMMENT
LOW…r/management/commands/backfill_underpopulated_feeds.py216 # Step 4: Merge into fixtureCOMMENT
LOWapps/webfeed/tasks.py545 # Step 4: Variants already carry preview stories and are ranked best-first.COMMENT
LOWapps/webfeed/tasks.py409 # Step 1: Fetch page HTMLCOMMENT
LOWapps/webfeed/tasks.py440 # Step 2: Call Claude for XPath analysis. The model is non-deterministicCOMMENT
LOWapps/webfeed/tasks.py492 # Step 3: First analysis pass, plus a single retry when nothing matched.COMMENT
LOWapps/profile/models.py1663 # Step 1: Get the order to retrieve purchaseTokenCOMMENT
LOWapps/profile/models.py1682 # Step 2: Store GooglePlayIds for RTDN mappingCOMMENT
LOWapps/profile/models.py1710 # Step 4: Determine renewals from latestOrderIdCOMMENT
LOWapps/profile/models.py1695 # Step 3: Get full subscription state via purchaseTokenCOMMENT
AI Slop Vocabulary13 hits · 34 pts
SeverityFileLineSnippetContext
MEDIUMclients/ios/Classes/StoryPagesObjCViewController.m932 // Update content inset on all pages' web views so swiping between them is seamlessCOMMENT
MEDIUMutils/feedfinder_pilgrim.py404##### test harness ######COMMENT
MEDIUMutils/scrubber/__init__.py281 # TODO: This probably needs to be more robustCOMMENT
MEDIUMansible/roles/consul/files/consul.hcl47# This cannot be used in conjunction with the legacy -bootstrap flag. This flag requiresCOMMENT
LOWapps/rss_feeds/models.py1918 # Don't mangle stories with code, just use newCOMMENT
MEDIUMapps/ask_ai/prompts.py48 full_prompt="""Please provide a comprehensive paragraph summary of the following article.CODE
MEDIUMapps/webfeed/prompts.py78 # On retry, the first pass matched nothing; nudge hard toward robust selectors.COMMENT
LOWapps/clustering/models.py801 # existing zCL: — just add new members and update sCL: pointers.COMMENT
MEDIUMapps/profile/views.py401 # Log comprehensive debugging info to diagnose the encoding issueCOMMENT
LOWapps/notifications/models.py414 # - export "Apple Push Service: com.newsblur.NewsBlur" as aps.p12 (or just use aps.cer in #5)COMMENT
MEDIUMmedia/js/mobile/jquery.mobile-1.0b1.js1283// robust, there are a few unfortunate browser bugs surrounding expectedCOMMENT
MEDIUMmedia/js/newsblur/welcome/welcome.js33 // Clone all cards and append them for seamless infinite loop.COMMENT
MEDIUMmedia/js/newsblur/welcome/welcome.js89 // Never wrap — use the duplicate content for seamless transitions.COMMENT
AI Structural Patterns38 hits · 30 pts
SeverityFileLineSnippetContext
LOWarchive/munin/munin/cassandra.py24CODE
LOWutils/mongo_raw_log_middleware.py90CODE
LOWutils/PyRSS2Gen.py314CODE
LOWutils/PyRSS2Gen.py433CODE
LOWutils/exception_middleware.py31CODE
LOWnewsblur_mcp/newsblur_mcp/tools/stories.py9CODE
LOWnewsblur_mcp/newsblur_mcp/tools/stories.py57CODE
LOWnewsblur_mcp/newsblur_mcp/tools/stories.py151CODE
LOWnewsblur_mcp/newsblur_mcp/tools/stories.py190CODE
LOWnewsblur_mcp/newsblur_mcp/tools/classifiers.py7CODE
LOWnewsblur_mcp/newsblur_mcp/tools/classifiers.py64CODE
LOWapps/reader/models.py176CODE
LOWapps/reader/models.py473CODE
LOWapps/reader/models.py739CODE
LOWapps/reader/models.py1521CODE
LOWapps/reader/models.py1637CODE
LOWapps/reader/views.py667CODE
LOWapps/reader/views.py843CODE
LOWapps/social/models.py1090CODE
LOWapps/social/models.py1195CODE
LOWapps/social/models.py1298CODE
LOWapps/social/models.py1410CODE
LOWapps/briefing/scoring.py32CODE
LOWapps/profile/models.py5216CODE
LOWapps/profile/views.py143CODE
LOWapps/profile/views.py165CODE
LOWapps/profile/views.py335CODE
LOWapps/profile/views.py367CODE
LOWapps/profile/views.py378CODE
LOWapps/profile/views.py393CODE
LOWapps/analyzer/models.py1212CODE
LOWapps/analyzer/models.py1402CODE
LOWapps/analyzer/views.py299CODE
LOWapps/analyzer/views.py514CODE
LOWapps/analyzer/views.py807CODE
LOWapps/archive_extension/models.py171CODE
LOWapps/archive_extension/search.py230CODE
LOWapps/archive_extension/search.py320CODE
Slop Phrases5 hits · 13 pts
SeverityFileLineSnippetContext
MEDIUMclients/ios/Other Sources/fmdb/fmdb.m875 // just mix things up a bit for demonstration purposes.COMMENT
MEDIUMclients/ios/Other Sources/fmdb/fmdb.m1262 // just mix things up a bit for demonstration purposes.COMMENT
MEDIUMclients/ios/Other Sources/fmdb/fmdb.m1297 // just mix things up a bit for demonstration purposes.COMMENT
LOWarchive/fabfile.py1420 # Don't forget to add 'setup_postgres_backups' to newCOMMENT
MEDIUMconfig/pystartup.py3# bound to the Esc key by default (you can change it - see readline docs).COMMENT
Modern AI Meta-Vocabulary4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMutils/feed_fetcher.py1497 # If fetching archive pages, come back once the archive scaffolding is builtCOMMENT
MEDIUMapps/webfeed/prompts.py70 # Truncate HTML to ~100KB for LLM context windowCOMMENT
MEDIUMapps/clustering/models.py561 # Two guardrails must pass:COMMENT
MEDIUMapps/clustering/models.py679 # guardrails from find_semantic_clusters apply here for any remainingCOMMENT
Modern Structural Boilerplate9 hits · 10 pts
SeverityFileLineSnippetContext
LOWutils/prometheus_worker_slots.py34logger = logging.getLogger(__name__)CODE
LOWutils/prometheus_middleware.py11logger = logging.getLogger(__name__)CODE
LOWutils/pipeline_utils.py22logger = logging.getLogger(__name__)CODE
LOWutils/scrubber/__init__.py12__all__ = ["Scrubber", "SelectiveScriptScrubber", "ScrubberWarning", "UnapprovedJavascript", "urlize"]CODE
LOWnewsblur_web/__init__.py7__all__ = ["celery_app"]CODE
LOWnewsblur_mcp/newsblur_mcp/auth.py20logger = logging.getLogger(__name__)CODE
LOWnewsblur_mcp/newsblur_mcp/server.py22logger = logging.getLogger(__name__)CODE
LOWnewsblur_mcp/newsblur_mcp/cli/auth.py73def set_server_url(server: str) -> None:CODE
LOWnewsblur_mcp/newsblur_mcp/cli/auth.py280def set_readonly(enabled: bool) -> None:CODE
Example Usage Blocks3 hits · 4 pts
SeverityFileLineSnippetContext
LOWutils/retry_unlinked_loop.sh8# Usage:COMMENT
LOWutils/bootstrap_loop.sh8# Usage:COMMENT
LOWutils/check_health.sh5# Usage:COMMENT