Open Source Feature Flags, Experimentation, and Product Analytics
This report summarizes scanner evidence for growthbook/growthbook, a TypeScript project with 8,554 GitHub stars. SynthScan examined 1,258,757 lines of code across 4863 source files, recording 3296 pattern matches distributed across 20 syntactic categories. The legacy adjusted pattern signal is 2.8 (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? 3020 finding(s).
Are imports declared and package/API names verified? 200 finding(s).
Are wrappers, guards, and repeated structures necessary? 2787 finding(s).
Which changes need focused human review? 3296 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 3296 distinct pattern matches across 20 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 | docs/docs-ui.js | 12 | function hideMintlifyAssistantChrome() { | CODE |
| LOW | packages/stats-ts/src/contextualBanditWeights.ts | 144 | function assertSupportedContextualBanditMetric( | CODE |
| LOW | packages/stats-ts/src/contextualBanditWeights.ts | 269 | function sumOfSquaredErrorsPerVariationFromArms( | CODE |
| LOW | packages/stats-ts/src/contextualBanditWeights.ts | 326 | function compactGroupSsePerVariation( | CODE |
| LOW | packages/stats-ts/src/contextualBanditWeights.ts | 373 | function bestExhaustiveBinarySplit( | CODE |
| LOW | packages/stats-ts/src/contextualBanditWeights.ts | 1138 | export function computeContextualBanditWeights( | CODE |
| LOW | packages/stats-ts/src/settings.ts | 264 | export function getContextualBanditSettings( | CODE |
| LOW | packages/stats-ts/src/banditWeights.ts | 128 | function probKthArmIsBiggestGaussHermite( | CODE |
| LOW | packages/stats-ts/src/banditWeights.ts | 144 | export function bestArmProbabilitiesGaussHermite( | CODE |
| LOW⚡ | packages/sdk-js/src/core.ts | 1226 | function getStickyBucketExperimentKey( | CODE |
| LOW⚡ | packages/sdk-js/src/core.ts | 1234 | export function getStickyBucketAttributeKey( | CODE |
| LOW⚡ | packages/sdk-js/src/core.ts | 1241 | function getStickyBucketAssignments( | CODE |
| LOW | packages/sdk-js/src/core.ts | 1275 | function generateStickyBucketAssignmentDoc( | CODE |
| LOW | packages/sdk-js/src/core.ts | 1306 | function deriveStickyBucketIdentifierAttributes( | CODE |
| LOW | packages/sdk-js/src/core.ts | 1338 | export async function getAllStickyBucketAssignmentDocs( | CODE |
| LOW | packages/sdk-js/src/core.ts | 1347 | export function getStickyBucketAttributes( | CODE |
| LOW | packages/sdk-js/src/util.ts | 404 | export function getAutoExperimentChangeType( | CODE |
| LOW | packages/shared/test/decisionCriteria.test.ts | 40 | function setMetricsOnResultsStatus({ | CODE |
| LOW | …ckages/shared/test/exploration-config-encoding.test.ts | 9 | function encodeLegacyExplorationConfig(config: ExplorationConfig): string { | CODE |
| LOW | packages/shared/test/snapshot-analysis-chunks.test.ts | 89 | function makeExperimentSnapshotAnalysisChunk( | CODE |
| LOW | packages/shared/scripts/gen-sdk-resources.ts | 12 | function defineSDKCapabilityVersion(sdk: string, capabilities: string[]) { | CODE |
| LOW | packages/shared/src/dates.ts | 100 | export function dateStringArrayBetweenDates( | CODE |
| LOW | packages/shared/src/sql.ts | 322 | export function usesBackslashStringEscapes( | CODE |
| LOW | packages/shared/src/notifications.ts | 1008 | export function notificationEventsForLevel( | CODE |
| LOW | packages/shared/src/notifications.ts | 1034 | export function notificationEventSelection( | CODE |
| LOW | packages/shared/src/api-model.ts | 359 | function getDefaultCrudActionSummary( | CODE |
| LOW | packages/shared/src/journeys.ts | 25 | export function journeyResultToStepValues( | CODE |
| LOW | packages/shared/src/journeys.ts | 88 | export function journeyMinUnusedLookahead( | CODE |
| LOW | packages/shared/src/journeys.ts | 411 | function journeyOptionsCoverRequested( | CODE |
| LOW | packages/shared/src/journeys.ts | 438 | export function journeyCacheCandidateVerdict({ | CODE |
| LOW | packages/shared/src/journeys.ts | 674 | export function journeyDisplayLookaheadDepth( | CODE |
| LOW | packages/shared/src/journeys.ts | 687 | export function toClientJourneyExploration( | CODE |
| LOW | packages/shared/src/journeys.ts | 748 | function journeyConfigExceedsRowCap(params: { | CODE |
| LOW | packages/shared/src/journeys.ts | 757 | export function canIncreaseJourneyOptions(params: { | CODE |
| LOW | packages/shared/src/journeys.ts | 848 | export function validateJourneyStepColumns( | CODE |
| LOW | packages/shared/src/ai-chat.ts | 90 | export function stringifyToolResultForStorage(output: unknown): string { | CODE |
| LOW | packages/shared/src/ai.ts | 234 | export function anthropicStructuredOutputMode( | CODE |
| LOW | packages/shared/src/ai.ts | 461 | export function resolveImageModelIdForSdk(model: string): string { | CODE |
| LOW | packages/shared/src/ai.ts | 553 | export function buildImageAspectInstruction({ | CODE |
| LOW | packages/shared/src/ai.ts | 604 | export function getProviderFromEmbeddingModel( | CODE |
| LOW | packages/shared/src/ai.ts | 730 | export function getAIModelSettingsUsingProvider( | CODE |
| LOW | packages/shared/src/ai.ts | 853 | export function formatAIRateLimitRetryMessage( | CODE |
| LOW | packages/shared/src/funnels.ts | 22 | export function conversionWindowToSeconds(window: { | CODE |
| LOW | packages/shared/src/funnels.ts | 218 | export function getFunnelBuilderViolations( | CODE |
| LOW | packages/shared/src/funnels.ts | 254 | export function funnelDatasetToFunnelSettings( | CODE |
| LOW | packages/shared/src/funnels.ts | 267 | export function funnelSettingsToFunnelDataset( | CODE |
| LOW | packages/shared/src/snapshot-analysis-chunks.ts | 64 | export function encodeSnapshotAnalysisChunks( | CODE |
| LOW | packages/shared/src/snapshot-analysis-chunks.ts | 229 | export function decodeSnapshotAnalysisChunks( | CODE |
| LOW | packages/shared/src/snapshot-analysis-chunks.ts | 378 | export function migrateLegacySnapshotAnalysisChunkData( | CODE |
| LOW | packages/shared/src/populations.ts | 30 | export function getPopulationFactTableIds(steps: PopulationStep[]): string[] { | CODE |
| LOW | packages/shared/src/populations.ts | 35 | export function getPopulationRuleViolations({ | CODE |
| LOW | packages/shared/src/power/power.ts | 430 | export function sequentialPowerSequentialVariance( | CODE |
| LOW | packages/shared/src/power/power.ts | 447 | export function sequentialPowerStandardError( | CODE |
| LOW | packages/shared/src/power/power.ts | 476 | function getSequentialTuningParameter( | CODE |
| LOW | packages/shared/src/power/power.ts | 727 | function calculatePriorMeanSpecified( | CODE |
| LOW | packages/shared/src/power/power.ts | 739 | function calculatePriorVarianceSpecified( | CODE |
| LOW | packages/shared/src/power/power.ts | 759 | function calculatePriorVarianceDGP( | CODE |
| LOW | packages/shared/src/power/power.ts | 784 | function getMarginalVarianceTauHat( | CODE |
| LOW | …ed/src/settings/resolvers/genMetricOverrideResolver.ts | 12 | export default function genMetricOverrideResolver( | CODE |
| LOW | packages/shared/src/sdk-versioning/index.ts | 294 | export function getMinSupportedSDKVersions( | CODE |
| 2649 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .agents/guides/permissions.md | 221 | footprint, | COMMENT |
| LOW | charts/growthbook/values.yaml | 101 | - name: ENCRYPTION_KEY | COMMENT |
| LOW | charts/growthbook/values.yaml | 121 | # - name: EMAIL_HOST_USER | COMMENT |
| LOW | charts/growthbook/values.yaml | 141 | # value: "" | COMMENT |
| LOW | charts/growthbook/values.yaml | 161 | # # not required when deployed to GCP with an instance service account | COMMENT |
| LOW | charts/growthbook/values.yaml | 201 | # hosts: | COMMENT |
| LOW | charts/growthbook/charts/server/Chart.yaml | 1 | apiVersion: v2 | COMMENT |
| LOW | charts/growthbook/charts/server/Chart.yaml | 21 | # incremented each time you make changes to the application. Versions are not expected to | COMMENT |
| LOW | charts/growthbook/charts/server/values.yaml | 81 | # kubernetes.io/tls-acme: "true" | COMMENT |
| LOW | packages/sdk-js/pnpm-workspace.yaml | 1 | # Makes this package its own pnpm project when it is installed as a Git | COMMENT |
| LOW | packages/sdk-js/scripts/bump-version.js | 1 | // Import package.json in this project and bump the version | COMMENT |
| LOW | packages/shared/types/feature.d.ts | 61 | // `environments: string[]`. Upgraded by `upgradeV0Feature`. | COMMENT |
| LOW | packages/shared/types/fact-table.d.ts | 121 | > | null; | COMMENT |
| LOW | packages/shared/types/query.d.ts | 101 | | "aggregatedFactTableInsertData" | COMMENT |
| LOW | packages/shared/types/integrations.d.ts | 81 | // to produce the final metric value. | COMMENT |
| LOW | packages/shared/types/integrations.d.ts | 541 | factTable: FactTableInterface; | COMMENT |
| LOW | packages/shared/types/sql.d.ts | 181 | ) => string; | COMMENT |
| LOW | packages/shared/types/organization.d.ts | 321 | // Project-scoped rules; absent/no-match = strict. | COMMENT |
| LOW | packages/shared/types/organization.d.ts | 341 | // When enabled, a feature draft whose base version is behind the current | COMMENT |
| LOW | packages/shared/types/stats.d.ts | 21 | // comparisons / display strings) or any single piece of it without pulling | COMMENT |
| LOW | packages/shared/src/ai.ts | 101 | // Intentional rolling alias — Anthropic hasn't published a dated snapshot | COMMENT |
| LOW | packages/shared/src/ai.ts | 461 | export function resolveImageModelIdForSdk(model: string): string { | COMMENT |
| LOW | packages/shared/src/snapshot-analysis-chunks.ts | 341 | // -- Legacy chunk migration -- | COMMENT |
| LOW | packages/shared/src/sdk-versioning/resolveConstants.ts | 21 | // when merged into this map (see the resolution-universe loader), so only two | COMMENT |
| LOW | …es/shared/src/enterprise/validators/dashboard-block.ts | 281 | // override them per the block's globalControlSettings opt-in (see | COMMENT |
| LOW | …es/shared/src/enterprise/validators/dashboard-block.ts | 301 | // Custom Date Range). Legacy string presets are migrated to this shape in | COMMENT |
| LOW | packages/shared/src/util/diffFormats.ts | 1 | // Schema-keyed JSON formats for change-sets (feature revisions, etc.). These | COMMENT |
| LOW | packages/shared/src/util/diffFormats.ts | 241 | // { | COMMENT |
| LOW | packages/shared/src/util/diffFormats.ts | 301 | COMMENT | |
| LOW | packages/shared/src/util/ruleId.ts | 161 | } catch { | COMMENT |
| LOW | packages/shared/src/util/format-json.ts | 1 | // Format a parsed JSON value for display/storage with one design rule: | COMMENT |
| LOW | packages/shared/src/util/features.ts | 421 | // keys present in the rule value override the default; the rest fall back to | COMMENT |
| LOW | packages/shared/src/util/features.ts | 521 | return serializeExtendsObject(patchRefs, patch); | COMMENT |
| LOW | packages/shared/src/util/features.ts | 1721 | // An approved draft whose approval no longer reflects the current live state | COMMENT |
| LOW | packages/shared/src/util/features.ts | 1921 | // Granular three-way merge of two diverged rule arrays (matched by id). | COMMENT |
| LOW | packages/shared/src/util/managedWarehouse.ts | 601 | const path = `${MANAGED_WAREHOUSE_ATTRIBUTES_COLUMN}.${chIdentifier( | COMMENT |
| LOW | packages/shared/src/util/index.ts | 461 | rule: FeatureRule; | COMMENT |
| LOW | packages/shared/src/util/index.ts | 701 | // NOT for persistence — content-identical rules across envs come out as | COMMENT |
| LOW | packages/shared/src/util/configs.ts | 41 | // flavors out of list views / feature `baseConfig` selectors / the lineage tree | COMMENT |
| LOW | packages/shared/src/util/configs.ts | 661 | // | COMMENT |
| LOW | packages/shared/src/util/configs.ts | 941 | // Validate a config's FULLY-RESOLVED, concrete value (an object with all | COMMENT |
| LOW | packages/shared/src/util/config-schema/invariants.ts | 1 | import { evalCondition } from "@growthbook/growthbook"; | COMMENT |
| LOW | packages/shared/src/util/config-schema/json-schema.ts | 21 | const m = /^#\/(?:\$defs|definitions)\/(.+)$/.exec(ref); | COMMENT |
| LOW | packages/shared/src/util/config-schema/validate.ts | 101 | } else { | COMMENT |
| LOW | packages/shared/src/util/config-schema/types.ts | 1 | import { SchemaField, SimpleSchema } from "shared/types/feature"; | COMMENT |
| LOW | packages/shared/src/util/config-schema/types.ts | 21 | | "undeclared-rule-field"; | COMMENT |
| LOW | packages/shared/src/util/config-schema/index.ts | 1 | // Portable schema/value import-export core, shared between the front-end editor | COMMENT |
| LOW | packages/shared/src/experiments/experiments.ts | 241 | // active data source. A span in that quote is a *quoted identifier* (so | COMMENT |
| LOW | packages/shared/src/experiments/experiments.ts | 401 | } | COMMENT |
| LOW | packages/shared/src/experiments/experiments.ts | 981 | } | COMMENT |
| LOW | packages/shared/src/permissions/publishFootprint.ts | 301 | // A patch WITHOUT an `environments` key does not touch the field | COMMENT |
| LOW | packages/shared/src/dialects/snowflake.ts | 61 | // point is its own APPROX_PERCENTILE_ESTIMATE call in the SELECT list — | COMMENT |
| LOW | …kages/shared/src/validators/revision-publish-failed.ts | 21 | bulkPublishId: bulkPublishIdField, | COMMENT |
| LOW | packages/shared/src/validators/ramp-schedule.ts | 161 | COMMENT | |
| LOW | packages/shared/src/validators/constant.ts | 21 | COMMENT | |
| LOW | packages/shared/src/validators/features.ts | 121 | description: z.string().max(MAX_DESCRIPTION_LENGTH), | COMMENT |
| LOW | packages/shared/src/validators/features.ts | 661 | .object({ | COMMENT |
| LOW | packages/shared/src/validators/features.ts | 701 | // The live feature version at the moment this revision was approved. | COMMENT |
| LOW | packages/shared/src/validators/features.ts | 741 | // updateRevision's $addToSet; may be empty if no content edits have been made. | COMMENT |
| LOW | packages/shared/src/validators/features.ts | 761 | // The schedule is then treated as "dangerous": it can't be edited inline | COMMENT |
| 168 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/shared/src/util/features.ts | 1797 | // ── Scheduled / deferred publish ──────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/shared/src/revisions/helpers.ts | 742 | // ── Revision display helpers ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/shared/src/revisions/scheduledPublish.ts | 1 | // ── Scheduled / deferred publish ──────────────────────────────────────────── | COMMENT |
| MEDIUM | …/front-end/test/components/RampScheduleSection.test.ts | 232 | // ── Timing changes must NOT break the match ─────────────────────────────── | COMMENT |
| MEDIUM | …rprise/components/ProductAnalytics/ExplorerContext.tsx | 77 | // ─── State ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …rprise/components/ProductAnalytics/ExplorerContext.tsx | 108 | // ─── Modifiers ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …rprise/components/ProductAnalytics/ExplorerContext.tsx | 132 | // ─── Funnel metric link ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/front-end/styles/global.scss | 4002 | // ── rrweb-player control bar overrides ─────────────────────────────────────── | COMMENT |
| MEDIUM | …-end/components/RampSchedule/RampMonitoringSignals.tsx | 968 | // ── Signal-aware buttons (rollback / hold) ────────────────────────────── | COMMENT |
| MEDIUM | …-end/components/RampSchedule/RampMonitoringSignals.tsx | 1070 | // ── Approval CTA ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ges/front-end/components/RampSchedule/RampTimeline.tsx | 30 | // ─── helpers ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ges/front-end/components/RampSchedule/RampTimeline.tsx | 156 | // ─── PopoverEffectRow ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ges/front-end/components/RampSchedule/RampTimeline.tsx | 179 | // ─── Popover patch display ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ges/front-end/components/RampSchedule/RampTimeline.tsx | 340 | // ─── Node popover content ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ges/front-end/components/RampSchedule/RampTimeline.tsx | 570 | // ─── NodeDot ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ges/front-end/components/RampSchedule/RampTimeline.tsx | 596 | // ─── Node ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ges/front-end/components/RampSchedule/RampTimeline.tsx | 671 | // ─── Connector ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ges/front-end/components/RampSchedule/RampTimeline.tsx | 693 | // ─── RampTimeline ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ges/front-end/components/RampSchedule/RampTimeline.tsx | 703 | // ─── Exported helpers (used by parent pages to build header rows) ───────────── | COMMENT |
| MEDIUM | …ges/front-end/components/RampSchedule/RampTimeline.tsx | 754 | // ─── RampTimeline ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ront-end/components/RampSchedule/RampScheduleModal.tsx | 29 | // ─── Types ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ront-end/components/RampSchedule/RampScheduleModal.tsx | 40 | // ─── Helpers ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ront-end/components/RampSchedule/RampScheduleModal.tsx | 131 | // ─── Component ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ront-end/components/RampSchedule/RampScheduleModal.tsx | 150 | // ── Ramp section state ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ront-end/components/RampSchedule/RampScheduleModal.tsx | 157 | // ── Save ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ront-end/components/RampSchedule/RampScheduleModal.tsx | 225 | // ── Render ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …t-end/components/RampSchedule/RampTimeline.module.scss | 1 | // ─── Theme-aware color tokens ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | …t-end/components/RampSchedule/RampTimeline.module.scss | 16 | // ─── constants (mirrored from TSX) ────────────────────────────────────────── | COMMENT |
| MEDIUM | …t-end/components/RampSchedule/RampTimeline.module.scss | 41 | // ─── NodeDot ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …t-end/components/RampSchedule/RampTimeline.module.scss | 74 | // ─── Node ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …t-end/components/RampSchedule/RampTimeline.module.scss | 100 | // ─── Connector ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …t-end/components/RampSchedule/RampTimeline.module.scss | 127 | // ─── PopoverEffectRow ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …t-end/components/RampSchedule/RampTimeline.module.scss | 138 | // ─── NodePopoverContent ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …t-end/components/RampSchedule/RampTimeline.module.scss | 150 | // ─── Scheduled date two-line label ─────────────────────────────────────────── | COMMENT |
| MEDIUM | …t-end/components/RampSchedule/RampTimeline.module.scss | 156 | // ─── RampTimeline root ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …s/front-end/components/Features/FeatureDiffRenders.tsx | 284 | // ─── Ramp schedule diff helpers ────────────────────────────────────────────── | COMMENT |
| MEDIUM | …s/front-end/components/Features/FeatureDiffRenders.tsx | 1774 | // ─── Prerequisite diff helpers ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | …t-end/components/SavedGroups/SavedGroupDiffRenders.tsx | 151 | // ─── Section renders ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …t-end/components/SavedGroups/SavedGroupDiffRenders.tsx | 583 | // ─── Badge getters ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …nt-end/components/Experiment/ExperimentDiffRenders.tsx | 44 | // ─── Helpers ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …nt-end/components/Experiment/ExperimentDiffRenders.tsx | 138 | // ─── Section renders ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …nt-end/components/Experiment/ExperimentDiffRenders.tsx | 176 | // ── Attribute targeting (condition) ────────────────────────────────────── | COMMENT |
| MEDIUM | …nt-end/components/Experiment/ExperimentDiffRenders.tsx | 204 | // ── Saved group targeting ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | …nt-end/components/Experiment/ExperimentDiffRenders.tsx | 230 | // ── Prerequisite targeting ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | …nt-end/components/Experiment/ExperimentDiffRenders.tsx | 258 | // ── Traffic (coverage + weights) ───────────────────────────────────────── | COMMENT |
| MEDIUM | …nt-end/components/Experiment/ExperimentDiffRenders.tsx | 286 | // ── Namespace ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …nt-end/components/Experiment/ExperimentDiffRenders.tsx | 307 | // ── Hash seed ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …nt-end/components/Experiment/ExperimentDiffRenders.tsx | 576 | // ── Bandit schedule / burn-in ────────────────────────────────────────────── | COMMENT |
| MEDIUM | …nt-end/components/Experiment/ExperimentDiffRenders.tsx | 610 | // ── Long-text fields ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …nt-end/components/Experiment/ExperimentDiffRenders.tsx | 625 | // ── Fallback for any future/unhandled fields ─────────────────────────────── | COMMENT |
| MEDIUM⚡ | …nt-end/components/Experiment/ExperimentDiffRenders.tsx | 739 | // ─── Badge getters ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/front-end/components/Reviews/diffCopyFormats.ts | 175 | // ── "LLM / agents": XML-wrapped before/after per entity ────────────────────── | COMMENT |
| MEDIUM | …nt-end/components/Reviews/Feature/revisionLogReplay.ts | 7 | // ─── Log replay engine ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/back-end/test/services/rampSchedule.test.ts | 1275 | // ── condition ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/back-end/test/services/rampSchedule.test.ts | 1302 | // ── savedGroups ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/back-end/test/services/rampSchedule.test.ts | 1329 | // ── prerequisites ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/back-end/test/services/rampSchedule.test.ts | 1356 | // ── force (null is a valid value, not a clear signal) ──────────────────── | COMMENT |
| MEDIUM | packages/back-end/test/services/rampSchedule.test.ts | 1375 | // ── cross-field independence ────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/back-end/src/events/eventEnvironments.ts | 12 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/back-end/src/events/eventEnvironments.ts | 35 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| 5 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/shared/test/permissions.test.ts | 16 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/shared/test/permissions.test.ts | 1244 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/shared/test/permissions.test.ts | 1300 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/shared/test/permissions.test.ts | 1682 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/shared/test/permissions.test.ts | 1742 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/shared/test/resolveConstants.test.ts | 335 | expect(resolveConstantRefs("{{ @const:full }}", map)).toBe("Jane Doe"); | CODE |
| LOW | …es/shared/test/validators/dashboard-api-blocks.test.ts | 130 | owner: "admin@example.com", | CODE |
| LOW | …es/shared/test/validators/dashboard-api-blocks.test.ts | 134 | expect(parsed.owner).toBe("admin@example.com"); | CODE |
| LOW | packages/front-end/ui/MultiSelectField.tsx | 293 | | "placeholder" | CODE |
| LOW | packages/front-end/ui/MultiSelectField.tsx | 403 | | "placeholder" | CODE |
| LOW | packages/front-end/components/Forms/SelectField.tsx | 59 | | "placeholder" | CODE |
| LOW | …front-end/components/CustomFields/CustomFieldModal.tsx | 439 | {...form.register("placeholder")} | CODE |
| LOW | …s/front-end/components/CustomHooks/CustomHookModal.tsx | 76 | email: "user@example.com", | CODE |
| LOW | …s/front-end/components/CustomHooks/CustomHookModal.tsx | 114 | owner: "user@example.com", | CODE |
| LOW | …s/front-end/components/CustomHooks/CustomHookModal.tsx | 312 | email: "user@example.com", | CODE |
| LOW | packages/back-end/README.md | 453 | 1. Run `yarn workspace back-end generate-dummy-data`. This will create CSV files in `/tmp/csv` | CODE |
| LOW | packages/back-end/package.json | 25 | "generate-dummy-data": "ts-node ./test/data-generator/new-generator.ts", | CODE |
| LOW | packages/back-end/test/restrictedProjects.test.ts | 12 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/additionalRoles.test.ts | 7 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/approvalCoverage.test.ts | 11 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/migrations.test.ts | 2279 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/migrations.test.ts | 2340 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/migrations.test.ts | 2355 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/migrations.test.ts | 2387 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/migrations.test.ts | 2402 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/migrations.test.ts | 2420 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/migrations.test.ts | 2438 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/envScopedReview.test.ts | 11 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 3560 | // ownerEmail: "test@test.com", | COMMENT |
| LOW | packages/back-end/test/permissions.test.ts | 3628 | // ownerEmail: "test@test.com", | COMMENT |
| LOW | packages/back-end/test/permissions.test.ts | 36 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 1795 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 1956 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 2172 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 2331 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 2449 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 2608 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 2698 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 2799 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 2894 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 3084 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 3152 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 3220 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 3288 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 3356 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 3424 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 3492 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 3697 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 3784 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 3905 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 3992 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 4079 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 4170 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 4294 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 4385 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 4594 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 4838 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 5047 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 5159 | ownerEmail: "test@test.com", | CODE |
| LOW | packages/back-end/test/permissions.test.ts | 5307 | ownerEmail: "test@test.com", | CODE |
| 107 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …ghlighting/Snippets/MultivariateFeatureCodeSnippet.tsx | 167 | print(value) | CODE |
| HIGH | …ghlighting/Snippets/MultivariateFeatureCodeSnippet.tsx | 220 | print(value) | CODE |
| HIGH⚡ | …axHighlighting/Snippets/GrowthBookSetupCodeSnippet.tsx | 734 | print("Viewed Experiment") | CODE |
| HIGH⚡ | …axHighlighting/Snippets/GrowthBookSetupCodeSnippet.tsx | 735 | print("Experiment Id: ", experiment.key) | CODE |
| HIGH⚡ | …axHighlighting/Snippets/GrowthBookSetupCodeSnippet.tsx | 736 | print("Variation Id: ", experimentResult.key) | CODE |
| HIGH⚡ | …axHighlighting/Snippets/GrowthBookSetupCodeSnippet.tsx | 1053 | print("Viewed Experiment") | CODE |
| HIGH⚡ | …axHighlighting/Snippets/GrowthBookSetupCodeSnippet.tsx | 1054 | print("Experiment Id: " + experiment.key) | CODE |
| HIGH⚡ | …axHighlighting/Snippets/GrowthBookSetupCodeSnippet.tsx | 1055 | print("Variation Id: " + result.key) | CODE |
| HIGH⚡ | …axHighlighting/Snippets/GrowthBookSetupCodeSnippet.tsx | 1204 | print('Viewed Experiment'); | CODE |
| HIGH⚡ | …axHighlighting/Snippets/GrowthBookSetupCodeSnippet.tsx | 1205 | print('Experiment Id: ' + trackData.experiment.key); | CODE |
| HIGH⚡ | …axHighlighting/Snippets/GrowthBookSetupCodeSnippet.tsx | 1206 | print('Variation Id: ' + trackData.experimentResult.key); | CODE |
| HIGH | …taxHighlighting/Snippets/BooleanFeatureCodeSnippet.tsx | 190 | print("Feature is enabled!") | CODE |
| HIGH | packages/back-end/src/services/notebook.ts | 244 | print(create_notebook( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .agents/guides/backend/api-patterns.md | 72 | #### Step 1: Create the OpenAPI spec | COMMENT |
| LOW | .agents/guides/backend/api-patterns.md | 106 | #### Step 2: Wire up the API config in the model | COMMENT |
| LOW | .agents/guides/backend/api-patterns.md | 129 | #### Step 3: Register the model for routing | COMMENT |
| LOW | .agents/guides/backend/api-patterns.md | 133 | #### Step 4: Implement `toApiInterface` | COMMENT |
| LOW | .agents/guides/backend/model-patterns.md | 11 | ### Step 1: Create the Base Class | COMMENT |
| LOW | .agents/guides/backend/model-patterns.md | 38 | ### Step 2: Extend with Permission Logic | COMMENT |
| LOW | .agents/guides/backend/model-patterns.md | 64 | ### Step 3: Add to the RequestContext so it can be used from anywhere | COMMENT |
| LOW | packages/sdk-js/README.md | 41 | ### Step 1: Configure your app | COMMENT |
| LOW | packages/sdk-js/README.md | 74 | ### Step 2: Start Feature Flagging! | COMMENT |
| LOW⚡ | packages/front-end/components/DataViz/PivotTable.tsx | 432 | // Step 1: Extract metadata | COMMENT |
| LOW⚡ | packages/front-end/components/DataViz/PivotTable.tsx | 435 | // Step 2: Get sorted x-axis values | COMMENT |
| LOW⚡ | packages/front-end/components/DataViz/PivotTable.tsx | 438 | // Step 3: Build lookup map for efficient row access | COMMENT |
| LOW⚡ | packages/front-end/components/DataViz/PivotTable.tsx | 444 | // Step 4: Build column headers | COMMENT |
| LOW⚡ | packages/front-end/components/DataViz/PivotTable.tsx | 451 | // Step 5: Build rows (with or without dimensions) | COMMENT |
| LOW | packages/sdk-react/README.md | 38 | ### Step 1: Configure your app | COMMENT |
| LOW | packages/sdk-react/README.md | 81 | ### Step 2: Start feature flagging! | COMMENT |
| LOW⚡ | …ages/back-end/test/funnelIncrementalRefreshSql.test.ts | 236 | // Step 0: decomposable MIN into the resolved-ts column. | COMMENT |
| LOW⚡ | …ages/back-end/test/funnelIncrementalRefreshSql.test.ts | 240 | // Step 1: sorted array (BigQuery ARRAY_AGG ... IGNORE NULLS ORDER BY). | COMMENT |
| LOW⚡ | packages/back-end/test/services/rampSchedule.test.ts | 1087 | // Step 0: baseline for both | COMMENT |
| LOW⚡ | packages/back-end/test/services/rampSchedule.test.ts | 1092 | // Step 1: only TARGET_A coverage update | COMMENT |
| LOW⚡ | packages/back-end/test/services/rampSchedule.test.ts | 1094 | // Step 2: only TARGET_B condition update | COMMENT |
| LOW | packages/back-end/test/services/rampSchedule.test.ts | 1455 | // Step 2: sum = 300 (step 0) + 0 (pure approval, step 1) + 600 (step 2) = 900 | COMMENT |
| LOW | packages/back-end/test/services/rampSchedule.test.ts | 4773 | // Step 0: pure approval (no interval). Step 1: instant (no interval, no holds). | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | packages/shared/src/ai.ts | 473 | // When an AI-generated image replaces an existing one on the page, it drops | COMMENT |
| HIGH | packages/back-end/src/util/secrets.ts | 422 | // Kraken.io credentials — AI-generated images are resized + re-encoded to | COMMENT |
| HIGH | packages/back-end/src/api/visual-editor-ai/scopeCss.ts | 1 | // Scopes a stylesheet under a single root selector so an AI-generated | COMMENT |
| HIGH | …/back-end/src/api/visual-editor-ai/postPromoteImage.ts | 7 | // Moves an AI-generated image out of the throwaway `gen/` quarantine prefix | COMMENT |
| HIGH | packages/back-end/src/services/imageOptimization.ts | 11 | // AI-generated images are optimized via the Kraken.io API (resize + WebP), | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/shared/test/decisionCriteria.test.ts | 678 | // All guardrails losing - should match | COMMENT |
| MEDIUM | …d/src/enterprise/decision-criteria/decisionCriteria.ts | 942 | // Safe rollouts do not expand metric-group guardrails yet. | COMMENT |
| MEDIUM | …-end/components/RampSchedule/RampMonitoringSignals.tsx | 970 | // guardrails or active hold signals always take priority over the approval | COMMENT |
| MEDIUM | …-end/components/SafeRollout/Results/CompactResults.tsx | 150 | // Only include goals in calculation, not secondary or guardrails | COMMENT |
| MEDIUM | …ents/DecisionCriteria/DecisionCriteriaModalContent.tsx | 53 | // Direction options for guardrails | COMMENT |
| MEDIUM | packages/front-end/hooks/useExperimentTableRows.ts | 318 | // Only include goals in calculation, not secondary or guardrails | COMMENT |
| MEDIUM | …es/front-end/services/importing/eppo/eppo-importing.ts | 202 | // Deprecated in Eppo's API; guardrails are now defined by a cutoff | COMMENT |
| MEDIUM | packages/back-end/src/util/migrations.ts | 942 | // We know the metric ids included, but don't know if they were goals or guardrails | COMMENT |
| MEDIUM | packages/back-end/src/models/ExperimentModel.ts | 1848 | // Remove from guardrails | COMMENT |
| MEDIUM | packages/back-end/src/services/rampSchedule.ts | 1845 | // guardrails here is the required mechanism to get them into analysisSummary. | COMMENT |
| MEDIUM | packages/back-end/src/services/rampScheduleEvaluator.ts | 50 | // guardrails/health, min sample size, signal metrics) has already cleared. | COMMENT |
| MEDIUM | …services/experimentChanges/experimentStoppedResults.ts | 88 | // (but not secondaries or guardrails). | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | packages/front-end/components/DataViz/PivotTable.tsx | 432 | // Step 1: Extract metadata | COMMENT |
| LOW⚡ | packages/front-end/components/DataViz/PivotTable.tsx | 435 | // Step 2: Get sorted x-axis values | COMMENT |
| LOW⚡ | packages/front-end/components/DataViz/PivotTable.tsx | 438 | // Step 3: Build lookup map for efficient row access | COMMENT |
| LOW⚡ | packages/front-end/components/DataViz/PivotTable.tsx | 444 | // Step 4: Build column headers | COMMENT |
| LOW⚡ | packages/front-end/components/DataViz/PivotTable.tsx | 451 | // Step 5: Build rows (with or without dimensions) | COMMENT |
| LOW | packages/front-end/services/sqlAutoComplete.ts | 151 | // So we need to check if the path is empty before adding it to the completions | COMMENT |
| LOW⚡ | …ages/back-end/test/funnelIncrementalRefreshSql.test.ts | 236 | // Step 0: decomposable MIN into the resolved-ts column. | COMMENT |
| LOW⚡ | …ages/back-end/test/funnelIncrementalRefreshSql.test.ts | 240 | // Step 1: sorted array (BigQuery ARRAY_AGG ... IGNORE NULLS ORDER BY). | COMMENT |
| LOW⚡ | packages/back-end/test/services/rampSchedule.test.ts | 1087 | // Step 0: baseline for both | COMMENT |
| LOW⚡ | packages/back-end/test/services/rampSchedule.test.ts | 1092 | // Step 1: only TARGET_A coverage update | COMMENT |
| LOW⚡ | packages/back-end/test/services/rampSchedule.test.ts | 1094 | // Step 2: only TARGET_B condition update | COMMENT |
| LOW | packages/back-end/test/services/rampSchedule.test.ts | 1455 | // Step 2: sum = 300 (step 0) + 0 (pure approval, step 1) + 600 (step 2) = 900 | COMMENT |
| LOW | packages/back-end/test/services/rampSchedule.test.ts | 4773 | // Step 0: pure approval (no interval). Step 1: instant (no interval, no holds). | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | packages/back-end/src/api/projects/putProject.ts | 15 | req.context.models.projects.updateValidator.parse(req.body), | CODE |
| CRITICAL | packages/back-end/src/api/projects/postProject.ts | 8 | const payload = req.context.models.projects.createValidator.parse(req.body); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/stats-ts/src/contextualBanditWeights.ts | 461 | // with the approximate splitter and to stay robust if that ever changes. | COMMENT |
| MEDIUM | …kages/front-end/styles/_bootstrap-theme-overrides.scss | 529 | // Absolutely centered inside the host cell — the in-flow icon was forcing | COMMENT |
| MEDIUM | packages/front-end/components/Features/RuleList.tsx | 331 | // A feature reaching >1 project gets project-nuanced conflict messaging. | COMMENT |
| LOW | packages/stats/gbstats/gbstats.py | 340 | # if there are no goal metrics, just use 1 as the number of tests | COMMENT |
| MEDIUM | packages/back-end/src/app.ts | 256 | // TODO: more robust health check? | COMMENT |
| MEDIUM | …s/back-end/src/routers/revision/revision.controller.ts | 1056 | // is robust to benign serialization drift between the client's cached | COMMENT |
| MEDIUM | packages/back-end/src/services/features.ts | 2989 | // We might want to investigate a more robust solution in the future. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/stats/tests/test_utils.py | 1 | CODE | |
| LOW | packages/stats/tests/test_utils.py | 3 | CODE | |
| LOW | packages/stats/tests/test_utils.py | 6 | CODE | |
| LOW | packages/stats/tests/test_utils.py | 7 | CODE | |
| LOW | packages/stats/tests/test_midexperimentpower.py | 1 | CODE | |
| LOW | packages/stats/tests/test_midexperimentpower.py | 2 | CODE | |
| LOW | packages/stats/tests/test_midexperimentpower.py | 3 | CODE | |
| LOW | packages/stats/tests/test_midexperimentpower.py | 5 | CODE | |
| LOW | packages/stats/tests/test_midexperimentpower.py | 6 | CODE | |
| LOW | packages/stats/tests/test_gbstats.py | 9 | CODE | |
| LOW | packages/stats/tests/test_gbstats.py | 9 | CODE | |
| LOW | packages/stats/tests/test_gbstats.py | 27 | CODE | |
| LOW | packages/stats/tests/test_gbstats.py | 33 | CODE | |
| LOW | packages/stats/tests/test_devtools.py | 1 | CODE | |
| LOW | packages/stats/tests/test_devtools.py | 2 | CODE | |
| LOW | packages/stats/tests/test_devtools.py | 3 | CODE | |
| LOW | packages/stats/tests/test_devtools.py | 6 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | packages/stats/gbstats/models/tests.py | 0 | return uninformative output when ab test analysis can't be performed adequately | STRING |
| HIGH | packages/stats/gbstats/frequentist/tests.py | 0 | return uninformative output when ab test analysis can't be performed adequately | STRING |
| HIGH | packages/stats/gbstats/bayesian/tests.py | 0 | return uninformative output when ab test analysis can't be performed adequately | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/stats/tests/frequentist/test_tests.py | 39 | CODE | |
| LOW | packages/stats/tests/frequentist/test_post_strat.py | 170 | CODE | |
| LOW | packages/stats/tests/bayesian/test_tests.py | 27 | CODE | |
| LOW | packages/stats/gbstats/gbstats.py | 162 | CODE | |
| LOW | packages/stats/gbstats/gbstats.py | 198 | CODE | |
| LOW | packages/stats/gbstats/gbstats.py | 286 | CODE | |
| LOW | packages/stats/gbstats/gbstats.py | 323 | CODE | |
| LOW | packages/stats/gbstats/gbstats.py | 751 | CODE | |
| LOW | packages/stats/gbstats/gbstats.py | 1060 | CODE | |
| LOW | packages/stats/gbstats/gbstats.py | 1394 | CODE | |
| LOW | packages/stats/gbstats/models/tests.py | 1368 | CODE | |
| LOW | packages/stats/gbstats/models/tests.py | 1527 | CODE | |
| LOW | packages/stats/gbstats/devtools/simulation.py | 150 | CODE | |
| LOW | packages/stats/gbstats/devtools/simulation.py | 292 | CODE | |
| LOW | …back-end/test/integrations/integration-query-runner.py | 295 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …axHighlighting/Snippets/GrowthBookSetupCodeSnippet.tsx | 924 | # Create a context for the current user/request | COMMENT |
| MEDIUM⚡ | packages/stats/gbstats/gbstats.py | 944 | # Create a copy to avoid SettingWithCopy warnings or mutating the original | COMMENT |
| MEDIUM | packages/stats/gbstats/gbstats.py | 1089 | # Create the variation response object | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/stats/gbstats/utils.py | 180 | except Exception as e: | CODE |
| LOW | packages/stats/gbstats/gbstats.py | 1200 | except Exception as e: | CODE |
| LOW | packages/stats/gbstats/gbstats.py | 1474 | except Exception as e: | CODE |
| LOW | …back-end/test/integrations/integration-query-runner.py | 317 | except Exception as e: | CODE |
| MEDIUM | …back-end/test/integrations/integration-query-runner.py | 280 | def read_queries_cache() -> dict: | CODE |
| LOW | packages/back-end/scripts/stats_server.py | 18 | except Exception as e: | CODE |
| LOW | packages/back-end/scripts/stats_server.py | 35 | except Exception as e: | CODE |
| LOW | packages/back-end/scripts/stats_server.py | 49 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | packages/back-end/src/scripts/generate-openapi.ts | 432 | parts.push(` -H 'Authorization: Bearer YOUR_API_KEY'`); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | packages/stats/gbstats/gbstats.py | 954 | # Check if the original column exists before trying to replace it | COMMENT |
| LOW | .github/workflows/auto-approve-docs-changes.yml | 75 | # Check if any non-markdown or non-mdx files exist | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …axHighlighting/Snippets/GrowthBookSetupCodeSnippet.tsx | 1451 | async function handleRequest(event) { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/stats/gbstats/gbstats.py | 931 | CODE | |
| LOW | packages/stats/gbstats/gbstats.py | 1057 | CODE |