feat(data-warehouse): scaffold 3 newly-requested sources - #68376
Conversation
|
Hey @Gilbert09! 👋 It looks like your git author email on this PR isn't your
You can fix it for this repo with: git config user.email "you@posthog.com"Or set it globally with |
|
Reviews (1): Last reviewed commit: "feat(data-warehouse): scaffold 3 newly-r..." | Re-trigger Greptile |
Migration SQL ChangesHey 👋, we've detected some migrations on this PR. Here's the SQL output for each migration, make sure they make sense:
|
🔍 Migration Risk AnalysisWe've analyzed your migrations for potential risks. Summary: 0 Safe | 1 Needs Review | 0 Blocked
|
🤖 CI report
|
| Root | Eager (shipped) | Δ vs base | Budget |
|---|---|---|---|
entry (logged-out pages, app bootstrap)src/index.tsx |
1.20 MiB · 22 files | no change | ███░░░░░░░ 27.9% of 4.29 MiB |
🟡 authenticated shell (every logged-in page)src/scenes/AuthenticatedShell.tsx |
14.02 MiB · 2,996 files | 🔺 +33 B (+0.0%) | ██████████ 108.9% of 12.87 MiB |
🟢 node_modules/monaco-editor/ stays out of src/index.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/index.tsx
🟢 node_modules/monaco-editor/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/scenes/AuthenticatedShell.tsx
Largest files eagerly shipped from src/index.tsx
| Size | File |
|---|---|
| 126.8 KiB | ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js |
| 24.6 KiB | ../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js |
| 6.3 KiB | ../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.production.min.js |
| 4.5 KiB | ../node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/process.js |
| 3.9 KiB | ../node_modules/.pnpm/scheduler@0.23.2/node_modules/scheduler/cjs/scheduler.production.min.js |
| 1.4 KiB | ../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js |
| 1.3 KiB | src/RootErrorBoundary.tsx |
| 912 B | ../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js |
| 789 B | src/scenes/ChunkLoadErrorBoundary.tsx |
| 668 B | src/index.tsx |
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx
| Size | File |
|---|---|
| 980.5 KiB | ../node_modules/.pnpm/@posthog+brand@0.6.0_react@18.3.1/node_modules/@posthog/brand/dist/generated/hoggies/svg/code-bubble.mjs |
| 458.3 KiB | ../node_modules/.pnpm/@posthog+brand@0.6.0_react@18.3.1/node_modules/@posthog/brand/dist/generated/hoggies/svg/driving-hogzilla.mjs |
| 345.4 KiB | ../node_modules/.pnpm/@posthog+brand@0.6.0_react@18.3.1/node_modules/@posthog/brand/dist/generated/hoggies/svg/wizard-hog.mjs |
| 302.9 KiB | ../node_modules/.pnpm/@posthog+brand@0.6.0_react@18.3.1/node_modules/@posthog/brand/dist/generated/hoggies/svg/coffee-run.mjs |
| 277.1 KiB | ../node_modules/.pnpm/posthog-js@1.398.2/node_modules/posthog-js/dist/rrweb.js |
| 266.9 KiB | ../node_modules/.pnpm/@posthog+icons@0.37.4_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js |
| 253.2 KiB | ../node_modules/.pnpm/@posthog+brand@0.6.0_react@18.3.1/node_modules/@posthog/brand/dist/generated/hoggies/svg/chart-hog.mjs |
| 239.2 KiB | ../node_modules/.pnpm/@posthog+brand@0.6.0_react@18.3.1/node_modules/@posthog/brand/dist/generated/hoggies/svg/x-ray.mjs |
| 238.0 KiB | ../node_modules/.pnpm/@posthog+brand@0.6.0_react@18.3.1/node_modules/@posthog/brand/dist/generated/hoggies/svg/workflows.mjs |
| 224.6 KiB | src/taxonomy/core-filter-definitions-by-group.json |
Posted automatically by check-eager-graph · sizes are eager output bytes (shipped, post-tree-shake) from the esbuild metafile · part of #32479
⚠️ Dist folder size — 🔺 +54.0 KiB (+0.0%)
Total size of the built frontend/dist folder (all assets), compared against the base branch.
Total: 1484.95 MiB · 🔺 +54.0 KiB (+0.0%)
⚠️ Playwright — 11 failed, 5 flaky
🎭 Playwright report · View test results →
❌ 11 failed tests:
- create trends insight via API and snapshot (chromium)
- See recordings action (chromium)
- password-protected insight sharing (chromium)
- CSS loads correctly on shared insight page (chromium)
- CSS fallback works when hashed CSS returns error (chromium)
- renders successfully in a logged-out browser context (chromium)
- renders successfully in a logged-out browser context (chromium)
- renders successfully in a logged-out browser context (chromium)
- preserves saved insight editing state across browser back and forward (chromium)
- plays a multi-source recording, pauses, seeks, scrubs, and reaches the end (chromium)
- creates, launches, edits and deletes new survey (chromium)
- Editing an insight updates the dashboard tile (chromium)
- Add insight to new dashboard and view it there (chromium)
- creates a Postgres direct source and queries it successfully (chromium)
- Toolbar loads (chromium)
- Toolbar item in sidebar has launch options (chromium)
These issues are not necessarily caused by your changes.
Annoyed by this section? Help fix flakies and failures and it will go green!
⚠️ Backend snapshots — 1 updated (1 modified, 0 added, 0 deleted)
Query snapshots: Backend query snapshots updated
Changes: 1 snapshots (1 modified, 0 added, 0 deleted)
What this means:
- Query snapshots have been automatically updated to match current output
- These changes reflect modifications to database queries or schema
Next steps:
- Review the query changes to ensure they're intentional
- If unexpected, investigate what caused the query to change
|
⏭️ Skipped snapshot commit because branch advanced to The new commit will trigger its own snapshot update workflow. If you expected this workflow to succeed: This can happen due to concurrent commits. To get a fresh workflow run, either:
|
|
👋 Visual changes detected for this PR. Review and approve in PostHog Visual Review If these changes are unexpected, they may be caused by a flaky test or a broken snapshot on master. Don't approve — rerun the job or wait for a fix. |
Frontend Tests (shard 1) — blocked on a known master-wide jest hang, not this PR
The fix is in flight and approved: #68608 (root cause) and #68618 (excludes the flaky test). Once either lands on master I'll merge master in; shard 1 then passes (~5.5 min, as it does on branches that already carry the fix). No action needed on this PR's own code. |
f6a8084 to
cbcbde0
Compare
🦔 Hogbox preview · ✅ ready▶ Open the preview
commit |
Status update (automated PR-tidy pass)Everything within scope of an automated fix is done — the PR is approved, conflict-free, and up to date with What was fixed
Why the Visual Review gate is red (not this PR)This PR's three new sources are scaffolded as
Different charts flake each run, none touch the data-warehouse surface, and each has a long history of flipping What's needed to green itA maintainer with Visual Review access needs to finalize / tolerate the latest run, or the flaky snapshots need re-baselining on
I deliberately did not auto-approve: the Visual Review tooling (and the bot comment above) reserve the finalize/approve action for a human when the diffs are suspected master flakes, precisely so an agent doesn't rubber-stamp a shared baseline. Handing that one decision back. |
Scaffold stub connectors for three data-warehouse sources requested via the posthog.com source survey and the in-product "Notify me" button: Peec AI (analytics), Healthchecks.io (engineering & monitoring), and impact.com (advertising). Each ships as an unreleased stub (unreleasedSource=True), so it stays hidden from users. No sync logic yet. A single Django migration (0058) adds all three enum values in one linear step off 0057. Skipped from the same survey batch: "aws" (a cloud platform, not a single connector, and no Logo.dev brand) and other non-source entries. Generated-By: PostHog Code Task-Id: b05e044c-3271-4a39-90f2-8e8975ed5c48
makemigrations emitted a blank line after the class declaration that ruff format rejects. Reformat so `ruff format --check` passes. Generated-By: PostHog Code Task-Id: b05e044c-3271-4a39-90f2-8e8975ed5c48
Match the healthchecks and impact stubs, which both set keywords. Adds alternate spellings so catalog search surfaces the source. Generated-By: PostHog Code Task-Id: b05e044c-3271-4a39-90f2-8e8975ed5c48
Add "AI brand visibility" and "AI search analytics" keywords so the peec.ai source stub surfaces for those catalog searches, matching the coverage of the other new stubs. Generated-By: PostHog Code Task-Id: 4e0933fc-4c6a-41f4-926d-66e597536231
Source keywords must be lowercase (enforced by test_source_keywords_are_a_list_of_strings). Lowercase the two newly added phrase keywords. Generated-By: PostHog Code Task-Id: 4e0933fc-4c6a-41f4-926d-66e597536231
0fe8e1a to
b24c1a0
Compare
Problem
Users keep asking for warehouse connectors we don't have yet. On 2026-07-03 the posthog.com "which source do you want?" survey and the in-product "Notify me" button surfaced a fresh batch. This PR scaffolds the legitimate ones so the work to build them out can start from a registered stub.
Changes
Scaffolded three new sources as unreleased stubs (hidden from users via
unreleasedSource=True, no sync logic yet):peec_ai)healthchecks)impact)Each follows the standard scaffold: enum value in
ExternalDataSourceType, entry inexternalDataSources(schema-general.ts, regenerated intoschema_enums.py), asource.pystub, registration in_load_all.py, a generated config class, an icon infrontend/public/services/, and aSOURCES.mdscaffolded-list entry.All three enum additions land in a single migration (
0058) that chains linearly off0057, so there's exactly one leaf and no branching.Skipped from the same batch:
aws— a cloud platform, not a single connector (we already haveamazon_s3,aws_cloudtrail,amazon_ads, etc.), and no Logo.dev brand entry.How did you test this code?
I (Claude) verified the scaffolding without a live database (this environment has no Postgres):
pnpm run schema:buildandgenerate:source-configsto regenerateschema_enums.py,schema.json, andgenerated_configs.py; confirmed each diff contains only the three new entries.makemigrations --check --dry-runreports no pending changes and--merge --dry-runfinds no conflicts, confirming0058is a single linear leaf.unreleasedSource=True.test_source_categoriesparametrized tests for the three sources (6 passed) covering valid category and lowercase-keyword rules.ruff check/ruff formatclean over the touched files.I did not run a real sync or bring up the app - these are stubs with no transport logic.
Automatic notifications
🤖 Agent context
Autonomy: Human-driven (agent-assisted)
I (Claude) scaffolded these following the
/implementing-warehouse-sourcesskill, and invoked/django-migrationsbefore generating the migration. Icons were pulled from Logo.dev.Decisions worth flagging for review:
awsas too generic to be a single connector.unreleasedSource=Trueon every source on purpose - these are stubs, not finished connectors.