The open-source reactive database for app developers
This report summarizes scanner evidence for get-convex/convex-backend, a TypeScript project with 12,770 GitHub stars. SynthScan examined 699,587 lines of code across 5145 source files, recording 1010 pattern matches distributed across 17 syntactic categories. The legacy adjusted pattern signal is 1.7 (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? 945 finding(s).
Are imports declared and package/API names verified? 49 finding(s).
Are wrappers, guards, and repeated structures necessary? 451 finding(s).
Which changes need focused human review? 1010 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 1010 distinct pattern matches across 17 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 | …ommon/src/features/settings/components/UsageLimits.tsx | 1046 | function UsageLimitThresholdEditor({ | CODE |
| LOW | …settings/components/DeploymentEnvironmentVariables.tsx | 25 | export function DeploymentEnvironmentVariables({ | CODE |
| LOW | …settings/components/DeploymentEnvironmentVariables.tsx | 197 | function useEnvironmentVariablesDiff(): EnvironmentVariableDiff { | CODE |
| LOW | …ponents/integrations/WorkOSIntegrationOverflowMenu.tsx | 7 | export function WorkOSIntegrationOverflowMenu({ | CODE |
| LOW | …mponents/integrations/PostHogLogsConfigurationForm.tsx | 25 | export function PostHogLogsConfigurationForm({ | CODE |
| LOW | …tings/components/integrations/FivetranSyncProgress.tsx | 91 | function ActiveFivetranSyncsButton({ syncs }: { syncs: ActiveDataSync[] }) { | CODE |
| LOW | …/components/integrations/WorkOSProjectEnvironments.tsx | 154 | export function WorkOSProjectEnvironments({ | CODE |
| LOW | …gs/components/integrations/WorkOSConfigurationForm.tsx | 76 | function getWorkOSNotSupportedReason( | CODE |
| LOW | …gs/components/integrations/WorkOSConfigurationForm.tsx | 263 | function ProvisionWorkOSTeamSection({ | CODE |
| LOW | …gs/components/integrations/WorkOSConfigurationForm.tsx | 732 | function ConsolidatedEnvironmentSection({ | CODE |
| LOW | …integrations/PostHogErrorTrackingConfigurationForm.tsx | 18 | export function PostHogErrorTrackingConfigurationForm({ | CODE |
| LOW | …rc/features/health/components/ChartForFunctionRate.tsx | 27 | function SubscriptionInvalidationLabel({ | CODE |
| LOW | …atures/health/components/DeploymentSummary.stories.tsx | 106 | function mockClientWithSchemaProgress(progress: SchemaValidationByTable) { | CODE |
| LOW | …atures/health/components/SubscriptionInvalidations.tsx | 5 | export function SubscriptionInvalidations() { | CODE |
| LOW | …disconnectOverlay/LocalDeploymentDisconnectOverlay.tsx | 8 | export function LocalDeploymentDisconnectOverlay() { | CODE |
| LOW | …/features/disconnectOverlay/CloudDisconnectOverlay.tsx | 157 | function useCanReachDeploymentOverHTTP( | CODE |
| LOW | …ures/disconnectOverlay/SelfHostedDisconnectOverlay.tsx | 5 | export function SelfHostedDisconnectOverlay() { | CODE |
| LOW | …mmon/src/features/schedules/components/emptyStates.tsx | 21 | export function NoScheduledJobsForFunction() { | CODE |
| LOW | …edules/components/ScheduledFunctionsContentToolbar.tsx | 34 | function DeleteScheduledFunctionsTableMessage() { | CODE |
| LOW | …edules/components/ScheduledFunctionsContentToolbar.tsx | 44 | export function ScheduledFunctionsContentToolbar({ | CODE |
| LOW | …res/schedules/components/ScheduledFunctionsContent.tsx | 9 | export function ScheduledFunctionsContent({ | CODE |
| LOW | …/schedules/components/ScheduledFunctionsListHeader.tsx | 11 | export function ScheduledFunctionsListHeader({ | CODE |
| LOW | …rd-common/src/features/schedules/lib/CronsProvider.tsx | 28 | export function CronJobsProviderWithCronHistory({ | CODE |
| LOW | …es/dashboard-common/src/features/schedules/lib/api.tsx | 87 | export function useDeleteScheduledJobsTable(): () => Promise<void> { | CODE |
| LOW | …rc/features/schedules/lib/usePaginatedScheduledJobs.ts | 11 | export function usePaginatedScheduledJobs(udfPath: string | undefined) { | CODE |
| LOW | …d-common/src/features/schema/components/SchemaView.tsx | 190 | function SchemaGraphWithNavigation({ | CODE |
| LOW | …ard-common/src/features/schema/lib/buildSchemaGraph.ts | 74 | function collectReferencesFromValidator( | CODE |
| LOW | …ard-common/src/features/schema/lib/buildSchemaGraph.ts | 178 | function fieldsFromObjectValidator( | CODE |
| LOW | …ard-common/src/features/schema/lib/buildSchemaGraph.ts | 361 | function collectReferencesFromShape(shape: Shape, acc: Set<string>): void { | CODE |
| LOW | …mmon/src/features/logs/components/FunctionCallTree.tsx | 146 | function createCompletedExecutionNodes(logs: UdfLog[]): { | CODE |
| LOW | …mmon/src/features/logs/components/FunctionCallTree.tsx | 178 | function createRunningExecutionNodes( | CODE |
| LOW | …rc/features/functions/components/PerformanceGraphs.tsx | 222 | function SubscriptionInvalidationsGraph({ | CODE |
| LOW | …tions/components/FunctionRunnerDisabledWhilePaused.tsx | 5 | export function FunctionRunnerDisabledWhilePaused() { | CODE |
| LOW | …rd-common/src/features/data/components/TableSchema.tsx | 75 | export function useSingleTableSchemaStatus( | CODE |
| LOW | …rd-common/src/features/data/components/TableSchema.tsx | 291 | export function topLevelFieldsForValidator(validator: ValidatorJSON): { | CODE |
| LOW | …src/features/data/components/Table/utils/validators.ts | 4 | export function documentValidatorForTable( | CODE |
| LOW | …mmon/src/elements/AuthorizeEditsConfirmationDialog.tsx | 6 | export function AuthorizeEditsConfirmationDialog({ | CODE |
| LOW | npm-packages/dashboard-common/src/elements/Calendar.tsx | 68 | PreviousMonthButton: function CustomPreviousMonthButton({ | CODE |
| LOW | npm-packages/dashboard-common/src/elements/Calendar.tsx | 85 | NextMonthButton: function CustomPreviousMonthButton({ | CODE |
| LOW | …es/dashboard-common/src/elements/TimestampDistance.tsx | 54 | export function LiveTimestampDistanceInner({ date }: { date: Date }) { | CODE |
| LOW | …on/src/elements/ObjectEditor/ast/walkPatchDocuments.ts | 65 | function extractUndefinedValuesFromNode( | CODE |
| LOW | …hboard-common/src/elements/ObjectEditor/ast/walkAst.ts | 58 | function extractValueFromExpression( | CODE |
| LOW | …s/dashboard-common/src/layouts/SidebarDetailLayout.tsx | 156 | function NpmConvexServerVersionBanner() { | CODE |
| LOW | …board-common/src/layouts/DeploymentDashboardLayout.tsx | 47 | export function DeploymentDashboardLayout({ | CODE |
| LOW | npm-packages/dashboard-common/src/lib/deploymentApi.ts | 38 | export function useDeploymentIsDisconnected(): boolean { | CODE |
| LOW | …ackages/dashboard-common/src/lib/deploymentContext.tsx | 460 | export function useMaybeConnectedDeployment(): | CODE |
| LOW | …ackages/dashboard-common/src/lib/deploymentContext.tsx | 740 | function DeploymentWithConnectionState({ | CODE |
| LOW | …ckages/dashboard-common/src/lib/integrationHelpers.tsx | 212 | export function integrationUsingLegacyFormat( | CODE |
| LOW | npm-packages/dashboard-common/src/lib/format.ts | 278 | function appendFilterFieldsOrEmpty(index: SearchIndex | VectorIndex): string { | CODE |
| LOW | …ages/dashboard-common/src/lib/useDeploymentAuditLog.ts | 34 | function processDeploymentAuditLogEvent( | CODE |
| LOW | …ages/dashboard-common/src/lib/useDeploymentAuditLog.ts | 181 | export function usePaginatedDeploymentEvents( | CODE |
| LOW | …dashboard-common/src/lib/deploymentTypeColorClasses.ts | 31 | export function deploymentTypeColorClasses( | CODE |
| LOW | npm-packages/dashboard-common/src/lib/appMetrics.ts | 324 | export function useTopKFunctionRateHeatmap( | CODE |
| LOW | npm-packages/dashboard-common/src/lib/appMetrics.ts | 513 | export function useSubscriptionInvalidationsTopK( | CODE |
| LOW | npm-packages/dashboard-common/src/lib/appMetrics.ts | 789 | function mapFunctionTypeToDisplayName( | CODE |
| LOW | …packages/dashboard-common/src/lib/useTableMetadata.tsx | 89 | export function useTableMetadataAndUpdateURL(): TableMetadata | undefined { | CODE |
| LOW | …n/src/lib/useIsCloudDeploymentInSelfHostedDashboard.ts | 9 | export function useIsCloudDeploymentInSelfHostedDashboard(): | CODE |
| LOW | …dashboard-common/src/lib/functions/generateFileTree.ts | 25 | export function functionIdentifierFromValue(value: string) { | CODE |
| LOW | …dashboard-common/src/lib/functions/generateFileTree.ts | 197 | export function processAnalyzedModuleFunction( | CODE |
| LOW | …te-demos/snippets/src/typescriptFunctionReturnTypes.ts | 11 | export function MyPaginationHelperComponent(props: { | CODE |
| 375 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/metrics/src/metrics.rs | 1 | //! Common functions for metrics logging. | COMMENT |
| LOW | crates/metrics/src/macros.rs | 1 | pub use paste::paste; | COMMENT |
| LOW | crates/metrics/src/macros.rs | 81 | vec | COMMENT |
| LOW | crates/database/src/committer.rs | 361 | async fn go(mut self, mut rx: mpsc::Receiver<CommitterMessage>) -> anyhow::Result<()> { | COMMENT |
| LOW | crates/database/src/transaction.rs | 1081 | Ok(is_new) | COMMENT |
| LOW | crates/database/src/transaction.rs | 1101 | /// than any timestamp hashed in `tx1.hash_index_interval(..)`; so the | COMMENT |
| LOW | crates/database/src/database.rs | 301 | /// application. Internally, it only has read-only access to the database | COMMENT |
| LOW | crates/database/src/database.rs | 1161 | COMMENT | |
| LOW | crates/database/src/streaming_export_selection.rs | 1 | //! Allows to select what is included in a streaming export. | COMMENT |
| LOW | crates/database/src/streaming_export_selection.rs | 21 | //! # assert_obj, | COMMENT |
| LOW | crates/database/src/streaming_export_selection.rs | 41 | //! /* columns: */ btreemap! { | COMMENT |
| LOW | crates/database/src/streaming_export_selection.rs | 61 | //! let doc = DeveloperDocument::new( | COMMENT |
| LOW | crates/database/src/lib.rs | 1 | #![feature(coroutines)] | COMMENT |
| LOW | crates/database/src/write_log.rs | 981 | index_keys: BTreeMap<TabletIndexName, Vec<Arc<[u8]>>>, | COMMENT |
| LOW | crates/database/src/metrics.rs | 521 | /// How long a replaced index entry had been current, named by each bucket's | COMMENT |
| LOW | crates/database/src/transaction_index.rs | 81 | COMMENT | |
| LOW | crates/database/src/transaction_index.rs | 741 | &self, | COMMENT |
| LOW | crates/database/src/snapshot_manager.rs | 641 | /// may not know yet that it is safe to read from that snapshot. | COMMENT |
| LOW | crates/database/src/snapshot_manager.rs | 681 | // first index that has a timestamp greater than `ts`. So, we'd like the immediately | COMMENT |
| LOW | crates/database/src/bootstrap_model/user_facing.rs | 161 | if table.is_system() { | COMMENT |
| LOW | …database/src/bootstrap_model/schema_validations/mod.rs | 421 | /// Removing an active table also invalidates `v.id` checks on unchanged | COMMENT |
| LOW | …/database/src/bootstrap_model/index_backfills/types.rs | 21 | /// This structure stores the progress of an index backfill operation, | COMMENT |
| LOW | …es/database/src/database_index_workers/index_writer.rs | 261 | /// current snapshot is backfilled, index snapshot reads at >=ts are | COMMENT |
| LOW | …es/database/src/database_index_workers/index_writer.rs | 421 | /// from this backfill. Note that since we're not building up a historical | COMMENT |
| LOW | crates/database/src/query/mod.rs | 81 | /// Return a position for a continuation cursor. A query defines a result | COMMENT |
| LOW | crates/database/src/query/mod.rs | 101 | COMMENT | |
| LOW | crates/database/src/query/mod.rs | 341 | maximum_rows_read, | COMMENT |
| LOW | crates/database/src/query/index_range.rs | 61 | // interval: Interval, | COMMENT |
| LOW | crates/fivetran_source/src/sync.rs | 61 | #[serde(rename_all = "camelCase")] | COMMENT |
| LOW | crates/fivetran_source/src/sync.rs | 101 | /// A checkpoint emitted by a version-2 connector after an initial | COMMENT |
| LOW | crates/packed_value/benches/packed_value.rs | 101 | ]; | COMMENT |
| LOW | crates/packed_value/benches/packed_value.rs | 121 | // pack/sort_key/float-normal | COMMENT |
| LOW | crates/packed_value/benches/packed_value.rs | 141 | // time: [226.57 ns 228.39 ns 230.06 ns] | COMMENT |
| LOW | crates/packed_value/benches/packed_value.rs | 161 | // pack/sort_key/array-4-ints | COMMENT |
| LOW | crates/packed_value/benches/packed_value.rs | 201 | }); | COMMENT |
| LOW | crates/packed_value/benches/packed_value.rs | 221 | // time: [26.455 ns 26.502 ns 26.549 ns] | COMMENT |
| LOW | crates/packed_value/benches/packed_value.rs | 241 | // time: [3.0232 µs 3.0299 µs 3.0374 µs] | COMMENT |
| LOW | crates/packed_value/benches/packed_value.rs | 261 | // time: [1.5047 ms 1.5086 ms 1.5124 ms] | COMMENT |
| LOW | crates/packed_value/benches/packed_value.rs | 281 | // unpack/flexbuffer/object-document | COMMENT |
| LOW | crates/packed_value/benches/packed_value.rs | 321 | // json/json/idv5 time: [445.53 ns 445.63 ns 445.73 ns] | COMMENT |
| LOW | crates/packed_value/benches/packed_value.rs | 341 | // time: [1.2683 µs 1.2706 µs 1.2732 µs] | COMMENT |
| LOW | crates/local_backend/src/usage_limits.rs | 161 | } | COMMENT |
| LOW | crates/local_backend/src/config.rs | 41 | /// Host port daemon should bind to | COMMENT |
| LOW | crates/local_backend/src/config.rs | 61 | /// e.g. if the client is running on localhost, you can use the default of | COMMENT |
| LOW | crates/local_backend/src/config.rs | 81 | /// Instance name for this backend. | COMMENT |
| LOW | crates/local_backend/src/config.rs | 101 | /// events generated by this backend. Sentry is disabled | COMMENT |
| LOW | crates/local_backend/src/config.rs | 121 | /// server. This is to help Convex understand and improve the product. | COMMENT |
| LOW | crates/local_backend/src/integrations.rs | 281 | #[derive(Deserialize, ToSchema)] | COMMENT |
| LOW | crates/local_backend/src/integrations.rs | 321 | /// Format for the webhook payload. JSONL sends one object per line of | COMMENT |
| LOW | crates/local_backend/src/integrations.rs | 581 | // TODO(ENG-11116): drop the access key fields once existing exports have | COMMENT |
| LOW | crates/local_backend/src/integrations.rs | 681 | #[schema(title = "Webhook")] | COMMENT |
| LOW | crates/local_backend/src/integrations.rs | 1001 | #[schema(title = "PostHogLogs")] | COMMENT |
| LOW | crates/local_backend/src/integrations.rs | 1021 | pub dd_tags: Vec<String>, | COMMENT |
| LOW | crates/local_backend/src/integrations.rs | 1041 | /// request, JSON sends one array per request. | COMMENT |
| LOW | crates/local_backend/src/integrations.rs | 1061 | /// Axiom in each log event. | COMMENT |
| LOW | crates/local_backend/src/integrations.rs | 1081 | pub tags: Option<BTreeMap<String, String>>, | COMMENT |
| LOW | crates/local_backend/src/integrations.rs | 1101 | } | COMMENT |
| LOW | crates/local_backend/src/integrations.rs | 1121 | pub id: String, | COMMENT |
| LOW | crates/local_backend/src/integrations.rs | 1301 | #[serde(rename_all = "camelCase")] | COMMENT |
| LOW | crates/local_backend/src/integrations.rs | 1321 | topics: Option<Option<Vec<LogTopic>>>, | COMMENT |
| 317 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/database/src/database.rs | 800 | // Step 1: Fetch tables and indexes from persistence. | COMMENT |
| LOW | crates/database/src/database.rs | 811 | // Step 2: Load bootstrap tables indexes into memory. | COMMENT |
| LOW | crates/database/src/database.rs | 843 | // Step 3: Bootstrap our database metadata from the `_tables` documents | COMMENT |
| LOW | crates/database/src/database.rs | 1470 | // Step 0: Generate document ids for bootstrapping database system tables. | COMMENT |
| LOW | crates/database/src/database.rs | 1518 | // Step 1: Generate documents. | COMMENT |
| LOW | crates/database/src/database.rs | 1607 | // Step 2: Generate indexes updates. | COMMENT |
| LOW | crates/database/src/database.rs | 1629 | // Step 3: Add timestamp and write everything to persistence. | COMMENT |
| LOW | crates/isolate/build.rs | 200 | // Step 1: Ensure the `server`, `dashboard`, and `cli` deps are installed. | COMMENT |
| LOW | crates/isolate/build.rs | 211 | // Step 2: Use `build-server` to package up our builtin `_system` UDFs. | COMMENT |
| LOW⚡ | crates/isolate/build.rs | 233 | // Step 3: Use the output to generate a compile-time hashtable with all of the | COMMENT |
| LOW⚡ | crates/isolate/build.rs | 239 | // Step 4: Copy node executor files. They are already bundled. | COMMENT |
| LOW⚡ | crates/isolate/build.rs | 259 | // Step 5: Build and bundle the udf test project. | COMMENT |
| LOW⚡ | crates/isolate/build.rs | 263 | // Step 6: Build and bundle component-test projects. | COMMENT |
| LOW | crates/isolate/build.rs | 289 | // Step 7: Record dependencies for the simulation test build. It's a bit of a | COMMENT |
| LOW | crates/isolate/src/execution_scope.rs | 376 | // Step 1: Compile the module and discover its imports. | COMMENT |
| LOW⚡ | crates/isolate/src/execution_scope.rs | 457 | // Step 2: Register the module with the module map. | COMMENT |
| LOW⚡ | crates/isolate/src/execution_scope.rs | 466 | // Step 3: Recursively load the dependencies. Since we've already registered | COMMENT |
| LOW | crates/shape_inference/src/union.rs | 71 | // Step 1: Check the base cases. | COMMENT |
| LOW | crates/shape_inference/src/union.rs | 90 | // Step 2: If `new_shape <= u_i` for some `u_i` already in the union, just merge | COMMENT |
| LOW⚡ | crates/shape_inference/src/union.rs | 113 | // Step 3: Ensure that all of the shapes in `no_subtypes | {new_shape}` are | COMMENT |
| LOW⚡ | crates/shape_inference/src/union.rs | 117 | // Step 4: To ensure our `MAX_UNION_LENGTH` invariant, contract our shapes if | COMMENT |
| LOW | crates/search/src/lib.rs | 425 | // Step 1: Map the old `CompiledQuery` struct onto `TokenQuery`s. | COMMENT |
| LOW | crates/search/src/lib.rs | 467 | // Step 2: Execute the token queries across both the memory and disk indexes, | COMMENT |
| LOW | crates/search/src/lib.rs | 535 | // Step 3: Given the terms we decided on, query BM25 statistics across all of | COMMENT |
| LOW | crates/search/src/lib.rs | 563 | // Step 4: Decide on our posting list queries given the previous results. | COMMENT |
| LOW | crates/search/src/lib.rs | 593 | // Step 5: Execute the posting list query against the memory index's tombstones | COMMENT |
| LOW | crates/search/src/lib.rs | 615 | // Step 6: Query the posting lists across the indexes and take the best | COMMENT |
| LOW | crates/search/src/lib.rs | 649 | // Step 7: Convert the matches into the final result format. | COMMENT |
| LOW | crates/search/src/memory_index/term_list.rs | 102 | // Step 1: Accumulate parallel lists of the unique sorted term IDs and | COMMENT |
| LOW | crates/application/src/cache/mod.rs | 430 | // Step 1: Decide what we're going to do this iteration: use a cached value, | COMMENT |
| LOW | crates/application/src/cache/mod.rs | 461 | // Step 2: Perform our cache operation, potentially running the UDF. | COMMENT |
| LOW | crates/application/src/cache/mod.rs | 489 | // Step 3: Validate that the cache result we got is good enough. Is our desired | COMMENT |
| LOW | crates/application/src/cache/mod.rs | 500 | // Step 4: Rewrite the value into the cache. If this was a cache hit, this will | COMMENT |
| LOW | crates/application/src/cache/mod.rs | 512 | // Step 5: Log some stuff and return. | COMMENT |
| LOW | crates/application/src/snapshot_import/mod.rs | 1210 | // Step 1: Read _tables if present in the import. If we're importing an | COMMENT |
| LOW | crates/application/src/snapshot_import/mod.rs | 1231 | // Step 2: For tables that aren't listed in `_tables`, read their first | COMMENT |
| LOW | crates/application/src/snapshot_import/mod.rs | 1253 | // Step 3: For tables that don't have _id fields, reuse their table number | COMMENT |
| LOW | crates/sync/src/worker.rs | 966 | // Step 1: Add or remove queries from our query set. | COMMENT |
| LOW⚡ | crates/sync/src/worker.rs | 981 | // Step 2: Take all remaining subscriptions. | COMMENT |
| LOW⚡ | crates/sync/src/worker.rs | 984 | // Step 3: Refresh subscriptions up to new_ts and run queries which | COMMENT |
| LOW | crates/sync/src/worker.rs | 1303 | // Step 6: Send our transition to the client and update our version. | COMMENT |
| LOW⚡ | …packages/private-demos/test-project/convex/workflow.ts | 13 | // Step 1: Fetch the picture of the day | COMMENT |
| LOW⚡ | …packages/private-demos/test-project/convex/workflow.ts | 18 | // Step 2: Create a thumbnail from the fetched image | COMMENT |
| LOW⚡ | …packages/private-demos/test-project/convex/workflow.ts | 23 | // Step 3: Send message to chat with thumbnail data URL | COMMENT |
| LOW⚡ | npm-packages/demos/file-storage/src/App.tsx | 30 | // Step 1: Get a short-lived upload URL | COMMENT |
| LOW⚡ | npm-packages/demos/file-storage/src/App.tsx | 32 | // Step 2: POST the file to the URL | COMMENT |
| LOW | npm-packages/demos/file-storage/src/App.tsx | 43 | // Step 3: Save the newly allocated storage id to the database | COMMENT |
| LOW⚡ | npm-packages/demos/file-storage/src/_simpleApp.tsx | 20 | // Step 1: Get a short-lived upload URL | COMMENT |
| LOW⚡ | npm-packages/demos/file-storage/src/_simpleApp.tsx | 22 | // Step 2: POST the file to the URL | COMMENT |
| LOW⚡ | npm-packages/demos/file-storage/src/_simpleApp.tsx | 29 | // Step 3: Save the newly allocated storage id to the database | COMMENT |
| LOW⚡ | …m-packages/demos/file-storage-with-http/convex/http.ts | 13 | // Step 1: Store the file | COMMENT |
| LOW⚡ | …m-packages/demos/file-storage-with-http/convex/http.ts | 17 | // Step 2: Save the storage ID to the database via a mutation | COMMENT |
| LOW⚡ | …m-packages/demos/file-storage-with-http/convex/http.ts | 27 | // Step 3: Return a response with the correct CORS headers | COMMENT |
| LOW⚡ | npm-packages/demos/system-tables/src/App.tsx | 47 | // Step 1: Get a short-lived upload URL | COMMENT |
| LOW⚡ | npm-packages/demos/system-tables/src/App.tsx | 49 | // Step 2: POST the file to the URL | COMMENT |
| LOW | npm-packages/demos/system-tables/src/App.tsx | 60 | // Step 3: Save the newly allocated storage id to the database | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/database/src/database.rs | 800 | // Step 1: Fetch tables and indexes from persistence. | COMMENT |
| LOW | crates/database/src/database.rs | 811 | // Step 2: Load bootstrap tables indexes into memory. | COMMENT |
| LOW | crates/database/src/database.rs | 843 | // Step 3: Bootstrap our database metadata from the `_tables` documents | COMMENT |
| LOW | crates/database/src/database.rs | 1470 | // Step 0: Generate document ids for bootstrapping database system tables. | COMMENT |
| LOW | crates/database/src/database.rs | 1518 | // Step 1: Generate documents. | COMMENT |
| LOW | crates/database/src/database.rs | 1607 | // Step 2: Generate indexes updates. | COMMENT |
| LOW | crates/database/src/database.rs | 1629 | // Step 3: Add timestamp and write everything to persistence. | COMMENT |
| LOW | crates/isolate/build.rs | 200 | // Step 1: Ensure the `server`, `dashboard`, and `cli` deps are installed. | COMMENT |
| LOW | crates/isolate/build.rs | 211 | // Step 2: Use `build-server` to package up our builtin `_system` UDFs. | COMMENT |
| LOW⚡ | crates/isolate/build.rs | 233 | // Step 3: Use the output to generate a compile-time hashtable with all of the | COMMENT |
| LOW⚡ | crates/isolate/build.rs | 239 | // Step 4: Copy node executor files. They are already bundled. | COMMENT |
| LOW⚡ | crates/isolate/build.rs | 259 | // Step 5: Build and bundle the udf test project. | COMMENT |
| LOW⚡ | crates/isolate/build.rs | 263 | // Step 6: Build and bundle component-test projects. | COMMENT |
| LOW | crates/isolate/build.rs | 289 | // Step 7: Record dependencies for the simulation test build. It's a bit of a | COMMENT |
| LOW | crates/isolate/src/execution_scope.rs | 376 | // Step 1: Compile the module and discover its imports. | COMMENT |
| LOW⚡ | crates/isolate/src/execution_scope.rs | 457 | // Step 2: Register the module with the module map. | COMMENT |
| LOW⚡ | crates/isolate/src/execution_scope.rs | 466 | // Step 3: Recursively load the dependencies. Since we've already registered | COMMENT |
| LOW | crates/shape_inference/src/union.rs | 71 | // Step 1: Check the base cases. | COMMENT |
| LOW | crates/shape_inference/src/union.rs | 90 | // Step 2: If `new_shape <= u_i` for some `u_i` already in the union, just merge | COMMENT |
| LOW⚡ | crates/shape_inference/src/union.rs | 113 | // Step 3: Ensure that all of the shapes in `no_subtypes | {new_shape}` are | COMMENT |
| LOW⚡ | crates/shape_inference/src/union.rs | 117 | // Step 4: To ensure our `MAX_UNION_LENGTH` invariant, contract our shapes if | COMMENT |
| LOW | crates/search/src/lib.rs | 425 | // Step 1: Map the old `CompiledQuery` struct onto `TokenQuery`s. | COMMENT |
| LOW | crates/search/src/lib.rs | 467 | // Step 2: Execute the token queries across both the memory and disk indexes, | COMMENT |
| LOW | crates/search/src/lib.rs | 535 | // Step 3: Given the terms we decided on, query BM25 statistics across all of | COMMENT |
| LOW | crates/search/src/lib.rs | 563 | // Step 4: Decide on our posting list queries given the previous results. | COMMENT |
| LOW | crates/search/src/lib.rs | 593 | // Step 5: Execute the posting list query against the memory index's tombstones | COMMENT |
| LOW | crates/search/src/lib.rs | 615 | // Step 6: Query the posting lists across the indexes and take the best | COMMENT |
| LOW | crates/search/src/lib.rs | 649 | // Step 7: Convert the matches into the final result format. | COMMENT |
| LOW | crates/search/src/memory_index/term_list.rs | 102 | // Step 1: Accumulate parallel lists of the unique sorted term IDs and | COMMENT |
| LOW | crates/application/src/cache/mod.rs | 430 | // Step 1: Decide what we're going to do this iteration: use a cached value, | COMMENT |
| LOW | crates/application/src/cache/mod.rs | 461 | // Step 2: Perform our cache operation, potentially running the UDF. | COMMENT |
| LOW | crates/application/src/cache/mod.rs | 489 | // Step 3: Validate that the cache result we got is good enough. Is our desired | COMMENT |
| LOW | crates/application/src/cache/mod.rs | 500 | // Step 4: Rewrite the value into the cache. If this was a cache hit, this will | COMMENT |
| LOW | crates/application/src/cache/mod.rs | 512 | // Step 5: Log some stuff and return. | COMMENT |
| LOW | crates/application/src/snapshot_import/mod.rs | 1210 | // Step 1: Read _tables if present in the import. If we're importing an | COMMENT |
| LOW | crates/application/src/snapshot_import/mod.rs | 1231 | // Step 2: For tables that aren't listed in `_tables`, read their first | COMMENT |
| LOW | crates/application/src/snapshot_import/mod.rs | 1253 | // Step 3: For tables that don't have _id fields, reuse their table number | COMMENT |
| LOW | crates/sync/src/worker.rs | 966 | // Step 1: Add or remove queries from our query set. | COMMENT |
| LOW⚡ | crates/sync/src/worker.rs | 981 | // Step 2: Take all remaining subscriptions. | COMMENT |
| LOW⚡ | crates/sync/src/worker.rs | 984 | // Step 3: Refresh subscriptions up to new_ts and run queries which | COMMENT |
| LOW | crates/sync/src/worker.rs | 1303 | // Step 6: Send our transition to the client and update our version. | COMMENT |
| LOW⚡ | …packages/private-demos/test-project/convex/workflow.ts | 13 | // Step 1: Fetch the picture of the day | COMMENT |
| LOW⚡ | …packages/private-demos/test-project/convex/workflow.ts | 18 | // Step 2: Create a thumbnail from the fetched image | COMMENT |
| LOW⚡ | …packages/private-demos/test-project/convex/workflow.ts | 23 | // Step 3: Send message to chat with thumbnail data URL | COMMENT |
| LOW⚡ | npm-packages/demos/file-storage/src/App.tsx | 30 | // Step 1: Get a short-lived upload URL | COMMENT |
| LOW⚡ | npm-packages/demos/file-storage/src/App.tsx | 32 | // Step 2: POST the file to the URL | COMMENT |
| LOW | npm-packages/demos/file-storage/src/App.tsx | 43 | // Step 3: Save the newly allocated storage id to the database | COMMENT |
| LOW⚡ | npm-packages/demos/file-storage/src/_simpleApp.tsx | 20 | // Step 1: Get a short-lived upload URL | COMMENT |
| LOW⚡ | npm-packages/demos/file-storage/src/_simpleApp.tsx | 22 | // Step 2: POST the file to the URL | COMMENT |
| LOW⚡ | npm-packages/demos/file-storage/src/_simpleApp.tsx | 29 | // Step 3: Save the newly allocated storage id to the database | COMMENT |
| LOW⚡ | …m-packages/demos/file-storage-with-http/convex/http.ts | 13 | // Step 1: Store the file | COMMENT |
| LOW⚡ | …m-packages/demos/file-storage-with-http/convex/http.ts | 17 | // Step 2: Save the storage ID to the database via a mutation | COMMENT |
| LOW⚡ | …m-packages/demos/file-storage-with-http/convex/http.ts | 27 | // Step 3: Return a response with the correct CORS headers | COMMENT |
| LOW⚡ | npm-packages/demos/system-tables/src/App.tsx | 47 | // Step 1: Get a short-lived upload URL | COMMENT |
| LOW⚡ | npm-packages/demos/system-tables/src/App.tsx | 49 | // Step 2: POST the file to the URL | COMMENT |
| LOW | npm-packages/demos/system-tables/src/App.tsx | 60 | // Step 3: Save the newly allocated storage id to the database | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | crates/search_index_workers/src/search_flusher.rs | 412 | /// ┌──────────────┐ | COMMENT |
| MEDIUM⚡ | crates/search_index_workers/src/search_flusher.rs | 415 | /// t0 ────├──────────────┼─────────────┐ | COMMENT |
| MEDIUM⚡ | crates/search_index_workers/src/search_flusher.rs | 418 | /// t1 ────├──────────────┴─────────────┼──────────┐ | COMMENT |
| MEDIUM⚡ | crates/search_index_workers/src/search_flusher.rs | 422 | /// t2 ────└────────────────────────────┴──────────┘ | COMMENT |
| MEDIUM⚡ | crates/table_iteration/src/data_sync.rs | 73 | //! ◄══════════════════════════════ ID ════════════════════════════════=══► | COMMENT |
| MEDIUM⚡ | crates/table_iteration/src/data_sync.rs | 75 | //! │ ┌─────────┬─────────┐ | COMMENT |
| MEDIUM⚡ | crates/table_iteration/src/data_sync.rs | 77 | //! │ ├─────────┴─────────┤ | COMMENT |
| MEDIUM⚡ | crates/table_iteration/src/data_sync.rs | 80 | //! │ │ ├─────────┬─────────┬─────────┐ | COMMENT |
| MEDIUM⚡ | crates/table_iteration/src/data_sync.rs | 82 | //! │ ├───────────────────┴─────────┴─────────┴─────────┤ | COMMENT |
| MEDIUM⚡ | crates/table_iteration/src/data_sync.rs | 86 | //! │ ├─────────────────────────────────────────────────┤ | COMMENT |
| MEDIUM⚡ | crates/table_iteration/src/data_sync.rs | 89 | //! │ │ ├─────────┬─────────┐ | COMMENT |
| MEDIUM⚡ | crates/table_iteration/src/data_sync.rs | 91 | //! │ ├─────────────────────────────────────────────────┴─────────┴─────────┤ | COMMENT |
| MEDIUM⚡ | crates/table_iteration/src/data_sync.rs | 95 | //! │ ├─────────────────────────────────────────────────────────────────────┤ | COMMENT |
| MEDIUM⚡ | crates/table_iteration/src/data_sync.rs | 99 | //! │ └─────────────────────────────────────────────────────────────────────┘ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/convex/sync_types/src/types/mod.rs | 265 | token_identifier: UserIdentifier::construct("convex", "fake_user"), | CODE |
| LOW | …es/private-demos/quickstarts/nextjs/pages/api/hello.js | 4 | res.status(200).json({ name: "John Doe" }); | CODE |
| LOW | …/dashboard/src/docs/components/ProjectCard.stories.tsx | 20 | name: "Acme Corp", | CODE |
| LOW | …/dashboard/src/docs/components/ProjectCard.stories.tsx | 59 | name: "Jane Doe", | CODE |
| LOW | …hboard/src/docs/components/TransferProject.stories.tsx | 14 | name: "Acme Corp", | CODE |
| LOW | …rd/src/docs/components/UsageByProjectChart.stories.tsx | 42 | name: "Acme Corp", | CODE |
| LOW | …packages/dashboard/src/docs/pages/Projects.stories.tsx | 33 | name: "Acme Corp", | CODE |
| LOW | …packages/dashboard/src/docs/pages/Projects.stories.tsx | 100 | { teamId: 2, teamName: "Acme Corp", email: "dana@acme.dev" }, | CODE |
| LOW | …-packages/dashboard/src/docs/pages/Profile.stories.tsx | 94 | { teamId: 14, teamName: "Acme Corp", email: "nicolas@acme.dev" }, | CODE |
| LOW | …ard/src/docs/pages/project/deployment/Data.stories.tsx | 37 | name: "Acme Corp", | CODE |
| LOW | …/docs/pages/project/deployment/FileStorage.stories.tsx | 17 | const mockTeam = { id: 2, slug: "acme", name: "Acme Corp" }; | CODE |
| LOW | …/src/docs/pages/project/deployment/History.stories.tsx | 18 | const mockTeam = { id: 2, slug: "acme", name: "Acme Corp" }; | CODE |
| LOW | …ages/project/deployment/DeploymentSettings.stories.tsx | 16 | name: "Acme Corp", | CODE |
| LOW | …ard/src/docs/pages/project/deployment/Logs.stories.tsx | 24 | const mockTeam = { id: 2, slug: "acme", name: "Acme Corp" }; | CODE |
| LOW | …d/src/docs/pages/project/deployment/Schema.stories.tsx | 24 | name: "Acme Corp", | CODE |
| LOW | …t/deployment/settings/EnvironmentVariables.stories.tsx | 20 | name: "Acme Corp", | CODE |
| LOW | …/pages/project/deployment/settings/Backups.stories.tsx | 37 | const mockTeam = { id: 2, slug: "acme", name: "Acme Corp" }; | CODE |
| LOW | …es/project/deployment/settings/UsageLimits.stories.tsx | 19 | name: "Acme Corp", | CODE |
| LOW | …s/project/deployment/settings/Integrations.stories.tsx | 14 | const mockTeam = { id: 2, slug: "acme", name: "Acme Corp" }; | CODE |
| LOW | …s/pages/project/deployment/schedules/Crons.stories.tsx | 17 | const mockTeam = { id: 2, slug: "acme", name: "Acme Corp" }; | CODE |
| LOW | …ct/deployment/schedules/ScheduledFunctions.stories.tsx | 18 | const mockTeam = { id: 2, slug: "acme", name: "Acme Corp" }; | CODE |
| LOW | …eploymentSettings/BackupDeploymentSelector.stories.tsx | 64 | name: "Jane Doe", | CODE |
| LOW | …/components/deploymentSettings/ImportState.stories.tsx | 12 | memberName: "John Doe", | CODE |
| LOW | …c/components/teamSettings/InviteMemberForm.stories.tsx | 16 | email: "user1@example.org", | CODE |
| LOW | …c/components/teamSettings/InviteMemberForm.stories.tsx | 23 | email: "user2@example.org", | CODE |
| LOW | …d/src/components/teamSettings/AuditLogItem.stories.tsx | 21 | name: "John Doe", | CODE |
| LOW⚡ | …components/teamSettings/EditTeamRoleDialog.stories.tsx | 28 | email: "user1@example.org", | CODE |
| LOW⚡ | …components/teamSettings/EditTeamRoleDialog.stories.tsx | 36 | email: "user2@example.org", | CODE |
| LOW⚡ | …components/teamSettings/EditTeamRoleDialog.stories.tsx | 44 | email: "user3@example.org", | CODE |
| LOW⚡ | …src/components/teamSettings/TeamMemberList.stories.tsx | 20 | email: "user1@example.org", | CODE |
| LOW⚡ | …src/components/teamSettings/TeamMemberList.stories.tsx | 27 | email: "user2@example.org", | CODE |
| LOW⚡ | …src/components/teamSettings/TeamMemberList.stories.tsx | 34 | email: "user3@example.org", | CODE |
| LOW⚡ | …src/components/teamSettings/TeamMemberList.stories.tsx | 39 | email: "user4@example.org", | CODE |
| LOW | …tings/teamAuthentication/SingleSignOnSheet.stories.tsx | 20 | name: "Acme Corp", | CODE |
| LOW | …/teamAuthentication/ReviewDirectoryChanges.stories.tsx | 13 | name: "Acme Corp", | CODE |
| LOW | …ings/teamAuthentication/DirectorySyncSheet.stories.tsx | 30 | name: "Acme Corp", | CODE |
| LOW | …amSettings/teamAuthentication/DomainsSheet.stories.tsx | 20 | name: "Acme Corp", | CODE |
| LOW | …oard/src/components/profile/AvailableTeams.stories.tsx | 19 | email: "nicolas@example.org", | CODE |
| LOW | …oard/src/components/profile/AvailableTeams.stories.tsx | 24 | email: "nicolas.ettlin@example.org", | CODE |
| LOW | …onents/header/JoinDirectorySyncedTeamModal.stories.tsx | 12 | email: "nicolas@example.org", | CODE |
| LOW | …nts/header/ProjectSelector/ProjectSelector.stories.tsx | 31 | name: "Acme Corp", | CODE |
| LOW | …nts/header/ProjectSelector/ProjectSelector.stories.tsx | 91 | email: "nicolas@example.org", | CODE |
| LOW | …ges/dashboard/src/elements/DeploymentLabel.stories.tsx | 158 | whoseName: "Jane Doe", | CODE |
| LOW | …src/elements/CommandPalette/CommandPalette.stories.tsx | 64 | name: "Acme Corp", | CODE |
| LOW | …src/elements/CommandPalette/CommandPalette.stories.tsx | 126 | email: "nicolas@example.org", | CODE |
| LOW | …/dashboard/src/hooks/useCreateProjectModal.stories.tsx | 17 | name: "Acme Corp", | CODE |
| LOW | …s/dashboard-storybook/.storybook/docsPageDecorator.tsx | 152 | name: "Acme Corp", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | npm-packages/local-store/debug/DebugView.tsx | 109 | // await syncQueryManager.clientStore.serverStore.indexedDbClient.db.delete(); | COMMENT |
| CRITICAL | npm-packages/local-store/debug/DebugView.tsx | 123 | // await syncQueryManager.clientStore.serverStore.indexedDbClient.db.delete(); | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | crates/udf/src/validation.rs | 207 | // We do it here instead of within transaction in order to leverage the module | COMMENT |
| MEDIUM | …application/src/snapshot_import/import_file_storage.rs | 140 | // to be robust to manual modifications. | COMMENT |
| MEDIUM | crates/sync/src/state.rs | 113 | /// Fundamentally, the state is determined by the current `StateVersion`, which | COMMENT |
| MEDIUM | .cargo/config.toml | 22 | # collides with this rusty_v8 build harness (duplicate gn arg cppgc_enable_api_checks); | COMMENT |
| MEDIUM | .cargo/config.toml | 23 | # a base bump needs a matching harness and is deferred. Built by convex/rusty_v8 | COMMENT |
| MEDIUM | …private-demos/clerk-initial-auth/convex/auth.config.ts | 10 | domain: "https://robust-maggot-29.clerk.accounts.dev", | CODE |
| MEDIUM | npm-packages/convex/src/bundler/index.ts | 517 | // robust than doing a regex. We only use regex as a fallback. | COMMENT |
| MEDIUM | …Settings/teamAuthentication/ReviewDirectoryChanges.tsx | 125 | // shared height keeps the join seamless whatever the cells hold. | COMMENT |
| MEDIUM | …m-packages/demos/users-and-clerk/convex/auth.config.ts | 10 | domain: "https://robust-maggot-29.clerk.accounts.dev", | CODE |
| MEDIUM | npm-packages/demos/clerk/convex/auth.config.ts | 10 | domain: "https://robust-maggot-29.clerk.accounts.dev", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | npm-packages/dashboard-common/src/elements/GiftWrap.tsx | 1 | // NOTE: This file is mostly AI-generated with a frontier model. Any changes should be heavily tested and benchmarked fo | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …es/private-demos/deploy-speed-test/generate-project.py | 7 | # Create a module | COMMENT |
| MEDIUM | npm-packages/convex/src/react/index.ts | 13 | * ### Creating the client | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | npm-packages/convex/scripts/build.py | 160 | except FileNotFoundError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/common/src/query.rs | 673 | /// If you add a new expression type, don't forget to add it to the proptest | COMMENT |
| MEDIUM | …/features/disconnectOverlay/CloudDisconnectOverlay.tsx | 30 | const defaultMessage = `I'm unable to connect to my deployment "${deploymentName}". | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/check_cla.py | 70 | # Check if the author is a member of convex organization | COMMENT |
| LOW | self-hosted/docker-build/run_backend.sh | 34 | # Check if all required S3 environment variables are present | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …packages/private-demos/cjs-typescript/src/index-cjs.ts | 14 | async function doSomething() { | CODE |
| LOW | …s/private-demos/quickstarts/remix/app/entry.server.tsx | 17 | export default function handleRequest( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/application/src/cron_jobs/mod.rs | 384 | // TODO: implement Display for PendingValue | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/check_cla.py | 49 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/check_cla.py | 12 | CODE |