Skip to content

bug: implicit Big Pickle users (99% of the population) are never offered Altimate Base; silently rerouted to another free model #1301

Description

@anandgupta42

Found while verifying the Big Pickle → Altimate Base migration end to end against the v0.11.1 binary (PTY-driven, isolated HOME) and cross-checking App Insights after the 0.11.0 GA.

What works (verified empirically, 0.11.1)

  • A user whose persisted model.json has opencode/big-pickle in recent sees the "Big Pickle has been retired." disclosure on launch, explicit No + Enter persists altimate_base_big_pickle_migration_declined_v1 and opens the provider picker, Yes registers (one POST /register) and rewrites recents to altimate-free/altimate-base, an already-registered user is migrated silently, and a project provider allowlist suppresses the dialog.

The gap: implicit Big Pickle users are never offered Altimate Base

usesLegacyDefault() (packages/tui/src/context/local.tsx) only returns true when recent actually contains opencode/big-pickle. But recent is written only by a picker-driven selectModel(..., { recent: true }). A pre-0.11 user who never picked a model had Big Pickle purely as the server-side implicit default (Provider.defaultModel()), with an absent or empty recent. On 0.11.x that user:

  • gets no migration dialog and no Altimate Base disclosure at all (verified: no model.json, and {"recent":[]}, both launch straight into chat), and
  • is silently rerouted to whatever Provider.defaultModel() now resolves first, because big-pickle is excluded from the implicit scan. In the field that is opencode/nemotron-3.5-lightning-free; in the isolated test it was a Vertex model, i.e. catalog-order dependent.

Size of the population (App Insights, release builds, 2026-08-25 → 2026-09-09)

  • 1,031 machines had sessions on big-pickle.
  • Only 4 of them ever emitted provider_selected: big_pickle (an explicit pick). The other 1,027 are implicit-default users the migration cannot reach.
  • Of the 4 Big Pickle machines already on 0.11.x, both with sessions since GA are running nemotron-3.5-lightning-free, not Altimate Base, and never saw a prompt.

This is the main reason Altimate Base has essentially no external traffic yet: the migration targets ~0.4% of the Big Pickle base, and the rest are moved to a different free Zen model without a disclosure.

Suggested fix

Treat "current model resolves to a retired implicit default and the user has no explicit selection" as migration-eligible: e.g. have the server report (or the TUI detect) that the pre-0.11 implicit default would have been opencode/big-pickle (no recent, no explicitDefault, no config model, no provider allowlist, and the opencode provider present without a key), and show the same origin="migration" disclosure. Keep the decline marker semantics.

Related UX nuance (same dialog)

Dismissing the migration dialog with Escape or Ctrl-C records the decline but leaves the user on Big Pickle with no picker, whereas explicit "No — pick something else" + Enter opens the provider picker. Escape is the likeliest "no thanks" gesture, so Escape users are stranded on the retired model with no visible next step other than /model.

Telemetry note

The migration dialog emits no events (consent events are gated on the first-run funnel), so prompts, accepts, and declines from the migration path are invisible in App Insights. Worth emitting altimate_base_confirm_shown / altimate_base_choice with origin: "migration".

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions