Skip to content

fix(warehouse): bound the seeded data-source step to a few sources - #1284

Merged
edwinyjlim merged 1 commit into
mainfrom
posthog/bound-warehouse-source-offer
Sep 22, 2026
Merged

edwinyjlim merged 1 commit into
mainfrom
posthog/bound-warehouse-source-offer

Conversation

@Gilbert09

Copy link
Copy Markdown
Member

Problem

The seeded warehouse step is the one part of the run that stops to ask the user
for credentials, and its cost to them is one prompt per detected source.
Detection keys off dependency names and .env key names, so an ordinary app
matches a long tail of sources it has no intention of importing — an API key in
a .env file is not a decision to warehouse that vendor's data.

The offer was unbounded. The notice listed every match and the step was handed
every match, so a user was asked to agree, up front and minutes before the first
prompt arrives, to an interrogation whose length they could not see. In the
telemetry for this step the pattern is clear and one-directional: runs offered a
short list are where the connected sources come from, and runs offered a long one
answer no credential prompt at all and connect nothing. Nothing is gained by
offering the tail — it is a reliable way to lose the head as well.

Why: this came out of reading the seeded-task funnel. Accepting the offer and
then dismissing the first credential prompt is the single largest loss in the
flow, and the length of the offer is the part of it the wizard controls.

Changes

  • WAREHOUSE_SEED_LIMIT caps the sources handed to the seeded step. The notice
    names only those, and says where the remainder is going, so the promise the
    user answers is the one the run keeps.
  • buildWarehouseNextSteps no longer drops every bullet when the step
    completed. A completed step connected only what it was given, so the sources
    past the cap are as unconnected as if it had never run and still get their
    pre-filled link. The linear sequence passes no completed types, so it is
    unchanged.
  • orchestrator warehouse task queued gains warehouse_offered_count. The two
    existing properties keep meaning "detected", so the detection trend reads
    across this change while the step's outcome can be rated against what it was
    actually given.

Detection, the registry, and the step's own logic are untouched.

Test plan

  • New unit tests in warehouse-seed-task.test.ts (the step is capped, the
    notice names only the capped set, the remainder is mentioned, and nothing is
    mentioned when there is no remainder) and in warehouse-suggestion.test.ts
    (a completed step still yields links for the sources it was never given).
  • Full unit suite green (177 files, 2842 tests); Prettier and ESLint clean on
    the touched files (one pre-existing non-null-assertion warning pattern the
    test files already use).
  • tsc --noEmit error count unchanged from main (31 pre-existing, none in the
    touched files).

Created with PostHog Desktop

🤖 Generated with Claude Code

The seeded warehouse step costs the user one credential prompt per detected
source, and detection keys off dependency and .env key names, so an ordinary
app matches sources it has no intention of importing. The offer was unbounded:
a user agreed up front to an interrogation whose length they could not see.

Cap the step at the first few sources and let the outro carry the rest as
pre-filled links, the same trade the outro's own link limit already makes.
A completed step now only suppresses the outro bullets for the sources it was
actually handed.

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

Generated-By: PostHog Desktop
Task-Id: 6bd7c3ae-e708-4ab0-8ea8-901701317339
Copilot AI lite review requested due to automatic review settings September 21, 2026 11:59
@Gilbert09
Gilbert09 requested a review from a team as a code owner September 21, 2026 11:59

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@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 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 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 Context Mill branch:

  • /wizard-ci all context-mill:my-branch

Add context-mill:<branch> to any command above to pin the Context Mill branch. It defaults to main.

Results will be posted here when complete.

@Gilbert09 Gilbert09 added the stamphog Auto-merge stamp for automated PRs label Sep 21, 2026 — with PostHog
@edwinyjlim
edwinyjlim merged commit 1d57216 into main Sep 22, 2026
21 checks passed
@edwinyjlim
edwinyjlim deleted the posthog/bound-warehouse-source-offer branch September 22, 2026 17:27
gewenyu99 added a commit that referenced this pull request Sep 23, 2026
Brings in the eight main fixes since beccc79 (#1275, #1280, #1284, #1294,
#1295, #1301, #1302, #1305). One conflict: agentic detection keeps main's
two-attempt retry loop from #1305 and adds A1's progress emitter to the
agent it initializes.

Generated-By: PostHog Desktop
Task-Id: d14e92bb-6ee1-49b5-8502-39cb80079589
gewenyu99 added a commit that referenced this pull request Sep 23, 2026
Brings the final Release A, through the new B1, into the callable program
host. B2's structure stays; A's agent contract holds throughout:
- asks and task notices take { signal }, and cancelAsk, cancelTaskNotice
  and cancelQuestion are gone;
- the linear sequence owns a run controller;
- the orchestrator's fatal path reports blocked tasks;
- the agent never sends terminal analytics.

The adapter calls wizardAbort with an explicit status: 'cancelled' only when
the host cancelled, 'error' otherwise. After a non-composed success it sends
'success' behind the flush guard.

main's fixes land where B2 moved the code:
- #1284's warehouse seed cap goes into posthog-integration/run.ts;
- #1280's scan step goes into B2's downloadSkill;
- #1305's two detection attempts share one inference-auth provider;
- the #1305 timer and B2's host-abort check sit side by side in
  agent-interface.

B2's skill-cleanup test now expects an agent [ABORT] to end as failed, and
its host-abort test checks that an unmarked user skill survives.

Generated-By: PostHog Desktop
Task-Id: d14e92bb-6ee1-49b5-8502-39cb80079589
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

stamphog Auto-merge stamp for automated PRs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants