Skip to content

fix(self-driving): enable Logs and Endpoints signal sources in setup - #412

Merged
andrewm4894 merged 2 commits into
mainfrom
posthog-self-driving/fixself-driving-enable-logs-and-3a11ab
Sep 25, 2026
Merged

andrewm4894 merged 2 commits into
mainfrom
posthog-self-driving/fixself-driving-enable-logs-and-3a11ab

Conversation

@posthog

@posthog posthog Bot commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

Problem

  • A team that uses Logs or Endpoints gets a Self-driving setup that silently drops those findings: they never reach the Inbox, and nothing in the run says so.
  • emit_signal returns before it creates a signal when the (source_product, source_type) row is missing or disabled. Step 4 told the wizard not to create these rows, so every one of those emissions was dropped.
  • The guide's claim was once true and is now stale. PostHog emits all three pairs today.
Pair Emitter Step 4 before
logs / alert_state_change alert_signal_emitter.py — alert firing, or auto-disabled as broken listed as "no v1 responder"
endpoints / endpoint_execution_failed logic/execution.py not listed at all
endpoints / endpoint_breakdown_limit_exceeded logic/strategies.py not listed at all

Origin

  • Scout: a custom scout
  • First signal: 2026-09-25
  • Inbox report: open
  • Task started by: auto-start, after the report was rated P2 and ready to fix

Changes

  • Step 4 enables the rows, gated on product use. Two new rows in the Enable table. The existing write recipe is unchanged, so a disabled row is still flipped on with inbox-source-configs-partial-update and an already-enabled row is left alone.
  • Step 2 gains an endpoints-get-all probe. Neither the repo nor scout-project-profile-get reports the Endpoints product, so the probe is the only evidence step 4 can gate on. Logs already had a profile question; it now says step 4 consumes the answer.
  • The "Nothing to create here" row is narrowed to evaluation. That type genuinely has no emitter left — the taxonomy keeps the value only so older signals still resolve to a label.

Risk

Note

Both new rows are conditional, so a project that uses neither product sees no change. An enabled row with no matching product stays idle and costs nothing, so the failure mode of a false positive is a dead switch in the Inbox settings, not noise.

Verification

  • npm test — 215 tests pass.
  • npm run build — the packaged self-driving-setup.zip carries both new rows.
  • Emitters read at PostHog/posthog master. products/logs/backend/test/test_alert_signal_emitter.py asserts the logs / alert_state_change pair. The PostHog tests were not run here: this sandbox has no monorepo checkout, and nothing in PostHog changes.
Agent context

Two adjacent gaps in the same table, verified but deliberately not changed, because they are outside what this report asked for:

  • llm_analytics is still described as internal with no user-facing responder. eval_reports/emit_signal.py emits llm_analytics / evaluation_report, and the Slack onboarding flow enables that pair by default.
  • analytics / anomaly_investigation has an emitter in anomaly_investigation/workflow.py and is missing from step 4 entirely. It is also an onboarding default. Enabling it applies to every project, so it deserves its own decision.

Created with PostHog Desktop from this inbox report.

🤖 Generated with Claude Code

Step 4 said `logs` / `alert_state_change` has no responder and never
mentioned Endpoints. PostHog emits that pair for firing and auto-disabled
Logs alerts, and emits `endpoints` / `endpoint_execution_failed` plus
`endpoints` / `endpoint_breakdown_limit_exceeded`. `emit_signal` drops a
signal when its source row is not enabled, so those findings never reached
the Inbox.

Step 4 now enables the three rows when the project uses the matching
product. Step 2 gains an `endpoints-get-all` probe, because neither the
repo nor the project profile reports that product.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Generated-By: PostHog Desktop
Task-Id: 697c7c73-18b5-4946-a3e8-e956d023acc3
@github-actions

Copy link
Copy Markdown

🧙 Wizard CI

Run the Wizard CI and test your changes against wizard-workbench example apps by replying with a GitHub comment using one of the following commands:

Test all apps:

  • /wizard-ci all

Test all apps in a directory:

  • /wizard-ci ai-observability
  • /wizard-ci basic-integration
  • /wizard-ci feature-flags
  • /wizard-ci mcp-analytics
  • /wizard-ci replay-vision
  • /wizard-ci revenue
  • /wizard-ci self-driving
  • /wizard-ci warehouse
  • /wizard-ci warehouse-seeded

Test an individual app:

  • /wizard-ci ai-observability/anthropic
  • /wizard-ci ai-observability/google-adk
  • /wizard-ci ai-observability/groq
Show more apps
  • /wizard-ci ai-observability/manual-capture
  • /wizard-ci ai-observability/openai
  • /wizard-ci ai-observability/openai-agents
  • /wizard-ci ai-observability/opentelemetry
  • /wizard-ci ai-observability/vercel-ai
  • /wizard-ci basic-integration/android
  • /wizard-ci basic-integration/angular
  • /wizard-ci basic-integration/astro
  • /wizard-ci basic-integration/django
  • /wizard-ci basic-integration/fastapi
  • /wizard-ci basic-integration/flask
  • /wizard-ci basic-integration/flutter
  • /wizard-ci basic-integration/javascript-node
  • /wizard-ci basic-integration/javascript-web
  • /wizard-ci basic-integration/laravel
  • /wizard-ci basic-integration/next-js
  • /wizard-ci basic-integration/nuxt
  • /wizard-ci basic-integration/python
  • /wizard-ci basic-integration/rails
  • /wizard-ci basic-integration/react-native
  • /wizard-ci basic-integration/react-router
  • /wizard-ci basic-integration/sveltekit
  • /wizard-ci basic-integration/swift
  • /wizard-ci basic-integration/tanstack-router
  • /wizard-ci basic-integration/tanstack-start
  • /wizard-ci basic-integration/vue
  • /wizard-ci feature-flags/django
  • /wizard-ci feature-flags/next-js
  • /wizard-ci mcp-analytics/custom-dispatcher
  • /wizard-ci mcp-analytics/typescript-sdk
  • /wizard-ci replay-vision/javascript-node
  • /wizard-ci replay-vision/next-js
  • /wizard-ci replay-vision/react-vite
  • /wizard-ci revenue/stripe
  • /wizard-ci self-driving/astro
  • /wizard-ci self-driving/fastapi
  • /wizard-ci self-driving/nuxt
  • /wizard-ci self-driving/react-router
  • /wizard-ci self-driving/sveltekit
  • /wizard-ci warehouse/monorepo-env
  • /wizard-ci warehouse/multi-source-next
  • /wizard-ci warehouse/stripe-node
  • /wizard-ci warehouse/zero-source
  • /wizard-ci warehouse-seeded/next-stripe
  • /wizard-ci warehouse-seeded/next-stripe-declined

Test against a wizard branch:

  • /wizard-ci all wizard:my-branch

Add wizard:<branch> to any command above to pin the wizard branch. It defaults to main.

Results will be posted here when complete.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Generated-By: PostHog Desktop
Task-Id: 697c7c73-18b5-4946-a3e8-e956d023acc3
@andrewm4894
andrewm4894 marked this pull request as ready for review September 25, 2026 15:39
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 25, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-25T15:44:36.474844Z 52b65f6 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@andrewm4894
andrewm4894 merged commit cef60c1 into main Sep 25, 2026
16 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 52b65f606a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

| Scout gate | **On by default — never create a row.** The server lets scout findings into the inbox with no config row; a `signals_scout` / `cross_source_issue` row only exists to opt OUT. If you find one with `enabled: false` (an earlier opt-out), flip it back on with `inbox-source-configs-partial-update`; with no row, do nothing and record "on by default" | `signals_scout` / `cross_source_issue` — existing disabled row only |
| Health checks | **Always** — instrumentation issues (missing events, proxy gaps, outdated SDKs) are always actionable and a good thing for the agent to fix | `health_checks` / `health_issue` |
| Error tracking | **Enable by default**, even with no current signal — teams adopt error tracking sooner or later, and with no errors there are no findings and no cost. Evidence (report, exception autocapture ON, or error issues from the step-2 probe) only raises confidence; its absence is **not** a reason to skip | **All three rows**: `error_tracking` / `issue_created`, `error_tracking` / `issue_reopened`, `error_tracking` / `issue_spiking` — the product UI treats them as one switch |
| Logs | **Only when the project uses Logs**, per your step-2 checklist. The pair carries alerts that fire and alerts the server auto-disables, so a project with no logs never produces one | `logs` / `alert_state_change` |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Remove Logs from the scout route after enabling its source

When Logs ranks among a project's most-used products, this enables the native responder while references/6-scouts.md still treats signals-scout-logs as an eligible specialist and excludes only error tracking and session replay from scout routing. A normal setup can therefore enable both recurring Logs pipelines, contrary to the skill's “one surface, one route” invariant, causing duplicate coverage and unnecessary LLM runs; propagate the new native route to the route map and force the Logs scout off.

Useful? React with 👍 / 👎.

- **Surveys**: does the code or profile show PostHog surveys in use?
- **AI/LLM**: are there `$ai_*` events, an LLM SDK, or LLM analytics in the profile?
- **Logs**: is the PostHog logs product in use (per the profile)?
- **Logs**: is the PostHog logs product in use (per the profile)? Step 4 needs the answer.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Use the setup report as Logs evidence

On a newly integrated project where Logs was successfully configured, context/skills/integration-v2/report/description.md explicitly requires that outcome in posthog-setup-report.md, but step 1 limits report-derived facts to events, error tracking, and feature flags while this line relies only on the profile. Because a profile 404 is explicitly expected on first-run teams, Logs becomes unknown and step 4 skips the new source row, continuing to drop Logs findings despite the report already proving usage; treat a successful Logs result in the setup report as affirmative evidence before falling back to the profile.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants