Muzei Live Wallpaper for Android
This report presents the forensic synthetic code analysis of muzei/muzei, a Kotlin project with 4,928 GitHub stars. SynthScan v2.0 examined 65,496 lines of code across 552 source files, recording 144 pattern matches distributed across 11 syntactic categories. The overall adjusted score of 3.7 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).
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.
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.
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.
The scanner identified 144 distinct pattern matches across 11 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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | web/frontend/html/backroom_schedule.html | 384 | function reloadArtworksForCurrentMonth() { | CODE |
| LOW | web/frontend/html/backroom_schedule.html | 443 | function addArtworkFromExternalArtworkUrl(url, publishDate, callback) { | CODE |
| LOW | web/lib/cloudstorage/cloudstorage_api.py | 376 | def _should_get_another_batch(self, content): | CODE |
| LOW | web/lib/cloudstorage/api_utils.py | 49 | def _get_default_retry_params(): | CODE |
| LOW | web/lib/cloudstorage/api_utils.py | 175 | def belong_to_current_request(self): | CODE |
| LOW | web/lib/bs4/element.py | 100 | def _substitute_if_appropriate(cls, ns, f): | CODE |
| LOW | web/lib/bs4/element.py | 1351 | def default_candidate_generator(tag): | CODE |
| LOW | web/lib/bs4/dammit.py | 54 | def _populate_class_variables(): | CODE |
| LOW | web/lib/bs4/dammit.py | 158 | def substitute_xml_containing_entities( | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 89 | def test_public_doctype_with_url(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 96 | def test_namespaced_system_doctype(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 100 | def test_namespaced_public_doctype(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 125 | def test_p_tag_is_never_empty_element(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 135 | def test_unclosed_tags_get_closed(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 145 | def test_br_is_always_empty_element_tag(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 155 | def test_nested_formatting_elements(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 216 | def test_deeply_nested_multivalued_attribute(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 224 | def test_angle_brackets_in_attribute_values_are_escaped(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 227 | def test_entities_in_attributes_converted_to_unicode(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 234 | def test_entities_in_text_converted_to_unicode(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 241 | def test_quot_entity_converted_to_quotation_mark(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 299 | def test_single_quote_attribute_values_become_double_quotes(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 303 | def test_attribute_values_with_nested_quotes_are_left_alone(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 307 | def test_attribute_values_with_double_nested_quotes_get_quoted(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 315 | def test_ampersand_in_attribute_value_gets_escaped(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 323 | def test_escaped_ampersand_in_attribute_value_is_left_alone(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 326 | def test_entities_in_strings_converted_during_parsing(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 333 | def test_smart_quotes_converted_on_the_way_in(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 342 | def test_non_breaking_spaces_converted_on_the_way_in(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 346 | def test_entities_converted_on_the_way_out(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 352 | def test_real_iso_latin_document(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 521 | def test_tags_are_empty_element_if_and_only_if_they_are_empty(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 525 | def test_namespaces_are_preserved(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 532 | def test_closing_namespaced_tag(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 537 | def test_namespaced_attributes(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 542 | def test_namespaced_attributes_xml_namespace(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 555 | def test_html_tags_have_namespace(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 560 | def test_svg_tags_have_namespace(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 568 | def test_mathml_tags_have_namespace(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 575 | def test_xml_declaration_becomes_comment(self): | CODE |
| LOW | web/lib/bs4/testing.py | 173 | def test_preserved_whitespace_in_pre_and_textarea(self): | CODE |
| LOW | web/lib/bs4/testing.py | 178 | def test_nested_inline_elements(self): | CODE |
| LOW | web/lib/bs4/testing.py | 189 | def test_nested_block_level_elements(self): | CODE |
| LOW | web/lib/bs4/testing.py | 196 | def test_correctly_nested_tables(self): | CODE |
| LOW | web/lib/bs4/testing.py | 272 | def test_multivalued_attribute_value_becomes_list(self): | CODE |
| LOW | web/lib/bs4/testing.py | 284 | def test_can_parse_unicode_document(self): | CODE |
| LOW | web/lib/bs4/testing.py | 379 | def test_real_shift_jis_document(self): | CODE |
| LOW | web/lib/bs4/testing.py | 396 | def test_real_hebrew_document(self): | CODE |
| LOW | web/lib/bs4/testing.py | 407 | def test_meta_tag_reflects_current_encoding(self): | CODE |
| LOW | web/lib/bs4/testing.py | 459 | def test_tag_with_no_attributes_can_have_attributes_added(self): | CODE |
| LOW | web/lib/bs4/testing.py | 483 | def test_formatter_processes_script_tag_for_xml_documents(self): | CODE |
| LOW⚡ | web/lib/bs4/testing.py | 495 | def test_can_parse_unicode_document(self): | STRING |
| LOW⚡ | web/lib/bs4/testing.py | 500 | def test_popping_namespaced_tag(self): | STRING |
| LOW⚡ | web/lib/bs4/testing.py | 506 | def test_docstring_includes_correct_encoding(self): | STRING |
| LOW | web/lib/bs4/builder/__init__.py | 129 | def test_fragment_to_document(self, fragment): | CODE |
| LOW | web/lib/bs4/builder/__init__.py | 145 | def _replace_cdata_list_attribute_values(self, tag_name, attrs): | CODE |
| LOW | web/lib/bs4/builder/__init__.py | 288 | def register_treebuilders_from(module): | CODE |
| LOW | web/lib/bs4/builder/_html5lib.py | 52 | def test_fragment_to_document(self, fragment): | CODE |
| LOW | web/lib/bs4/builder/_lxml.py | 208 | def test_fragment_to_document(self, fragment): | CODE |
| LOW | web/lib/bs4/builder/_lxml.py | 231 | def test_fragment_to_document(self, fragment): | CODE |
| 1 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …ava/com/google/android/apps/muzei/api/MuzeiContract.kt | 206 | com.google.android.apps.muzei.api.Artwork.fromCursor(cursor) | CODE |
| CRITICAL | …le/android/apps/muzei/api/provider/ProviderContract.kt | 127 | com.google.android.apps.muzei.api.provider.Artwork.fromCursor(data) | CODE |
| CRITICAL | …/google/android/apps/muzei/wearable/ArtworkTransfer.kt | 50 | return com.google.android.apps.muzei.api.provider.Artwork( | CODE |
| CRITICAL | …om/google/android/apps/muzei/sync/ArtworkLoadWorker.kt | 276 | val providerArtwork = com.google.android.apps.muzei.api.provider.Artwork.fromCursor(data) | CODE |
| CRITICAL | …oogle/android/apps/muzei/sync/ProviderChangedWorker.kt | 289 | val providerArtwork = com.google.android.apps.muzei.api.provider.Artwork.fromCursor(data) | CODE |
| CRITICAL | …e/android/apps/muzei/browse/BrowseProviderViewModel.kt | 77 | com.google.android.apps.muzei.api.provider.Artwork.fromCursor(data) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | web/lib/cloudstorage/cloudstorage_api.py | 35 | Opens a Google Cloud Storage file and returns it as a File-like object. Args: filename: A Google Cloud Storage fi | STRING |
| HIGH | web/lib/cloudstorage/cloudstorage_api.py | 106 | Get GCSFileStat of a Google Cloud storage file. Args: filename: A Google Cloud Storage filename of form '/bucket/ | STRING |
| HIGH | web/lib/cloudstorage/cloudstorage_api.py | 165 | Returns a GCSFileStat iterator over a bucket. Optional arguments can limit the result to a subset of files under buck | STRING |
| HIGH | web/lib/cloudstorage/common.py | 215 | Validate and process a Google Cloud Stoarge path prefix. Args: path_prefix: a Google Cloud Storage path prefix of | STRING |
| HIGH | web/lib/cloudstorage/storage_api.py | 241 | Read one line delimited by '\n' from the file. A trailing newline character is kept in the string. It may be absent | STRING |
| HIGH | web/lib/cloudstorage/storage_api.py | 283 | Read data from RAW file. Args: size: Number of bytes to read as integer. Actual number of bytes read | STRING |
| HIGH | web/lib/cloudstorage/storage_api.py | 373 | Get a segment of the file from Google Storage. Args: start: start offset of the segment. Inclusive. Have to b | STRING |
| HIGH | web/lib/cloudstorage/api_utils.py | 145 | Check init arguments. Args: name: name of the argument. For logging purpose. val: value. Value has to b | STRING |
| HIGH | web/lib/cloudstorage/api_utils.py | 198 | A blocking fetch function similar to urlfetch.fetch. This function should be used when a urlfetch has timed out or th | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | web/lib/cloudstorage/cloudstorage_api.py | 7 | CODE | |
| LOW | web/lib/cloudstorage/__init__.py | 6 | CODE | |
| LOW | web/lib/cloudstorage/__init__.py | 7 | CODE | |
| LOW | web/lib/cloudstorage/__init__.py | 8 | CODE | |
| LOW | web/lib/cloudstorage/__init__.py | 9 | CODE | |
| LOW | web/lib/cloudstorage/__init__.py | 10 | CODE | |
| LOW | web/lib/cloudstorage/__init__.py | 11 | CODE | |
| LOW | web/lib/cloudstorage/__init__.py | 12 | CODE | |
| LOW | web/lib/cloudstorage/__init__.py | 13 | CODE | |
| LOW | web/lib/cloudstorage/__init__.py | 14 | CODE | |
| LOW | web/lib/cloudstorage/__init__.py | 15 | CODE | |
| LOW | web/lib/bs4/dammit.py | 14 | CODE | |
| LOW | web/lib/bs4/dammit.py | 41 | CODE | |
| LOW | web/lib/bs4/testing.py | 4 | CODE | |
| LOW | web/lib/bs4/builder/__init__.py | 2 | CODE | |
| LOW | web/handlers/randomizer.py | 15 | CODE | |
| LOW | web/handlers/randomizer.py | 20 | CODE | |
| LOW | web/handlers/randomizer.py | 25 | CODE | |
| LOW | web/handlers/randomizer.py | 26 | CODE | |
| LOW | web/handlers/backroom.py | 16 | CODE | |
| LOW | web/handlers/backroom.py | 17 | CODE | |
| LOW | web/handlers/backroom.py | 19 | CODE | |
| LOW | web/handlers/backroom.py | 22 | CODE | |
| LOW | web/handlers/backroom.py | 25 | CODE | |
| LOW | web/handlers/backroomarthelper.py | 28 | CODE | |
| LOW | web/handlers/featuredart.py | 18 | CODE | |
| LOW | web/handlers/common.py | 21 | CODE | |
| LOW | web/handlers/archive.py | 30 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | wearable/proguard-project.txt | 1 | # To enable ProGuard in your project, edit project.properties | COMMENT |
| LOW | web/app.yaml | 1 | # Copyright 2014 Google Inc. | COMMENT |
| LOW | web/models.py | 1 | # Copyright 2014 Google Inc. | COMMENT |
| LOW | web/index.yaml | 1 | indexes: | COMMENT |
| LOW | web/lib/bs4/element.py | 121 | (either a tag or a piece of text)""" | COMMENT |
| LOW | web/lib/bs4/builder/__init__.py | 261 | content = tag.get('content') | COMMENT |
| LOW | web/handlers/tasks.py | 1 | # Copyright 2014 Google Inc. | COMMENT |
| LOW | web/handlers/randomizer.py | 1 | # Copyright 2014 Google Inc. | COMMENT |
| LOW | web/handlers/backroom.py | 1 | # Copyright 2014 Google Inc. | COMMENT |
| LOW | web/handlers/__init__.py | 1 | # Copyright 2014 Google Inc. | COMMENT |
| LOW | web/handlers/backroomarthelper.py | 1 | # Copyright 2014 Google Inc. | COMMENT |
| LOW | web/handlers/featuredart.py | 1 | # Copyright 2014 Google Inc. | COMMENT |
| LOW | web/handlers/common.py | 1 | # Copyright 2014 Google Inc. | COMMENT |
| LOW | web/handlers/archive.py | 1 | # Copyright 2014 Google Inc. | COMMENT |
| LOW | web/handlers/main.py | 1 | # Copyright 2014 Google Inc. | COMMENT |
| LOW | gradle/libs.versions.toml | 1 | # | COMMENT |
| LOW | main/proguard-project.txt | 1 | # To enable ProGuard in your project, edit project.properties | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | web/lib/cloudstorage/cloudstorage_api.py | 11 | __all__ = ['delete', | CODE |
| LOW | web/lib/cloudstorage/common.py | 9 | __all__ = ['CS_XML_NS', | CODE |
| LOW | web/lib/cloudstorage/errors.py | 9 | __all__ = ['AuthorizationError', | CODE |
| LOW | web/lib/cloudstorage/storage_api.py | 9 | __all__ = ['ReadBuffer', | CODE |
| LOW | web/lib/cloudstorage/api_utils.py | 7 | __all__ = ['set_default_retry_params', | CODE |
| LOW | web/lib/cloudstorage/rest_api.py | 9 | __all__ = ['add_sync_methods'] | CODE |
| LOW | web/lib/bs4/__init__.py | 24 | __all__ = ['BeautifulSoup'] | CODE |
| LOW | web/lib/bs4/builder/_htmlparser.py | 3 | __all__ = [ | CODE |
| LOW | web/lib/bs4/builder/__init__.py | 10 | __all__ = [ | CODE |
| LOW | web/lib/bs4/builder/_html5lib.py | 1 | __all__ = [ | CODE |
| LOW | web/lib/bs4/builder/_lxml.py | 1 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | web/lib/cloudstorage/cloudstorage_api.py | 285 | CODE | |
| LOW | web/lib/cloudstorage/cloudstorage_api.py | 335 | CODE | |
| LOW | web/lib/cloudstorage/errors.py | 74 | CODE | |
| LOW | web/lib/bs4/dammit.py | 266 | CODE | |
| LOW | web/lib/bs4/dammit.py | 768 | CODE | |
| LOW | web/lib/bs4/builder/__init__.py | 145 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | web/lib/bs4/builder/_html5lib.py | 156 | # Create a brand new NavigableString from this string. | COMMENT |
| MEDIUM | web/handlers/randomizer.py | 63 | # Create a blacklist of keys to avoid repeats | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …om/google/android/apps/muzei/gallery/ChosenPhotoDao.kt | 160 | // Definitely not a tree URI | COMMENT |
| LOW | web/lib/bs4/builder/_html5lib.py | 193 | # but we just set/changed the attributes, so call it again. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …om/google/android/apps/muzei/render/GLTextureView.java | 1617 | // TODO: implement a fairness policy. Currently | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | web/lib/bs4/dammit.py | 418 | except Exception as e: | CODE |