Common Voice is part of Mozilla's initiative to help teach machines how real people speak.
This report summarizes scanner evidence for common-voice/common-voice, a TypeScript project with 3,497 GitHub stars. SynthScan examined 1,116,220 lines of code across 1805 source files, recording 291 pattern matches distributed across 15 syntactic categories. The legacy adjusted pattern signal is 0.3 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 201 finding(s).
Are imports declared and package/API names verified? 63 finding(s).
Are wrappers, guards, and repeated structures necessary? 177 finding(s).
Which changes need focused human review? 291 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 291 distinct pattern matches across 15 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. 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 configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | web/test/mock-localization-provider.tsx | 8 | function collectFilesWithExtension( | CODE |
| LOW | web/src/platforms.ts | 263 | export function detectExtendedBrowserEnvironment(): ExtendedBrowserEnvironment { | CODE |
| LOW | web/src/stores/abort-contribution-modal.ts | 58 | export function abortContributionModalReducer( | CODE |
| LOW | web/src/components/locale-helpers.tsx | 59 | export function useContributableNativeNames() { | CODE |
| LOW | web/src/components/locale-helpers.tsx | 63 | export function useSpontaneousSpeechLocales() { | CODE |
| LOW | web/src/components/locale-helpers.tsx | 110 | export function useNativeNameAvailableLocales() { | CODE |
| LOW | web/src/hooks/store-hooks.ts | 108 | export function useAbortContributionModal() { | CODE |
| LOW | server/src/auth-router.ts | 297 | function createSessionCookieOptions(): CookieOptions { | CODE |
| LOW | server/src/lib/model.ts | 36 | async function fetchLocalizedPercentagesByLocale(): Promise<any> { | CODE |
| LOW | server/src/lib/redis-cache/lazy-cache.ts | 387 | export async function redisSetAddManyWithExpiry( | CODE |
| LOW | server/src/lib/redis-cache/lazy-cache.ts | 403 | export async function redisSetFillManyWithExpiry( | CODE |
| LOW | server/src/lib/redis-cache/lazy-cache.ts | 755 | async function computeAndCache( | CODE |
| LOW | server/src/lib/model/goals.ts | 239 | export async function checkGoalsAfterContribution( | CODE |
| LOW | server/src/lib/model/leaderboard.ts | 76 | async function getAllClipLeaderboardData(): Promise<LeaderboardDataRow[]> { | CODE |
| LOW | server/src/lib/model/leaderboard.ts | 127 | async function getAllVoteLeaderboardData(): Promise<LeaderboardDataRow[]> { | CODE |
| LOW | server/src/lib/model/db/import-locales.ts | 276 | async function fetchAllLocalesWithPagination() { | CODE |
| LOW | server/src/infrastructure/fs/fp-fs.ts | 13 | export function collectFilesWithExtension( | CODE |
| LOW | scripts/import-locales.js | 102 | async function importContributableLocales(locales) { | CODE |
| LOW | scripts/import-locales.js | 135 | async function buildLocaleNativeNameMapping() { | CODE |
| LOW | bundler/uploader/tests/test_disabler_cli.py | 23 | def test_dry_run_needs_no_key(self, tmp_path: Any) -> None: | CODE |
| LOW | bundler/uploader/tests/test_disabler_cli.py | 57 | def test_prod_without_yes_aborts(self, tmp_path: Any) -> None: | CODE |
| LOW | bundler/uploader/tests/test_disabler_cli.py | 69 | def test_failure_exits_nonzero(self, tmp_path: Any) -> None: | CODE |
| LOW | bundler/uploader/tests/test_streaming.py | 23 | def test_sends_correct_payload(self, _mock_url, mock_req) -> None: | CODE |
| LOW | bundler/uploader/tests/test_streaming.py | 61 | def test_fresh_upload_initiates(self, mock_save, mock_init, tmp_path) -> None: | CODE |
| LOW | bundler/uploader/tests/test_streaming.py | 79 | def test_mismatched_state_restarts(self, mock_save, mock_init, tmp_path) -> None: | CODE |
| LOW | bundler/uploader/tests/test_streaming.py | 106 | def test_matching_state_resumes(self, tmp_path) -> None: | CODE |
| LOW | bundler/uploader/tests/test_streaming.py | 151 | def test_small_file_single_part( | CODE |
| LOW | bundler/uploader/tests/test_streaming.py | 229 | def test_resume_skips_uploaded_parts( | CODE |
| LOW | bundler/uploader/tests/test_streaming.py | 285 | def test_invalid_part_size_raises(self, mock_gcs, tmp_path) -> None: | CODE |
| LOW | bundler/uploader/tests/test_log.py | 22 | def test_log_file_creates_file_handler(self, tmp_path) -> None: # type: ignore[no-untyped-def] | CODE |
| LOW | bundler/uploader/tests/test_log.py | 34 | def test_log_file_captures_debug_without_verbose( # type: ignore[no-untyped-def] | CODE |
| LOW | bundler/uploader/tests/test_log.py | 51 | def test_log_file_uses_bundler_formatter( # type: ignore[no-untyped-def] | CODE |
| LOW | bundler/uploader/tests/test_log.py | 64 | def test_datacollective_logger_captured(self, tmp_path) -> None: # type: ignore[no-untyped-def] | CODE |
| LOW | bundler/uploader/tests/test_log.py | 77 | def test_no_duplicate_file_handlers(self, tmp_path) -> None: # type: ignore[no-untyped-def] | CODE |
| LOW | bundler/uploader/tests/test_log.py | 89 | def test_no_log_file_skips_file_handler(self) -> None: | CODE |
| LOW | bundler/uploader/tests/test_state.py | 38 | def test_record_failed_with_error(self, tmp_path: object) -> None: | CODE |
| LOW | bundler/uploader/tests/test_state.py | 56 | def test_record_orphaned_draft(self, tmp_path: object) -> None: | CODE |
| LOW | bundler/uploader/tests/test_state.py | 123 | def test_loads_failed_locales(self, tmp_path: object) -> None: | CODE |
| LOW | bundler/uploader/tests/test_state.py | 212 | def test_copies_log_and_state_to_local_dir(self, tmp_path: Path) -> None: | CODE |
| LOW | bundler/uploader/tests/test_state.py | 233 | def test_no_files_to_save_is_noop(self, tmp_path: Path) -> None: | CODE |
| LOW | bundler/uploader/tests/test_state.py | 246 | def test_gcs_mode_uses_posix_paths(self, tmp_path: Path) -> None: | CODE |
| LOW | bundler/uploader/tests/test_state.py | 276 | def test_copy_failure_is_nonfatal(self, tmp_path: Path) -> None: | CODE |
| LOW | bundler/uploader/tests/test_gcs.py | 51 | def test_bucket_with_trailing_slash(self) -> None: | CODE |
| LOW⚡ | bundler/uploader/tests/test_mdc.py | 84 | def test_generic_error_passes_through(self) -> None: | CODE |
| LOW⚡ | bundler/uploader/tests/test_mdc.py | 94 | def test_rate_limit_within_max(self) -> None: | CODE |
| LOW⚡ | bundler/uploader/tests/test_mdc.py | 98 | def test_rate_limit_exceeds_max(self) -> None: | CODE |
| LOW⚡ | bundler/uploader/tests/test_mdc.py | 106 | def test_raw_connection_error_not_retryable(self) -> None: | CODE |
| LOW⚡ | bundler/uploader/tests/test_mdc.py | 110 | def test_raw_timeout_error_not_retryable(self) -> None: | CODE |
| LOW⚡ | bundler/uploader/tests/test_mdc.py | 114 | def test_raw_os_error_not_retryable(self) -> None: | CODE |
| LOW⚡ | bundler/uploader/tests/test_mdc.py | 118 | def test_wrapped_connection_error_is_retryable(self) -> None: | CODE |
| LOW⚡ | bundler/uploader/tests/test_mdc.py | 124 | def test_wrapped_timeout_error_is_retryable(self) -> None: | CODE |
| LOW⚡ | bundler/uploader/tests/test_mdc.py | 130 | def test_permission_error_not_retryable(self) -> None: | CODE |
| LOW⚡ | bundler/uploader/tests/test_mdc.py | 134 | def test_value_error_not_retryable(self) -> None: | CODE |
| LOW⚡ | bundler/uploader/tests/test_mdc.py | 138 | def test_generic_exception_not_retryable(self) -> None: | CODE |
| LOW⚡ | bundler/uploader/tests/test_mdc.py | 189 | def test_http_error_returns_status_and_body(self) -> None: | CODE |
| LOW⚡ | bundler/uploader/tests/test_mdc.py | 196 | def test_plain_exception_returns_none(self) -> None: | CODE |
| LOW⚡ | bundler/uploader/tests/test_mdc.py | 203 | def test_none_response_returns_none(self) -> None: | CODE |
| LOW | bundler/uploader/tests/test_mdc.py | 66 | def test_timeout_is_transient(self) -> None: | CODE |
| LOW | bundler/uploader/tests/test_mdc.py | 72 | def test_connection_is_transient(self) -> None: | CODE |
| LOW | bundler/uploader/tests/test_mdc.py | 168 | def test_sdk_rate_limit_error_maps_to_retryable(self) -> None: | CODE |
| 90 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | web/src/components/contact-modal/contact-modal.test.tsx | 23 | email = 'user@example.com', | CODE |
| LOW⚡ | web/src/components/contact-modal/contact-modal.test.tsx | 50 | await fillAndSubmit({ email: 'user@example.com', name: 'Alice', message: 'Hello!' }) | CODE |
| LOW⚡ | web/src/components/contact-modal/contact-modal.test.tsx | 53 | email: 'user@example.com', | CODE |
| LOW⚡ | web/src/components/contact-modal/contact-modal.test.tsx | 63 | await fillAndSubmit({ email: 'user@example.com', name: '', message: 'Hi' }) | CODE |
| LOW⚡ | web/src/components/contact-modal/contact-modal.test.tsx | 66 | email: 'user@example.com', | CODE |
| LOW | web/src/components/contact-modal/contact-modal.test.tsx | 97 | userEvent.type(screen.getByRole('textbox', { name: /email/i }), 'user@example.com') | CODE |
| LOW | …ad-email-prompt/dataset-download-email-prompt.test.tsx | 21 | email: 'user@example.com', | CODE |
| LOW | …ad-email-prompt/dataset-download-email-prompt.test.tsx | 52 | mockAccountValue = { client_id: 'test-client-id', email: 'user@example.com' } | CODE |
| LOW | …components/pages/contribution/speak/recording-pill.tsx | 129 | <div className="placeholder" /> | CODE |
| LOW | …ages/contribution/sentence-collector/review/review.tsx | 174 | <div className="placeholder" /> | CODE |
| LOW | …t/infrastructure/authentication/authentication.test.ts | 157 | const clientInfo = { userId: 'user@example.com' } | CODE |
| LOW | server/src/lib/email.test.ts | 157 | email: 'user@example.com', | CODE |
| LOW | …ver/src/lib/middleware/rate-limiter-middleware.test.ts | 42 | rateLimiter('fake-key', { points: 100, duration: 60 }) | CODE |
| LOW | …ver/src/lib/middleware/rate-limiter-middleware.test.ts | 47 | keyPrefix: 'fake-key', | CODE |
| LOW | …ver/src/lib/middleware/rate-limiter-middleware.test.ts | 59 | const limiter = rateLimiter('fake-key', { | CODE |
| LOW | …ver/src/lib/middleware/rate-limiter-middleware.test.ts | 79 | const limiter = rateLimiter('fake-key', { | CODE |
| LOW | …ver/src/lib/middleware/rate-limiter-middleware.test.ts | 101 | const limiter = rateLimiter('fake-key', { | CODE |
| LOW | …ver/src/lib/middleware/rate-limiter-middleware.test.ts | 123 | 'fake-key', | CODE |
| LOW | …ver/src/lib/middleware/rate-limiter-middleware.test.ts | 142 | const limiter = rateLimiter('fake-key', { points: 100, duration: 60 }) | CODE |
| LOW | …ver/src/lib/middleware/rate-limiter-middleware.test.ts | 160 | const limiter = rateLimiter('fake-key', { | CODE |
| LOW⚡ | server/src/lib/validation/send-contact-request.test.ts | 26 | runValidation({ email: 'user@example.com', message: 'Hello!' }) | CODE |
| LOW⚡ | server/src/lib/validation/send-contact-request.test.ts | 31 | runValidation({ email: 'user@example.com', name: 'Alice', message: 'Hi' }) | CODE |
| LOW⚡ | server/src/lib/validation/send-contact-request.test.ts | 41 | runValidation({ email: 'user@example.com' }) | CODE |
| LOW⚡ | server/src/lib/validation/send-contact-request.test.ts | 51 | runValidation({ email: 'user@example.com', message: '' }) | CODE |
| LOW | bundler/src/core/localeData.test.ts | 49 | 'John Doe': 2, | CODE |
| LOW | bundler/src/core/localeData.test.ts | 339 | makeValidatedSentence({ source: 'John Doe' }), | CODE |
| LOW | bundler/src/core/localeData.test.ts | 354 | expect(result.right.sourceCounts['John Doe']).toBeUndefined() | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bundler/uploader/tests/test_disabler_cli.py | 3 | CODE | |
| LOW | bundler/uploader/tests/test_streaming.py | 3 | CODE | |
| LOW | bundler/uploader/tests/test_log.py | 3 | CODE | |
| LOW | bundler/uploader/tests/test_state.py | 3 | CODE | |
| LOW | bundler/uploader/tests/test_gcs.py | 3 | CODE | |
| LOW | bundler/uploader/tests/test_progress.py | 3 | CODE | |
| LOW | bundler/uploader/tests/test_mdc.py | 3 | CODE | |
| LOW | bundler/uploader/tests/test_config.py | 3 | CODE | |
| LOW | bundler/uploader/tests/test_models.py | 3 | CODE | |
| LOW | bundler/uploader/tests/test_disabler_core.py | 3 | CODE | |
| LOW | bundler/uploader/tests/test_disabler_org_page.py | 3 | CODE | |
| LOW | bundler/uploader/tests/test_language.py | 3 | CODE | |
| LOW | bundler/uploader/tests/test_disabler_client.py | 3 | CODE | |
| LOW | bundler/uploader/src/mdc_uploader/config.py | 3 | CODE | |
| LOW | bundler/uploader/src/mdc_uploader/models.py | 3 | CODE | |
| LOW | bundler/uploader/src/mdc_uploader/gcs.py | 7 | CODE | |
| LOW | bundler/uploader/src/mdc_uploader/log.py | 3 | CODE | |
| LOW | bundler/uploader/src/mdc_uploader/naming.py | 9 | CODE | |
| LOW | bundler/uploader/src/mdc_uploader/typedef.py | 3 | CODE | |
| LOW | bundler/uploader/src/mdc_uploader/cli.py | 3 | CODE | |
| LOW | bundler/uploader/src/mdc_uploader/pipeline.py | 3 | CODE | |
| LOW | bundler/uploader/src/mdc_uploader/language.py | 14 | CODE | |
| LOW | bundler/uploader/src/mdc_uploader/progress.py | 3 | CODE | |
| LOW | bundler/uploader/src/mdc_uploader/mdc.py | 3 | CODE | |
| LOW | bundler/uploader/src/mdc_uploader/streaming.py | 16 | CODE | |
| LOW | bundler/uploader/src/mdc_uploader/state.py | 3 | CODE | |
| LOW | bundler/uploader/src/mdc_disabler/org_page.py | 8 | CODE | |
| LOW | bundler/uploader/src/mdc_disabler/config.py | 3 | CODE | |
| LOW | bundler/uploader/src/mdc_disabler/client.py | 3 | CODE | |
| LOW | bundler/uploader/src/mdc_disabler/core.py | 3 | CODE | |
| LOW | bundler/uploader/src/mdc_disabler/cli.py | 3 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | bundler/uploader/src/mdc_uploader/pipeline.py | 49 | except OSError: | CODE |
| HIGH | bundler/uploader/src/mdc_uploader/pipeline.py | 316 | except OSError: | CODE |
| HIGH | bundler/uploader/src/mdc_uploader/pipeline.py | 325 | except OSError: | CODE |
| HIGH | bundler/uploader/src/mdc_uploader/pipeline.py | 248 | except OSError: | CODE |
| HIGH | bundler/uploader/src/mdc_uploader/mdc.py | 117 | except (AttributeError, TypeError): | CODE |
| HIGH | bundler/uploader/src/mdc_disabler/org_page.py | 201 | except ValueError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | server/src/lib/model/db/import-sentences.ts | 91 | print('importing', locale) | CODE |
| HIGH | server/src/lib/model/db/import-sentences.ts | 156 | print( | CODE |
| HIGH | server/src/lib/model/db/import-sentences.ts | 177 | print( | CODE |
| HIGH | server/src/lib/model/db/import-sentences.ts | 183 | print( | CODE |
| HIGH | server/src/lib/model/db/import-sentences.ts | 226 | print( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bundler/uploader/src/mdc_uploader/cli.py | 190 | except Exception as exc: # pylint: disable=broad-exception-caught | STRING |
| LOW | bundler/uploader/src/mdc_uploader/cli.py | 268 | except Exception as exc: | CODE |
| LOW | bundler/uploader/src/mdc_uploader/pipeline.py | 241 | except Exception as exc: # pylint: disable=broad-exception-caught | CODE |
| LOW | bundler/uploader/src/mdc_uploader/pipeline.py | 692 | except Exception as exc: # pylint: disable=broad-exception-caught | CODE |
| LOW | bundler/uploader/src/mdc_uploader/pipeline.py | 969 | except Exception as exc: # pylint: disable=broad-exception-caught | CODE |
| LOW⚡ | bundler/uploader/src/mdc_uploader/mdc.py | 214 | except Exception as exc: | CODE |
| LOW⚡ | bundler/uploader/src/mdc_uploader/mdc.py | 275 | except Exception as exc: | CODE |
| LOW⚡ | bundler/uploader/src/mdc_uploader/mdc.py | 406 | except Exception as exc: | CODE |
| LOW⚡ | bundler/uploader/src/mdc_uploader/mdc.py | 423 | except Exception as exc: | CODE |
| LOW | bundler/uploader/src/mdc_uploader/mdc.py | 235 | except Exception as exc: | CODE |
| LOW | bundler/uploader/src/mdc_uploader/mdc.py | 298 | except Exception as exc: | CODE |
| LOW | bundler/uploader/src/mdc_uploader/mdc.py | 350 | except Exception as exc: | CODE |
| LOW | bundler/uploader/src/mdc_uploader/mdc.py | 452 | except Exception as exc: | CODE |
| LOW | bundler/uploader/src/mdc_uploader/state.py | 199 | except Exception as exc: # pylint: disable=broad-exception-caught | CODE |
| LOW | bundler/uploader/src/mdc_uploader/state.py | 213 | except Exception as exc: # pylint: disable=broad-exception-caught | CODE |
| LOW | bundler/uploader/src/mdc_disabler/org_page.py | 77 | except Exception as exc: # pylint: disable=broad-exception-caught | CODE |
| LOW | bundler/uploader/src/mdc_disabler/org_page.py | 272 | except Exception as exc: # pylint: disable=broad-exception-caught | CODE |
| LOW | bundler/uploader/src/mdc_disabler/client.py | 75 | except Exception as exc: # pylint: disable=broad-exception-caught | CODE |
| LOW | bundler/uploader/src/mdc_disabler/client.py | 110 | except Exception as exc: # pylint: disable=broad-exception-caught | CODE |
| LOW | bundler/uploader/src/mdc_disabler/client.py | 129 | except Exception as exc: # pylint: disable=broad-exception-caught | CODE |
| LOW | bundler/uploader/src/mdc_disabler/cli.py | 50 | except Exception as exc: # pylint: disable=broad-exception-caught | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | server/src/lib/redis-cache/lazy-set-cache.test.ts | 595 | // Step 1: Add values | COMMENT |
| LOW⚡ | server/src/lib/redis-cache/lazy-set-cache.test.ts | 598 | // Step 2: Get all members | COMMENT |
| LOW⚡ | server/src/lib/redis-cache/lazy-set-cache.test.ts | 603 | // Step 3: Get random subset | COMMENT |
| LOW⚡ | bundler/uploader/src/mdc_uploader/mdc.py | 210 | # Step 1: Create draft | COMMENT |
| LOW⚡ | bundler/uploader/src/mdc_uploader/mdc.py | 222 | # Step 2: Upload file | COMMENT |
| LOW⚡ | bundler/uploader/src/mdc_uploader/mdc.py | 271 | # Step 1: Create draft | COMMENT |
| LOW⚡ | bundler/uploader/src/mdc_uploader/mdc.py | 283 | # Step 2: Stream upload from GCS | COMMENT |
| LOW⚡ | bundler/uploader/src/mdc_uploader/mdc.py | 402 | # Step 3: Update metadata | COMMENT |
| LOW⚡ | bundler/uploader/src/mdc_uploader/mdc.py | 416 | # Step 4: Submit for review | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | server/src/lib/redis-cache/lazy-set-cache.test.ts | 595 | // Step 1: Add values | COMMENT |
| LOW⚡ | server/src/lib/redis-cache/lazy-set-cache.test.ts | 598 | // Step 2: Get all members | COMMENT |
| LOW⚡ | server/src/lib/redis-cache/lazy-set-cache.test.ts | 603 | // Step 3: Get random subset | COMMENT |
| LOW⚡ | bundler/uploader/src/mdc_uploader/mdc.py | 210 | # Step 1: Create draft | COMMENT |
| LOW⚡ | bundler/uploader/src/mdc_uploader/mdc.py | 222 | # Step 2: Upload file | COMMENT |
| LOW⚡ | bundler/uploader/src/mdc_uploader/mdc.py | 271 | # Step 1: Create draft | COMMENT |
| LOW⚡ | bundler/uploader/src/mdc_uploader/mdc.py | 283 | # Step 2: Stream upload from GCS | COMMENT |
| LOW⚡ | bundler/uploader/src/mdc_uploader/mdc.py | 402 | # Step 3: Update metadata | COMMENT |
| LOW⚡ | bundler/uploader/src/mdc_uploader/mdc.py | 416 | # Step 4: Submit for review | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | web/cypress/support/e2e.ts | 1 | // *********************************************************** | COMMENT |
| LOW | …b/src/components/pages/contribution/speak/audio-web.ts | 341 | // Add the new listeners. | COMMENT |
| LOW | server/src/core/types/clientId.ts | 1 | // The client id is a 36 character long string | COMMENT |
| LOW | server/src/core/sentences/validation/languages/th.ts | 21 | // - Below vowels: \u0E38\u0E39 | COMMENT |
| LOW | server/src/core/sentences/validation/languages/ko.ts | 41 | // - Composed form (Unicode "Hangul Syllables" : U+AC00–U+D7A3) | COMMENT |
| LOW | server/src/core/sentences/validation/languages/he.ts | 21 | const VALID_CHAR_CLASSES = { | COMMENT |
| LOW | server/src/core/sentences/validation/languages/he.ts | 41 | // these are seen in Biblical Hebrew - and we don't want users to submit | COMMENT |
| LOW | server/src/core/sentences/validation/languages/he.ts | 61 | // - [Category `Pi`](https://www.compart.com/en/unicode/category/Pi) | COMMENT |
| LOW | server/src/lib/api.ts | 261 | router.get('/datasets/languages', this.getAllLanguagesWithDatasets) | COMMENT |
| LOW | server/src/lib/api.ts | 301 | // | COMMENT |
| LOW | server/src/lib/api.ts | 401 | // Mark awards/notifications as seen | COMMENT |
| LOW | server/src/lib/api.ts | 421 | // | COMMENT |
| LOW | server/src/lib/model/achievements.ts | 21 | AND invitee.invited_by = ? | COMMENT |
| LOW | …gration-helpers/accents-variants/av_migrations.test.ts | 1 | /* eslint-disable @typescript-eslint/no-explicit-any */ | COMMENT |
| LOW | …b/model/db/migration-helpers/accents-variants/types.ts | 1 | // accent -> variant mapping | COMMENT |
| LOW | server/src/infrastructure/redis/redis.ts | 1 | // time units moved to /common | COMMENT |
| LOW | bundler/src/worker/worker.ts | 141 | connection: { | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bundler/uploader/src/mdc_uploader/pipeline.py | 201 | CODE | |
| LOW | bundler/uploader/src/mdc_uploader/pipeline.py | 278 | CODE | |
| LOW | bundler/uploader/src/mdc_uploader/pipeline.py | 372 | CODE | |
| LOW | bundler/uploader/src/mdc_uploader/pipeline.py | 470 | CODE | |
| LOW | bundler/uploader/src/mdc_uploader/pipeline.py | 810 | CODE | |
| LOW | bundler/uploader/src/mdc_disabler/org_page.py | 163 | CODE | |
| LOW | bundler/uploader/src/mdc_disabler/org_page.py | 227 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …b/src/components/pages/contribution/speak/audio-web.ts | 63 | // Using state !== undefined is more robust than !!this.recorder because | COMMENT |
| MEDIUM | …b/src/components/pages/contribution/speak/audio-web.ts | 393 | // Determine blob MIME type with robust fallback chain: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | bundler/uploader/tests/test_state.py | 218 | # Create a fake log file and mock get_log_file_path to return it | COMMENT |
| MEDIUM | bundler/uploader/tests/test_pipeline.py | 51 | # Create a datasheet | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker/prepare_storage.sh | 4 | # Check if bulk submission bucket exists if not create it | COMMENT |
| LOW | docker/wait-for-it.sh | 152 | # Check if busybox timeout uses -t flag | COMMENT |
| LOW | scripts/list-recent-tags.sh | 6 | # Set GIT_TAG_REMOTE to override the remote used when fetching tags (defaults to origin). | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/DEVELOPMENT.md | 12 | - [Orchestrating the environment with `docker` and `docker-compose`](#orchestrating-the-environment-with-docker-and-do | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | server/src/core/types/clientId.ts | 4 | // TODO: implement clientId smart constructor | COMMENT |