Skip to content

fix: stable provider selection — re-roll only on fresh session creation #155

@alexsiri7

Description

@alexsiri7

Upstream design discussion: #68 (comment: #68 (comment))

Summary

Provider rotation is merged but unusable. RandomStrategy.Select() in resolveTemplate runs every reconcile tick → different pick → config-drift restart loop.

Fix

  1. Store selected provider in bead.Metadata["provider"] at creation
  2. On reconcile: read stored provider from existing bead, skip re-roll
  3. Quota-kill via gc session close forces fresh bead → new random pick
  4. Add existingProvider param to resolveTemplate to bypass random selection for running sessions

Key Files

  • cmd/gc/template_resolve.go:92 — resolveTemplate calls ResolveProvider every tick
  • cmd/gc/build_desired_state.go:403 — discoverSessionBeads passes to resolveTemplate
  • cmd/gc/session_template_start.go — materialize stores provider in bead
  • internal/config/provider_strategy.go — RandomStrategy

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind/bugBroken behaviorpriority/p2Medium — real problem, workaround exists

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions