:hedgehog: PostHog is the leading platform for building self-driving products. Our developer tools – AI observability, analytics, session replay, flags, experiments, error tracking, logs, and more – capture all the context agents need to diagnose problems, uncover opportunities, and ship fixes. Steer it all from Slack, web, desktop, or the MCP.
This report presents the forensic synthetic code analysis of PostHog/posthog, a Python project with 39,407 GitHub stars. SynthScan v2.0 examined 8,728,320 lines of code across 39258 source files, recording 120001 pattern matches distributed across 28 syntactic categories. The overall adjusted score of 15.7 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 120001 distinct pattern matches across 28 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | conftest.py | 40 | def _cache_reverse_rel_identity() -> None: | CODE |
| LOW | conftest.py | 183 | def _cheapen_freezegun_module_hash() -> None: | CODE |
| LOW | conftest.py | 198 | def _fast_module_attributes_hash(module: types.ModuleType) -> str: | CODE |
| LOW | conftest.py | 259 | def _clean_persons_db_for_direct_tests(request): | CODE |
| LOW | conftest.py | 286 | def _query_cache_raw_redis_uses_fakeredis(monkeypatch): | CODE |
| LOW | nodejs/bin/migrate-minio-to-seaweedfs.js | 265 | function ensureLocalDevelopmentOnly(minioEndpoint, seaweedfsEndpoint) { | CODE |
| LOW | nodejs/bin/migrate-minio-to-seaweedfs.js | 434 | async function listAllObjectsWithMetadata(client, bucket, prefix) { | CODE |
| LOW | …sts/service-e2e/rust-ingestion-consumer.serial.test.ts | 362 | async function startNodeIngestionApiWorkers(count: number): Promise<NodeWorker[]> { | CODE |
| LOW | …sts/service-e2e/rust-ingestion-consumer.serial.test.ts | 376 | async function startRustConsumerForWorkers( | CODE |
| LOW | …sts/service-e2e/rust-ingestion-consumer.serial.test.ts | 405 | async function startNodeIngestionApiWorker(name: string, port?: number): Promise<NodeWorker> { | CODE |
| LOW | …sts/service-e2e/rust-ingestion-consumer.serial.test.ts | 450 | async function restartNodeIngestionApiWorker( | CODE |
| LOW | …sts/service-e2e/rust-ingestion-consumer.serial.test.ts | 461 | function startRustIngestionConsumer( | CODE |
| LOW | …sts/service-e2e/rust-ingestion-consumer.serial.test.ts | 614 | function createKafkaMessageWithCaptureHeaders(event: TestEvent, token: string): Message { | CODE |
| LOW | …sts/service-e2e/rust-ingestion-consumer.serial.test.ts | 631 | async function assertKafkaIngestionState(groupId: string, expectedEvents: TestEvent[]): Promise<void> { | CODE |
| LOW | …sts/service-e2e/rust-ingestion-consumer.serial.test.ts | 673 | async function expectCommittedOffsetsAtTopicEnd( | CODE |
| LOW | …sts/service-e2e/rust-ingestion-consumer.serial.test.ts | 696 | async function waitForTopicMessageCountAndGetWatermarks( | CODE |
| LOW | …sts/service-e2e/rust-ingestion-consumer.serial.test.ts | 712 | async function captureTopicStartWatermarks(topics: string[]): Promise<Map<string, TopicWatermarks>> { | CODE |
| LOW | nodejs/tests/ingestion/postgres-parity.test.ts | 49 | async function waitForClickHousePersonConsumer(clickhouse: Clickhouse): Promise<void> { | CODE |
| LOW | …dejs/tests/ingestion/person-state-batch.serial.test.ts | 349 | async function fetchPersonsRowsWithVersionHigerEqualThan(version = 1) { | CODE |
| LOW | …dejs/tests/ingestion/person-state-batch.serial.test.ts | 354 | async function fetchDistinctIdsClickhouse(person: InternalPerson) { | CODE |
| LOW | …dejs/tests/ingestion/person-state-batch.serial.test.ts | 4798 | function createPersonEventProcessor(mergeMode: any, event: Partial<PluginEvent>) { | CODE |
| LOW | …estion/framework/batching-pipeline.integration.test.ts | 294 | async function bindStoresBeforeBatchStep(input: BeforeBatchInput<In, Ctx>) { | CODE |
| LOW | …ingestion/pipelines/sessionreplay/consumer.e2e.test.ts | 335 | async function queryClickHouseSessionMetadata( | CODE |
| LOW | …stion/common/event-filters/manager.integration.test.ts | 68 | async function createManagerAndWaitForLoad(): Promise<{ | CODE |
| LOW | …nt-processing/process-persons-step.integration.test.ts | 127 | async function createPersonWithDistinctIds(distinctId: string, ...extraDistinctIds: string[]) { | CODE |
| LOW | nodejs/tests/helpers/sql.ts | 213 | export async function createUserTeamAndOrganization( | CODE |
| LOW | nodejs/tests/helpers/sql.ts | 548 | export async function fetchPostgresDistinctIdsForPerson(postgres: PostgresRouter, personId: string): Promise<string[]> { | CODE |
| LOW | nodejs/tests/helpers/sql.ts | 555 | export async function resetBehavioralCohortsDatabase(postgres: PostgresRouter): Promise<void> { | CODE |
| LOW | nodejs/tests/helpers/database-guard.ts | 41 | export async function assertRouterTargetsTestDatabase(router: PostgresRouter, use: PostgresUse): Promise<void> { | CODE |
| LOW | nodejs/tests/helpers/raw-event.ts | 18 | export function createTestRawClickHouseEvent(overrides: Partial<RawClickHouseEvent> = {}): RawClickHouseEvent { | CODE |
| LOW | nodejs/tests/helpers/ingestion-e2e.ts | 202 | export async function waitForClickHouseKafkaConsumer(clickhouse: Clickhouse): Promise<void> { | CODE |
| LOW | nodejs/tests/helpers/cdp.ts | 25 | function buildTestCdpProducerRegistry( | CODE |
| LOW | nodejs/tests/helpers/ingestion-outputs.ts | 45 | export function createTestMonitoringOutputs(kafkaProducer: KafkaProducerWrapper) { | CODE |
| LOW | nodejs/tests/helpers/ingestion-outputs.ts | 52 | export function createTestIngestionOutputs(kafkaProducer: KafkaProducerWrapper) { | CODE |
| LOW | nodejs/src/capabilities.ts | 70 | export function getPluginServerCapabilities( | CODE |
| LOW | nodejs/src/cdp/cdp-services.ts | 257 | export function createCdpValkeyShadowPools( | CODE |
| LOW | nodejs/src/cdp/managed-alert-events.ts | 7 | export function isManagedAlertInternalEvent(eventName: unknown): boolean { | CODE |
| LOW | nodejs/src/cdp/utils.ts | 34 | export function convertToHogFunctionInvocationGlobals( | CODE |
| LOW | nodejs/src/cdp/utils.ts | 90 | export function convertBatchHogFlowRequestToHogFunctionInvocationGlobals({ | CODE |
| LOW | nodejs/src/cdp/utils.ts | 129 | export function convertAccountBatchHogFlowRequestToHogFunctionInvocationGlobals({ | CODE |
| LOW | nodejs/src/cdp/utils.ts | 167 | export function convertInternalEventToHogFunctionInvocationGlobals( | CODE |
| LOW⚡ | nodejs/src/cdp/utils.ts | 273 | export function isLegacyPluginHogFunction(hogFunction: Pick<HogFunctionType, 'template_id'>): boolean { | CODE |
| LOW⚡ | nodejs/src/cdp/utils.ts | 277 | export function isSegmentPluginHogFunction(hogFunction: Pick<HogFunctionType, 'template_id'>): boolean { | CODE |
| LOW⚡ | nodejs/src/cdp/utils.ts | 285 | export function isInternalErrorTrackingEvent(event: CdpInternalEvent['event']): boolean { | CODE |
| LOW | nodejs/src/cdp/async-function-registry.ts | 50 | export function getRegisteredAsyncFunctionNames(): string[] { | CODE |
| LOW | nodejs/src/cdp/utils/push-subscription-utils.ts | 9 | export function getDevicePushSubscriptionToken( | CODE |
| LOW | nodejs/src/cdp/utils/hog-function-filtering.ts | 102 | export function convertClickhouseRawEventToFilterGlobals(event: RawClickHouseEvent): HogFunctionFilterGlobals { | CODE |
| LOW | nodejs/src/cdp/utils/hog-function-filtering.ts | 226 | export function convertToHogFunctionFilterGlobal( | CODE |
| LOW | nodejs/src/cdp/utils/hog-function-filtering.ts | 350 | export async function filterFunctionInstrumented(options: { | CODE |
| LOW | nodejs/src/cdp/utils/invocation-utils.ts | 43 | export async function buildHogFunctionInvocations( | CODE |
| LOW | nodejs/src/cdp/consumers/quota-limiting-helper.ts | 24 | export async function shouldBlockInvocationDueToQuota( | CODE |
| LOW | …js/src/cdp/consumers/cdp-cohort-membership.consumer.ts | 83 | function partitionProgressFromMessages(messages: Message[]): PartitionProgress[] { | CODE |
| LOW | …rc/cdp/consumers/cdp-data-warehouse-events.consumer.ts | 249 | function convertDataWarehouseEventToHogFunctionInvocationGlobals( | CODE |
| LOW | …nsumers/cdp-cyclotron-worker-batch-resolve.consumer.ts | 593 | export function buildAccountHogFlowInvocation(params: { | CODE |
| LOW | nodejs/src/cdp/consumers/cdp-person-updates-consumer.ts | 137 | function convertClickhousePersonToInvocationGlobals( | CODE |
| LOW | …consumers/cdp-hogflow-subscription-matcher.consumer.ts | 951 | function convertClickhousePersonToWakeGlobals( | CODE |
| LOW | …src/cdp/consumers/cdp-cyclotron-worker-hogflow.test.ts | 52 | function createMockPersonReadRepository(persons: TestPerson[]): jest.Mocked<PersonReadRepository> { | CODE |
| LOW | …nsumers/cdp-cyclotron-worker-hogflow-personhog.test.ts | 43 | function createMockPersonReadRepository( | CODE |
| LOW | …src/cdp/hog-transformations/hog-transformer.service.ts | 357 | export function createHogTransformerService( | CODE |
| LOW | nodejs/src/cdp/hog-transformations/rust-vm.ts | 79 | export function resetHogvmNodeModuleCacheForTests(): void { | CODE |
| 92343 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pyproject.toml | 510 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | pyproject.toml | 512 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …t-2/team-analytics-platform/slo-monitoring/insights.tf | 2 | # =========================================================================== | COMMENT |
| MEDIUM | …t-2/team-analytics-platform/slo-monitoring/insights.tf | 6 | # =========================================================================== | COMMENT |
| MEDIUM | …t-2/team-analytics-platform/slo-monitoring/insights.tf | 61 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …t-2/team-analytics-platform/slo-monitoring/insights.tf | 63 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …t-2/team-analytics-platform/slo-monitoring/insights.tf | 85 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …t-2/team-analytics-platform/slo-monitoring/insights.tf | 88 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …t-2/team-analytics-platform/slo-monitoring/insights.tf | 199 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …t-2/team-analytics-platform/slo-monitoring/insights.tf | 202 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …t-2/team-analytics-platform/slo-monitoring/insights.tf | 249 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …t-2/team-analytics-platform/slo-monitoring/insights.tf | 251 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …t-2/team-analytics-platform/slo-monitoring/insights.tf | 297 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …t-2/team-analytics-platform/slo-monitoring/insights.tf | 299 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …t-2/team-analytics-platform/slo-monitoring/insights.tf | 339 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …t-2/team-analytics-platform/slo-monitoring/insights.tf | 341 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …t-2/team-analytics-platform/slo-monitoring/insights.tf | 469 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …t-2/team-analytics-platform/slo-monitoring/insights.tf | 471 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …m-analytics-platform/dashboard-key-metrics/insights.tf | 1 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | …m-analytics-platform/dashboard-key-metrics/insights.tf | 3 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | …m-analytics-platform/dashboard-key-metrics/insights.tf | 10 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | …analytics-platform/dashboard-key-metrics/dashboards.tf | 1 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | …analytics-platform/dashboard-key-metrics/dashboards.tf | 3 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | …analytics-platform/dashboard-key-metrics/dashboards.tf | 9 | # ============================================================================= | COMMENT |
| MEDIUM | …eam-analytics-platform/dashboard-key-metrics/alerts.tf | 1 | # ============================================================================= | COMMENT |
| MEDIUM | …eam-analytics-platform/dashboard-key-metrics/alerts.tf | 3 | # ============================================================================= | COMMENT |
| MEDIUM | …eam-analytics-platform/dashboard-key-metrics/alerts.tf | 14 | # ============================================================================= | COMMENT |
| MEDIUM | …/us/project-2/team-analytics-platform/slos/insights.tf | 2 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …/us/project-2/team-analytics-platform/slos/insights.tf | 5 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …/us/project-2/team-analytics-platform/slos/insights.tf | 49 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …/us/project-2/team-analytics-platform/slos/insights.tf | 51 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …/us/project-2/team-analytics-platform/slos/insights.tf | 80 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …/us/project-2/team-analytics-platform/slos/insights.tf | 82 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …/us/project-2/team-analytics-platform/slos/insights.tf | 94 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …/us/project-2/team-analytics-platform/slos/insights.tf | 96 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …/us/project-2/team-analytics-platform/slos/insights.tf | 262 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …/us/project-2/team-analytics-platform/slos/insights.tf | 264 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …/us/project-2/team-analytics-platform/slos/insights.tf | 282 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …/us/project-2/team-analytics-platform/slos/insights.tf | 284 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …/us/project-2/team-analytics-platform/slos/insights.tf | 313 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …/us/project-2/team-analytics-platform/slos/insights.tf | 315 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …/us/project-2/team-analytics-platform/slos/insights.tf | 355 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …/us/project-2/team-analytics-platform/slos/insights.tf | 357 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | nodejs/src/cdp/workflows-e2e.serial.test.ts | 222 | // ── Helpers ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | nodejs/src/cdp/rerun/rerun-e2e.serial.test.ts | 228 | // ── 1. Original invocation succeeds ───────────────────────────────── | COMMENT |
| MEDIUM | nodejs/src/cdp/rerun/rerun-e2e.serial.test.ts | 269 | // ── 2. Mimic Django POST /rerun — only the request itself is faked ────── | COMMENT |
| MEDIUM⚡ | nodejs/src/cdp/rerun/rerun-e2e.serial.test.ts | 295 | // ── 3. Rerun worker drains the wrapper job ──────────────────────────────── | COMMENT |
| MEDIUM⚡ | nodejs/src/cdp/rerun/rerun-e2e.serial.test.ts | 303 | // ── 4. Wait for the wrapper job to complete ──────────────────────────────── | COMMENT |
| MEDIUM⚡ | nodejs/src/cdp/rerun/rerun-e2e.serial.test.ts | 310 | // ── 5. Reruned invocation flows through the real cyclotron worker ───────── | COMMENT |
| MEDIUM | nodejs/src/cdp/rerun/rerun-e2e.serial.test.ts | 548 | // ── 1. Original flow runs to completion — fetch fires exactly once ────────── | COMMENT |
| MEDIUM | nodejs/src/cdp/rerun/rerun-e2e.serial.test.ts | 575 | // ── 2. Mimic Django POST /rerun for the flow, scoped to this invocation ───── | COMMENT |
| MEDIUM | nodejs/src/cdp/rerun/rerun-e2e.serial.test.ts | 587 | // ── 3. Rerun worker drains the wrapper job (hog_flow -> postgres-v2) ──────── | COMMENT |
| MEDIUM | nodejs/src/cdp/rerun/rerun-e2e.serial.test.ts | 600 | // ── 4. Rerun invocation flows back through the real hog-flow worker ───────── | COMMENT |
| MEDIUM | …ejs/src/cdp/services/cyclotron-v2/cyclotron-v2.test.ts | 16 | // ── Helpers ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ejs/src/cdp/services/cyclotron-v2/cyclotron-v2.test.ts | 159 | // ── Tests ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ejs/src/cdp/services/cyclotron-v2/cyclotron-v2.test.ts | 190 | // ── Manager ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ejs/src/cdp/services/cyclotron-v2/cyclotron-v2.test.ts | 975 | // ── Worker ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ejs/src/cdp/services/cyclotron-v2/cyclotron-v2.test.ts | 1608 | // ── Email fair dequeue ─────────────────────────────────────────── | COMMENT |
| MEDIUM | …ejs/src/cdp/services/cyclotron-v2/cyclotron-v2.test.ts | 2059 | // ── Janitor ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/snob_backend_test_selection_shadow.py | 429 | # ── 1. Changed test files themselves ───────────────────────────── | COMMENT |
| 1960 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docker-compose.dev-full.yml | 3 | # This file is the same as `docker-compose.dev.yml` except it boots the services in containers instead of you running th | COMMENT |
| MEDIUM | …rm/us/project-2/team-analytics-platform/terragrunt.hcl | 2 | # This file is NOT directly runnable - it provides shared config for child modules. | COMMENT |
| MEDIUM | tools/phrocs/Formula/phrocs.rb | 4 | # This file is auto-updated by CI on semver releases. DO NOT EDIT. | COMMENT |
| MEDIUM | tools/hogli-commands/hogli_commands/devenv/generator.py | 409 | # Create a friendly message with config hint | STRING |
| MEDIUM | devenv/intent-map.yaml | 3 | # This file defines the domain model for developer environments: | COMMENT |
| MEDIUM | products/demo/backend/logic/products/hedgebox/matrix.py | 303 | # Create the standard internal/test users cohort (same as non-demo teams get) | COMMENT |
| MEDIUM | products/demo/backend/logic/products/spikegpt/matrix.py | 49 | # Create the standard internal/test users cohort (same as non-demo teams get) | COMMENT |
| MEDIUM | products/slack_app/backend/inbox_channel.py | 15 | # Creating a public channel and inviting members both require this scope. | COMMENT |
| MEDIUM | …backend/tests/temporal/destinations/snowflake/utils.py | 218 | # Create a crude mock of the Snowflake API that just stores the queries | COMMENT |
| MEDIUM | …tinations/file_download/test_file_download_activity.py | 190 | # Create a batch export in the DB since BatchExportFileDownload has a FK to it. | COMMENT |
| MEDIUM | products/batch_exports/backend/tests/api/test_update.py | 530 | # Create a BatchExport straight in the database/temporal to avoid going through the API | COMMENT |
| MEDIUM | products/cdp/backend/models/hog_function_template.py | 93 | # Create a SHA256 hash of the content | COMMENT |
| MEDIUM | …ducts/cdp/backend/models/hog_functions/hog_function.py | 396 | # Create a serializer data dictionary from the template | COMMENT |
| MEDIUM | …ducts/cdp/backend/models/hog_functions/hog_function.py | 408 | # Create a mock request with the user | COMMENT |
| MEDIUM⚡ | products/cdp/backend/api/hog_function.py | 771 | # Create the function with the execution_order | COMMENT |
| MEDIUM⚡ | products/cdp/backend/api/test/test_plugin.py | 698 | # Create the plugin | COMMENT |
| MEDIUM | products/cdp/backend/api/test/test_hog_function.py | 291 | # Create the action referenced in EXAMPLE_FULL | COMMENT |
| MEDIUM | products/cdp/backend/api/test/test_hog_function.py | 2054 | # Create a non-transformation function - should not get execution_order | COMMENT |
| MEDIUM | products/cdp/backend/api/test/test_hog_function.py | 2691 | # Create a third function | COMMENT |
| MEDIUM | products/cdp/backend/api/test/test_hog_function.py | 2776 | # Create a third function | COMMENT |
| MEDIUM | products/cdp/backend/api/test/test_hog_function.py | 2939 | # Create a template in the DB | COMMENT |
| MEDIUM | products/cdp/backend/api/test/test_hog_function.py | 2953 | # Create a HogFunction with template_id | COMMENT |
| MEDIUM | products/cdp/backend/api/test/test_hog_function.py | 2970 | # Create a HogFunction without template_id | COMMENT |
| MEDIUM | products/cdp/backend/api/test/test_hog_function.py | 3052 | # Create a hog function | COMMENT |
| MEDIUM⚡ | …ts/cdp/backend/api/test/test_hog_function_templates.py | 208 | # Create a modified sha of the template | COMMENT |
| MEDIUM | …ts/cdp/backend/api/test/test_hog_function_templates.py | 51 | # Create a webhook template | COMMENT |
| MEDIUM | …ts/cdp/backend/api/test/test_hog_function_templates.py | 66 | # Create a deprecated template | COMMENT |
| MEDIUM | …ts/cdp/backend/api/test/test_hog_function_templates.py | 97 | # Create a site_destination template for filtering tests | COMMENT |
| MEDIUM⚡ | products/feature_flags/backend/test/test_flags_cache.py | 696 | # Create a new team | COMMENT |
| MEDIUM⚡ | products/feature_flags/backend/test/test_flags_cache.py | 3140 | # Create a flag for testing | COMMENT |
| MEDIUM | products/feature_flags/backend/test/test_flags_cache.py | 357 | # Create a flag | COMMENT |
| MEDIUM | products/feature_flags/backend/test/test_flags_cache.py | 376 | # Create a flag | COMMENT |
| MEDIUM | products/feature_flags/backend/test/test_flags_cache.py | 1133 | # Create a flag | COMMENT |
| MEDIUM | products/feature_flags/backend/test/test_flags_cache.py | 1856 | # Create a team that will be deleted | COMMENT |
| MEDIUM | products/feature_flags/backend/test/test_flags_cache.py | 1893 | # Create a flag so batch loading succeeds | COMMENT |
| MEDIUM | products/feature_flags/backend/test/test_flags_cache.py | 1974 | # Create a real flag for the team | COMMENT |
| MEDIUM | products/feature_flags/backend/test/test_flags_cache.py | 1997 | # Create a real flag for the team | COMMENT |
| MEDIUM | products/feature_flags/backend/test/test_flags_cache.py | 2273 | # Create a real flag for the team | COMMENT |
| MEDIUM | products/feature_flags/backend/test/test_flags_cache.py | 2296 | # Create a real flag for the team | COMMENT |
| MEDIUM | products/feature_flags/backend/test/test_flags_cache.py | 2331 | # Create a real flag for the team | COMMENT |
| MEDIUM | products/feature_flags/backend/test/test_flags_cache.py | 2377 | # Create a real flag for the team | COMMENT |
| MEDIUM | products/feature_flags/backend/test/test_flags_cache.py | 2404 | # Create a real flag | COMMENT |
| MEDIUM | products/feature_flags/backend/test/test_flags_cache.py | 2654 | # Create a real flag | COMMENT |
| MEDIUM | products/feature_flags/backend/test/test_flags_cache.py | 2707 | # Create a real flag | COMMENT |
| MEDIUM | products/feature_flags/backend/test/test_flags_cache.py | 2759 | # Create a flag for the team | COMMENT |
| MEDIUM | products/feature_flags/backend/test/test_flags_cache.py | 2788 | # Create a flag for the team | COMMENT |
| MEDIUM⚡ | …ts/feature_flags/backend/test/test_local_evaluation.py | 447 | # Create the context first (this will fire a signal for EvaluationContext.post_save) | COMMENT |
| MEDIUM⚡ | …ts/feature_flags/backend/test/test_local_evaluation.py | 452 | # Creating the association should fire the signal | COMMENT |
| MEDIUM | …ts/feature_flags/backend/test/test_local_evaluation.py | 1251 | # Create the circular reference: A -> B -> A | COMMENT |
| MEDIUM | …agement/commands/delete_feature_flag_usage_insights.py | 217 | # This file is the only thing protecting in-use insights, so a total parse failure has to | COMMENT |
| MEDIUM | products/feature_flags/backend/api/scheduled_change.py | 298 | # Create the CR and the ScheduledChange row in one transaction: the applier defers a bound CR | COMMENT |
| MEDIUM | …/api/test/test_feature_flag_require_evaluation_tags.py | 104 | # Create a flag first without the requirement | COMMENT |
| MEDIUM | …/api/test/test_feature_flag_require_evaluation_tags.py | 175 | # Create a flag with evaluation tags | COMMENT |
| MEDIUM | …/api/test/test_feature_flag_require_evaluation_tags.py | 207 | # Create a flag with multiple evaluation tags | COMMENT |
| MEDIUM | …/api/test/test_feature_flag_require_evaluation_tags.py | 242 | # Create a flag without evaluation tags (before requirement was enabled) | COMMENT |
| MEDIUM | …/api/test/test_feature_flag_require_evaluation_tags.py | 273 | # Create a flag with evaluation tags | COMMENT |
| MEDIUM | …eature_flags/backend/api/test/test_scheduled_change.py | 28 | # Create a feature flag to schedule changes for | COMMENT |
| MEDIUM | …eature_flags/backend/api/test/test_scheduled_change.py | 60 | # Create a feature flag | COMMENT |
| MEDIUM | …eature_flags/backend/api/test/test_scheduled_change.py | 90 | # Create a feature flag | COMMENT |
| MEDIUM | …ags/backend/api/test/test_organization_feature_flag.py | 188 | # Create a second user and log in as them (not the flag creator) so that | COMMENT |
| 2052 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …s/_transformations/url-masking/url-masking.template.ts | 77 | print('Error masking URL parameters:', error) | CODE |
| LOW | tools/snob_backend_test_selection_shadow.py | 581 | except Exception as exc: | CODE |
| LOW | tools/playwright_spec_selection.py | 332 | except Exception: | CODE |
| LOW | …research_agent/pi_plugin/scripts/ch_compare_results.py | 136 | except Exception as err: | CODE |
| LOW⚡ | …ce-ai/query_performance_ai/orchestrator/coordinator.py | 354 | except Exception as e: # noqa: BLE001 | CODE |
| LOW⚡ | …ce-ai/query_performance_ai/orchestrator/coordinator.py | 364 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | …ce-ai/query_performance_ai/orchestrator/coordinator.py | 389 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | …ce-ai/query_performance_ai/orchestrator/coordinator.py | 743 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | …ce-ai/query_performance_ai/orchestrator/coordinator.py | 814 | except Exception: # noqa: BLE001 | CODE |
| LOW⚡ | tools/infra-scripts/clitools/toolbox/user.py | 57 | except Exception as k8s_error: | CODE |
| MEDIUM⚡ | tools/infra-scripts/clitools/toolbox/user.py | 58 | print(f"Error: Failed to get user identity: {k8s_error}") # noqa: T201 | CODE |
| MEDIUM⚡ | tools/infra-scripts/clitools/toolbox/user.py | 59 | print(f"Error type: {type(k8s_error)}") # noqa: T201 | CODE |
| LOW | tools/infra-scripts/clitools/toolbox/user.py | 97 | except Exception as e: | CODE |
| LOW | tools/infra-scripts/clitools/toolbox/pod.py | 136 | except Exception as e: | CODE |
| MEDIUM | tools/infra-scripts/clitools/toolbox/pod.py | 198 | print(f"Error stripping labels: {e.stderr or e}") # noqa: T201 | CODE |
| MEDIUM | tools/infra-scripts/clitools/toolbox/pod.py | 215 | print(f"Error annotating pod: {e.stderr or e}") # noqa: T201 | CODE |
| LOW | tools/infra-scripts/clitools/toolbox/pod.py | 244 | except Exception as e: | CODE |
| MEDIUM | tools/infra-scripts/clitools/toolbox/pod.py | 245 | print(f"Error claiming pod: {e}") # noqa: T201 | CODE |
| LOW | tools/infra-scripts/clitools/toolbox/telemetry.py | 108 | except Exception as telemetry_error: | CODE |
| MEDIUM | tools/infra-scripts/clitools/toolbox/kubernetes.py | 67 | print(f"Error switching kubernetes context: {error}") # noqa: T201 | CODE |
| LOW | tools/hogli/src/hogli/lazy_commands.py | 72 | except Exception as exc: | CODE |
| LOW⚡ | tools/hogli/src/hogli/telemetry.py | 77 | except Exception: | CODE |
| LOW⚡ | tools/hogli/src/hogli/telemetry.py | 86 | except Exception: | CODE |
| LOW | tools/hogli/src/hogli/telemetry.py | 144 | except Exception as exc: | CODE |
| LOW⚡ | tools/hogli/src/hogli/telemetry.py | 265 | except Exception as exc: | CODE |
| LOW⚡ | tools/hogli/src/hogli/telemetry.py | 281 | except Exception: | CODE |
| MEDIUM | tools/hogli/src/hogli/telemetry.py | 74 | def _load_config() -> TelemetryConfig: | CODE |
| LOW | tools/hogli/src/hogli/cli.py | 89 | except Exception: | CODE |
| LOW | tools/hogli/src/hogli/cli.py | 96 | except Exception: | CODE |
| LOW | tools/hogli/src/hogli/cli.py | 227 | except Exception: | CODE |
| LOW | tools/hogli/src/hogli/cli.py | 616 | except Exception: | CODE |
| LOW | tools/hogli/src/hogli/cli.py | 652 | except Exception: | CODE |
| LOW | tools/hogli/src/hogli/cli.py | 689 | except Exception: | CODE |
| LOW | tools/hogli/src/hogli/cli.py | 698 | except Exception: | CODE |
| MEDIUM | tools/hogli/src/hogli/cli.py | 595 | def _hogli_version() -> str | None: | CODE |
| LOW | tools/hogbox-preview/hogbox_preview/stack.py | 179 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | tools/hogbox-preview/hogbox_preview/hogland_backend.py | 77 | except Exception: | CODE |
| LOW | tools/hogbox-preview/hogbox_preview/hogland_backend.py | 396 | except Exception as e: | CODE |
| LOW | tools/hogbox-preview/hogbox_preview/hogland_backend.py | 425 | except Exception as e: | CODE |
| LOW | tools/hogbox-preview/hogbox_preview/hogland_backend.py | 609 | except Exception as refresh_err: # noqa: BLE001 — keep polling | CODE |
| LOW | tools/hogbox-preview/hogbox_preview/hogland_backend.py | 611 | except Exception as e: # noqa: BLE001 — keep polling through transient API errors | CODE |
| MEDIUM | tools/hogbox-preview/hogbox_preview/hogland_backend.py | 420 | def _delete_explicit_box(self) -> None: | CODE |
| LOW | tools/hogbox-preview/hogbox_preview/__main__.py | 145 | except Exception: # noqa: BLE001 — a flaky check shouldn't reap a live preview | CODE |
| LOW | tools/hogli-commands/hogli_commands/metabase.py | 134 | except Exception as exc: | CODE |
| LOW | tools/hogli-commands/hogli_commands/feedback.py | 98 | except Exception: | CODE |
| LOW | tools/hogli-commands/hogli_commands/feedback.py | 125 | except Exception as exc: | CODE |
| MEDIUM | tools/hogli-commands/hogli_commands/db_schema.py | 591 | def _recreate_test_db() -> None: | CODE |
| LOW | tools/hogli-commands/hogli_commands/db_schema.py | 142 | except Exception: | CODE |
| LOW | tools/hogli-commands/hogli_commands/db_schema.py | 248 | except Exception as exc: | CODE |
| LOW | tools/hogli-commands/hogli_commands/db_schema.py | 252 | except Exception as cleanup_exc: | CODE |
| LOW | tools/hogli-commands/hogli_commands/db_schema.py | 526 | except Exception: | STRING |
| LOW | tools/hogli-commands/hogli_commands/db_schema.py | 587 | except Exception as exc: | STRING |
| LOW | tools/hogli-commands/hogli_commands/db_schema.py | 594 | except Exception as exc: | STRING |
| LOW | tools/hogli-commands/hogli_commands/db_schema.py | 627 | except Exception as exc: | STRING |
| LOW | tools/hogli-commands/hogli_commands/db_schema.py | 645 | except Exception as exc: | STRING |
| LOW | tools/hogli-commands/hogli_commands/ci_preflight.py | 566 | except Exception: | CODE |
| LOW | tools/hogli-commands/hogli_commands/telemetry_props.py | 105 | except Exception: | CODE |
| LOW | tools/hogli-commands/hogli_commands/telemetry_props.py | 131 | except Exception: | CODE |
| LOW⚡ | tools/hogli-commands/hogli_commands/telemetry_props.py | 153 | except Exception: | CODE |
| LOW⚡ | tools/hogli-commands/hogli_commands/telemetry_props.py | 166 | except Exception: | CODE |
| 5039 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/test_playwright_spec_selection.py | 1 | CODE | |
| LOW | tools/test_test_selection_verdict.py | 1 | CODE | |
| LOW | tools/dagster_test_selection.py | 28 | CODE | |
| LOW | tools/test_selection_verdict.py | 15 | CODE | |
| LOW | tools/test_dagster_test_selection.py | 1 | CODE | |
| LOW | tools/test_snob_backend_test_selection_shadow.py | 1 | CODE | |
| LOW | tools/snob_backend_test_selection_shadow.py | 37 | CODE | |
| LOW | tools/playwright_spec_selection.py | 56 | CODE | |
| LOW | tools/phrocs/mcp_server.py | 12 | CODE | |
| LOW | …dboxed_autoresearch_agent/pi_plugin/scripts/_common.py | 3 | CODE | |
| LOW | …research_agent/pi_plugin/scripts/ch_compare_results.py | 7 | CODE | |
| LOW | …esearch_agent/pi_plugin/scripts/ch_capture_baseline.py | 4 | CODE | |
| LOW | …toresearch_agent/pi_plugin/scripts/ch_run_candidate.py | 4 | CODE | |
| LOW | …xed_autoresearch_agent/pi_plugin/scripts/transports.py | 9 | CODE | |
| LOW | …toresearch_agent/pi_plugin/scripts/ch_campaign_init.py | 9 | CODE | |
| LOW | …earch_agent/pi_plugin/scripts/tests/test_transports.py | 8 | CODE | |
| LOW | …t/pi_plugin/templates/workspace/autoresearch_checks.py | 8 | CODE | |
| LOW | …ch_agent/pi_plugin/templates/workspace/autoresearch.py | 7 | CODE | |
| LOW | …ance_ai/sandboxed_autoresearch_agent/driver/runtime.py | 8 | CODE | |
| LOW | …ai/sandboxed_autoresearch_agent/driver/run_campaign.py | 15 | CODE | |
| LOW | …e_ai/sandboxed_autoresearch_agent/driver/sandboxing.py | 27 | CODE | |
| LOW | …ce-ai/query_performance_ai/orchestrator/coordinator.py | 22 | CODE | |
| LOW | …ormance-ai/query_performance_ai/orchestrator/server.py | 10 | CODE | |
| LOW | …e-ai/query_performance_ai/orchestrator/slow_queries.py | 9 | CODE | |
| LOW | …rmance-ai/query_performance_ai/orchestrator/harvest.py | 3 | CODE | |
| LOW | …query_performance_ai/orchestrator/backends/metabase.py | 8 | CODE | |
| LOW | …ai/query_performance_ai/orchestrator/backends/local.py | 13 | CODE | |
| LOW | …ery_performance_ai/orchestrator/backends/_query_log.py | 10 | CODE | |
| LOW | …-ai/query_performance_ai/orchestrator/backends/base.py | 10 | CODE | |
| LOW | …rmance_ai/orchestrator/backends/tests/test_backends.py | 1 | CODE | |
| LOW | …performance_ai/orchestrator/tests/test_slow_queries.py | 1 | CODE | |
| LOW | …query_performance_ai/orchestrator/tests/test_server.py | 1 | CODE | |
| LOW | …ts/clickhouse-multinode/verify-multinode-clickhouse.py | 22 | CODE | |
| LOW | tools/hogli/tests/test_release_notes.py | 1 | CODE | |
| LOW | tools/hogli/tests/test_migrations.py | 3 | CODE | |
| LOW | tools/hogli/tests/test_manifest.py | 3 | CODE | |
| LOW | tools/hogli/tests/test_command_types.py | 3 | CODE | |
| LOW | tools/hogli/tests/test_validate.py | 3 | CODE | |
| LOW | tools/hogli/tests/test_cli.py | 3 | CODE | |
| LOW | tools/hogli/tests/test_telemetry.py | 3 | CODE | |
| LOW | tools/hogli/scripts/release_notes.py | 4 | CODE | |
| LOW | tools/hogli/scripts/generate_man_page.py | 4 | CODE | |
| LOW | tools/hogli/src/hogli/hooks.py | 9 | CODE | |
| LOW | tools/hogli/src/hogli/lazy_commands.py | 3 | CODE | |
| LOW | tools/hogli/src/hogli/manifest.py | 3 | CODE | |
| LOW | tools/hogli/src/hogli/telemetry.py | 18 | CODE | |
| LOW | tools/hogli/src/hogli/command_types.py | 3 | CODE | |
| LOW | tools/hogli/src/hogli/validate.py | 3 | CODE | |
| LOW | tools/hogli/src/hogli/cli.py | 7 | CODE | |
| LOW | tools/hogli/src/hogli/__main__.py | 3 | CODE | |
| LOW | tools/hogbox-preview/hogbox_preview/backend.py | 21 | CODE | |
| LOW | tools/hogbox-preview/hogbox_preview/__init__.py | 11 | CODE | |
| LOW | tools/hogbox-preview/hogbox_preview/__init__.py | 11 | CODE | |
| LOW | tools/hogbox-preview/hogbox_preview/__init__.py | 11 | CODE | |
| LOW | tools/hogbox-preview/hogbox_preview/__init__.py | 11 | CODE | |
| LOW | tools/hogbox-preview/hogbox_preview/__init__.py | 12 | CODE | |
| LOW | tools/hogbox-preview/hogbox_preview/__init__.py | 13 | CODE | |
| LOW | tools/hogbox-preview/hogbox_preview/__init__.py | 14 | CODE | |
| LOW | tools/hogbox-preview/hogbox_preview/timing.py | 32 | CODE | |
| LOW | tools/hogbox-preview/hogbox_preview/stack.py | 34 | CODE | |
| 6022 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | nodejs/bin/migrate-minio-to-seaweedfs.js | 179 | print() { | CODE |
| HIGH | nodejs/src/cdp/cdp-e2e.serial.test.ts | 96 | print('Fetch response:', res); | CODE |
| HIGH | nodejs/src/cdp/cdp-e2e.serial.test.ts | 324 | print('Fetch response:', res); | CODE |
| HIGH | nodejs/src/cdp/cdp-e2e.serial.test.ts | 464 | print('Fetch response:', res); | CODE |
| HIGH | nodejs/src/cdp/cdp-e2e.serial.test.ts | 628 | print('Fetch response:', res); | CODE |
| HIGH | nodejs/src/cdp/workflows-e2e.serial.test.ts | 166 | print('Fetch result:', res.status); | CODE |
| HIGH | nodejs/src/cdp/workflows-e2e.serial.test.ts | 3019 | print('Fetch result:', res.status); | CODE |
| HIGH | nodejs/src/cdp/workflows-e2e.serial.test.ts | 3140 | print('Fetch result:', res.status); | CODE |
| HIGH | nodejs/src/cdp/cdp-api.serial.test.ts | 724 | print('inspecting', record.service_name) | CODE |
| HIGH | nodejs/src/cdp/rerun/rerun-e2e.serial.test.ts | 165 | print('Fetch response:', res); | CODE |
| HIGH | nodejs/src/cdp/rerun/rerun-e2e.serial.test.ts | 358 | print('Fetch response:', res); | CODE |
| HIGH | nodejs/src/cdp/rerun/rerun-e2e.serial.test.ts | 509 | print('Fetch result:', res.status); | CODE |
| HIGH | nodejs/src/cdp/utils/hog-exec.test.ts | 38 | print('I AM FIBONACCI. ') | CODE |
| HIGH | nodejs/src/cdp/utils/hog-exec.test.ts | 45 | print(f'fib {fibonacci(64)}'); | CODE |
| HIGH | nodejs/src/cdp/consumers/cdp-cyclotron-worker.test.ts | 523 | print('I AM FIBONACCI. ') | CODE |
| HIGH | nodejs/src/cdp/consumers/cdp-cyclotron-worker.test.ts | 530 | print(f'fib {fibonacci(64)}');` | CODE |
| HIGH | …dp/templates/_destinations/webhook/webhook.template.ts | 21 | print('Request', inputs.url, payload) | CODE |
| HIGH | …dp/templates/_destinations/webhook/webhook.template.ts | 31 | print('Response', res.status, res.body); | CODE |
| HIGH | …rc/cdp/templates/_destinations/close/close.template.ts | 16 | print('No email set. Skipping...') | CODE |
| HIGH | …rc/cdp/templates/_destinations/close/close.template.ts | 76 | print('No contact fields to update. Skipping...') | CODE |
| HIGH | …rc/cdp/templates/_destinations/unify/unify.template.ts | 19 | print(f'Skipping unsupported event type: {event.event}') | CODE |
| HIGH | …/templates/_destinations/google_ads/google.template.ts | 111 | print('No \`gclid\` or user identifiers. Skipping...') | CODE |
| HIGH | …hog_customer_analytics/posthog-get-account.template.ts | 32 | print(f'Fetched account {inputs.external_id}') | CODE |
| HIGH | …_analytics/posthog-update-account-property.template.ts | 35 | print(f'Updated custom properties on account {inputs.external_id}') | CODE |
| HIGH | …hog_customer_analytics/posthog-tag-account.template.ts | 38 | print(f'Tagged account {inputs.external_id}') | CODE |
| HIGH | …ytics/posthog-update-account-relationships.template.ts | 37 | print(f'Updated relationships on account {inputs.external_id}') | CODE |
| HIGH | …_customer_analytics/posthog-update-account.template.ts | 59 | print(f'Updated account {inputs.external_id}') | CODE |
| HIGH | …_customer_analytics/posthog-create-account.template.ts | 32 | print(f'Account {inputs.external_id} already exists — skipped creation') | CODE |
| HIGH | …_customer_analytics/posthog-create-account.template.ts | 34 | print(f'Created account {inputs.external_id}') | CODE |
| HIGH | …dp/templates/_destinations/hubspot/hubspot.template.ts | 29 | print('\`companyId\` input is empty. Skipping...') | CODE |
| HIGH | …dp/templates/_destinations/hubspot/hubspot.template.ts | 75 | print(f'Successfully created company {data.properties['posthog_group_id']}') | CODE |
| HIGH | …dp/templates/_destinations/hubspot/hubspot.template.ts | 83 | print(f'Successfully updated company {data.properties['posthog_group_id']}') | CODE |
| HIGH | …/templates/_destinations/openai_ads/openai.template.ts | 229 | print('No \`oppref\`, \`obref\`, \`email\` or \`externalId\` to identify the user with. Skipping...') | CODE |
| HIGH | …/templates/_destinations/openai_ads/openai.template.ts | 280 | print('\`amount\` is set but \`currency\` is missing. Skipping both, as OpenAI requires a currency with every am | CODE |
| HIGH | …dp/templates/_destinations/appcues/appcues.template.ts | 17 | print('No user ID set. Skipping as a user ID is required.') | CODE |
| HIGH | …dp/templates/_destinations/appcues/appcues.template.ts | 49 | print('No profile properties to send. Skipping.') | CODE |
| HIGH | …rc/cdp/templates/_destinations/klime/klime.template.ts | 57 | print('No user ID set. Skipping as user ID is required for identify events.') | CODE |
| HIGH | …rc/cdp/templates/_destinations/klime/klime.template.ts | 86 | print('No group ID set. Skipping as group ID is required for group events.') | CODE |
| HIGH | …ates/_destinations/microsoft_ads/microsoft.template.ts | 110 | print('No \`microsoftClickId\`, \`email\` or \`phone\` to identify the user with. Skipping...') | CODE |
| HIGH | …inations/posthog_tasks/posthog-create-task.template.ts | 67 | print(f'Task not created: {apiErrorMessage(response)}') | CODE |
| HIGH | …/templates/_destinations/whatsapp/whatsapp.template.ts | 73 | print('Sending WhatsApp message', url, payload) | CODE |
| HIGH | …/templates/_destinations/whatsapp/whatsapp.template.ts | 83 | print('WhatsApp message sent', res) | CODE |
| HIGH | …/cdp/templates/_destinations/twilio/twilio.template.ts | 44 | print('Sending SMS', url, payload) | CODE |
| HIGH | …/cdp/templates/_destinations/twilio/twilio.template.ts | 55 | print('SMS sent', res) | CODE |
| HIGH | …emplates/_sources/webhook/incoming_webhook.template.ts | 15 | print('Incoming request:', request.body) | CODE |
| HIGH | …emplates/_sources/webhook/incoming_webhook.template.ts | 28 | print('Incoming request denied due to bad authorization header') | CODE |
| HIGH | …templates/_sources/vercel/vercel_log_drain.template.ts | 15 | print('Incoming headers:', request.headers) | CODE |
| HIGH | …templates/_sources/vercel/vercel_log_drain.template.ts | 16 | print('Incoming body:', request.body) | CODE |
| HIGH | …templates/_sources/vercel/vercel_log_drain.template.ts | 29 | print('Denied: bad Authorization header') | CODE |
| HIGH | …templates/_sources/vercel/vercel_log_drain.template.ts | 103 | print(f'Warning: Dropped {droppedCount} additional log(s). Hog functions can only emit one event per invocation.') | CODE |
| HIGH | …templates/_sources/vercel/vercel_log_drain.template.ts | 242 | print('vercel log drain: custom_template empty, falling back to rotating_salt') | CODE |
| HIGH | …templates/_sources/vercel/vercel_log_drain.template.ts | 258 | print('vercel log drain: custom_template substituted to empty, falling back to rotating_salt') | CODE |
| HIGH | …ejs/src/cdp/templates/_sources/pixel/pixel.template.ts | 16 | print('Incoming request:', request.query) | CODE |
| HIGH | …s/_transformations/url-masking/url-masking.template.ts | 77 | print('Error masking URL parameters:', error) | CODE |
| HIGH⚡ | …cdp/templates/_transformations/geoip/geoip.template.ts | 34 | print('geoip disabled or no ip.') | CODE |
| HIGH⚡ | …cdp/templates/_transformations/geoip/geoip.template.ts | 40 | print('spoofing ip for local development', ip) | CODE |
| HIGH⚡ | …cdp/templates/_transformations/geoip/geoip.template.ts | 45 | print('geoip lookup failed for ip', ip) | CODE |
| HIGH | …cdp/templates/_transformations/geoip/geoip.template.ts | 75 | print('geoip location data for ip:', location) | CODE |
| HIGH⚡ | …rmations/ip-anonymization/ip-anonymization.template.ts | 17 | print('No IP address found in event') | CODE |
| HIGH⚡ | …rmations/ip-anonymization/ip-anonymization.template.ts | 26 | print('Invalid IP address format: wrong number of octets') | CODE |
| 760 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …rmance-ai/query_performance_ai/orchestrator/harvest.py | 31 | result = sandbox.execute(f"cat {shlex.quote(path)} 2>/dev/null || true", timeout_seconds=30) | CODE |
| HIGH | …rmance-ai/query_performance_ai/orchestrator/harvest.py | 36 | cmd = f"find {shlex.quote(dir_path)} -maxdepth 1 -type f -printf '%f\\n' 2>/dev/null || true" | CODE |
| HIGH⚡ | tools/hogli/tests/test_command_types.py | 20 | cmd = DirectCommand("test", {"cmd": "echo foo && echo bar"}) | CODE |
| HIGH⚡ | tools/hogli/tests/test_command_types.py | 27 | assert call_args[0][0] == "echo foo && echo bar" | CODE |
| HIGH | tools/hogli/tests/test_command_types.py | 46 | cmd = DirectCommand("test", {"cmd": "echo foo && echo bar"}) | CODE |
| HIGH⚡ | tools/hogli/tests/test_command_types.py | 19 | """Test commands with && or || use shell=True.""" | STRING |
| HIGH⚡ | tools/hogli/tests/test_command_types.py | 19 | """Test commands with && or || use shell=True.""" | STRING |
| HIGH | tools/hogbox-preview/hogbox_preview/backend.py | 119 | inner = f"bash {base}.sh > {log} 2>&1 && touch {done} || touch {fail}" | CODE |
| HIGH | tools/hogbox-preview/hogbox_preview/stack.py | 242 | "for _ in $(seq 1 30); do docker info >/dev/null 2>&1 && break; sleep 2; done; " | CODE |
| HIGH | tools/hogbox-preview/hogbox_preview/stack.py | 500 | "docker volume rm posthog_postgres-15-data || true" | CODE |
| HIGH | tools/hogbox-preview/hogbox_preview/stack.py | 569 | f"ok=0; for _ in 1 2 3; do {register} && ok=1 && break; sleep 10; done; " | CODE |
| HIGH | tools/hogbox-preview/hogbox_preview/stack.py | 612 | "rm -rf frontend/dist && mkdir -p frontend/dist staticfiles && " | CODE |
| HIGH | tools/hogbox-preview/hogbox_preview/stack.py | 675 | probe login GET /login || exit 1 | CODE |
| HIGH | tools/hogbox-preview/tests/test_hogland_backend.py | 8 | cd tools/hogbox-preview && python -m unittest discover tests | STRING |
| HIGH | tools/hogbox-preview/tests/test_stack_secret_key.py | 9 | cd tools/hogbox-preview && python -m unittest discover tests | STRING |
| HIGH | tools/hogbox-preview/tests/test_deep_health.py | 18 | cd tools/hogbox-preview && python -m unittest discover tests | STRING |
| HIGH | tools/hogbox-preview/tests/test_swap_frontend.py | 15 | cd tools/hogbox-preview && python -m unittest discover tests | STRING |
| HIGH | tools/hogli-commands/hogli_commands/devenv/generator.py | 367 | _news=$(curl -sf --max-time 2 '{news_url}' 2>/dev/null || cat {news_local} 2>/dev/null || true) | CODE |
| HIGH | …li-commands/hogli_commands/tests/test_workflow_lint.py | 418 | "${{ github.workflow }}-${{ github.event_name == 'push' && github.sha || github.ref }}", | CODE |
| HIGH | …li-commands/hogli_commands/tests/test_workflow_lint.py | 434 | "${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.sha || github.ref }}", | CODE |
| HIGH⚡ | …li-commands/hogli_commands/tests/test_workflow_lint.py | 308 | group: build-${{ github.head_ref || github.ref }} | STRING |
| HIGH⚡ | …li-commands/hogli_commands/tests/test_workflow_lint.py | 316 | group: test-${{ github.head_ref || github.ref }} | STRING |
| HIGH | …li-commands/hogli_commands/tests/test_workflow_lint.py | 243 | concurrency: "${{ github.workflow }}-${{ github.head_ref || github.ref }}" | STRING |
| HIGH | …li-commands/hogli_commands/tests/test_workflow_lint.py | 281 | group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | STRING |
| HIGH | …li-commands/hogli_commands/tests/test_workflow_lint.py | 337 | group: build-${{ github.head_ref || github.ref }} | STRING |
| HIGH⚡ | …ols/hogli-commands/hogli_commands/tests/test_devenv.py | 194 | assert result["shell"] == "bin/wait-for-docker && bin/dev-sandbox ./bin/start-backend" | CODE |
| HIGH⚡ | …ols/hogli-commands/hogli_commands/tests/test_devenv.py | 202 | "shell": "bin/dev-open-when-ready http://localhost:6006 && pnpm install && pnpm run storybook", | CODE |
| HIGH⚡ | …ols/hogli-commands/hogli_commands/tests/test_devenv.py | 207 | "bin/dev-open-when-ready http://localhost:6006 && bin/dev-sandbox " | CODE |
| HIGH⚡ | …ols/hogli-commands/hogli_commands/tests/test_devenv.py | 208 | + shlex.quote("pnpm install && pnpm run storybook") | CODE |
| HIGH⚡ | …ols/hogli-commands/hogli_commands/tests/test_devenv.py | 215 | result = self._wrap({"shell": "echo hi && bin/wait-for-docker && ./server", "sandbox": True}) | CODE |
| HIGH⚡ | …ols/hogli-commands/hogli_commands/tests/test_devenv.py | 216 | assert result["shell"] == "bin/wait-for-docker && bin/dev-sandbox " + shlex.quote("echo hi && ./server") | CODE |
| HIGH⚡ | …ols/hogli-commands/hogli_commands/tests/test_devenv.py | 222 | result = self._wrap({"shell": "bin/wait-for-docker && bin/wait-for-postgres-tables x", "sandbox": True}) | CODE |
| HIGH⚡ | …ols/hogli-commands/hogli_commands/tests/test_devenv.py | 224 | assert result["shell"] == "bin/wait-for-docker && bin/wait-for-postgres-tables x" | CODE |
| HIGH⚡ | …ols/hogli-commands/hogli_commands/tests/test_checks.py | 569 | scripts={"backend:test": "pytest -c ../../pytest.ini --rootdir ../.. backend/ -v --tb=short || true"}, | CODE |
| HIGH⚡ | …ols/hogli-commands/hogli_commands/tests/test_checks.py | 579 | scripts={"backend:test": "pytest -c ../../pytest.ini --rootdir ../.. backend/ -v --tb=short || exit 0"}, | CODE |
| HIGH⚡ | …ols/hogli-commands/hogli_commands/tests/test_checks.py | 632 | "backend:test": "pytest -c ../../pytest.ini --rootdir ../.. backend/nonexistent -v --tb=short || true", | CODE |
| HIGH | tools/hogli-commands/hogli_commands/devbox/cli.py | 1693 | hogli devbox:exec -n api -- bash -lc 'cd ~/posthog && git status' | STRING |
| HIGH | …/hogli_commands/workflow_lint/checks/pr_concurrency.py | 7 | group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} | STRING |
| HIGH⚡ | …/hogli_commands/workflow_lint/checks/pr_concurrency.py | 67 | " group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}\n" | CODE |
| HIGH⚡ | …/hogli_commands/workflow_lint/checks/pr_concurrency.py | 73 | "`github.run_id` fallback: use `github.head_ref || github.ref` instead; run_id is unique\n" | CODE |
| HIGH⚡ | …/hogli_commands/workflow_lint/checks/pr_concurrency.py | 78 | " group: ${{ github.workflow }}-${{ github.event_name == 'push' && github.sha || github.head_ref || githu | CODE |
| HIGH | …/hogli_commands/workflow_lint/checks/pr_concurrency.py | 105 | "concurrency group uses `github.head_ref || github.run_id`; use " | CODE |
| HIGH | …/hogli_commands/workflow_lint/checks/pr_concurrency.py | 106 | "`github.head_ref || github.ref` so push runs deduplicate" | CODE |
| HIGH | tools/owners/posthog_owners/fmt.py | 514 | # (a non-empty list, or explicit null); owners: [] with no rules is a no-op. | COMMENT |
| HIGH | tools/owners/posthog_owners/cli.py | 56 | click.echo("owners: (unowned by design — explicit owners: null)") | CODE |
| HIGH⚡ | tools/traffic-sim/cli.py | 63 | let snippetLocation = null; | CODE |
| HIGH⚡ | tools/traffic-sim/cli.py | 67 | snippetLocation = s.parentElement ? s.parentElement.tagName.toLowerCase() : null; | CODE |
| HIGH⚡ | tools/traffic-sim/cli.py | 71 | let initConfig = null; | CODE |
| HIGH⚡ | tools/traffic-sim/cli.py | 81 | api_host: p.api_host || null, | CODE |
| HIGH⚡ | tools/traffic-sim/cli.py | 81 | api_host: p.api_host || null, | CODE |
| HIGH⚡ | tools/traffic-sim/cli.py | 82 | person_profiles: p.person_profiles || null, | CODE |
| HIGH⚡ | tools/traffic-sim/cli.py | 82 | person_profiles: p.person_profiles || null, | CODE |
| HIGH⚡ | tools/traffic-sim/cli.py | 90 | if (!initConfig && window.posthog && window.posthog.config) { | CODE |
| HIGH⚡ | tools/traffic-sim/cli.py | 93 | api_key: c.token || null, | CODE |
| HIGH⚡ | tools/traffic-sim/cli.py | 93 | api_key: c.token || null, | CODE |
| HIGH⚡ | tools/traffic-sim/cli.py | 94 | api_host: c.api_host || null, | CODE |
| HIGH⚡ | tools/traffic-sim/cli.py | 94 | api_host: c.api_host || null, | CODE |
| HIGH⚡ | tools/traffic-sim/cli.py | 95 | person_profiles: c.person_profiles || null, | CODE |
| HIGH⚡ | tools/traffic-sim/cli.py | 95 | person_profiles: c.person_profiles || null, | CODE |
| HIGH⚡ | tools/traffic-sim/cli.py | 98 | const arrScript = posthogScripts.find(s => s.src && s.src.includes('array')); | CODE |
| 905 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …s/hogli-commands/hogli_commands/product_structure.yaml | 0 | django models for stamphog. keep models thin — business logic belongs in logic/. use types from facade/enums.py where ap | STRING |
| HIGH | products/wizard/backend/models.py | 0 | django models for stamphog. keep models thin — business logic belongs in logic/. use types from facade/enums.py where ap | STRING |
| HIGH | products/stamphog/backend/models.py | 0 | django models for stamphog. keep models thin — business logic belongs in logic/. use types from facade/enums.py where ap | STRING |
| HIGH | …s/hogli-commands/hogli_commands/product_structure.yaml | 0 | celery tasks for access_control. async entrypoints that call the facade (facade/api.py). keep task functions thin - only | STRING |
| HIGH | products/metrics/backend/tasks/tasks.py | 0 | celery tasks for access_control. async entrypoints that call the facade (facade/api.py). keep task functions thin - only | STRING |
| HIGH | products/tracing/backend/tasks/tasks.py | 0 | celery tasks for access_control. async entrypoints that call the facade (facade/api.py). keep task functions thin - only | STRING |
| HIGH | products/apm/backend/tasks/tasks.py | 0 | celery tasks for access_control. async entrypoints that call the facade (facade/api.py). keep task functions thin - only | STRING |
| HIGH | products/data_catalog/backend/tasks/tasks.py | 0 | celery tasks for access_control. async entrypoints that call the facade (facade/api.py). keep task functions thin - only | STRING |
| HIGH | products/access_control/backend/tasks/tasks.py | 0 | celery tasks for access_control. async entrypoints that call the facade (facade/api.py). keep task functions thin - only | STRING |
| HIGH | …s/hogli-commands/hogli_commands/product_structure.yaml | 0 | contract types for stamphog. frozen dataclasses that define what this product exposes. no django imports. used by facade | STRING |
| HIGH | products/apm/backend/facade/contracts.py | 0 | contract types for stamphog. frozen dataclasses that define what this product exposes. no django imports. used by facade | STRING |
| HIGH | products/stamphog/backend/facade/contracts.py | 0 | contract types for stamphog. frozen dataclasses that define what this product exposes. no django imports. used by facade | STRING |
| HIGH | …s/hogli-commands/hogli_commands/product_structure.yaml | 0 | exported enums for stamphog. if an enum appears in a contract dataclass field, it belongs here. internal-only constants | STRING |
| HIGH | products/apm/backend/facade/enums.py | 0 | exported enums for stamphog. if an enum appears in a contract dataclass field, it belongs here. internal-only constants | STRING |
| HIGH | products/wizard/backend/facade/enums.py | 0 | exported enums for stamphog. if an enum appears in a contract dataclass field, it belongs here. internal-only constants | STRING |
| HIGH | products/stamphog/backend/facade/enums.py | 0 | exported enums for stamphog. if an enum appears in a contract dataclass field, it belongs here. internal-only constants | STRING |
| HIGH | …s/hogli-commands/hogli_commands/product_structure.yaml | 0 | drf views for stamphog. validate json via serializers, call facade methods, return serialized responses. no business log | STRING |
| HIGH | products/apm/backend/presentation/views.py | 0 | drf views for stamphog. validate json via serializers, call facade methods, return serialized responses. no business log | STRING |
| HIGH | products/stamphog/backend/presentation/views.py | 0 | drf views for stamphog. validate json via serializers, call facade methods, return serialized responses. no business log | STRING |
| HIGH | …ch_exports/backend/temporal/pipeline/internal_stage.py | 0 | delete all objects in bucket_name under key_prefix. | STRING |
| HIGH | …ducts/batch_exports/backend/tests/temporal/utils/s3.py | 0 | delete all objects in bucket_name under key_prefix. | STRING |
| HIGH | products/batch_exports/backend/tests/api/test_test.py | 0 | delete all objects in bucket_name under key_prefix. | STRING |
| HIGH | …poral/data_imports/tests/e2e/test_external_data_job.py | 0 | delete all objects in bucket_name under key_prefix. | STRING |
| HIGH | …rts/backend/temporal/destinations/http_batch_export.py | 0 | a temporal workflow to export clickhouse data into bigquery. this workflow is intended to be executed both manually and | STRING |
| HIGH | …ackend/temporal/destinations/snowflake_batch_export.py | 0 | a temporal workflow to export clickhouse data into bigquery. this workflow is intended to be executed both manually and | STRING |
| HIGH | …backend/temporal/destinations/redshift_batch_export.py | 0 | a temporal workflow to export clickhouse data into bigquery. this workflow is intended to be executed both manually and | STRING |
| HIGH | …backend/temporal/destinations/postgres_batch_export.py | 0 | a temporal workflow to export clickhouse data into bigquery. this workflow is intended to be executed both manually and | STRING |
| HIGH | …ckend/temporal/destinations/databricks_batch_export.py | 0 | a temporal workflow to export clickhouse data into bigquery. this workflow is intended to be executed both manually and | STRING |
| HIGH | …backend/temporal/destinations/bigquery_batch_export.py | 0 | a temporal workflow to export clickhouse data into bigquery. this workflow is intended to be executed both manually and | STRING |
| HIGH | …ducts/batch_exports/backend/tests/temporal/conftest.py | 0 | fixture to manage a database for redshift export testing. managing a test database involves the following steps: 1. crea | STRING |
| HIGH | …oducts/warehouse_sources/backend/tests/api/conftest.py | 0 | fixture to manage a database for redshift export testing. managing a test database involves the following steps: 1. crea | STRING |
| HIGH | posthog/temporal/tests/conftest.py | 0 | fixture to manage a database for redshift export testing. managing a test database involves the following steps: 1. crea | STRING |
| HIGH | …atch_exports/backend/tests/temporal/test_monitoring.py | 0 | provide a batch export for tests, not intended to be used. | STRING |
| HIGH | …orts/backend/tests/temporal/test_batch_export_utils.py | 0 | provide a batch export for tests, not intended to be used. | STRING |
| HIGH | …rts/backend/tests/temporal/pipeline/test_entrypoint.py | 0 | provide a batch export for tests, not intended to be used. | STRING |
| HIGH | …rts/backend/tests/temporal/destinations/s3/conftest.py | 0 | manage an s3 client to interact with a local object storage bucket. yields the client after creating a bucket. upon resu | STRING |
| HIGH | …/temporal/destinations/redshift/test_redshift_utils.py | 0 | manage an s3 client to interact with a local object storage bucket. yields the client after creating a bucket. upon resu | STRING |
| HIGH | products/batch_exports/backend/tests/api/test_test.py | 0 | manage an s3 client to interact with a local object storage bucket. yields the client after creating a bucket. upon resu | STRING |
| HIGH | …sts/api/destination_tests/test_s3_destination_tests.py | 0 | manage an s3 client to interact with a local object storage bucket. yields the client after creating a bucket. upon resu | STRING |
| HIGH | …inations/s3/test_workflow_with_local_object_storage.py | 0 | test a `postgresbatchexportworkflow` backfilling the persons model. we expect persons outside the batch interval to also | STRING |
| HIGH | …/tests/temporal/destinations/bigquery/test_workflow.py | 0 | test a `postgresbatchexportworkflow` backfilling the persons model. we expect persons outside the batch interval to also | STRING |
| HIGH | …s/temporal/destinations/snowflake/test_workflow_e2e.py | 0 | test a `postgresbatchexportworkflow` backfilling the persons model. we expect persons outside the batch interval to also | STRING |
| HIGH | …/tests/temporal/destinations/postgres/test_workflow.py | 0 | test a `postgresbatchexportworkflow` backfilling the persons model. we expect persons outside the batch interval to also | STRING |
| HIGH | …inations/s3/test_workflow_with_local_object_storage.py | 0 | test postgres export workflow end-to-end without any events to export. the workflow should update the batch export run s | STRING |
| HIGH | …/tests/temporal/destinations/bigquery/test_workflow.py | 0 | test postgres export workflow end-to-end without any events to export. the workflow should update the batch export run s | STRING |
| HIGH | …/tests/temporal/destinations/postgres/test_workflow.py | 0 | test postgres export workflow end-to-end without any events to export. the workflow should update the batch export run s | STRING |
| HIGH | …ckend/tests/temporal/destinations/bigquery/conftest.py | 0 | return a bigquery configuration dictionary to use in tests. | STRING |
| HIGH | products/batch_exports/backend/tests/api/test_test.py | 0 | return a bigquery configuration dictionary to use in tests. | STRING |
| HIGH | …i/destination_tests/test_bigquery_destination_tests.py | 0 | return a bigquery configuration dictionary to use in tests. | STRING |
| HIGH | …emporal/data_imports/tests/e2e/test_bigquery_source.py | 0 | return a bigquery configuration dictionary to use in tests. | STRING |
| HIGH | …ckend/tests/temporal/destinations/bigquery/conftest.py | 0 | manage a bigquery view for testing. we clean up the view after every test. could be quite time expensive, but guarantees | STRING |
| HIGH | …i/destination_tests/test_bigquery_destination_tests.py | 0 | manage a bigquery view for testing. we clean up the view after every test. could be quite time expensive, but guarantees | STRING |
| HIGH | …emporal/data_imports/tests/e2e/test_bigquery_source.py | 0 | manage a bigquery view for testing. we clean up the view after every test. could be quite time expensive, but guarantees | STRING |
| HIGH | …/tests/temporal/destinations/bigquery/test_activity.py | 0 | test that the `insert_into_postgres_activity_from_stage` merges new versions of rows. this unit tests looks at the mutab | STRING |
| HIGH | …s/temporal/destinations/snowflake/test_activity_e2e.py | 0 | test that the `insert_into_postgres_activity_from_stage` merges new versions of rows. this unit tests looks at the mutab | STRING |
| HIGH | …/tests/temporal/destinations/redshift/test_activity.py | 0 | test that the `insert_into_postgres_activity_from_stage` merges new versions of rows. this unit tests looks at the mutab | STRING |
| HIGH | …s/temporal/destinations/redshift/test_copy_activity.py | 0 | test that the `insert_into_postgres_activity_from_stage` merges new versions of rows. this unit tests looks at the mutab | STRING |
| HIGH | …/tests/temporal/destinations/postgres/test_activity.py | 0 | test that the `insert_into_postgres_activity_from_stage` merges new versions of rows. this unit tests looks at the mutab | STRING |
| HIGH | …/tests/temporal/destinations/bigquery/test_activity.py | 0 | test that the `insert_into_postgres_activity_from_stage` handles changes to the person schema. if we update the schema o | STRING |
| HIGH | …s/temporal/destinations/snowflake/test_activity_e2e.py | 0 | test that the `insert_into_postgres_activity_from_stage` handles changes to the person schema. if we update the schema o | STRING |
| 593 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | otel-collector-config.dev.yaml | 61 | scrape_interval: 15s | COMMENT |
| LOW | conftest.py | 21 | # Deliberately no gc.collect() before the freeze: sweeping the boot garbage | COMMENT |
| LOW | pytest.ini | 1 | [pytest] | COMMENT |
| LOW | docker-compose.multinode-clickhouse.yml | 1 | # | COMMENT |
| LOW | docker-compose.dev.yml | 1 | # | COMMENT |
| LOW | docker-compose.sandbox.yml | 1 | # | COMMENT |
| LOW | docker-compose.base.yml | 241 | image: provectuslabs/kafka-ui:latest | COMMENT |
| LOW | docker-compose.base.yml | 261 | # Pin >= 4.05: that's the first release that persists Content-Encoding metadata | COMMENT |
| LOW | docker-compose.profiles.yml | 1 | # Docker Compose profile overlay — historical backwards-compatibility layer. | COMMENT |
| LOW | …analytics-platform/dashboard-key-metrics/dashboards.tf | 1 | # ============================================================================= | COMMENT |
| LOW | …eam-analytics-platform/dashboard-key-metrics/alerts.tf | 1 | # ============================================================================= | COMMENT |
| LOW | nodejs/jest.setup-env.ts | 1 | import { mkdirSync, readFileSync, writeFileSync } from 'fs' | COMMENT |
| LOW | nodejs/tests/ingestion/ingestion-e2e.serial.test.ts | 1821 | // const user1DistinctId = 'user1-distinct-id' | COMMENT |
| LOW | nodejs/tests/ingestion/ingestion-e2e.serial.test.ts | 1841 | // $set: { | COMMENT |
| LOW | nodejs/tests/ingestion/ingestion-e2e.serial.test.ts | 1861 | // $set: { | COMMENT |
| LOW | nodejs/tests/ingestion/ingestion-e2e.serial.test.ts | 1881 | // }) | COMMENT |
| LOW | nodejs/tests/ingestion/ingestion-e2e.serial.test.ts | 1901 | // const personsClickhouse = await fetchPersons(team.id) | COMMENT |
| LOW | nodejs/tests/ingestion/ingestion-e2e.serial.test.ts | 1921 | // const distinctIdsPersons = await fetchDistinctIds(infra.postgres, { | COMMENT |
| LOW | nodejs/tests/ingestion/ingestion-e2e.serial.test.ts | 1941 | // // User 1 creation | COMMENT |
| LOW | nodejs/tests/ingestion/ingestion-e2e.serial.test.ts | 1961 | // // User 2 creation | COMMENT |
| LOW | nodejs/tests/ingestion/ingestion-e2e.serial.test.ts | 1981 | COMMENT | |
| LOW | nodejs/tests/ingestion/ingestion-e2e.serial.test.ts | 2001 | // await ingester.handleKafkaBatch(createKafkaMessages(events, token)) | COMMENT |
| LOW | nodejs/tests/ingestion/ingestion-e2e.serial.test.ts | 2021 | // name: 'User 1', | COMMENT |
| LOW | nodejs/tests/ingestion/ingestion-e2e.serial.test.ts | 2041 | // expect(distinctIdsPersons.length).toBe(3) | COMMENT |
| LOW | nodejs/tests/ingestion/ingestion-e2e.serial.test.ts | 2061 | // $set: { | COMMENT |
| LOW | nodejs/tests/ingestion/ingestion-e2e.serial.test.ts | 2081 | // .withProperties({ | COMMENT |
| LOW | nodejs/tests/ingestion/ingestion-e2e.serial.test.ts | 2101 | // .withProperties({ | COMMENT |
| LOW | nodejs/tests/ingestion/ingestion-e2e.serial.test.ts | 2121 | // await waitForExpect(async () => { | COMMENT |
| LOW | nodejs/tests/ingestion/ingestion-e2e.serial.test.ts | 2141 | // age: 30, | COMMENT |
| LOW | nodejs/tests/ingestion/ingestion-e2e.serial.test.ts | 2721 | ) | COMMENT |
| LOW | nodejs/src/cdp/types.ts | 381 | // group key, not a person distinct_id. The worker must trust this over the live trigger config, | COMMENT |
| LOW | nodejs/src/cdp/types.ts | 421 | // UUID of the exact event that triggered the wake, so the logs view can link to | COMMENT |
| LOW | nodejs/src/cdp/types.ts | 441 | // - `executeCurrentAction` on the same next dequeue: skips the "Executing action..." | COMMENT |
| LOW | nodejs/src/cdp/workflows-e2e.serial.test.ts | 381 | // is absent, so fixtures must supply it the same way Django would on save. | COMMENT |
| LOW | nodejs/src/cdp/workflows-e2e.serial.test.ts | 3241 | // Each routed action runs across two dequeues but only the "real" execution should log. | COMMENT |
| LOW | nodejs/src/cdp/workflows-e2e.serial.test.ts | 3641 | COMMENT | |
| LOW | nodejs/src/cdp/config.ts | 161 | // janitor_touch_count. The first stall retries within seconds (so a transient | COMMENT |
| LOW | nodejs/src/cdp/config.ts | 281 | HOG_FUNCTION_MONITORING_LOG_ENTRIES_PRODUCER: WARPSTREAM_INGESTION_PRODUCER, | COMMENT |
| LOW | nodejs/src/cdp/config.ts | 361 | CYCLOTRON_NODE_RESCHEDULE_MAX_CHUNKS_PER_CALL: 20, | COMMENT |
| LOW | nodejs/src/cdp/rerun/rerun-e2e.serial.test.ts | 341 | // On the rerun path the paginator strips globals.person; the worker | COMMENT |
| LOW | …js/src/cdp/consumers/cdp-cohort-membership.consumer.ts | 561 | size: messages.length, | COMMENT |
| LOW | …cdp/consumers/cdp-cyclotron-worker-hogflow.consumer.ts | 121 | // rather than relying on event.distinct_id being empty so future changes to the | COMMENT |
| LOW | …consumers/cdp-hogflow-subscription-matcher.consumer.ts | 401 | distinctIds: string[], | COMMENT |
| LOW | nodejs/src/cdp/services/self-loop-guard.ts | 1 | import { Counter } from 'prom-client' | COMMENT |
| LOW | nodejs/src/cdp/services/cyclotron-v2/janitor.ts | 421 | COMMENT | |
| LOW | …ejs/src/cdp/services/cyclotron-v2/cyclotron-v2.test.ts | 1881 | } | COMMENT |
| LOW | …/services/monitoring/hog-invocation-results.service.ts | 81 | COMMENT | |
| LOW | …/services/monitoring/hog-invocation-results.service.ts | 101 | // matters.) | COMMENT |
| LOW | …rc/cdp/services/messaging/push-notification.service.ts | 321 | // No business metric or VM-state push here — the eventual terminal attempt reports the outcome. | COMMENT |
| LOW | …src/cdp/services/messaging/email-validation.service.ts | 21 | }) | COMMENT |
| LOW | nodejs/src/cdp/services/messaging/email.service.ts | 301 | // Like suppression, the tracking decision lives at this choke point so every send path | COMMENT |
| LOW | nodejs/src/cdp/services/messaging/email.service.ts | 741 | FeedbackForwardingEmailAddress: from.email, | COMMENT |
| LOW | …s/src/cdp/services/messaging/message-assets.service.ts | 61 | const wrapPlainTextAsHtml = (text: string): string => { | COMMENT |
| LOW | nodejs/src/ingestion/ingestion-consumer.serial.test.ts | 981 | // event: '$$heatmap', | COMMENT |
| LOW | nodejs/src/ingestion/config.ts | 121 | // (idle worker capacity) or the worker stalls stream reads at capacity. | COMMENT |
| LOW | nodejs/src/ingestion/config.ts | 181 | PERSON_MERGE_EVENTS_TEAM_ALLOWLIST: string | COMMENT |
| LOW | …estion/pipelines/sessionreplay/shared/outputs/index.ts | 21 | // deployment produces to it. The key is the domain and not the ref, because the fetcher controls | COMMENT |
| LOW | …s/src/ingestion/pipelines/ai/costs/input-costs.test.ts | 1361 | $ai_audio_input_tokens: 100, | COMMENT |
| LOW | nodejs/src/ingestion/pipelines/ai/costs/input-costs.ts | 161 | const audioInputTokens = numericProperty(event, '$ai_audio_input_tokens') | COMMENT |
| LOW | …ion/pipelines/errortracking/error-tracking-pipeline.ts | 181 | // events. Must run as a batch and before any step that depends on | COMMENT |
| 2941 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/test_selection_verdict.py | 47 | CODE | |
| LOW | tools/test_selection_verdict.py | 156 | CODE | |
| LOW | tools/snob_backend_test_selection_shadow.py | 194 | CODE | |
| LOW | tools/snob_backend_test_selection_shadow.py | 424 | CODE | |
| LOW | tools/playwright_spec_selection.py | 167 | CODE | |
| LOW | …ai/sandboxed_autoresearch_agent/driver/run_campaign.py | 201 | CODE | |
| LOW | …e_ai/sandboxed_autoresearch_agent/driver/sandboxing.py | 78 | CODE | |
| LOW | …ce-ai/query_performance_ai/orchestrator/coordinator.py | 195 | CODE | |
| LOW | …ce-ai/query_performance_ai/orchestrator/coordinator.py | 637 | CODE | |
| LOW | tools/infra-scripts/clitools/test_toolbox.py | 986 | CODE | |
| LOW | tools/infra-scripts/clitools/test_toolbox.py | 1365 | CODE | |
| LOW | tools/infra-scripts/clitools/test_toolbox.py | 994 | CODE | |
| LOW | tools/infra-scripts/clitools/toolbox.py | 62 | CODE | |
| LOW | tools/infra-scripts/clitools/toolbox/pod.py | 28 | CODE | |
| LOW | tools/infra-scripts/clitools/toolbox/pod.py | 141 | CODE | |
| LOW | tools/infra-scripts/clitools/toolbox/kubernetes.py | 257 | CODE | |
| LOW | tools/hogli/src/hogli/command_types.py | 337 | CODE | |
| LOW | tools/hogli/src/hogli/command_types.py | 402 | CODE | |
| LOW | tools/hogli/src/hogli/cli.py | 295 | CODE | |
| LOW | tools/hogli/src/hogli/cli.py | 520 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/metabase.py | 70 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/metabase.py | 191 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/db_schema.py | 314 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/db_schema.py | 360 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/test_runner.py | 67 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/test_runner.py | 436 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/test_runner.py | 596 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/test_runner.py | 631 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/migrations.py | 115 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/migrations.py | 521 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/migrations.py | 564 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/migrations.py | 698 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/doctor.py | 312 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/doctor.py | 785 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/doctor.py | 933 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/doctor.py | 1468 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/doctor.py | 2170 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/prechecks.py | 15 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/worktrees.py | 460 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/worktrees.py | 750 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/devenv/wizard.py | 148 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/devenv/generator.py | 648 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/devenv/generator.py | 232 | CODE | |
| LOW | …gli-commands/hogli_commands/tests/test_posthog_auth.py | 419 | CODE | |
| LOW | …ols/hogli-commands/hogli_commands/product/isolation.py | 675 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/product/checks.py | 199 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/product/checks.py | 467 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/product/checks.py | 497 | CODE | |
| LOW | …s/hogli-commands/hogli_commands/product/ast_helpers.py | 38 | CODE | |
| LOW | …s/hogli-commands/hogli_commands/product/ast_helpers.py | 234 | CODE | |
| LOW | …s/hogli-commands/hogli_commands/product/ast_helpers.py | 250 | CODE | |
| LOW | …s/hogli-commands/hogli_commands/product/ast_helpers.py | 290 | CODE | |
| LOW | …s/hogli-commands/hogli_commands/product/ast_helpers.py | 327 | CODE | |
| LOW | …s/hogli-commands/hogli_commands/product/ast_helpers.py | 390 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/product/isolate.py | 79 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/product/isolate.py | 154 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/product/isolate.py | 270 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/product/isolate.py | 391 | CODE | |
| LOW | …ols/hogli-commands/hogli_commands/product/crossings.py | 397 | CODE | |
| LOW | …ols/hogli-commands/hogli_commands/product/crossings.py | 444 | CODE | |
| 2105 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | nodejs/src/cdp/services/messaging/email.service.test.ts | 1023 | const trackingHeader = sentCommand.input.Content.Simple.Headers.find( | CODE |
| CRITICAL | nodejs/src/cdp/services/messaging/email.service.test.ts | 1053 | const headerNames = sentCommand.input.Content.Simple.Headers.map((h: { Name: string }) => h.Name) | CODE |
| CRITICAL | …ion/pipelines/sessionreplay/parse-message-step.test.ts | 451 | expect(result.value.parsedMessage.eventsRange.start.toMillis()).toBe(fixedTimeMs) | CODE |
| CRITICAL | …ion/pipelines/sessionreplay/parse-message-step.test.ts | 452 | expect(result.value.parsedMessage.eventsRange.end.toMillis()).toBe(fixedTimeMs + 5000) | CODE |
| CRITICAL | …ion/pipelines/sessionreplay/parse-message-step.test.ts | 527 | expect(result.value.parsedMessage.eventsRange.start.toMillis()).toBe(sixDaysInPast) | CODE |
| CRITICAL | …ion/pipelines/sessionreplay/parse-message-step.test.ts | 528 | expect(result.value.parsedMessage.eventsRange.end.toMillis()).toBe(sixDaysInFuture) | CODE |
| CRITICAL | nodejs/src/common/temporal/codec.ts | 119 | data: this.encrypt(temporal.api.common.v1.Payload.encode(p).finish()), | CODE |
| CRITICAL | nodejs/src/common/temporal/codec.ts | 131 | return temporal.api.common.v1.Payload.decode(decrypted) | CODE |
| CRITICAL⚡ | …/hogli-commands/hogli_commands/tests/test_crossings.py | 116 | "import products.alerts.backend.models.alert\nqs = products.alerts.backend.models.alert.AlertConfiguration.o | CODE |
| CRITICAL | …/hogli-commands/hogli_commands/tests/test_crossings.py | 62 | ("a = AlertConfiguration._meta.concrete_model._meta.model.objects.create(team=t)", ["write(create)"]), | CODE |
| CRITICAL | products/mcp_store/backend/presentation/agent_views.py | 20 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| CRITICAL | products/mcp_store/backend/presentation/views.py | 14 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| CRITICAL | products/slack_app/backend/slack_link_unfurl.py | 9 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | …lack_app/backend/tests/services/test_slack_settings.py | 6 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | …lack_app/backend/tests/services/test_slack_app_home.py | 22 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | products/slack_app/backend/services/slack_app_home.py | 24 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | products/slack_app/backend/services/slack_settings.py | 157 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | …ckend/temporal/destinations/azure_blob_batch_export.py | 7 | from azure.core.exceptions import HttpResponseError | CODE |
| CRITICAL | …/destinations/azure_blob/test_workflow_error_states.py | 9 | from azure.core.exceptions import ClientAuthenticationError, ResourceNotFoundError | CODE |
| CRITICAL | …ch_exports/backend/api/destination_tests/azure_blob.py | 37 | from azure.core.exceptions import ClientAuthenticationError, ResourceNotFoundError, ServiceRequestError | CODE |
| CRITICAL | products/cdp/backend/models/hook.py | 3 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | products/cdp/backend/api/hooks.py | 4 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | products/feature_flags/backend/models/feature_flag.py | 6 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL⚡ | …analytics/backend/tests/test_failure_classification.py | 84 | mock_openai_cls.return_value.chat.completions.create.assert_not_called() | CODE |
| CRITICAL | …ics/backend/models/marketing_analytics_goal_mapping.py | 1 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | …ckend/hogql_queries/test_marketing_analytics_config.py | 4 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | …alytics/backend/hogql_queries/adapters/test_factory.py | 7 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | …/backend/hogql_queries/error_tracking_query_builder.py | 4 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | products/tasks/backend/models.py | 22 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | products/tasks/backend/temporal/process_task/utils.py | 10 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | …k/activities/tests/test_get_task_processing_context.py | 6 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | products/tasks/backend/tests/test_models.py | 9 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | products/tasks/backend/tests/test_model_selection.py | 3 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | products/tasks/backend/logic/services/peer_messages.py | 35 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| CRITICAL | …ducts/tasks/backend/logic/services/comment_activity.py | 5 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| CRITICAL | products/tasks/backend/logic/services/network_policy.py | 7 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | products/tasks/backend/logic/services/agentsh.py | 8 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | products/tasks/backend/facade/api.py | 31 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| CRITICAL | products/user_interviews/backend/max_tools.py | 5 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| CRITICAL | products/user_interviews/backend/presentation/views.py | 8 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| CRITICAL | …backend/hogql_queries/experiment_mean_query_builder.py | 211 | events_join_key_parts = cast(list[str | int], self._b.metric.source.events_join_key.split(".")) | STRING |
| CRITICAL | …/backend/management/commands/reingest_signal_report.py | 5 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | …tics/backend/hogql_queries/paths/paths_query_runner.py | 730 | table.select_from.table.select_from.table.select.extend( # type: ignore[union-attr] | CODE |
| CRITICAL | products/pulse/backend/models.py | 1 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | products/pulse/backend/test/test_models.py | 6 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | …2026-07-reviewer-model-glm52/runs/A-sonnet5-xhigh-3.md | 223 | - **Suggestion:** Before creating the ReviewRun, have `process_inbox_pr_review` independently re-verify the self-driving | CODE |
| CRITICAL | …reviewer-model-glm52/runs/A-sonnet5-xhigh-1-tainted.md | 275 | - **Suggestion:** Before creating the `ReviewRun` in `process_inbox_pr_review`, cross-validate the caller's claim agains | CODE |
| CRITICAL | …ew_hog/eval/experiments/2026-07-resolution-e2e/PLAN.md | 96 | `products.review_hog.backend.temporal.resolution._installation_auth(team_id, "PostHog/posthog")`), call | CODE |
| CRITICAL | products/workflows/backend/api/hog_flow.py | 14 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| CRITICAL | …es/ui/src/features/sessions/sessionServiceHost.test.ts | 8230 | const onData = mockTrpcAgent.onSessionEvent.subscribe.mock.calls.at( | CODE |
| CRITICAL | …es/ui/src/features/sessions/sessionServiceHost.test.ts | 8321 | const onData = mockTrpcAgent.onSessionEvent.subscribe.mock.calls.at( | CODE |
| CRITICAL | …es/ui/src/features/sessions/sessionServiceHost.test.ts | 8534 | const onData = mockTrpcAgent.onSessionEvent.subscribe.mock.calls.at( | CODE |
| CRITICAL | …/src/features/message-editor/tiptap/useTiptapEditor.ts | 100 | const chipNode = view.state.schema.nodes.mentionChip.create({ | CODE |
| CRITICAL | …s/desktop/packages/core/src/sessions/sessionService.ts | 2012 | this.d.trpc.workspace.verify.query({ taskId }), | CODE |
| CRITICAL | …s/desktop/packages/core/src/sessions/sessionService.ts | 2290 | const result = await this.d.trpc.agent.reconnect.mutate({ | CODE |
| CRITICAL | …s/desktop/packages/core/src/sessions/sessionService.ts | 2409 | await this.d.trpc.agent.cancel.mutate({ sessionId: taskRunId }); | CODE |
| CRITICAL | …s/desktop/packages/core/src/sessions/sessionService.ts | 2653 | const result = await this.d.trpc.agent.start.mutate({ | CODE |
| CRITICAL | …s/desktop/packages/core/src/sessions/sessionService.ts | 3085 | const eventSubscription = this.d.trpc.agent.onSessionEvent.subscribe( | CODE |
| CRITICAL | …s/desktop/packages/core/src/sessions/sessionService.ts | 3125 | this.d.trpc.agent.onPermissionRequest.subscribe( | CODE |
| CRITICAL | …s/desktop/packages/core/src/sessions/sessionService.ts | 4273 | return this.d.trpc.agent.prompt.mutate({ | CODE |
| 120 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/hogli/src/hogli/telemetry.py | 158 | def set_enabled(self, enabled: bool) -> None: | CODE |
| LOW | tools/hogli/src/hogli/telemetry.py | 300 | def set_enabled(enabled: bool) -> None: | CODE |
| LOW | tools/hogbox-preview/hogbox_preview/__init__.py | 16 | __all__ = [ | CODE |
| LOW | tools/hogli-commands/hogli_commands/devenv/__init__.py | 25 | __all__ = [ | CODE |
| LOW | tools/hogli-commands/hogli_commands/product/__init__.py | 7 | __all__ = [ | CODE |
| LOW | tools/hogli-commands/hogli_commands/devbox/coder.py | 1508 | def update_workspace_parameters(name: str, parameters: dict[str, str]) -> None: | CODE |
| LOW | …s/hogli-commands/hogli_commands/workflow_lint/check.py | 62 | __all__ = ["CheckResult", "Issue", "WorkflowCheck"] | CODE |
| LOW | …s/hogli-commands/hogli_commands/workflow_lint/model.py | 206 | __all__ = [ | CODE |
| LOW | …mmands/hogli_commands/workflow_lint/checks/__init__.py | 64 | __all__ = ["CHECKS", "get_check"] | CODE |
| LOW | tools/owners/posthog_owners/__init__.py | 6 | __all__ = [ | CODE |
| LOW | tools/traffic-sim/cli.py | 333 | async def _set_browserstack_status(page: Page, passed: bool, reason: str = "") -> None: | CODE |
| LOW | products/managed_migrations/backend/models/__init__.py | 3 | __all__ = [ | CODE |
| LOW | products/demo/backend/logic/products/__init__.py | 4 | __all__ = ["HedgeboxMatrix", "SpikeGPTMatrix"] | CODE |
| LOW⚡ | products/demo/backend/logic/products/hedgebox/matrix.py | 1796 | def _set_up_demo_oauth_application(self, team: "Team", user: "User") -> None: | CODE |
| LOW | products/demo/backend/logic/products/hedgebox/matrix.py | 1602 | def _set_up_file_engagement_experiment(self, team: "Team", user: "User", flag: FeatureFlag) -> None: | CODE |
| LOW | products/demo/backend/logic/products/hedgebox/matrix.py | 1836 | def _set_up_error_tracking_demo_data(self, team: "Team") -> None: | CODE |
| LOW | …ducts/demo/backend/logic/products/hedgebox/__init__.py | 19 | __all__ = ["HedgeboxMatrix"] | CODE |
| LOW | …ducts/demo/backend/logic/products/spikegpt/__init__.py | 5 | __all__ = ["SpikeGPTMatrix"] | CODE |
| LOW | products/demo/backend/logic/matrix/__init__.py | 5 | __all__ = ["Matrix", "MatrixManager"] | CODE |
| LOW⚡ | products/demo/backend/facade/api.py | 59 | __all__ = [ | CODE |
| LOW | products/mcp_store/backend/catalog_sync.py | 111 | def _update_template(template: MCPServerTemplate, entry: CatalogEntry, counts: SyncCounts) -> None: | CODE |
| LOW | products/mcp_store/backend/admin.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | products/mcp_store/backend/tasks/__init__.py | 4 | __all__ = ["sync_installation_tools_task"] | CODE |
| LOW | products/slack_app/backend/inbox_channel.py | 41 | def _set_team_channel(team_id: int, value: str) -> None: | CODE |
| LOW⚡ | products/slack_app/backend/slack_thread.py | 305 | def update_reaction(self, emoji: str) -> None: | CODE |
| LOW | …p/backend/tests/test_channel_approval_interactivity.py | 113 | def _set_signing_secret(self, mock_slack_cls: Any) -> None: | CODE |
| LOW | products/slack_app/backend/tests/helpers.py | 3 | __all__ = ["sign_slack_request"] | CODE |
| LOW | …slack_app/backend/tests/test_thread_message_routing.py | 470 | def _set_creator_mode(self, mode: str | None) -> None: | CODE |
| LOW | …ervices/slack_messages/test_collect_thread_messages.py | 330 | def _set_thread(self, messages: list[dict]) -> None: | CODE |
| LOW | products/slack_app/backend/facade/run_preferences.py | 23 | __all__ = [ | CODE |
| LOW | products/slack_app/backend/facade/slack_settings.py | 15 | __all__ = [ | CODE |
| LOW | products/slack_app/backend/views/__init__.py | 11 | __all__ = ["slack_app_command_handler", "slack_user_link_authorize", "slack_user_link_callback"] | CODE |
| LOW | products/slack_app/backend/services/run_preferences.py | 186 | __all__ = [ | CODE |
| LOW | products/slack_app/backend/services/model_catalogue.py | 58 | __all__ = [ | CODE |
| LOW | products/slack_app/backend/services/slack_settings.py | 178 | __all__ = [ | CODE |
| LOW | products/metrics/backend/facade/queries.py | 11 | __all__ = ["MetricsQueryRunner"] | CODE |
| LOW | products/metrics/backend/facade/testing.py | 10 | __all__ = ["seed_metric"] | CODE |
| LOW | products/metrics/backend/presentation/api.py | 51 | __all__ = ["MetricsViewSet"] | CODE |
| LOW | products/batch_exports/backend/temporal/queue.py | 71 | def set_schema(self, record_batch: pa.RecordBatch) -> None: | CODE |
| LOW | products/batch_exports/backend/temporal/__init__.py | 18 | __all__ = ["ACTIVITIES", "WORKFLOWS"] | CODE |
| LOW | …atch_exports/backend/temporal/backfill_batch_export.py | 136 | async def update_batch_export_backfill_model(inputs: UpdateBatchExportBackfillInputs) -> None: | CODE |
| LOW | …ts/batch_exports/backend/temporal/pipeline/consumer.py | 158 | def _set_stage_attribution_span_attributes(self, span: trace.Span, elapsed: float) -> None: | CODE |
| LOW | products/batch_exports/backend/facade/models.py | 9 | __all__ = ["BatchExportRun"] | CODE |
| LOW | products/batch_exports/backend/models/__init__.py | 12 | __all__ = [ | CODE |
| LOW | products/batch_exports/backend/debug/debugger.py | 182 | def set_batch_export_from_loaded(self, batch_export: BatchExport | str | int | uuid.UUID | None = None) -> None: | CODE |
| LOW | products/cdp/backend/tasks/__init__.py | 3 | __all__ = ["hog_functions"] | CODE |
| LOW | products/cdp/backend/facade/models.py | 9 | __all__ = ["HogFunction", "HogFunctionState", "HogFunctionType"] | CODE |
| LOW | products/cdp/backend/models/__init__.py | 16 | __all__ = [ | CODE |
| LOW | products/cdp/backend/models/hog_functions/__init__.py | 4 | __all__ = ["HogFunction", "HogFunctionRevision", "HogFunctionState"] | CODE |
| LOW | …ducts/feature_flags/backend/session_recording_links.py | 80 | def update_linked_flag_key(team: Team, expected_flag_id: int, new_key: str) -> None: | CODE |
| LOW | products/feature_flags/backend/tasks.py | 51 | def update_team_flags_cache(team_id: int) -> None: | CODE |
| LOW | products/feature_flags/backend/tasks.py | 95 | def update_team_service_flags_cache(team_id: int) -> None: | CODE |
| LOW | products/feature_flags/backend/tasks.py | 319 | def _set_ranked_team_gauge(gauge: Gauge, rows: list[dict], value_key: str) -> None: | CODE |
| LOW | products/feature_flags/backend/models/__init__.py | 7 | __all__ = [ | CODE |
| LOW | …ture_flags/backend/models/team_feature_flags_config.py | 8 | logger = logging.getLogger(__name__) | CODE |
| LOW | …gs/backend/models/team_feature_flag_defaults_config.py | 7 | logger = logging.getLogger(__name__) | CODE |
| LOW | products/feature_flags/backend/api/feature_flag.py | 136 | logger = logging.getLogger(__name__) | CODE |
| LOW | products/feature_flags/backend/api/feature_flag.py | 2472 | def _update_feature_flag_dashboard(feature_flag: FeatureFlag, old_key: str) -> None: | CODE |
| LOW | …eature_flags/backend/api/test/test_scheduled_change.py | 953 | def _set_flag_access(self, flag: FeatureFlag, access_level: str) -> None: | CODE |
| LOW | products/context_layer/backend/facade/api.py | 64 | __all__ = [ | CODE |
| 1498 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | nodejs/tests/ingestion/ingestion-e2e.serial.test.ts | 4472 | $set: { email: 'user@example.com', name: 'Identified User' }, | CODE |
| LOW | nodejs/tests/ingestion/ingestion-e2e.serial.test.ts | 4488 | email: 'user@example.com', | CODE |
| LOW | nodejs/tests/ingestion/person-updates-e2e.test.ts | 678 | $set: { email: 'user@example.com' }, | CODE |
| LOW | nodejs/src/cdp/cdp-api.serial.test.ts | 67 | name: 'Jane Doe', | CODE |
| LOW | nodejs/src/cdp/cdp-api.serial.test.ts | 214 | "name": "Jane Doe", | CODE |
| LOW | nodejs/src/cdp/cdp-api.serial.test.ts | 509 | "name": "Jane Doe", | CODE |
| LOW | nodejs/src/cdp/_tests/fixtures-hogflows.ts | 48 | name: 'John Doe', | CODE |
| LOW | nodejs/src/cdp/_tests/fixtures-hogflows.ts | 50 | name: 'John Doe', | CODE |
| LOW | nodejs/src/cdp/utils/hog-function-filtering.test.ts | 38 | properties: { name: 'Acme Corp' }, | CODE |
| LOW | nodejs/src/cdp/utils/hog-function-filtering.test.ts | 69 | "name": "Acme Corp", | CODE |
| LOW⚡ | nodejs/src/cdp/utils/hog-function-filtering.test.ts | 146 | person_properties: JSON.stringify({ name: 'John Doe' }), | CODE |
| LOW⚡ | nodejs/src/cdp/utils/hog-function-filtering.test.ts | 155 | properties: { name: 'John Doe' }, | CODE |
| LOW⚡ | nodejs/src/cdp/utils/hog-function-filtering.test.ts | 162 | properties: { name: 'John Doe' }, | CODE |
| LOW | nodejs/src/cdp/utils/hog-function-filtering.test.ts | 178 | group0_properties: JSON.stringify({ name: 'Acme Corp' }), | CODE |
| LOW | nodejs/src/cdp/utils/hog-function-filtering.test.ts | 192 | expect(result.group_0).toEqual({ properties: { name: 'Acme Corp' } }) | CODE |
| LOW | nodejs/src/cdp/consumers/cdp-events-consumer.test.ts | 992 | group_properties: { name: 'Acme Inc', industry: 'Tech' }, | CODE |
| LOW | nodejs/src/cdp/consumers/cdp-events-consumer.test.ts | 1061 | properties: { name: 'Acme Inc', industry: 'Tech' }, | CODE |
| LOW | nodejs/src/cdp/consumers/cdp-events-consumer.test.ts | 1096 | properties: { name: 'Acme Inc', industry: 'Tech' }, | CODE |
| LOW | …p/templates/_destinations/unify/unify.template.test.ts | 95 | properties: { company_domain: 'acme.com', company_name: 'Acme Inc' }, | CODE |
| LOW | …p/templates/_destinations/unify/unify.template.test.ts | 108 | name: 'Acme Inc', | CODE |
| LOW⚡ | …templates/_destinations/accoil/accoil.template.test.ts | 35 | name: 'John Doe', | CODE |
| LOW⚡ | …templates/_destinations/accoil/accoil.template.test.ts | 42 | name: 'John Doe', | CODE |
| LOW⚡ | …templates/_destinations/accoil/accoil.template.test.ts | 50 | user_name: 'John Doe', | CODE |
| LOW | …templates/_destinations/accoil/accoil.template.test.ts | 65 | name: 'John Doe', | CODE |
| LOW | …templates/_destinations/accoil/accoil.template.test.ts | 180 | name: 'Acme Corp', | CODE |
| LOW | …templates/_destinations/accoil/accoil.template.test.ts | 191 | group_name: 'Acme Corp', | CODE |
| LOW | …templates/_destinations/accoil/accoil.template.test.ts | 204 | name: 'Acme Corp', | CODE |
| LOW | …templates/_destinations/accoil/accoil.template.test.ts | 412 | company: 'Acme Corp', | CODE |
| LOW | …templates/_destinations/accoil/accoil.template.test.ts | 419 | user_name: 'John Doe', | CODE |
| LOW | …templates/_destinations/accoil/accoil.template.test.ts | 430 | name: 'John Doe', | CODE |
| LOW⚡ | …templates/_destinations/accoil/accoil.template.test.ts | 543 | name: 'John Doe', | CODE |
| LOW⚡ | …templates/_destinations/accoil/accoil.template.test.ts | 546 | company: 'Acme Corp', | CODE |
| LOW⚡ | …templates/_destinations/accoil/accoil.template.test.ts | 552 | user_name: 'John Doe', | CODE |
| LOW⚡ | …templates/_destinations/accoil/accoil.template.test.ts | 562 | name: 'John Doe', | CODE |
| LOW | …templates/_destinations/accoil/accoil.template.test.ts | 583 | name: 'Acme Corp', | CODE |
| LOW | …templates/_destinations/accoil/accoil.template.test.ts | 594 | group_name: 'Acme Corp', | CODE |
| LOW | …templates/_destinations/accoil/accoil.template.test.ts | 604 | name: 'Acme Corp', | CODE |
| LOW | …p/templates/_destinations/klime/klime.template.test.ts | 170 | $group_set: { name: 'Acme Inc' }, | CODE |
| LOW | …p/templates/_destinations/klime/klime.template.test.ts | 179 | expect(batchEvent.traits).toEqual({ name: 'Acme Inc' }) | CODE |
| LOW | …p/templates/_destinations/klime/klime.template.test.ts | 235 | $group_set: { name: 'Acme Inc', plan: 'enterprise', $initial_os: 'Mac OS X' }, | CODE |
| LOW | …p/templates/_destinations/klime/klime.template.test.ts | 243 | expect(parseBatchEvent(response).traits).toEqual({ name: 'Acme Inc', plan: 'enterprise' }) | CODE |
| LOW | …templates/_destinations/retain/retain.template.test.ts | 34 | email: 'user@example.com', | CODE |
| LOW | …templates/_destinations/retain/retain.template.test.ts | 65 | email: 'user@example.com', | CODE |
| LOW | …templates/_destinations/retain/retain.template.test.ts | 86 | $set: { email: 'user@example.com' }, | CODE |
| LOW | …templates/_destinations/retain/retain.template.test.ts | 90 | properties: { email: 'user@example.com' }, | CODE |
| LOW | …/cdp/templates/_destinations/twilio/twilio.template.ts | 64 | requiredScopes: 'placeholder', | CODE |
| LOW | …emplates/_sources/stripe/__tests__/stripe-webhook.json | 39 | "customer_email": "test@test.com", | CODE |
| LOW | …tions/hash-properties/hash-properties.template.test.ts | 41 | name: 'John Doe', | CODE |
| LOW | …tions/hash-properties/hash-properties.template.test.ts | 62 | expect(result.properties.name).toMatch(sha256('John Doe')) | CODE |
| LOW | …tions/hash-properties/hash-properties.template.test.ts | 69 | expect(result.properties.name).not.toBe('John Doe') | CODE |
| LOW | …tions/hash-properties/hash-properties.template.test.ts | 80 | name: 'John Doe', | CODE |
| LOW | …tions/hash-properties/hash-properties.template.test.ts | 103 | expect(result.properties.$set?.name).toMatch(sha256('John Doe')) | CODE |
| LOW | …tions/hash-properties/hash-properties.template.test.ts | 177 | name: 'John Doe', | CODE |
| LOW | …tions/hash-properties/hash-properties.template.test.ts | 196 | expect(result.properties.name).toBe('John Doe') | CODE |
| LOW | …tions/hash-properties/hash-properties.template.test.ts | 205 | name: 'John Doe', | CODE |
| LOW | …tions/hash-properties/hash-properties.template.test.ts | 224 | expect(result.properties.name).toMatch(sha256('John Doe')) | CODE |
| LOW | …dp/legacy-plugins/_destinations/sendgrid/index.test.ts | 96 | distinct_id: 'user0@example.org', | CODE |
| LOW | …dp/legacy-plugins/_destinations/sendgrid/index.test.ts | 104 | email: 'user1@example.org', | CODE |
| LOW | …dp/legacy-plugins/_destinations/sendgrid/index.test.ts | 124 | email: 'user0@example.org', | CODE |
| LOW | …dp/legacy-plugins/_destinations/sendgrid/index.test.ts | 142 | email: 'user1@example.org', | CODE |
| 854 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …c/cdp/consumers/cdp-cohort-membership.consumer.test.ts | 133 | // Step 1: Person enters the cohort | COMMENT |
| LOW | …c/cdp/consumers/cdp-cohort-membership.consumer.test.ts | 159 | // Step 2: Person leaves the cohort | COMMENT |
| LOW | …c/cdp/consumers/cdp-cohort-membership.consumer.test.ts | 187 | // Step 3: Person re-enters the cohort | COMMENT |
| LOW⚡ | …cdp/services/hogflows/hogflow-executor.service.test.ts | 1249 | // Step 1: run first action (function_id_1) | COMMENT |
| LOW⚡ | …cdp/services/hogflows/hogflow-executor.service.test.ts | 1268 | // Step 2: run again, should NOT exit early due to exit_only_at_end | COMMENT |
| LOW⚡ | …cdp/services/hogflows/hogflow-executor.service.test.ts | 2967 | // Step 1: Hogflow worker executes (queue !== 'email') — should route to email queue | COMMENT |
| LOW⚡ | …cdp/services/hogflows/hogflow-executor.service.test.ts | 2976 | // Step 2: Email worker picks up the job (queue === 'email') — should send inline and continue | COMMENT |
| LOW | …ejs/src/ingestion/framework/docs/12-filter-map.test.ts | 64 | // Step 1: Resolve team from teamId (some lookups may fail) | COMMENT |
| LOW | …ejs/src/ingestion/framework/docs/12-filter-map.test.ts | 81 | // Step 2: Process event (runs within teamAware context) | COMMENT |
| LOW⚡ | …s/src/ingestion/pipelines/ai/errors/normalize-error.ts | 15 | // Step 1: UUIDs and request IDs (e.g., req_abc123, 550e8400-e29b-41d4-a716-446655440000) | COMMENT |
| LOW⚡ | …s/src/ingestion/pipelines/ai/errors/normalize-error.ts | 18 | // Step 2: ISO timestamps (e.g., 2025-11-08T14:25:51.767Z) | COMMENT |
| LOW⚡ | …s/src/ingestion/pipelines/ai/errors/normalize-error.ts | 21 | // Step 3: Cloud resource paths (e.g., projects/123/locations/us-west2/publishers/google/models/gemini-pro) | COMMENT |
| LOW⚡ | …s/src/ingestion/pipelines/ai/errors/normalize-error.ts | 24 | // Step 4: ResponseId JSON fields (e.g., "responseId":"h2sPacmZI4OWvPEPvIS16Ac") | COMMENT |
| LOW⚡ | …s/src/ingestion/pipelines/ai/errors/normalize-error.ts | 27 | // Step 5: Generic JSON "id" fields (e.g., "id": "oJf6eVw-z1gNr-99c2d11d156dff07") | COMMENT |
| LOW⚡ | …s/src/ingestion/pipelines/ai/errors/normalize-error.ts | 36 | // Step 7: Function call IDs (e.g., function call call_edLiisyOJybNZLouC6MCNxyC) | COMMENT |
| LOW⚡ | …s/src/ingestion/pipelines/ai/errors/normalize-error.ts | 39 | // Step 8: User IDs (e.g., 'user_id': 'user_32yQoBNWxpvzxVJG0S0zxnnVSCJ') | COMMENT |
| LOW⚡ | …s/src/ingestion/pipelines/ai/errors/normalize-error.ts | 43 | // Step 9: Memory object IDs / hex addresses (e.g., 0xfffced405130) | COMMENT |
| LOW⚡ | …s/src/ingestion/pipelines/ai/errors/normalize-error.ts | 46 | // Step 10: Generic id='xxx' patterns (case insensitive) | COMMENT |
| LOW⚡ | …s/src/ingestion/pipelines/ai/errors/normalize-error.ts | 49 | // Step 11: Token counts (e.g., "tokenCount":7125 or "tokenCount": 7125) | COMMENT |
| LOW⚡ | …s/src/ingestion/pipelines/ai/errors/normalize-error.ts | 52 | // Step 12: Large numeric IDs (9+ digits, e.g., project IDs like 1234567890) | COMMENT |
| LOW⚡ | …s/src/ingestion/pipelines/ai/errors/normalize-error.ts | 55 | // Step 13: All remaining numbers | COMMENT |
| LOW⚡ | …s/src/ingestion/pipelines/ai/errors/normalize-error.ts | 58 | // Step 14: Multiple whitespace | COMMENT |
| LOW⚡ | …tion/common/persons/batch-writing-person-store.test.ts | 1363 | // Step 1: Cache the target person (simulating fetchForUpdate) | COMMENT |
| LOW⚡ | …tion/common/persons/batch-writing-person-store.test.ts | 1370 | // Step 2: Update target person with merged properties (simulating updatePersonForMerge) | COMMENT |
| LOW⚡ | …tion/common/persons/batch-writing-person-store.test.ts | 1397 | // Step 3: moveDistinctIds - this should preserve the merged cache | COMMENT |
| LOW⚡ | …tion/common/persons/batch-writing-person-store.test.ts | 1406 | // Step 4: Verify that cached merged properties are preserved | COMMENT |
| LOW⚡ | …tion/common/persons/batch-writing-person-store.test.ts | 1538 | // Step 1: Cache target person | COMMENT |
| LOW⚡ | …tion/common/persons/batch-writing-person-store.test.ts | 1545 | // Step 2: Multiple merge operations | COMMENT |
| LOW⚡ | …tion/common/persons/batch-writing-person-store.test.ts | 1569 | // Step 3: moveDistinctIds | COMMENT |
| LOW⚡ | …tion/common/persons/batch-writing-person-store.test.ts | 1577 | // Step 4: Verify all merged properties are preserved | COMMENT |
| LOW | …ommon/overflow-redirect/main-lane-overflow-redirect.ts | 90 | // Step 1: Check local cache | COMMENT |
| LOW | …ommon/overflow-redirect/main-lane-overflow-redirect.ts | 114 | // Step 2: Batch check Redis for cache misses using MGET | COMMENT |
| LOW | …ommon/overflow-redirect/main-lane-overflow-redirect.ts | 141 | // Step 3: Check rate limiter for unflagged keys | COMMENT |
| LOW | …ommon/overflow-redirect/main-lane-overflow-redirect.ts | 175 | // Step 4: Batch flag newly rate-limited keys in Redis | COMMENT |
| LOW⚡ | tools/hogli-commands/hogli_commands/doctor.py | 658 | # Step 1: Prune stale remote branches | COMMENT |
| LOW⚡ | tools/hogli-commands/hogli_commands/doctor.py | 664 | # Step 2: Expire old reflogs (keep 30 days for safety) | COMMENT |
| LOW⚡ | tools/hogli-commands/hogli_commands/doctor.py | 670 | # Step 3: Run gc --aggressive (this can take 1-2 minutes) | COMMENT |
| LOW | products/managed_migrations/docs/support-mcp-tools.md | 17 | ## Step 1: mint the personal API key | COMMENT |
| LOW | products/managed_migrations/docs/support-mcp-tools.md | 53 | ## Step 2: connect your MCP client | COMMENT |
| LOW | products/managed_migrations/docs/support-mcp-tools.md | 86 | ## Step 3: verify | COMMENT |
| LOW | products/mcp_store/backend/oauth.py | 278 | # Step 1: Try RFC 9728 Protected Resource Metadata to find the authorization server | COMMENT |
| LOW | products/mcp_store/backend/oauth.py | 307 | # Step 2: Fall back to fetching authorization server metadata directly from the origin. | COMMENT |
| LOW | …atch_exports/backend/temporal/backfill_batch_export.py | 897 | # Step 1: Create backfill model with STARTING status | COMMENT |
| LOW | …atch_exports/backend/temporal/backfill_batch_export.py | 923 | # Step 2: Get backfill info (validation + estimation) | COMMENT |
| LOW | …atch_exports/backend/temporal/backfill_batch_export.py | 941 | # Step 3: Update backfill with adjusted start and estimated count | COMMENT |
| LOW | …atch_exports/backend/temporal/backfill_batch_export.py | 977 | # Step 4: Early exit if no data to backfill | COMMENT |
| LOW | …s/backend/hogql_queries/conversion_goals_aggregator.py | 79 | # Step 1: Generate individual conversion goal queries, parallelised across goals | COMMENT |
| LOW⚡ | …s/backend/hogql_queries/conversion_goals_aggregator.py | 163 | # Step 2: UNION ALL the individual queries | COMMENT |
| LOW⚡ | …s/backend/hogql_queries/conversion_goals_aggregator.py | 169 | # Step 3: Create final aggregation query that sums all conversion goals | COMMENT |
| LOW | …ng/skills/diagnosing-stacktrace-symbolication/SKILL.md | 38 | ### Step 1 - Find how symbol data is produced and uploaded | COMMENT |
| LOW | …ng/skills/diagnosing-stacktrace-symbolication/SKILL.md | 56 | ### Step 2 - Build and inspect local artifacts | COMMENT |
| LOW | …ng/skills/diagnosing-stacktrace-symbolication/SKILL.md | 65 | ### Step 3 - Check symbol sets in PostHog | COMMENT |
| LOW | …ng/skills/diagnosing-stacktrace-symbolication/SKILL.md | 99 | ### Step 4 - Compare local, uploaded, and served files | COMMENT |
| LOW | …ng/skills/diagnosing-stacktrace-symbolication/SKILL.md | 111 | ### Step 5 - Fix the most likely layer | COMMENT |
| LOW⚡ | products/tasks/backend/prompts.py | 59 | ## Step 1 - Verify the project builds | COMMENT |
| LOW⚡ | products/tasks/backend/prompts.py | 76 | ## Step 2 - Commit the wizard's changes to a new branch | COMMENT |
| LOW | products/tasks/backend/prompts.py | 113 | ## Step 3 - Configure environment variables for production | COMMENT |
| LOW | products/tasks/backend/prompts.py | 131 | ## Step 4 - Open the pull request | COMMENT |
| LOW | products/tasks/backend/prompts.py | 282 | ## Step 5 - Keep CI green | COMMENT |
| LOW | …ks/skills/analyzing-task-runs/references/log-schema.md | 15 | ## Step 1: detect the format | COMMENT |
| 409 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tach.toml | 11 | # Eval trees are dev/CI-only tooling: the harness orchestrates many products by | COMMENT |
| MEDIUM | docker-compose.profiles.yml | 21 | # Temporal capability - workflow orchestration | COMMENT |
| MEDIUM | tools/query-performance-ai/ruff.toml | 4 | # Pi plugin and in-sandbox driver scripts use stdout as their orchestration | COMMENT |
| MEDIUM | tools/hogli-commands/README.md | 81 | └── product/ # Product scaffolding subpackage (lazy) | CODE |
| MEDIUM | …ols/hogli-commands/hogli_commands/tests/test_checks.py | 1228 | # facade/contracts.py is just scaffolding, not a commitment to | STRING |
| MEDIUM⚡ | …s/hogli-commands/hogli_commands/tests/test_scaffold.py | 26 | # commit, so the scaffold must satisfy the same gates product:lint blocks on. | COMMENT |
| MEDIUM | tools/hogli-commands/hogli_commands/product/isolate.py | 232 | lines.append("\n## Facade submodules to scaffold") | CODE |
| MEDIUM | products/managed_migrations/mcp/tools.yaml | 3 | # pnpm --filter=@posthog/mcp run scaffold-yaml -- --sync-all | COMMENT |
| MEDIUM | products/mcp_store/mcp/tools.yaml | 3 | # pnpm --filter=@posthog/mcp run scaffold-yaml -- --sync-all | COMMENT |
| MEDIUM | products/slack_app/evals/eval_model_classifier.py | 78 | # Deliberately not the prompt's own few-shot examples. Reusing those would measure | COMMENT |
| MEDIUM | products/metrics/mcp/tools.yaml | 3 | # pnpm --filter=@posthog/mcp run scaffold-yaml -- --sync-all | COMMENT |
| MEDIUM | products/batch_exports/mcp/tools.yaml | 3 | # pnpm --filter=@posthog/mcp run scaffold-yaml -- --sync-all | COMMENT |
| MEDIUM | products/cdp/mcp/cdp_functions.yaml | 3 | # pnpm --filter=@posthog/mcp run scaffold-yaml -- --sync-all | COMMENT |
| MEDIUM | products/cdp/mcp/cdp_function_templates.yaml | 3 | # pnpm --filter=@posthog/mcp run scaffold-yaml -- --sync-all | COMMENT |
| MEDIUM | products/feature_flags/mcp/tools.yaml | 3 | # pnpm --filter=@posthog/mcp run scaffold-yaml -- --sync-all | COMMENT |
| MEDIUM | products/context_layer/backend/scaffold.py | 220 | # not track empty directories, so scaffolding them would not survive a clone. | STRING |
| MEDIUM | products/context_layer/mcp/tools.yaml | 3 | # pnpm --filter=@posthog/mcp run scaffold-yaml -- --sync-all | COMMENT |
| MEDIUM | …s/context_layer/skills/context-layer-dreaming/SKILL.md | 13 | 2. Take the activity windows from the run prompt. Start with Spaces: call `channel-list`, exclude the personal `#me` cha | CODE |
| MEDIUM | products/tracing/mcp/tools.yaml | 3 | # pnpm --filter=@posthog/mcp run scaffold-yaml -- --sync-all | COMMENT |
| MEDIUM | products/mcp_analytics/mcp/tools.yaml | 3 | # pnpm --filter=@posthog/mcp run scaffold-yaml -- --sync-all | COMMENT |
| MEDIUM | …ucts/mcp_analytics/skills/improving-mcp-tools/SKILL.md | 67 | ## Hard guardrails | COMMENT |
| MEDIUM | products/marketing_analytics/mcp/tools.yaml | 3 | # pnpm --filter=@posthog/mcp run scaffold-yaml -- --sync-all | COMMENT |
| MEDIUM | products/error_tracking/mcp/error_tracking_alerts.yaml | 3 | # pnpm --filter=@posthog/mcp run scaffold-yaml -- --sync-all | COMMENT |
| MEDIUM | products/error_tracking/mcp/tools.yaml | 3 | # pnpm --filter=@posthog/mcp run scaffold-yaml -- --sync-all | COMMENT |
| MEDIUM | products/tasks/backend/facade/api.py | 2036 | # moving all ORM access and Temporal/Slack/S3 orchestration behind the facade. Visibility on | COMMENT |
| MEDIUM | products/tasks/backend/facade/api.py | 4931 | # orchestration (title generation, signal-report linkage, workflow triggers, S3 artifact | COMMENT |
| MEDIUM | products/tasks/mcp/tools.yaml | 3 | # pnpm --filter=@posthog/mcp run scaffold-yaml -- --sync-all | COMMENT |
| MEDIUM | products/data_warehouse/mcp/tools.yaml | 3 | # pnpm --filter=@posthog/mcp run scaffold-yaml -- --sync-all | COMMENT |
| MEDIUM⚡ | products/endpoints/backend/logic/execution.py | 124 | # Cost guardrails + transient capacity: customer problems, not faults. Skipped from capture and | COMMENT |
| MEDIUM | products/endpoints/backend/logic/execution.py | 99 | # Deterministic, customer-caused ClickHouse cost guardrails → stable client `code` + remediation. | COMMENT |
| MEDIUM | products/endpoints/mcp/tools.yaml | 3 | # pnpm --filter=@posthog/mcp run scaffold-yaml -- --sync-all | COMMENT |
| MEDIUM | products/data_quality/mcp/tools.yaml | 3 | # pnpm --filter=@posthog/mcp run scaffold-yaml -- --sync-all | COMMENT |
| MEDIUM | products/streamlit_apps/mcp/tools.yaml | 3 | # pnpm --filter=@posthog/mcp run scaffold-yaml -- --sync-all | COMMENT |
| MEDIUM | products/user_interviews/mcp/tools.yaml | 3 | # pnpm --filter=@posthog/mcp run scaffold-yaml -- --sync-all | COMMENT |
| MEDIUM | products/visual_review/mcp/tools.yaml | 3 | # pnpm --filter=@posthog/mcp run scaffold-yaml -- --sync-all | COMMENT |
| MEDIUM | products/experiments/mcp/tools.yaml | 3 | # pnpm --filter=@posthog/mcp run scaffold-yaml -- --sync-all | COMMENT |
| MEDIUM | products/data_catalog/mcp/tools.yaml | 3 | # pnpm --filter=@posthog/mcp run scaffold-yaml -- --sync-all | COMMENT |
| MEDIUM | products/signals/ARCHITECTURE.md | 1402 | │ │ ├── AGENTS.md # Documentation for the agentic report generation flow | CODE |
| MEDIUM | products/signals/ARCHITECTURE.md | 1403 | │ │ ├── research.py # Multi-turn sandbox research orchestration + output schemas + research task_run ar | CODE |
| MEDIUM | products/signals/backend/models.py | 331 | # - READY -> CANDIDATE when new matching signals reopen the report for summary / agentic | COMMENT |
| MEDIUM | products/signals/backend/signal_metadata.py | 21 | # The embedding model whose document rows constitute the signal store; every signals | COMMENT |
| MEDIUM | products/signals/backend/views.py | 3320 | # part of the agentic pipeline contract and must not be hand-edited. | COMMENT |
| MEDIUM | products/signals/backend/temporal/summary.py | 330 | # 3. Run safety judge first to avoid passing unsafe report into the agentic research | COMMENT |
| MEDIUM | products/signals/backend/temporal/summary.py | 371 | # 4. Select repository for the agentic research | COMMENT |
| MEDIUM | products/signals/backend/temporal/summary.py | 405 | # 5. Run the agentic report research flow with the selected repository to use code/MCP data to assess si | COMMENT |
| MEDIUM | …ts/signals/backend/temporal/agentic/scout_scheduler.py | 29 | # runner -> temporal.agentic -> scout_coordinator -> scout_scheduler -> runner. | COMMENT |
| MEDIUM | products/signals/backend/temporal/agentic/report.py | 111 | # Only types we care about for the agentic report generation | COMMENT |
| MEDIUM | products/signals/backend/temporal/agentic/report.py | 305 | # orchestrates auto-start explicitly, so appends opt out of the model's auto-start | COMMENT |
| MEDIUM | products/signals/backend/temporal/agentic/report.py | 549 | # 3. Run the agentic research in the sandbox | COMMENT |
| MEDIUM | products/signals/backend/custom_agent/PLAN.md | 31 | cursed_comment_agent.py # realistic example (repo research + agentic resolvers) | CODE |
| MEDIUM | products/signals/backend/custom_agent/PLAN.md | 32 | auto_start.py # shared with the agentic signals pipeline | CODE |
| MEDIUM | products/signals/backend/test/test_scout_harness.py | 826 | # Shared scaffolding is still present on both personas. | COMMENT |
| MEDIUM⚡ | …nals/backend/test/test_signal_report_artefact_model.py | 68 | # The agentic pipeline appends _AGENTIC_ARTEFACT_TYPES versions on every run. The set must | COMMENT |
| MEDIUM | products/signals/backend/management/AGENTS.md | 86 | ## Repository selection (agentic) | COMMENT |
| MEDIUM | products/signals/backend/management/CLAUDE.md | 86 | ## Repository selection (agentic) | COMMENT |
| MEDIUM | …ackend/management/commands/run_custom_agent_example.py | 10 | # Cursed-comment finder (real research against a repo, agentic resolvers) | STRING |
| MEDIUM | products/signals/backend/scout_report/persistence.py | 201 | # the scout's task. This keeps an agentic report auditable as NOT pipeline-generated (a | COMMENT |
| MEDIUM⚡ | products/signals/backend/report_generation/research.py | 26 | # eager-imports agentic -> report -> back into this module, forming a circular import. | COMMENT |
| MEDIUM⚡ | …ducts/signals/backend/report_generation/select_repo.py | 33 | # __init__ (agentic -> back into report_generation), a circular import. SignalData is | COMMENT |
| MEDIUM | products/signals/backend/scout_harness/tools/report.py | 609 | # temporal/agentic + sandbox stack off this harness-tool module's import path (it loads at worker boot). | COMMENT |
| 202 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pyproject.toml | 385 | # deltalite's test suite bootstraps its harness/planner via sys.path (the package is a | COMMENT |
| MEDIUM | docker-compose.dev.yml | 813 | # Not 8000 (the Django dev server) and not 18000, which the eval harness binds for its | COMMENT |
| MEDIUM⚡ | tach.toml | 11 | # Eval trees are dev/CI-only tooling: the harness orchestrates many products by | COMMENT |
| MEDIUM⚡ | tach.toml | 12 | # design, and product-owned suites under products/*/evals import the harness | COMMENT |
| MEDIUM | tach.toml | 743 | # Facade-only (enforced by data_catalog's [[interfaces]] block): the scout harness gates | COMMENT |
| MEDIUM | tach.toml | 753 | # Facade-only: the scout harness pre-resolves the external MCP servers a run's sandbox will | COMMENT |
| MEDIUM | …ng/logs-sampling.rate-limit-impact.integration.test.ts | 174 | // ~10× over the limit → a large share is dropped. We assert a robust floor rather than an | COMMENT |
| MEDIUM | nodejs/src/cdp/services/hogflows/hogflow-utils.ts | 120 | // rather than the compiled bytecode is robust to bytecode/version changes (no need to enumerate the | COMMENT |
| MEDIUM | nodejs/src/common/kafka/producer.ts | 156 | // NOTE: The MessageHeader type is super weird. Essentially you are passing in a record and it expects a str | COMMENT |
| MEDIUM | nodejs/src/logs/sampling/compile-rules.ts | 81 | // case at write time, but the ingestion path stays robust to legacy or hand-crafted rows. | COMMENT |
| LOW | tools/hogli/src/hogli/command_types.py | 243 | # If not relative to repo root, just return the name | COMMENT |
| LOW⚡ | …s/hogli-commands/hogli_commands/product_structure.yaml | 440 | __init__: false # just create the folder | CODE |
| LOW⚡ | …s/hogli-commands/hogli_commands/product_structure.yaml | 443 | __init__: false # just create the folder | CODE |
| LOW⚡ | …s/hogli-commands/hogli_commands/product_structure.yaml | 446 | __init__: false # just create the folder | CODE |
| LOW⚡ | …s/hogli-commands/hogli_commands/product_structure.yaml | 449 | __init__: false # just create the folder | CODE |
| MEDIUM | products/slack_app/evals/eval_followup_classifier.py | 173 | # concurrently under the harness's limiter. | COMMENT |
| MEDIUM | products/slack_app/evals/eval_model_classifier.py | 230 | # still run concurrently under the harness's limiter. | COMMENT |
| MEDIUM | …ack_app/backend/tests/services/test_run_preferences.py | 115 | # The harness is the process the sandbox launched with, so a Codex model is | COMMENT |
| MEDIUM | products/slack_app/backend/services/run_preferences.py | 159 | # treat a run we can't place as unswitchable rather than guessing its harness. | COMMENT |
| MEDIUM | products/metrics/agent/tests/scale/farm_server.py | 55 | print( # noqa: T201 — container log line, the harness's readiness signal | CODE |
| LOW | …backend/temporal/destinations/redshift_batch_export.py | 291 | # as we have just set cursor_factory. | COMMENT |
| MEDIUM | …ests/temporal/destinations/databricks/test_workflow.py | 219 | """Reduce the poll interval for the Databricks client, in order to speed up the tests.""" | STRING |
| LOW | …/backend/tests/temporal/destinations/redshift/utils.py | 131 | # to determine if it is empty. If it is, we can just set the value to | COMMENT |
| MEDIUM | …ducts/batch_exports/backend/tests/temporal/utils/s3.py | 128 | # To facilitate comparison, we isoformat the dates. | COMMENT |
| LOW⚡ | products/cdp/backend/api/hog_function.py | 774 | # For non-transformation types, just create normally | COMMENT |
| MEDIUM | …ytics/backend/management/commands/seed_mcp_sessions.py | 73 | # harness buckets (Claude Code, OpenAI Codex, Cursor, Claude.ai, VS Code). Weighted toward the | COMMENT |
| MEDIUM | …cts/mcp_analytics/backend/hogql_queries/tool_tables.py | 74 | # A per-row distinct-and-sorted list of resolved harness labels, collected from the | COMMENT |
| MEDIUM | …p_analytics/backend/hogql_queries/harness_breakdown.py | 70 | # The harness label and token are HogQL fragments from mcp_harness; parse them | COMMENT |
| MEDIUM | …ackend/hogql_queries/test_conversion_goal_processor.py | 111 | """Create comprehensive test data covering various scenarios""" | STRING |
| MEDIUM | …ackend/hogql_queries/attribution_table_query_runner.py | 48 | # left to right from the crudest split to the most nuanced. | COMMENT |
| MEDIUM | products/tasks/backend/metrics.py | 448 | # ACP's default harness is Claude. A model-only override deliberately leaves | COMMENT |
| MEDIUM | products/tasks/backend/models.py | 971 | # `runtime_adapter` selects the harness (claude | codex) and the agent server derives | COMMENT |
| MEDIUM | products/tasks/backend/prompts.py | 106 | # 2. Harness skills folders (.claude/skills/, .agents/skills/, any .<harness>/skills/): | COMMENT |
| MEDIUM | …mporal/process_task/activities/relay_sandbox_events.py | 217 | # harness). Exit quietly — logger and Redis are already unusable here, | COMMENT |
| MEDIUM | products/tasks/backend/tests/test_facade.py | 1695 | # The agent-server rejects a model its harness can't drive. Sending the effort | COMMENT |
| MEDIUM⚡ | products/tasks/backend/logic/stream/redis_stream.py | 611 | # transaction guards against can't happen under the test harness. | COMMENT |
| MEDIUM | products/tasks/backend/logic/services/docker_sandbox.py | 509 | # Opt-in bind-mount for local skills. Set by the eval harness so | COMMENT |
| MEDIUM | …ducts/data_warehouse/backend/models/test/test_table.py | 754 | # Assert this is a comprehensive list of all possible ClickHouse types | COMMENT |
| MEDIUM | products/endpoints/backend/tests/test_endpoint.py | 652 | """Test creating a endpoint with a comprehensive TrendsQuery containing many fields.""" | STRING |
| MEDIUM⚡ | products/experiments/backend/experiment_service.py | 3129 | # from the backend is already more robust (while not ideal). | COMMENT |
| LOW⚡ | …experiments/backend/test/test_recalculation_service.py | 278 | # and we just set query_to on the recalc above. | COMMENT |
| LOW | …riments/backend/test/test_metrics_recalculation_api.py | 175 | # and we just set query_to on the recalc above. | COMMENT |
| MEDIUM | products/experiments/backend/test/test_facade.py | 104 | """Test creating experiment with comprehensive field set.""" | STRING |
| MEDIUM | …ts/experiments/backend/test/test_experiment_service.py | 3192 | # Positive control: the gate is live in this harness — a payload a policy does | COMMENT |
| MEDIUM | …ckend/hogql_queries/experiment_funnel_query_builder.py | 161 | # Use separate exposures CTE to leverage precomputed exposure cache when available. | STRING |
| LOW | …/experiments/backend/hogql_queries/base_query_utils.py | 478 | # Default to include all events selected, so we just set a large value here (3 years) | COMMENT |
| LOW | …ents/backend/hogql_queries/experiment_metric_values.py | 73 | # No conversion window limit - just return true since temporal filtering | COMMENT |
| MEDIUM | products/experiments/stats/bayesian/utils.py | 294 | # Use comprehensive shared validation | COMMENT |
| MEDIUM | products/data_catalog/evals/eval_governed_metrics.py | 441 | # Injected-listing arm, mirroring the scout harness's pre-fetched catalog paragraph | COMMENT |
| MEDIUM | products/signals/backend/models.py | 1838 | # `scout_harness/derived_metadata.py` and holds booleans the harness computes from the run's | COMMENT |
| MEDIUM | products/signals/backend/views.py | 1103 | # working against?") and by the agent harness to fan commit artefacts out to them. Uses the | COMMENT |
| MEDIUM | products/signals/backend/views.py | 2981 | # robust=True: a broker outage while enqueuing must not 500 an edit that already committed. | COMMENT |
| MEDIUM | …ts/signals/backend/temporal/agentic/scout_scheduler.py | 28 | # Type-only: importing the harness runner at module load would close the cycle | COMMENT |
| MEDIUM | …/signals/backend/temporal/agentic/scout_coordinator.py | 301 | # harness-seeded rows the team hasn't edited, so a content change rolls out within one | COMMENT |
| MEDIUM | …/signals/backend/temporal/agentic/scout_coordinator.py | 326 | # on the scout's NEXT RUN for any harness-seeded row the team hasn't forked. What the | COMMENT |
| MEDIUM | …als/backend/custom_agent/examples/cookie_poem_agent.py | 15 | # Direct, no Temporal harness (useful for testing the agent locally) | STRING |
| MEDIUM | products/signals/backend/emission/jira_issues.py | 164 | # depends on the warehouse sync, so wrap in toString(...) + parseDateTimeBestEffort to be robust | COMMENT |
| MEDIUM | products/signals/backend/test/test_scout_coordinator.py | 153 | # Default to a canonical (harness-seeded) skill — the realistic case; pass seeded=False for a | COMMENT |
| MEDIUM | products/signals/backend/test/test_scout_harness.py | 606 | # project-profile harness tool, eliminating the discovery-burn the | COMMENT |
| MEDIUM | products/signals/backend/test/test_scout_harness.py | 610 | # The base prompt teaches the agent to call the harness MCP tools by name. | COMMENT |
| 188 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …c/cdp/consumers/cdp-cohort-membership.consumer.test.ts | 133 | // Step 1: Person enters the cohort | COMMENT |
| LOW | …c/cdp/consumers/cdp-cohort-membership.consumer.test.ts | 159 | // Step 2: Person leaves the cohort | COMMENT |
| LOW | …c/cdp/consumers/cdp-cohort-membership.consumer.test.ts | 187 | // Step 3: Person re-enters the cohort | COMMENT |
| LOW⚡ | …cdp/services/hogflows/hogflow-executor.service.test.ts | 1249 | // Step 1: run first action (function_id_1) | COMMENT |
| LOW⚡ | …cdp/services/hogflows/hogflow-executor.service.test.ts | 1268 | // Step 2: run again, should NOT exit early due to exit_only_at_end | COMMENT |
| LOW⚡ | …cdp/services/hogflows/hogflow-executor.service.test.ts | 2967 | // Step 1: Hogflow worker executes (queue !== 'email') — should route to email queue | COMMENT |
| LOW⚡ | …cdp/services/hogflows/hogflow-executor.service.test.ts | 2976 | // Step 2: Email worker picks up the job (queue === 'email') — should send inline and continue | COMMENT |
| LOW | …ejs/src/ingestion/framework/docs/12-filter-map.test.ts | 64 | // Step 1: Resolve team from teamId (some lookups may fail) | COMMENT |
| LOW | …ejs/src/ingestion/framework/docs/12-filter-map.test.ts | 81 | // Step 2: Process event (runs within teamAware context) | COMMENT |
| LOW⚡ | …s/src/ingestion/pipelines/ai/errors/normalize-error.ts | 15 | // Step 1: UUIDs and request IDs (e.g., req_abc123, 550e8400-e29b-41d4-a716-446655440000) | COMMENT |
| LOW⚡ | …s/src/ingestion/pipelines/ai/errors/normalize-error.ts | 18 | // Step 2: ISO timestamps (e.g., 2025-11-08T14:25:51.767Z) | COMMENT |
| LOW⚡ | …s/src/ingestion/pipelines/ai/errors/normalize-error.ts | 21 | // Step 3: Cloud resource paths (e.g., projects/123/locations/us-west2/publishers/google/models/gemini-pro) | COMMENT |
| LOW⚡ | …s/src/ingestion/pipelines/ai/errors/normalize-error.ts | 24 | // Step 4: ResponseId JSON fields (e.g., "responseId":"h2sPacmZI4OWvPEPvIS16Ac") | COMMENT |
| LOW⚡ | …s/src/ingestion/pipelines/ai/errors/normalize-error.ts | 27 | // Step 5: Generic JSON "id" fields (e.g., "id": "oJf6eVw-z1gNr-99c2d11d156dff07") | COMMENT |
| LOW⚡ | …s/src/ingestion/pipelines/ai/errors/normalize-error.ts | 36 | // Step 7: Function call IDs (e.g., function call call_edLiisyOJybNZLouC6MCNxyC) | COMMENT |
| LOW⚡ | …s/src/ingestion/pipelines/ai/errors/normalize-error.ts | 39 | // Step 8: User IDs (e.g., 'user_id': 'user_32yQoBNWxpvzxVJG0S0zxnnVSCJ') | COMMENT |
| LOW⚡ | …s/src/ingestion/pipelines/ai/errors/normalize-error.ts | 43 | // Step 9: Memory object IDs / hex addresses (e.g., 0xfffced405130) | COMMENT |
| LOW⚡ | …s/src/ingestion/pipelines/ai/errors/normalize-error.ts | 46 | // Step 10: Generic id='xxx' patterns (case insensitive) | COMMENT |
| LOW⚡ | …s/src/ingestion/pipelines/ai/errors/normalize-error.ts | 49 | // Step 11: Token counts (e.g., "tokenCount":7125 or "tokenCount": 7125) | COMMENT |
| LOW⚡ | …s/src/ingestion/pipelines/ai/errors/normalize-error.ts | 52 | // Step 12: Large numeric IDs (9+ digits, e.g., project IDs like 1234567890) | COMMENT |
| LOW⚡ | …s/src/ingestion/pipelines/ai/errors/normalize-error.ts | 55 | // Step 13: All remaining numbers | COMMENT |
| LOW⚡ | …s/src/ingestion/pipelines/ai/errors/normalize-error.ts | 58 | // Step 14: Multiple whitespace | COMMENT |
| LOW⚡ | …tion/common/persons/batch-writing-person-store.test.ts | 1363 | // Step 1: Cache the target person (simulating fetchForUpdate) | COMMENT |
| LOW⚡ | …tion/common/persons/batch-writing-person-store.test.ts | 1370 | // Step 2: Update target person with merged properties (simulating updatePersonForMerge) | COMMENT |
| LOW⚡ | …tion/common/persons/batch-writing-person-store.test.ts | 1397 | // Step 3: moveDistinctIds - this should preserve the merged cache | COMMENT |
| LOW⚡ | …tion/common/persons/batch-writing-person-store.test.ts | 1406 | // Step 4: Verify that cached merged properties are preserved | COMMENT |
| LOW⚡ | …tion/common/persons/batch-writing-person-store.test.ts | 1538 | // Step 1: Cache target person | COMMENT |
| LOW⚡ | …tion/common/persons/batch-writing-person-store.test.ts | 1545 | // Step 2: Multiple merge operations | COMMENT |
| LOW⚡ | …tion/common/persons/batch-writing-person-store.test.ts | 1569 | // Step 3: moveDistinctIds | COMMENT |
| LOW⚡ | …tion/common/persons/batch-writing-person-store.test.ts | 1577 | // Step 4: Verify all merged properties are preserved | COMMENT |
| LOW | …ommon/overflow-redirect/main-lane-overflow-redirect.ts | 90 | // Step 1: Check local cache | COMMENT |
| LOW | …ommon/overflow-redirect/main-lane-overflow-redirect.ts | 114 | // Step 2: Batch check Redis for cache misses using MGET | COMMENT |
| LOW | …ommon/overflow-redirect/main-lane-overflow-redirect.ts | 141 | // Step 3: Check rate limiter for unflagged keys | COMMENT |
| LOW | …ommon/overflow-redirect/main-lane-overflow-redirect.ts | 175 | // Step 4: Batch flag newly rate-limited keys in Redis | COMMENT |
| LOW⚡ | tools/hogli-commands/hogli_commands/doctor.py | 658 | # Step 1: Prune stale remote branches | COMMENT |
| LOW⚡ | tools/hogli-commands/hogli_commands/doctor.py | 664 | # Step 2: Expire old reflogs (keep 30 days for safety) | COMMENT |
| LOW⚡ | tools/hogli-commands/hogli_commands/doctor.py | 670 | # Step 3: Run gc --aggressive (this can take 1-2 minutes) | COMMENT |
| LOW | products/mcp_store/backend/oauth.py | 278 | # Step 1: Try RFC 9728 Protected Resource Metadata to find the authorization server | COMMENT |
| LOW | products/mcp_store/backend/oauth.py | 307 | # Step 2: Fall back to fetching authorization server metadata directly from the origin. | COMMENT |
| LOW | …atch_exports/backend/temporal/backfill_batch_export.py | 897 | # Step 1: Create backfill model with STARTING status | COMMENT |
| LOW | …atch_exports/backend/temporal/backfill_batch_export.py | 923 | # Step 2: Get backfill info (validation + estimation) | COMMENT |
| LOW | …atch_exports/backend/temporal/backfill_batch_export.py | 941 | # Step 3: Update backfill with adjusted start and estimated count | COMMENT |
| LOW | …atch_exports/backend/temporal/backfill_batch_export.py | 977 | # Step 4: Early exit if no data to backfill | COMMENT |
| LOW | …ics/backend/hogql_queries/conversion_goal_processor.py | 2324 | # For ActionsNode, we need to check if this is an action condition | COMMENT |
| LOW | …s/backend/hogql_queries/conversion_goals_aggregator.py | 79 | # Step 1: Generate individual conversion goal queries, parallelised across goals | COMMENT |
| LOW⚡ | …s/backend/hogql_queries/conversion_goals_aggregator.py | 163 | # Step 2: UNION ALL the individual queries | COMMENT |
| LOW⚡ | …s/backend/hogql_queries/conversion_goals_aggregator.py | 169 | # Step 3: Create final aggregation query that sums all conversion goals | COMMENT |
| LOW⚡ | …ndpoints/backend/tests/test_insight_response_parity.py | 127 | # Step 1: Execute inline — establish the baseline shape | COMMENT |
| LOW⚡ | …ndpoints/backend/tests/test_insight_response_parity.py | 136 | # Step 2: Set up materialization | COMMENT |
| LOW⚡ | …ndpoints/backend/tests/test_insight_response_parity.py | 139 | # Step 3: Mock process_query_model to return flat HogQL data | COMMENT |
| LOW⚡ | …ndpoints/backend/tests/test_insight_response_parity.py | 185 | # Step 1: Inline baseline | COMMENT |
| LOW⚡ | …ndpoints/backend/tests/test_insight_response_parity.py | 192 | # Step 2: Materialize | COMMENT |
| LOW⚡ | …ndpoints/backend/tests/test_insight_response_parity.py | 195 | # Step 3: Mock with breakdown_value column | COMMENT |
| LOW⚡ | …ndpoints/backend/tests/test_insight_response_parity.py | 335 | # Step 1: Inline baseline | COMMENT |
| LOW⚡ | …ndpoints/backend/tests/test_insight_response_parity.py | 344 | # Step 2: Materialize | COMMENT |
| LOW⚡ | …ndpoints/backend/tests/test_insight_response_parity.py | 347 | # Step 3: Mock with lifecycle columns in ALPHABETICAL order | COMMENT |
| LOW⚡ | …ndpoints/backend/tests/test_insight_response_parity.py | 413 | # Step 2: Materialize | COMMENT |
| LOW⚡ | …ndpoints/backend/tests/test_insight_response_parity.py | 416 | # Step 3: Mock with retention columns in ALPHABETICAL order | COMMENT |
| LOW⚡ | …ndpoints/backend/tests/test_insight_response_parity.py | 474 | # Step 1: Inline baseline — should have results from both series | COMMENT |
| LOW⚡ | …ndpoints/backend/tests/test_insight_response_parity.py | 480 | # Step 2: Materialize | COMMENT |
| 286 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/infra-scripts/clitools/toolbox/pod.py | 124 | # Check if we should print an update | COMMENT |
| LOW | tools/hogli/src/hogli/manifest.py | 276 | # Check if any manifest command shares this prefix | COMMENT |
| LOW | tools/hogli/src/hogli/validate.py | 26 | # Check if executable and not a config file | COMMENT |
| LOW | tools/hogli-commands/hogli_commands/migrations.py | 920 | # Check if already cached | COMMENT |
| LOW | tools/hogli-commands/hogli_commands/doctor.py | 517 | # Check if cargo is available | COMMENT |
| LOW | tools/hogli-commands/hogli_commands/doctor.py | 876 | # Check if this is a workspace root or standalone package | COMMENT |
| LOW | tools/hogli-commands/hogli_commands/doctor.py | 1209 | # Check if the parent is a known process manager | COMMENT |
| LOW | tools/hogli-commands/hogli_commands/product/maturity.py | 457 | # Check if the facade is real (has function definitions, not re-exports) | COMMENT |
| LOW⚡ | products/demo/backend/logic/products/hedgebox/models.py | 380 | # Check if it's night | COMMENT |
| LOW⚡ | products/demo/backend/logic/products/hedgebox/models.py | 383 | # Check if it's 9 to 5 on a work day | COMMENT |
| LOW⚡ | products/demo/backend/logic/products/spikegpt/models.py | 111 | # Check if it's night | COMMENT |
| LOW⚡ | products/demo/backend/logic/products/spikegpt/models.py | 114 | # Check if it's 9 to 5 on a work day | COMMENT |
| LOW | products/slack_app/backend/api.py | 4745 | # Check if we own this context locally | COMMENT |
| LOW | …atch_exports/backend/temporal/backfill_batch_export.py | 997 | # Set timeout to a month for now, as unending backfills are an internal feature we are | COMMENT |
| LOW | …ackend/temporal/destinations/snowflake_batch_export.py | 786 | # Check if we've exceeded the timeout | COMMENT |
| LOW | …d/tests/temporal/destinations/snowflake/test_client.py | 90 | # Check if the query was actually cancelled/aborted in Snowflake | COMMENT |
| LOW | products/batch_exports/backend/api/batch_export.py | 1249 | # Check if offset fields are in the request (for PATCH, distinguish between absent and None) | COMMENT |
| LOW | products/cdp/backend/tasks/hog_functions.py | 46 | # Check if this team references the cohort in its test_account_filters | COMMENT |
| LOW | products/cdp/backend/api/hog_function.py | 1758 | # Check if backfill is already enabled | COMMENT |
| LOW | products/feature_flags/backend/flags_cache.py | 652 | # Check if evaluation_metadata is present in cached data. | COMMENT |
| LOW | products/feature_flags/backend/max_tools.py | 405 | # Check if any group has a rollout percentage | COMMENT |
| LOW | …s/feature_flags/backend/test/test_feature_flag_sync.py | 267 | # Set lock to prevent execution | COMMENT |
| LOW | products/feature_flags/backend/api/feature_flag.py | 1830 | # Check if the referenced flag is active | COMMENT |
| LOW | products/feature_flags/backend/api/feature_flag.py | 2083 | # Check if flag is used in session replay settings | COMMENT |
| LOW | products/feature_flags/backend/api/feature_flag.py | 2118 | # Check if this flag depends on any disabled flags | COMMENT |
| LOW | products/feature_flags/backend/api/feature_flag.py | 4754 | # Check if user has editor or higher access to feature flags for this team | COMMENT |
| LOW | …hogql_queries/marketing_analytics_base_query_runner.py | 1069 | # Check if this is an aggregated query (no GROUP BY) | COMMENT |
| LOW | …ogql_queries/marketing_analytics_table_query_runner.py | 104 | # Check if there are more results | COMMENT |
| LOW | …marketing_analytics/backend/hogql_queries/constants.py | 513 | # Check if it's a StrEnum (has __members__) | COMMENT |
| LOW | …marketing_analytics/backend/hogql_queries/constants.py | 682 | # Check if it's a base column | COMMENT |
| LOW | …marketing_analytics/backend/hogql_queries/constants.py | 689 | # Check if it's a conversion goal or cost per conversion | COMMENT |
| LOW | …ics/backend/hogql_queries/conversion_goal_processor.py | 2326 | # Check if this condition comes from action_to_expr (complex action conditions) | COMMENT |
| LOW | …eries/non_integrated_conversions_table_query_runner.py | 101 | # Check if there are more results | COMMENT |
| LOW | products/error_tracking/backend/max_tools.py | 305 | # Set searchQuery to empty string if None (matches dashboard behavior) | STRING |
| LOW | …dpoints/backend/tests/test_variable_materialization.py | 1961 | # Check if this row matches all variable values | COMMENT |
| LOW | products/endpoints/backend/logic/execution.py | 373 | # Check if materialized data is stale. Keyed on the version's freshness target, not | COMMENT |
| LOW | products/endpoints/backend/logic/execution.py | 382 | # Check if variables are valid for materialized execution | COMMENT |
| LOW | products/experiments/backend/experiment_service.py | 3977 | # Check if saved_metric assignment has changed | COMMENT |
| LOW | …ckend/hogql_queries/experiment_funnel_query_builder.py | 586 | # Check if any step is a data warehouse node | STRING |
| LOW | …ments/backend/hogql_queries/hogql_aggregation_utils.py | 58 | # Check if the expression is a function call | COMMENT |
| LOW | …backend/hogql_queries/experiment_mean_query_builder.py | 105 | # Check if this is a session property metric - use special CTE structure | STRING |
| LOW | …backend/hogql_queries/experiment_mean_query_builder.py | 196 | # Check if this is a session property metric - use different placeholders | STRING |
| LOW | …backend/hogql_queries/experiment_mean_query_builder.py | 343 | # Check if we need to apply winsorization (outlier handling) | STRING |
| LOW | …ts/experiments/backend/hogql_queries/error_handling.py | 95 | # Check if error is an instance of any of the registered types | COMMENT |
| LOW | …end/hogql_queries/experiment_exposures_query_runner.py | 317 | # Set limit to avoid being cut-off by the default 100 rows limit | COMMENT |
| LOW | …experiments/backend/hogql_queries/funnel_validation.py | 194 | # Check if there are any DW steps | COMMENT |
| LOW | products/experiments/backend/hogql_queries/utils.py | 561 | # Check if we can perform statistical analysis | COMMENT |
| LOW | products/experiments/backend/hogql_queries/utils.py | 664 | # Check if we can perform statistical analysis | COMMENT |
| LOW | …riments/backend/hogql_queries/funnels_statistics_v2.py | 183 | # Check if any variant has high enough probability | COMMENT |
| LOW | …xperiments/backend/hogql_queries/breakdown_injector.py | 124 | # Check if this is an unordered funnel (has exposures CTE with LEFT JOIN) | COMMENT |
| LOW | …ckend/hogql_queries/experiment_funnels_query_runner.py | 196 | # Check if "control" is present | COMMENT |
| LOW | …ckend/hogql_queries/experiment_funnels_query_runner.py | 203 | # Check if at least one of the test variants is present | COMMENT |
| LOW | …ments/backend/hogql_queries/experiment_query_runner.py | 281 | # Check if this is a data warehouse query | COMMENT |
| LOW | …ts/backend/hogql_queries/trends_statistics_v2_count.py | 148 | # Check if any variant has a high enough probability of being best | COMMENT |
| LOW | …ackend/hogql_queries/experiment_trends_query_runner.py | 387 | # Check if "control" is present | COMMENT |
| LOW | …ackend/hogql_queries/experiment_trends_query_runner.py | 393 | # Check if at least one of the test variants is present | COMMENT |
| LOW | …/experiments/backend/hogql_queries/base_query_utils.py | 127 | # Check if the source has a math type that indicates continuous values | COMMENT |
| LOW | …ckend/hogql_queries/trends_statistics_v2_continuous.py | 170 | # Check if any variant has a high enough probability of being best | COMMENT |
| LOW | products/signals/backend/emission/emit_signals.py | 32 | # Check if we care about this source type + schema | COMMENT |
| LOW⚡ | …ucts/product_analytics/backend/presentation/insight.py | 1203 | # Check if user has access to this insight when viewed in dashboard context | STRING |
| 231 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | products/batch_exports/backend/service.py | 56 | Align a timestamp to the batch export's interval boundary. For batch exports, intervals can have an offset from the | STRING |
| HIGH | …oducts/batch_exports/backend/temporal/batch_exports.py | 275 | Iterate over Arrow batch records for a batch export. TODO: this can be removed once HTTP batch exports are migrated | STRING |
| HIGH | …oducts/batch_exports/backend/temporal/batch_exports.py | 384 | Return the start and end of an export's data interval. Args: interval: The interval of the BatchExport asso | STRING |
| HIGH | …ackend/temporal/destinations/snowflake_batch_export.py | 746 | Wrap Snowflake connector's polling API in a coroutine. This enables asynchronous execution of queries to releas | STRING |
| HIGH | …ckend/temporal/destinations/databricks_batch_export.py | 513 | Execute a query asynchronously and poll for results. This is useful for long running queries as it means we don | STRING |
| HIGH | …backend/temporal/destinations/bigquery_batch_export.py | 712 | Execute a query and wait for it to complete. Args: query: The query to execute. start_q | STRING |
| HIGH | products/batch_exports/backend/api/batch_export.py | 92 | Validate and parse a date/datetime input as a proper dt.datetime. If the interval is daily or weekly, we expect the | STRING |
| HIGH | products/experiments/backend/facade/api.py | 20 | Create a new experiment. Transactional safety is provided by ExperimentService.create_experiment. Args: | STRING |
| HIGH | …ments/backend/hogql_queries/hogql_aggregation_utils.py | 32 | Extract the aggregation function, inner expression, parameters, and distinct flag from a HogQL expression. Arg | STRING |
| HIGH | …ments/backend/hogql_queries/hogql_aggregation_utils.py | 131 | Build an aggregation function call AST node. Args: aggregation_function: The aggregation function name | STRING |
| HIGH | …cts/experiments/backend/hogql_queries/metric_source.py | 50 | Factory method to create MetricSourceInfo from any source type. This provides a uniform interface for | STRING |
| HIGH | …riments/backend/hogql_queries/funnels_statistics_v2.py | 21 | Calculate the win probabilities for each variant in an experiment using Bayesian analysis for funnel conversion | STRING |
| HIGH | …riments/backend/hogql_queries/funnels_statistics_v2.py | 145 | Determine if the experiment results are statistically significant using Bayesian analysis for funnel conversion | STRING |
| HIGH | …riments/backend/hogql_queries/funnels_statistics_v2.py | 203 | Calculate Bayesian credible intervals for conversion rates of each variant. This function computes the 95% cre | STRING |
| HIGH | …ts/backend/hogql_queries/trends_statistics_v2_count.py | 26 | Calculate the win probabilities for each variant in an experiment using Bayesian analysis. This function compu | STRING |
| HIGH | …ts/backend/hogql_queries/trends_statistics_v2_count.py | 103 | Determines if experiment results are statistically significant. This function evaluates whether any variant ca | STRING |
| HIGH | …ts/backend/hogql_queries/trends_statistics_v2_count.py | 168 | Calculate Bayesian credible intervals for each variant's rate using a Gamma-Poisson model. Credible intervals | STRING |
| HIGH | …ts/backend/hogql_queries/trends_statistics_v2_count.py | 234 | Calculates expected loss in count/rate using Gamma-Poisson conjugate prior. This implementation uses a Bayesia | STRING |
| HIGH | …periments/backend/hogql_queries/funnel_step_builder.py | 104 | Build step columns as constants for DW subquery. Used in UNION ALL queries where each subquery represe | STRING |
| HIGH | …ckend/hogql_queries/trends_statistics_v2_continuous.py | 30 | Calculate the win probabilities for each variant in an experiment using Bayesian analysis for continuous metric | STRING |
| HIGH | …ckend/hogql_queries/trends_statistics_v2_continuous.py | 190 | Calculate Bayesian credible intervals for each variant's mean value using a log-normal model. This function co | STRING |
| HIGH | products/experiments/stats/shared/cuped.py | 161 | Apply CUPED variance reduction to experiment statistics. This is the main public API. It computes the optimal regre | STRING |
| HIGH | products/experiments/stats/frequentist/utils.py | 16 | Calculate point estimate for treatment vs control comparison. Args: treatment_stat: Treatment group st | STRING |
| HIGH | products/experiments/stats/frequentist/method.py | 69 | Run statistical test comparing treatment vs control. Args: treatment_stat: Treatment group | STRING |
| HIGH | products/experiments/stats/bayesian/utils.py | 23 | Calculate effect size and its variance for Bayesian analysis. Args: treatment_stat: Treatment group st | STRING |
| HIGH | products/experiments/stats/bayesian/method.py | 119 | Run Bayesian statistical test comparing treatment vs control. Args: treatment_stat: Treatm | STRING |
| HIGH | products/experiments/stats/bayesian/tests.py | 154 | Run Bayesian t-test comparing treatment vs control. Args: treatment_stat: Treatment group | STRING |
| HIGH | products/experiments/stats/bayesian/tests.py | 246 | Run Bayesian test for proportion data using Normal approximation. Args: treatment_stat: Tr | STRING |
| HIGH | products/cohorts/backend/models/cohort.py | 1145 | Remove a user from the cohort by their UUID. This operation is idempotent - it succeeds even if the pe | STRING |
| HIGH | …ckend/temporal/data_imports/sources/hubspot/helpers.py | 141 | Fetch data from HUBSPOT endpoint using a specified API key and yield the properties of each result. For paginat | STRING |
| HIGH | …ckend/temporal/data_imports/sources/hubspot/helpers.py | 241 | Retrieve property names for a given entity from the HubSpot API. Args: entity: The entity name for whi | STRING |
| HIGH | products/ai_observability/backend/translation/llm.py | 18 | Translate text to target language using the LLM gateway. Args: text: The text to translate tar | STRING |
| HIGH | products/ai_observability/backend/api/summarization.py | 257 | Extract entity ID and validated entity data based on summarize type. Args: summarize_type: 'trace' | STRING |
| HIGH | ee/hogai/artifacts/manager.py | 111 | Retrieve artifact content by ID from the database. Args: artifact_id: The artifact's short ID. | STRING |
| HIGH | ee/hogai/context/insight/query_executor.py | 169 | Run a query and format the results with detailed fallback information. Args: query: The qu | STRING |
| HIGH | ee/hogai/context/insight/query_executor.py | 265 | Run a query and format the results with detailed fallback information. Args: query: The qu | STRING |
| HIGH | ee/hogai/context/insight/query_executor.py | 312 | Execute a query and return the response dict. Args: query: The query object ex | STRING |
| HIGH | ee/hogai/context/insight/query_executor.py | 502 | Format query results using appropriate formatter based on query type. Args: query: The que | STRING |
| HIGH | ee/hogai/chat_agent/parallel_task_execution/nodes.py | 151 | Execute multiple tasks in parallel and yield results as they complete. This method implements true par | STRING |
| HIGH | ee/billing/queue/BillingConsumer.py | 87 | Decompress and parse message body based on content encoding. Args: raw_body: The raw messa | STRING |
| HIGH | common/migration_utils/__init__.py | 72 | Get the cache path for a migration file. Validates inputs before constructing path to prevent path traversal. | STRING |
| HIGH | common/migration_utils/__init__.py | 109 | Cache a migration file for later rollback. Creates the cache directory structure if needed and copies the migration | STRING |
| HIGH | posthog/email.py | 436 | Sanitizes properties that will be used in email templates to prevent HTML injection and to defang URL-shaped st | STRING |
| HIGH | posthog/temporal/proxy_service/cloudflare.py | 238 | Create a Custom Hostname in Cloudflare for SaaS. This creates a custom hostname with: - SSL certificate pr | STRING |
| HIGH | posthog/temporal/proxy_service/cloudflare.py | 276 | Get details of a Custom Hostname by ID. Args: hostname_id: The Cloudflare Custom Hostname ID Retu | STRING |
| HIGH | posthog/temporal/proxy_service/cloudflare.py | 300 | Find a Custom Hostname by domain name. Args: domain: The customer's domain (e.g., "analytics.customer. | STRING |
| HIGH | posthog/temporal/proxy_service/cloudflare.py | 339 | Delete a Custom Hostname. Args: hostname_id: The Cloudflare Custom Hostname ID Returns: T | STRING |
| HIGH | …mporal/ai_observability/trace_clustering/clustering.py | 39 | Determine optimal k using silhouette score and return the clustering results. Args: embeddings: Array | STRING |
| HIGH | posthog/clickhouse/client/migration_tools.py | 41 | Executes a SQL query on each node separately with specific options, handling distributed execution and node roles. | STRING |
| HIGH | posthog/dags/events_backfill_to_duckling.py | 955 | Parse a partition key into team_id and date. Args: key: Partition key in format "{team_id}_{date}" (e.g., " | STRING |
| HIGH | posthog/dags/events_backfill_to_duckling.py | 1097 | Check if a table exists in the DuckLake catalog. Args: conn: psycopg connection to the org's duckgres serve | STRING |
| HIGH | posthog/dags/person_property_reconciliation.py | 1779 | Query ClickHouse for distinct team_ids with property-setting events in the bug window. Args: bug_windo | STRING |
| HIGH | posthog/tasks/process_scheduled_changes.py | 86 | Compute the next scheduled run time based on recurrence interval. Uses relativedelta for reliable date arithme | STRING |
| HIGH | posthog/tasks/alerts/detectors/registry.py | 27 | Factory function to create detector from config. Args: config: Detector configuration dict with 'type' | STRING |
| HIGH | posthog/models/person/point_in_time_properties.py | 33 | Helper function to get person object and all distinct_ids for a person based on either distinct_id or person_id. | STRING |
| HIGH | posthog/models/person/point_in_time_properties.py | 112 | Build person properties at a specific point in time from ClickHouse events. Args: team_id: The team ID | STRING |
| HIGH | posthog/api/capture.py | 575 | capture_batch_internal submits multiple capture request payloads to capture-rs on behalf of a customer team. T | STRING |
| HIGH | posthog/api/capture.py | 759 | capture_internal submits a single-event capture request payload to the capture-rs backend service. This is the | STRING |
| HIGH | posthog/api/authentication.py | 728 | Handle passkey-based 2FA authentication. Args: request: The HTTP request user: | STRING |
| HIGH | posthog/api/authentication.py | 817 | Handle TOTP token or backup code 2FA authentication. Args: request: The HTTP request | STRING |
| 3 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/hogbox-preview/hogbox_preview/hogland_backend.py | 99 | CODE | |
| LOW | …ols/hogli-commands/hogli_commands/tests/test_devbox.py | 912 | CODE | |
| LOW | tools/hogli-commands/hogli_commands/devbox/coder.py | 1285 | CODE | |
| LOW | …pp/backend/tests/services/test_slack_app_home_stats.py | 88 | CODE | |
| LOW | products/metrics/backend/tests/_seeder.py | 87 | CODE | |
| LOW | products/metrics/backend/tests/_seeder.py | 176 | CODE | |
| LOW | …ducts/batch_exports/backend/temporal/temporary_file.py | 64 | CODE | |
| LOW | …ducts/batch_exports/backend/temporal/temporary_file.py | 643 | CODE | |
| LOW | products/batch_exports/backend/temporal/utils.py | 252 | CODE | |
| LOW | …nd/temporal/destinations/file_download_batch_export.py | 276 | CODE | |
| LOW | …backend/temporal/destinations/postgres_batch_export.py | 648 | CODE | |
| LOW | …ports/backend/temporal/destinations/s3_batch_export.py | 798 | CODE | |
| LOW | …backend/temporal/destinations/bigquery_batch_export.py | 1162 | CODE | |
| LOW | …/tests/temporal/destinations/base_destination_tests.py | 293 | CODE | |
| LOW | …xports/backend/tests/temporal/destinations/s3/utils.py | 175 | CODE | |
| LOW | …/tests/temporal/destinations/bigquery/test_activity.py | 56 | CODE | |
| LOW | …/backend/tests/temporal/destinations/bigquery/utils.py | 60 | CODE | |
| LOW | …s/temporal/destinations/snowflake/test_workflow_e2e.py | 46 | CODE | |
| LOW | …backend/tests/temporal/destinations/snowflake/utils.py | 368 | CODE | |
| LOW | …s/temporal/destinations/snowflake/test_activity_e2e.py | 49 | CODE | |
| LOW | …/tests/temporal/destinations/redshift/test_activity.py | 38 | CODE | |
| LOW | …s/temporal/destinations/redshift/test_copy_activity.py | 59 | CODE | |
| LOW | …/backend/tests/temporal/destinations/redshift/utils.py | 58 | CODE | |
| LOW | …/tests/temporal/destinations/postgres/test_activity.py | 38 | CODE | |
| LOW | …/batch_exports/backend/tests/temporal/utils/persons.py | 100 | CODE | |
| LOW | …tch_exports/backend/api/destination_tests/snowflake.py | 222 | CODE | |
| LOW | …tch_exports/backend/api/destination_tests/snowflake.py | 314 | CODE | |
| LOW | …ucts/batch_exports/backend/api/destination_tests/s3.py | 115 | CODE | |
| LOW | products/cdp/backend/api/test/test_hog_function.py | 1897 | CODE | |
| LOW | products/cdp/backend/api/test/test_hog_function.py | 1932 | CODE | |
| LOW | …feature_flags/backend/api/organization_feature_flag.py | 724 | CODE | |
| LOW | …oducts/mcp_analytics/backend/tests/test_tool_tables.py | 402 | CODE | |
| LOW | …oducts/mcp_analytics/backend/tests/test_tool_tables.py | 139 | CODE | |
| LOW | …oducts/mcp_analytics/backend/tests/test_tool_tables.py | 253 | CODE | |
| LOW | products/marketing_analytics/backend/test_max_tools.py | 82 | CODE | |
| LOW | products/marketing_analytics/backend/test_max_tools.py | 120 | CODE | |
| LOW | …d/hogql_queries/test_attribution_paths_query_runner.py | 101 | CODE | |
| LOW | …hogql_queries/test_marketing_retention_query_runner.py | 75 | CODE | |
| LOW | …arketing_analytics/backend/services/test_setup_plan.py | 39 | CODE | |
| LOW | …aged_warehouse/backend/temporal/compaction_workflow.py | 161 | CODE | |
| LOW | …hogql_queries/test/test_error_tracking_query_runner.py | 218 | CODE | |
| LOW | products/tasks/backend/models.py | 787 | CODE | |
| LOW | products/tasks/backend/models.py | 1048 | CODE | |
| LOW | products/tasks/backend/models.py | 1104 | CODE | |
| LOW | products/tasks/backend/temporal/client.py | 193 | CODE | |
| LOW | products/tasks/backend/temporal/client.py | 291 | CODE | |
| LOW | products/tasks/backend/temporal/process_task/utils.py | 597 | CODE | |
| LOW | …s/backend/temporal/process_task/tests/test_workflow.py | 88 | CODE | |
| LOW | …ocess_task/activities/tests/test_start_agent_server.py | 51 | CODE | |
| LOW | products/tasks/backend/tests/test_webhooks.py | 1930 | CODE | |
| LOW | products/tasks/backend/logic/repo_selection/agent.py | 402 | CODE | |
| LOW | …kend/logic/services/custom_prompt_multi_turn_runner.py | 53 | CODE | |
| LOW | …kend/logic/services/custom_prompt_multi_turn_runner.py | 148 | CODE | |
| LOW | …asks/backend/logic/services/custom_prompt_internals.py | 206 | CODE | |
| LOW | …ducts/tasks/backend/logic/services/living_artifacts.py | 100 | CODE | |
| LOW | …ducts/tasks/backend/logic/services/living_artifacts.py | 166 | CODE | |
| LOW | …/tasks/backend/logic/services/agent_server_launcher.py | 78 | CODE | |
| LOW | …/tasks/backend/logic/services/agent_server_launcher.py | 216 | CODE | |
| LOW | products/tasks/backend/logic/services/workflow_tasks.py | 109 | CODE | |
| LOW | products/tasks/backend/logic/services/sandbox.py | 256 | CODE | |
| 181 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | products/signals/backend/test/test_scout_harness_api.py | 890 | # processing must not receive AI-generated records into its project. | COMMENT |
| HIGH | products/workflows/mcp/apps/EmailTemplateView.test.tsx | 46 | // AI-generated html must not be able to run scripts. | COMMENT |
| HIGH | products/exports/backend/models/subscription.py | 601 | # AI-generated summary sent in the delivery, when summary_enabled is on for the subscription. | COMMENT |
| HIGH | …ports/sources/adobe_commerce/canonical_descriptions.py | 193 | "description": "Coupon codes attached to cart price rules, including auto-generated codes and their usage limits | CODE |
| HIGH | …backend/temporal/data_imports/sources/gong/settings.py | 105 | # participants and CRM links. Kept as its own default-off table because a call's AI-generated | COMMENT |
| HIGH | products/actions/backend/models/action.py | 58 | summary = models.TextField(blank=True, null=True, help_text="A summary of the action, generated by AI") | CODE |
| HIGH⚡ | products/surveys/backend/models.py | 274 | # AI-generated headline summary | STRING |
| HIGH⚡ | products/surveys/backend/models.py | 278 | # AI-generated per-question summaries | STRING |
| HIGH⚡ | products/surveys/backend/models.py | 285 | # Used as the "original" label in the editor and as the source language for AI-generated translations. | STRING |
| HIGH | products/surveys/backend/api/survey.py | 253 | help_text="Editor field paths generated by AI and safe to highlight as draft content.", | CODE |
| HIGH | frontend/src/scenes/insights/insightDataLogic.tsx | 637 | // AI-generated link) have no default to compare against, so treat as changed | COMMENT |
| HIGH | frontend/src/scenes/feature-flags/flagSelectionLogic.ts | 158 | // Copied targets are inferred as requested-minus-failed (robust to success items | COMMENT |
| HIGH | …end/src/layout/scenes/components/SceneTitleSection.tsx | 458 | // external update (loading a resource, an AI-generated name) apart from an echo of | COMMENT |
| HIGH | …rc/layout/scenes/components/SceneTitleSection.test.tsx | 32 | // an AI-generated name) must still replace the field's value. | COMMENT |
| HIGH | …c/lib/components/HedgehogMode/HedgehogMode.stories.tsx | 20 | // NOTE: 100% generated by ChatGPT for fun! | COMMENT |
| HIGH | ee/api/test/test_subscription.py | 2145 | # row so they fall below the read level required to see AI-generated report content. | COMMENT |
| HIGH | .agents/skills/survey-sdk-audit/SKILL.md | 284 | _This issue was generated by Claude using the `/survey-sdk-audit` skill._ | CODE |
| HIGH⚡ | …_recordings/sql/session_replay_event_migrations_sql.py | 356 | # MIGRATION: Add AI-generated columns for session tagging | STRING |
| HIGH | posthog/hogql_queries/query_runner.py | 2113 | # current state. Async-only and cache-only modes are left as requested — they explicitly opt | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | products/feature_flags/backend/flag_analytics.py | 46 | # :NOTE: When making changes here, make sure you run test_no_interference_between_different_types_of_new_incoming_increm | COMMENT |
| LOW | products/feature_flags/backend/models/feature_flag.py | 144 | # When adding new fields, make sure to update organization_feature_flags.py::copy_flags | COMMENT |
| MEDIUM | …backend/templates/announce_a_new_feature_template.json | 771 | "html": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional //EN\" \"http://www.w3.o | CODE |
| MEDIUM | products/revenue_analytics/dags/exchange_rate.py | 20 | # NOTE: For local development, you can add this key to a `.env` file in the root of the project | COMMENT |
| LOW | products/notebooks/backend/models.py | 88 | # When adding a new foreign key, make sure to add the foreign key field and append field name | COMMENT |
| LOW | …/backend/lazy_computation/lazy_computation_executor.py | 725 | # Don't forget to add the last range | COMMENT |
| LOW | …src/scenes/settings/environment/replayTriggersLogic.ts | 521 | ${sanitizedUrl}, ${sanitizedUrl}/, ${sanitizedUrl}/page, etc. Don't forget to include https:// a | CODE |
| LOW | …src/scenes/settings/environment/replayTriggersLogic.ts | 538 | ${sanitizedUrl}, ${sanitizedUrl}/, ${sanitizedUrl}/page, etc. Don't forget to include https:// a | CODE |
| MEDIUM | …ntend/src/scenes/surveys/SurveyWidgetCustomization.tsx | 74 | info="Enter a class or ID selector for the feedback button, like .feedback-button or #fe | CODE |
| LOW | …omponents/IngestionControls/triggers/urlConfigLogic.ts | 224 | ${sanitizedUrl}, ${sanitizedUrl}/, ${sanitizedUrl}/page, etc. Don't forget to include https:// a | CODE |
| MEDIUM | ee/hogai/core/runner.py | 346 | content="I'm unable to process this request. The conversation may be too long. Please start a ne | CODE |
| MEDIUM | ee/hogai/core/runner.py | 370 | content="I'm unable to respond right now due to a temporary service issue. Please try again late | CODE |
| MEDIUM | ee/hogai/core/runner.py | 394 | content="I'm unable to respond right now due to a temporary service issue. Please try again late | CODE |
| MEDIUM | ee/hogai/core/runner.py | 418 | content="I'm unable to respond right now. Please try again later.", | CODE |
| MEDIUM | ee/hogai/core/test/test_runner.py | 125 | "I'm unable to process this request. The conversation may be too long. Please start a new conversation." | CODE |
| MEDIUM | ee/hogai/core/test/test_runner.py | 219 | "I'm unable to respond right now due to a temporary service issue. Please try again later.", | CODE |
| MEDIUM | ee/hogai/core/test/test_runner.py | 281 | "I'm unable to respond right now due to a temporary service issue. Please try again later.", | CODE |
| MEDIUM | ee/hogai/core/test/test_runner.py | 342 | "I'm unable to respond right now. Please try again later.", | CODE |
| MEDIUM | .dagster_home/workspace.yaml | 4 | ## Most dags are not loaded in local dev, but you can add things if you believe they belong here. | COMMENT |
| LOW | posthog/urls.py | 689 | # NOTE: When adding paths here that should be public make sure to update ALWAYS_ALLOWED_ENDPOINTS in middleware.py | COMMENT |
| LOW | posthog/models/tagged_item.py | 39 | # When adding a new taggeditem-model relationship, make sure to add the foreign key field and append field name to | COMMENT |
| MEDIUM | posthog/models/exchange_rate/currencies.py | 8 | # If you need a currency that's not in this list, you can add it to the list by | COMMENT |
| LOW | …hogql/transforms/preaggregated_table_transformation.py | 429 | # Some of these could be supported in the future, if you add them, make sure you add some tests! | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …/stamphog/packages/pr-approval-agent/test_review_pr.py | 570 | CODE | |
| MEDIUM | …eling/backend/test/test_preview_freshness_schedules.py | 39 | CODE | |
| MEDIUM | …/data_modeling/backend/test/test_schedule_reconcile.py | 155 | CODE | |
| MEDIUM | …/data_modeling/backend/test/test_schedule_reconcile.py | 340 | CODE | |
| MEDIUM | …/data_modeling/backend/test/test_schedule_reconcile.py | 390 | CODE | |
| MEDIUM | …modeling/backend/test/test_schedule_materialization.py | 29 | CODE | |
| MEDIUM | …deling/backend/tests/test_managed_viewset_providers.py | 41 | CODE | |
| MEDIUM | …orts/sources/common/rest_source/tests/test_resource.py | 14 | CODE | |
| MEDIUM | …_imports/sources/sourcegraph/tests/test_sourcegraph.py | 365 | CODE | |
| MEDIUM | ee/hogai/core/test/test_agent_executor.py | 530 | CODE | |
| MEDIUM | ee/hogai/core/test/test_runner.py | 29 | CODE | |
| MEDIUM | ee/hogai/core/test/test_runner.py | 763 | CODE | |
| MEDIUM | ee/hogai/stream/test/test_redis_stream.py | 409 | CODE | |
| MEDIUM | …thog/temporal/tests/data_modeling/test_run_workflow.py | 1788 | CODE | |
| MEDIUM | …thog/temporal/tests/data_modeling/test_run_workflow.py | 1851 | CODE | |
| MEDIUM | …ests/data_modeling/test_materialize_view_activities.py | 1659 | CODE | |
| MEDIUM | services/llm-gateway/tests/test_streaming_errors.py | 232 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …end/temporal/data_imports/sources/mailerlite/source.py | 127 | -H "Authorization: Bearer YOUR_API_KEY" \\ | CODE |
| HIGH | rust/capture-logs/README.md | 95 | -H "Authorization: Bearer your-api-key" \ | CODE |
| HIGH | rust/capture-logs/README.md | 106 | -H "Authorization: Bearer your-api-key" \ | CODE |
| HIGH | docs/onboarding/product-analytics/helicone.tsx | 39 | api_key="your-api-key-here", # Replace with your OpenAI API key | CODE |
| HIGH | docs/onboarding/ai-observability/vercel-ai-gateway.tsx | 11 | apiKeyPlaceholder: '<your_api_key>', | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | nodejs/src/logs/sampling-seed-services-curl.sh | 13 | # Usage: | COMMENT |
| LOW | tools/phrocs/install.sh | 4 | # Usage: | COMMENT |
| LOW | products/desktop/scripts/clean-posthog-code-macos.sh | 5 | # Usage: | COMMENT |
| LOW | products/desktop/packages/agent/e2e/run-e2e.sh | 11 | # Usage: | COMMENT |
| LOW | …ktop/apps/code/scripts/dev-update/run-from-ci-forge.sh | 12 | # Usage: | COMMENT |
| LOW | …ts/desktop/apps/code/scripts/dev-update/run-from-ci.sh | 11 | # Usage: | COMMENT |
| LOW⚡ | products/desktop/apps/mobile/scripts/send-test-push.sh | 3 | # Usage: | COMMENT |
| LOW | bin/send-dev-metrics.sh | 5 | # Usage: | COMMENT |
| LOW | livestream/docker-compose.integration.yml | 4 | # Usage: | COMMENT |
| LOW | common/storybook/update-storybook-timings.sh | 6 | # Usage: | COMMENT |
| LOW | .github/workflows/rust-smoke-test-build.yml | 7 | # Usage: | COMMENT |
| LOW | …b/scripts/verify-playwright-new-tests-and-snapshots.sh | 7 | # Usage: | COMMENT |
| LOW | .github/scripts/verify-storybook-new-stories.sh | 7 | # Usage: | COMMENT |
| LOW | .github/scripts/compare-ci-runners.py | 10 | # Usage: | COMMENT |
| LOW | posthog/management/commands/js_snippet_version.py | 25 | # Usage: | COMMENT |
| LOW | posthog/models/scoping/__init__.py | 14 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …/hogli-commands/hogli_commands/tests/test_crossings.py | 498 | module = "BOT_DEFINITIONS = [...]\nLIMIT: int = 5\n_private = 1\n\nclass Runner: ...\n\ndef helper(): ...\n" | STRING |
| LOW | …oducts/tasks/backend/logic/services/hogland_sandbox.py | 414 | def execute_task( | CODE |
| LOW | products/tasks/backend/logic/services/sandbox.py | 500 | def execute_task( | CODE |
| LOW | products/tasks/backend/logic/services/modal_sandbox.py | 1182 | def execute_task( | CODE |
| LOW | products/tasks/backend/logic/services/docker_sandbox.py | 834 | def execute_task( | CODE |
| LOW | products/tasks/backend/facade/api.py | 6627 | def run_task( | CODE |
| LOW | …/desktop/packages/enricher/src/import-resolver.test.ts | 45 | "def helper():\n pass\n", | CODE |
| LOW | frontend/src/lib/ui/Collapsible/Collapsible.stories.tsx | 87 | {`function handleRequest(req, res) { | CODE |
| LOW | ee/hogai/chat_agent/parallel_task_execution/nodes.py | 185 | async def execute_task(callable_func=task_callable, input_data=input_dict): | CODE |
| LOW⚡ | .semgrep/rules/security/data-imports-http-transport.py | 124 | def do_something() -> None: | CODE |
| LOW⚡ | .semgrep/rules/security/data-imports-grpc-transport.py | 88 | def do_something() -> None: | CODE |
| LOW | common/storybook/.storybook/public/mockServiceWorker.js | 121 | async function handleRequest(event, requestId, requestInterceptedAt) { | CODE |
| LOW | posthog/clickhouse/client/test/test_tracing.py | 19 | def test_function( | CODE |
| LOW | posthog/clickhouse/client/test/test_tracing.py | 74 | def test_function( | CODE |
| LOW | posthog/clickhouse/client/test/test_tracing.py | 104 | def test_function( | CODE |
| LOW | posthog/clickhouse/client/test/test_tracing.py | 134 | def test_function( | CODE |
| LOW | posthog/clickhouse/client/test/test_tracing.py | 177 | def test_function( | CODE |
| LOW | posthog/clickhouse/client/test/test_tracing.py | 207 | def test_function( | CODE |
| LOW | posthog/clickhouse/client/test/test_tracing.py | 236 | def test_function( | CODE |
| LOW | posthog/clickhouse/client/test/test_tracing.py | 266 | def test_function( | CODE |
| LOW | posthog/clickhouse/client/test/test_tracing.py | 288 | def test_function( | CODE |
| LOW | posthog/clickhouse/client/test/test_tracing.py | 310 | def test_function( | CODE |
| LOW | posthog/slo/context.py | 18 | def helper() -> None: | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …nd/hogql_queries/test/test_web_stats_pre_aggregated.py | 420 | # Note: PAGE and VIEWPORT breakdowns are excluded. I will add them back in later. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ns/components/session-update/ToolCallBlock.stories.tsx | 411 | text: `src/utils/helpers.ts:15: // TODO: Add error handling | CODE |
| LOW | …ts/access_control/backend/tests/test_access_control.py | 1497 | # TODO: Add tests to check that a dashboard can't be edited if the user doesn't have access | COMMENT |
| LOW⚡ | ee/tasks/subscriptions/slack_subscriptions.py | 135 | # TODO: Write error to subscription... | COMMENT |
| LOW | rust/batch-import-worker/src/parse/content/amplitude.rs | 1361 | // TODO: Add test for cache failure scenarios once we have better error handling | COMMENT |
| LOW | …es/insights/funnels/funnel_correlation_query_runner.py | 1003 | # TODO: implement or remove | STRING |