Repository Analysis

Freika/dawarich

Your favorite self-hostable alternative to Google Timeline (Google Location History)

2.8 Likely human-written View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of Freika/dawarich, a Ruby project with 9,720 GitHub stars. SynthScan v2.0 examined 223,865 lines of code across 1715 source files, recording 421 pattern matches distributed across 12 syntactic categories. The overall adjusted score of 2.8 places this repository in the Likely human-written 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).

2.8
Adjusted Score
2.8
Raw Score
100%
Time Factor
2026-07-13
Last Push
9.7K
Stars
Ruby
Language
223.9K
Lines of Code
1.7K
Files
421
Pattern Hits
2026-07-14
Scan Date
0.00
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

This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.

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 0HIGH 2MEDIUM 66LOW 353

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 421 distinct pattern matches across 12 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 Identifiers183 hits · 192 pts
SeverityFileLineSnippetContext
LOWapp/queries/stats/daily_distance_query.rb68 def convert_to_daily_distances(distance_by_day_map)CODE
LOWapp/models/stat.rb163 def calculate_daily_distances(monthly_points)CODE
LOWapp/models/trip.rb78 def select_dominant_orientation(photos)CODE
LOWapp/models/user.rb201 def generate_subscription_token(plan: nil, interval: nil, variant: nil)CODE
LOWapp/models/concerns/calculateable.rb58 def convert_distance_for_storage(calculated_distance_meters)CODE
LOWapp/models/concerns/distanceable.rb16 def calculate_distance_for_array_geocoder(points, unit = :km)CODE
LOWapp/models/concerns/distanceable.rb102 def calculate_distance_for_relation(unit)CODE
LOWapp/models/concerns/distanceable.rb130 def calculate_distance_for_array(points, unit = :km)CODE
LOWapp/models/concerns/distanceable.rb142 def calculate_batch_distances(points)CODE
LOWapp/models/concerns/nearable.rb54 def extract_coordinates_and_options(*args)CODE
LOWapp/models/concerns/archivable.rb78 def handle_archive_fetch_error(error)CODE
LOWapp/serializers/stats_serializer.rb68 def countries_and_cities_from_stats(stats)CODE
LOWapp/serializers/points/gpx_serializer.rb58 def build_track_point_attributes(point)CODE
LOWapp/serializers/points/gpx_serializer.rb67 def enhance_gpx_with_speed_and_course(gpx_xml)CODE
LOWapp/serializers/points/gpx_serializer.rb76 def enhance_trackpoints_with_speed_and_course(xml_string)CODE
LOWapp/serializers/points/gpx_serializer.rb85 def enhance_single_trackpoint(trkpt_xml, point)CODE
LOWapp/javascript/maps/polylines.js620export function reestablishPolylineEventHandlers(CODE
LOWapp/javascript/maps/tracks.js544export function handleIncrementalTrackUpdate(CODE
LOWapp/javascript/maps/helpers.js35export function minutesToDaysHoursMinutes(minutes) {CODE
LOWapp/javascript/maps/map_controls.js92export function createVisitsDrawerControl(onClickCallback, userTheme = "dark") {CODE
LOWapp/javascript/maps/map_controls.js116export function createAreaSelectionControl(CODE
LOWapp/javascript/maps/map_controls.js277export function setAddVisitButtonInactive(button, userTheme = "dark") {CODE
LOWapp/javascript/maps/map_controls.js289export function setCreatePlaceButtonActive(button) {CODE
LOWapp/javascript/maps/map_controls.js304export function setCreatePlaceButtonInactive(button, userTheme = "dark") {CODE
LOW…vascript/controllers/maps/maplibre/map_data_manager.js17export class MapDataManager {CODE
LOWapp/jobs/tracks/realtime_generation_job.rb44 def enqueue_reverse_geocoding(user)CODE
LOWapp/jobs/tracks/daily_generation_job.rb36 def process_user_daily_tracks(user)CODE
LOWapp/jobs/tracks/time_chunk_processor_job.rb96 def create_track_from_points_array(points)CODE
LOWapp/jobs/imports/destroy_job.rb47 def broadcast_deletion_complete(import)CODE
LOWapp/jobs/users/import_data_job.rb65 def create_import_failed_notification(user, error)CODE
LOWapp/jobs/users/recalculate_data_job.rb82 def create_success_notification(years_to_process)CODE
LOWapp/jobs/users/recalculate_data_job.rb93 def create_failure_notification(error)CODE
LOWapp/jobs/users/digests/monthly/calculating_job.rb19 def create_digest_failed_notification(user_id, error)CODE
LOWapp/jobs/users/digests/yearly/calculating_job.rb17 def recalculate_monthly_stats(user_id, year)CODE
LOWapp/jobs/users/digests/yearly/calculating_job.rb25 def create_digest_failed_notification(user_id, error, period_label)CODE
LOWapp/jobs/points/anomaly_backfill_user_job.rb34 def run_filter_in_monthly_chunks(user)CODE
LOWapp/jobs/stats/calculating_job.rb14 def create_stats_update_failed_notification(user_id, error)CODE
LOWapp/controllers/visits_controller.rb238 def build_bulk_update_streams(status, count)CODE
LOWapp/controllers/visits_controller.rb346 def update_visit_name_from_place(place_id)CODE
LOWapp/controllers/visits_controller.rb438 def build_bulk_destroy_streams(count)CODE
LOWapp/controllers/visits_controller.rb506 def message_for_missing_visits(ids)CODE
LOWapp/controllers/visits_controller.rb525 def bulk_destroy_success_message(count)CODE
LOWapp/controllers/imports_controller.rb122 def create_import_from_signed_id(signed_id)CODE
LOWapp/controllers/imports_controller.rb136 def generate_unique_import_name(original_name)CODE
LOWapp/controllers/settings/users_controller.rb158 def create_import_from_signed_archive_id(signed_id)CODE
LOWapp/controllers/settings/users_controller.rb176 def generate_unique_import_name(original_name)CODE
LOWapp/controllers/users/registrations_controller.rb112 def after_inactive_sign_up_path_for(resource)CODE
LOWapp/controllers/users/registrations_controller.rb185 def accept_invitation_for_user(user)CODE
LOWapp/controllers/api/v1/photos_controller.rb31 def handle_thumbnail_response(upstream)CODE
LOWapp/controllers/api/v1/subscriptions_controller.rb127 def advance_last_seen_watermark(decoded)CODE
LOWapp/controllers/api/v1/imports_controller.rb61 def generate_unique_import_name(original_name)CODE
LOWapp/controllers/api/v1/auth/sessions_controller.rb36 def constant_time_authenticate(user, password)CODE
LOWapp/controllers/concerns/share_links/managable.rb123 def broadcast_live_share_ended(share)CODE
LOWapp/helpers/insights_helper.rb20 def monthly_digest_active_days(digest)CODE
LOWapp/helpers/insights_helper.rb44 def weekly_pattern_chart_data(digest, user)CODE
LOWapp/helpers/insights_helper.rb59 def top_locations_from_digest(digest, limit = 3)CODE
LOWapp/helpers/insights_helper.rb107 def first_time_visits_from_digest(digest)CODE
LOWapp/helpers/stats_helper.rb8 def countries_and_cities_stat_for_year(year, stats)CODE
LOWapp/helpers/stats_helper.rb22 def countries_and_cities_stat_for_month(stat)CODE
LOWapp/helpers/stats_helper.rb74 def collect_countries_and_cities(year_stats)CODE
123 more matches not shown…
Self-Referential Comments47 hits · 139 pts
SeverityFileLineSnippetContext
MEDIUMapp/models/concerns/nearable.rb20 # Create a point from the given coordinatesCOMMENT
MEDIUMapp/services/google_maps/records_storage_importer.rb3# This class is used to import Google's Records.json fileCOMMENT
MEDIUMapp/services/google_maps/records_importer.rb3# This class is used to import Google's Records.json fileCOMMENT
MEDIUMapp/services/tasks/imports/google_records.rb3# This class is named based on Google Takeout's Records.json fileCOMMENT
MEDIUMapp/services/tracks/track_builder.rb5# This module provides the core functionality for converting arrays of GPS points intoCOMMENT
MEDIUMapp/services/tracks/segmentation.rb5# This module provides the core algorithm for determining where one track endsCOMMENT
MEDIUMapp/services/tracks/session_manager.rb16 # Create a new sessionCOMMENT
MEDIUMconfig/initializers/permissions_policy.rb5# Define an application-wide HTTP permissions policy. For furtherCOMMENT
MEDIUMconfig/initializers/content_security_policy.rb5# Define an application-wide content security policy.COMMENT
MEDIUMspec/integration/family_privacy_spec.rb147 # Create an expired request 30 minutes agoCOMMENT
MEDIUMspec/integration/family_privacy_spec.rb163 # Create a pending request from A to BCOMMENT
MEDIUMspec/models/concerns/point_validation_spec.rb6 # Create a test class that includes the concernCOMMENT
MEDIUMspec/models/concerns/user_family_spec.rb124 # Create a point from 13 months agoCOMMENT
MEDIUMspec/requests/authentication_spec.rb286 # Create an expired invitationCOMMENT
MEDIUMspec/support/geocoder_stubs.rb6 # Create a generic stub for all Geocoder requestsCOMMENT
MEDIUMspec/jobs/application_job_spec.rb7 # Create a concrete job class to test the helperCOMMENT
MEDIUMspec/jobs/trips/calculate_countries_job_spec.rb20 points # Create the pointsCODE
MEDIUMspec/jobs/concerns/user_timezone_spec.rb6 # Create a dummy class that includes the concernCOMMENT
MEDIUM…ec/services/google_maps/phone_takeout_importer_spec.rb12 # This file contains 3 duplicatesCOMMENT
MEDIUM…ec/services/google_maps/phone_takeout_importer_spec.rb32 # This file contains 4 duplicatesCOMMENT
MEDIUM…/services/google_maps/records_storage_importer_spec.rb148 # Create a mock that will return a successful resultCOMMENT
MEDIUM…/services/google_maps/records_storage_importer_spec.rb153 # Create the downloader mock before it gets usedCOMMENT
MEDIUM…/services/google_maps/records_storage_importer_spec.rb169 # Create the downloader mock before it gets used - expect only one call from the importerCOMMENT
MEDIUMspec/services/cache/clean_spec.rb93 # Create a user that will be found during the cleaning processCOMMENT
MEDIUMspec/services/cache/clean_spec.rb101 # Create a new user while iterating - this should not cause errorsCOMMENT
MEDIUMspec/services/visits/find_within_bounding_box_spec.rb9 # Define a bounding box for testingCOMMENT
MEDIUMspec/services/visits/find_within_bounding_box_spec.rb75 # Create a visit for another user inside the bounding boxCOMMENT
MEDIUMspec/services/tracks/track_builder_spec.rb6 # Create a test class that includes the concern for testingCOMMENT
MEDIUMspec/services/tracks/parallel_generator_spec.rb214 # Create a proper mock and stub user.safe_settings to return itCOMMENT
MEDIUMspec/services/tracks/incremental_generator_spec.rb107 # Create an existing track that ended recentlyCOMMENT
MEDIUMspec/services/overland/params_spec.rb7 # This file contains one valid point and one invalid point w/out coordinatesCOMMENT
MEDIUMspec/services/imports/secure_file_downloader_spec.rb10 # Create a mock that mimics ActiveStorage::Attached::OneCOMMENT
MEDIUMspec/services/users/export_import_integration_spec.rb139 # Create a user with specific places and visitsCOMMENT
MEDIUMspec/services/users/export_import_integration_spec.rb152 # Create a visit without a placeCOMMENT
MEDIUMspec/services/users/export_import_integration_spec.rb435 # Create a v1 format archive with data.jsonCOMMENT
MEDIUMspec/services/users/import_data/imports_spec.rb114 # Create an existing import with same name, source, and created_atCOMMENT
MEDIUMspec/services/users/import_data/trips_spec.rb70 # Create an existing trip with same name and timesCOMMENT
MEDIUMspec/services/users/import_data/stats_spec.rb78 # Create an existing stat with same year and monthCOMMENT
MEDIUMspec/services/users/import_data/points_spec.rb29 country # Create the countryCODE
MEDIUM…c/services/users/import_data/raw_data_archives_spec.rb79 # Create a gzip test fileCOMMENT
MEDIUMspec/services/users/import_data/exports_spec.rb107 # Create the file in the files directoryCOMMENT
MEDIUMspec/services/users/import_data/notifications_spec.rb70 # Create an existing notification with same title, content, and created_atCOMMENT
MEDIUMspec/services/users/import_data/areas_spec.rb70 # Create an existing area with same name and coordinatesCOMMENT
MEDIUMspec/services/users/digests/calculate_year_spec.rb135 # Create the monthly statsCOMMENT
MEDIUMdb/schema.rb1# This file is auto-generated from the current state of the database. InsteadCOMMENT
MEDIUMdb/schema.rb5# This file is the source Rails uses to define your schema when running `bin/railsCOMMENT
MEDIUM.circleci/config.yml50 # Create the queue database manually if it doesn't existCOMMENT
Over-Commented Block82 hits · 82 pts
SeverityFileLineSnippetContext
LOWapp/models/concerns/distance_convertible.rb1# frozen_string_literal: trueCOMMENT
LOWapp/javascript/channels/imports_channel.js1// Imports channel subscriptions are handled by:COMMENT
LOWapp/javascript/channels/index.js1// Import all the channels to be used by Action CableCOMMENT
LOWapp/javascript/channels/points_channel.js1// Points channel subscriptions are handled by:COMMENT
LOWapp/javascript/channels/notifications_channel.js1// Notifications channel subscriptions are handled by:COMMENT
LOWapp/jobs/tracks/realtime_generation_job.rb1# frozen_string_literal: trueCOMMENT
LOWapp/jobs/tracks/daily_generation_job.rb1# frozen_string_literal: trueCOMMENT
LOWapp/assets/config/manifest.js1//= link rails-ujs.jsCOMMENT
LOWapp/helpers/places_helper.rb1# frozen_string_literal: trueCOMMENT
LOWapp/services/responsive_qr_svg.rb1# frozen_string_literal: trueCOMMENT
LOWapp/services/auth/internal_token_secret.rb1# frozen_string_literal: trueCOMMENT
LOWapp/services/auth/mobile_handoff_secret.rb1# frozen_string_literal: trueCOMMENT
LOWapp/services/transportation_modes/movement_analyzer.rb1# frozen_string_literal: trueCOMMENT
LOWapp/services/transportation_modes/mode_classifier.rb1# frozen_string_literal: trueCOMMENT
LOWapp/services/transportation_modes/mode_classifier.rb41 high_speed_boundary: 130, # Very high speeds: train or autobahnCOMMENT
LOWapp/services/transportation_modes/detector.rb1# frozen_string_literal: trueCOMMENT
LOWapp/services/tracks/track_builder.rb1# frozen_string_literal: trueCOMMENT
LOWapp/services/tracks/track_builder.rb21# - Elevation gain/loss: Cumulative ascent and descent in metersCOMMENT
LOWapp/services/tracks/track_builder.rb41# # Track now exists with calculated statisticsCOMMENT
LOWapp/services/tracks/merger.rb1# frozen_string_literal: trueCOMMENT
LOWapp/services/tracks/segmentation.rb1# frozen_string_literal: trueCOMMENT
LOWapp/services/tracks/segmentation.rb21# effectively disables distance-based splitting, so we mirror that behavior on theCOMMENT
LOWapp/services/tracks/incremental_generator.rb1# frozen_string_literal: trueCOMMENT
LOWapp/services/tracks/realtime_debouncer.rb1# frozen_string_literal: trueCOMMENT
LOWapp/services/users/import_data.rb1# frozen_string_literal: trueCOMMENT
LOWapp/services/users/export_data.rb1# frozen_string_literal: trueCOMMENT
LOWapp/services/users/export_data.rb21# ├── raw_data_archives.jsonl # One archive record per lineCOMMENT
LOWapp/services/users/export_data.rb41# "dawarich_version": "1.0.0",COMMENT
LOWapp/services/users/import_data/v2_handler.rb1# frozen_string_literal: trueCOMMENT
LOWapp/services/users/import_data/v2_handler.rb21# ├── points/ # Points split by year/monthCOMMENT
LOWapp/services/users/import_data/v1_handler.rb1# frozen_string_literal: trueCOMMENT
LOWapp/services/timeline/month_summary.rb1# frozen_string_literal: trueCOMMENT
LOWapp/services/concerns/url_validatable.rb1# frozen_string_literal: trueCOMMENT
LOWconfig/storage.yml21 response_checksum_validation: when_requiredCOMMENT
LOWconfig/storage.yml41# mirror:COMMENT
LOWconfig/puma.rb1# frozen_string_literal: trueCOMMENT
LOWconfig/puma.rb21# Specifies the `environment` that Puma will run in.COMMENT
LOWconfig/environments/production.rb41 # Specifies the header that your server uses for sending files.COMMENT
LOWconfig/environments/staging.rb41 # Specifies the header that your server uses for sending files.COMMENT
LOWconfig/environments/staging.rb81 config.action_mailer.perform_caching = falseCOMMENT
LOWconfig/environments/test.rb1# frozen_string_literal: trueCOMMENT
LOWconfig/initializers/new_framework_defaults_8_0.rb1# frozen_string_literal: trueCOMMENT
LOWconfig/initializers/new_framework_defaults_8_0.rb21COMMENT
LOWconfig/initializers/rswag_api.rb1# frozen_string_literal: trueCOMMENT
LOWconfig/initializers/rswag_ui.rb1# frozen_string_literal: trueCOMMENT
LOWconfig/initializers/devise.rb1# frozen_string_literal: trueCOMMENT
LOWconfig/initializers/devise.rb21 config.mailer_sender = ENV['SMTP_FROM']COMMENT
LOWconfig/initializers/devise.rb41 # You can also supply a hash where the value is a boolean determining whetherCOMMENT
LOWconfig/initializers/devise.rb61COMMENT
LOWconfig/initializers/devise.rb81 # The realm used in Http Basic Authentication. 'Application' by default.COMMENT
LOWconfig/initializers/devise.rb101COMMENT
LOWconfig/initializers/devise.rb121COMMENT
LOWconfig/initializers/devise.rb141COMMENT
LOWconfig/initializers/devise.rb161 # config.remember_for = 2.weeksCOMMENT
LOWconfig/initializers/devise.rb181COMMENT
LOWconfig/initializers/devise.rb201 config.unlock_strategy = :bothCOMMENT
LOWconfig/initializers/devise.rb221 config.reset_password_within = 6.hoursCOMMENT
LOWconfig/initializers/devise.rb241 # config.scoped_views = falseCOMMENT
LOWconfig/initializers/devise.rb301 elseCOMMENT
LOWconfig/initializers/devise.rb321 # config.router_name = :my_engineCOMMENT
22 more matches not shown…
Decorative Section Separators14 hits · 57 pts
SeverityFileLineSnippetContext
MEDIUMconfig/initializers/posthog.rb9# ============================================================================COMMENT
MEDIUMconfig/initializers/posthog.rb11# ============================================================================COMMENT
MEDIUMconfig/initializers/posthog.rb52# ============================================================================COMMENT
MEDIUMconfig/initializers/posthog.rb54# ============================================================================COMMENT
MEDIUMconfig/initializers/posthog.rb60 # ============================================================================COMMENT
MEDIUMconfig/initializers/posthog.rb62 # ============================================================================COMMENT
MEDIUMconfig/initializers/posthog.rb69 # ============================================================================COMMENT
MEDIUMconfig/initializers/posthog.rb71 # ============================================================================COMMENT
MEDIUMconfig/initializers/posthog.rb108 # ============================================================================COMMENT
MEDIUMconfig/initializers/posthog.rb110 # ============================================================================COMMENT
MEDIUMconfig/initializers/posthog.rb119# ============================================================================COMMENT
MEDIUMconfig/initializers/posthog.rb121# ============================================================================COMMENT
MEDIUMdocs/How_to_extract_geodata_from_photos.md17#------------------------------------------------------------------------------COMMENT
MEDIUMdocs/How_to_extract_geodata_from_photos.md35#------------------------------------------------------------------------------COMMENT
Fake / Example Data41 hits · 41 pts
SeverityFileLineSnippetContext
LOWspec/swagger/api/v1/auth/apple_controller_spec.rb44 let(:payload) { { id_token: 'fake_token' } }CODE
LOWspec/swagger/api/v1/auth/google_controller_spec.rb44 let(:payload) { { id_token: 'fake_token' } }CODE
LOWspec/queries/stats_query_spec.rb32 geodata: { 'address' => '123 Main St' })CODE
LOWspec/models/family/invitation_spec.rb159 valid_emails = ['test@example.com', 'user.name@domain.co.uk', 'user+tag@example.org']CODE
LOWspec/requests/auth/account_links_spec.rb6 let(:user) { create(:user, email: 'user@example.com') }CODE
LOWspec/requests/users/registrations_spec.rb109 email: 'user@example.com',CODE
LOWspec/requests/users/registrations_spec.rb117 new_user = User.find_by(email: 'user@example.com')CODE
LOWspec/requests/api/v1/auth/google_spec.rb24 post '/api/v1/auth/google', params: { id_token: 'fake_token' }CODE
LOWspec/requests/api/v1/auth/google_spec.rb35 post '/api/v1/auth/google', params: { id_token: 'fake_token' }CODE
LOWspec/requests/api/v1/auth/google_spec.rb53 post '/api/v1/auth/google', params: { id_token: 'fake_token' }CODE
LOWspec/requests/api/v1/auth/google_spec.rb86 post '/api/v1/auth/google', params: { id_token: 'fake_token' }CODE
LOWspec/requests/api/v1/auth/google_spec.rb112 post '/api/v1/auth/google', params: { id_token: 'fake_token' }CODE
LOWspec/requests/api/v1/auth/google_spec.rb131 post '/api/v1/auth/google', params: { id_token: 'fake_token' }CODE
LOWspec/requests/api/v1/auth/google_spec.rb149 post '/api/v1/auth/google', params: { id_token: 'fake_token' }CODE
LOWspec/requests/api/v1/auth/apple_spec.rb24 post '/api/v1/auth/apple', params: { id_token: 'fake_token' }CODE
LOWspec/requests/api/v1/auth/apple_spec.rb35 post '/api/v1/auth/apple', params: { id_token: 'fake_token' }CODE
LOWspec/requests/api/v1/auth/apple_spec.rb53 post '/api/v1/auth/apple', params: { id_token: 'fake_token' }CODE
LOWspec/requests/api/v1/auth/apple_spec.rb81 post '/api/v1/auth/apple', params: { id_token: 'fake_token' }CODE
LOWspec/requests/api/v1/auth/apple_spec.rb101 post '/api/v1/auth/apple', params: { id_token: 'fake_token' }CODE
LOWspec/requests/api/v1/auth/apple_spec.rb127 post '/api/v1/auth/apple', params: { id_token: 'fake_token' }CODE
LOWspec/requests/api/v1/auth/apple_spec.rb146 post '/api/v1/auth/apple', params: { id_token: 'fake_token' }CODE
LOWspec/requests/api/v1/auth/apple_spec.rb163 post '/api/v1/auth/apple', params: { id_token: 'fake_token' }CODE
LOWspec/requests/api/v1/auth/apple_spec.rb184 post '/api/v1/auth/apple', params: { id_token: 'fake_token' }CODE
LOWspec/helpers/application_helper_spec.rb18 let(:fake_user) { double(lite?: true, generate_subscription_token: 'test_token') }CODE
LOWspec/helpers/application_helper_spec.rb21 allow(helper).to receive(:current_user).and_return(fake_user)CODE
LOWspec/helpers/application_helper_spec.rb78 allow(user).to receive(:generate_subscription_token).and_return('fake_token')CODE
LOWspec/helpers/application_helper_spec.rb80 expect(helper.subscription_upgrade_url(user)).to eq('https://manager.example.com/auth/dawarich?token=fake_token')CODE
LOWspec/services/auth/verify_google_token_spec.rb27 .and_return({ 'sub' => 'google-user-id', 'email' => 'user@example.com' })CODE
LOWspec/services/auth/verify_google_token_spec.rb31 expect(result).to eq(sub: 'google-user-id', email: 'user@example.com')CODE
LOWspec/services/auth/verify_apple_token_spec.rb38 email: 'user@example.com',CODE
LOWspec/services/auth/verify_apple_token_spec.rb49 expect(claims[:email]).to eq('user@example.com')CODE
LOWspec/services/auth/verify_apple_token_spec.rb95 email: 'user@example.com',CODE
LOWspec/services/auth/verify_apple_token_spec.rb113 email: 'user@example.com',CODE
LOWspec/services/visits/names/builder_spec.rb64 'street' => '123 Main St',CODE
LOWspec/services/visits/names/builder_spec.rb91 'street' => '123 Main St',CODE
LOWspec/services/visits/names/suggester_spec.rb100 'street' => '123 Main St',CODE
LOW…c/services/reverse_geocoding/places/fetch_data_spec.rb683 expect(place.name).to include('123 Main Street')CODE
LOWspec/services/users/export_data/points_spec.rb48 geodata: { 'address' => '123 Main St' },CODE
LOWspec/services/users/export_data/points_spec.rb101 'geodata' => '{"address": "123 Main St"}', # JSON stringCODE
LOWspec/services/users/import_data/places_spec.rb14 'geodata' => { 'address' => '123 Main St' },CODE
LOWspec/services/users/import_data/places_spec.rb47 expect(home_place.geodata).to eq('address' => '123 Main St')CODE
Redundant / Tautological Comments22 hits · 34 pts
SeverityFileLineSnippetContext
LOWapp/models/concerns/distanceable.rb26 # Check if lonlat exists and is validCOMMENT
LOWapp/models/concerns/distanceable.rb70 # Check if Geocoder returned NaN or infinite valueCOMMENT
LOWapp/models/concerns/distanceable.rb263 # Check if Geocoder returned valid distanceCOMMENT
LOWapp/jobs/tracks/time_chunk_processor_job.rb92 # Check if segment overlaps with the actual chunk range (not buffer)COMMENT
LOWapp/controllers/insights_controller.rb143 # Check if essential data is missingCOMMENT
LOWapp/controllers/insights_controller.rb146 # Check if stats have been updated since digest was last calculatedCOMMENT
LOWapp/controllers/concerns/safe_timestamp_parser.rb20 # Check if it's a valid parse by seeing if year is suspiciously at epochCOMMENT
LOWapp/helpers/insights_helper.rb29 # Check if previous month exists in available months (same year only for simplicity)COMMENT
LOWapp/helpers/insights_helper.rb38 # Check if next month exists in available months (same year only for simplicity)COMMENT
LOWapp/helpers/insights_helper.rb172 # Check if activity breakdown has meaningful dataCOMMENT
LOWapp/services/location_search/geocoding_service.rb63 # Check if there's already a result within 100mCOMMENT
LOWapp/services/tracks/boundary_detector.rb194 # Check if two tracks are spatially connected (endpoints are close)COMMENT
LOWapp/services/tracks/boundary_detector.rb219 # Check if two points are within the specified distanceCOMMENT
LOWapp/services/tracks/time_chunker.rb81 # Check if there are any points in the buffer range to avoid empty chunksCOMMENT
LOWapp/services/tracks/session_manager.rb60 # Check if session existsCOMMENT
LOWapp/services/tracks/session_manager.rb107 # Check if all chunks are completedCOMMENT
LOWapp/services/imports/source_detector.rb163 # Check if it's a KMZ file (ZIP archive)COMMENT
LOWconfig/environments/production.rb87 # Set this to true and configure the email server for immediate delivery to raise delivery errors.COMMENT
LOWconfig/environments/staging.rb84 # Set this to true and configure the email server for immediate delivery to raise delivery errors.COMMENT
LOWconfig/initializers/00_random.rb16 # Check if Random.urandom is availableCOMMENT
LOWspec/models/concerns/user_family_spec.rb81 # Set started_at to well in the past so general tests can find their points.COMMENT
LOW…/services/google_maps/records_storage_importer_spec.rb118 # Set up to capture batch sizesCOMMENT
Structural Annotation Overuse10 hits · 20 pts
SeverityFileLineSnippetContext
LOWdocker/web-entrypoint.sh90# Step 1: Database SetupCOMMENT
LOWdocker/web-entrypoint.sh96# Step 2: Run migrations for all databasesCOMMENT
LOWapp/models/concerns/soft_deletable.rb6 # WARNING: This concern adds a default_scope that excludes soft-deleted records.COMMENT
LOWspec/requests/family_workflows_spec.rb12 # Step 1: User1 creates a familyCOMMENT
LOWspec/requests/family_workflows_spec.rb29 # Step 2: User1 invites User2COMMENT
LOWspec/requests/family_workflows_spec.rb41 # Step 3: User2 views and accepts invitationCOMMENT
LOWspec/requests/family_workflows_spec.rb57 # Step 4: User1 invites User3COMMENT
LOWspec/requests/family_workflows_spec.rb67 # Step 5: User3 accepts invitationCOMMENT
LOWspec/requests/family_workflows_spec.rb74 # Step 6: Family owner views members on family show pageCOMMENT
LOWspec/requests/family_workflows_spec.rb79 # Step 7: Owner removes a memberCOMMENT
Verbosity Indicators9 hits · 18 pts
SeverityFileLineSnippetContext
LOWdocker/web-entrypoint.sh90# Step 1: Database SetupCOMMENT
LOWdocker/web-entrypoint.sh96# Step 2: Run migrations for all databasesCOMMENT
LOWspec/requests/family_workflows_spec.rb12 # Step 1: User1 creates a familyCOMMENT
LOWspec/requests/family_workflows_spec.rb29 # Step 2: User1 invites User2COMMENT
LOWspec/requests/family_workflows_spec.rb41 # Step 3: User2 views and accepts invitationCOMMENT
LOWspec/requests/family_workflows_spec.rb57 # Step 4: User1 invites User3COMMENT
LOWspec/requests/family_workflows_spec.rb67 # Step 5: User3 accepts invitationCOMMENT
LOWspec/requests/family_workflows_spec.rb74 # Step 6: Family owner views members on family show pageCOMMENT
LOWspec/requests/family_workflows_spec.rb79 # Step 7: Owner removes a memberCOMMENT
AI Slop Vocabulary5 hits · 14 pts
SeverityFileLineSnippetContext
MEDIUMapp/queries/stats_query.rb21 # Split into two queries to leverage partial indexes:COMMENT
MEDIUMapp/javascript/maps_maplibre/utils/route_segmenter.js121 // Stitch segments at ±180° with interpolated latitude for seamless renderingCOMMENT
LOWapp/controllers/visits_controller.rb141 # name the picker just set.COMMENT
MEDIUMapp/services/tracks/track_builder.rb12# 3. Calculates comprehensive statistics: distance, duration, average speedCOMMENT
MEDIUMconfig/initializers/rswag_api.rb12 # For example, you could leverage this to dynamically assign the "host" propertyCOMMENT
Magic Placeholder Names2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHCHANGELOG.md2395- Fix authentication to `GET /api/v1/countries/visited_cities` with header `Authorization: Bearer YOUR_API_KEY` instead CODE
HIGHCHANGELOG.md2691Authorization: Bearer YOUR_API_KEYCODE
Example Usage Blocks5 hits · 8 pts
SeverityFileLineSnippetContext
LOWapp/models/concerns/distance_convertible.rb14# Usage:COMMENT
LOWapp/jobs/transportation_modes/backfill_job.rb9 # Usage:COMMENT
LOWapp/services/transportation_modes/detector.rb9 # Usage:COMMENT
LOWapp/services/tracks/track_builder.rb31# Example usage:COMMENT
LOWapp/services/tracks/segmentation.rb31# Example usage:COMMENT
Slop Phrases1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMspec/spec_helper.rb55 # with RSpec, but feel free to customize to your heart's content.COMMENT