Skip to content

Provider 확장 진입 조건 검증 #129

Description

@woosublee

사용자 문제와 기대 결과

후보:

  • Gemini
  • Generic OpenAI-compatible profile
  • Qwen
  • Provider incident status overlay

진입 조건 중 하나 이상의 사용자 수요와 모든 foundation 조건을 충족해야 한다.

수요 조건:

  • Active beta 사용자의 20% 이상 요청, 또는
  • 검증된 사용자 interview 10건 이상에서 공통 JTBD 확인

Foundation 조건:

  • 핵심 provider의 8주 retention 안정
  • App·proxy update rollback 완료
  • Compatibility contract test 완료
  • Account profile lifecycle 완료

Acceptance criteria

  • User evidence source와 sample size를 기록한다.
  • 현재 JTBD와 대안 제품·workflow를 문서화한다.
  • Privacy, maintenance, support 비용을 추정한다.
  • Go/no-go decision과 production 진입 조건을 기록한다.
  • Go이면 별도 implementation issue를 만들고 이 discovery issue에 연결한다.

검증

  • Evidence: 사용자 interview, beta cohort, issue 요청, 대안 제품 사례를 출처와 함께 정리
  • Decision: go/no-go와 근거, production 진입 조건을 기록

성공 지표

  • Primary impact: impact: reliability
  • Milestone exit condition에 미친 결과를 완료 comment로 기록

상세 실행 명세

현재 제품 경계와 evidence gap

  • account/auth/routing/API accounting 타입은 Claude/Codex(OpenAI API) 두 축에 고정되어 Gemini, generic OpenAI-compatible, Qwen, provider incident overlay를 수용하는 contract/cost가 검증되지 않았다.
  • 후보별 실제 사용자 수요가 합쳐져 있고, demand gate와 foundation readiness가 독립 증거로 관리되지 않는다.
  • retention, app/proxy rollback, compatibility contract, account lifecycle/coordinator foundation이 모두 완료됐는지 기계적으로 확인하는 gate record가 없다.

코드 근거

  • Sources/CLIProxyManagerCore/Auth/AuthProfile.swift:3 — OAuth profile type은 Claude/Codex 두 case다.
  • Sources/CLIProxyManagerCore/APIUsage/APIUsageAccounting.swift:3 — API accounting provider도 Claude/OpenAI 두 case다.
  • Sources/CLIProxyManagerCore/Config/AppConfig.swift:165 — account config schema가 AuthProfileType과 provider-specific routing에 결합돼 있다.
  • Sources/CLIProxyManagerApp/Models/DashboardAccountSnapshot.swift:66 — API key profile 판별이 Claude/OpenAI 두 fixed ID에 의존한다.
  • Sources/CLIProxyManagerCore/Proxy/ProxyModelClient.swift:37 — model discovery가 Claude prefix와 Codex/OpenAI model family 규칙으로 분기된다.
  • Sources/CLIProxyManagerCore/APIUsage/APIPriceCatalog.swift:22 — price entry도 fixed APIUsageProvider를 사용한다.
  • Sources/CLIProxyManagerCore/Proxy/CLIProxyAPIBinaryManifest.swift:8 — proxy artifact version/source/sha contract는 compatibility evidence 기반으로 재사용 가능하다.
  • Sources/CLIProxyManagerCore/Updates/AppUpdateModels.swift:47 — staged app update는 version/build/source/hash를 기록하지만 rollback success history gate는 별도 foundation이 필요하다.

조사 범위

  1. 후보를 네 개의 독립 track으로 조사한다: Gemini, generic OpenAI-compatible profile, Qwen, provider incident status overlay. 한 후보의 수요를 다른 후보에 합산하지 않는다.
  2. Demand gateFoundation gates를 별도 표/boolean으로 관리한다. Go(candidate) = Demand(candidate) AND Retention AND AppRollback AND ProxyRollback AND CompatibilityContract AND AccountLifecycle/Coordinator이며 어느 gate도 점수로 상쇄하지 않는다.
  3. Demand는 후보별로 active beta 20% 이상 명시 요청 또는 검증 interview 10건 이상에서 동일 JTBD 확인 중 하나를 충족해야 한다. “다른 provider도 있으면 좋다”는 후보-specific demand로 계산하지 않는다.
  4. Foundation evidence는 각 gate별 source issue/result/date/owner/expiry를 기록한다: 8주 core provider retention, App update health check·automatic rollback·result history #115 app rollback, CLIProxyAPI update health check·automatic rollback #111 proxy rollback, 지원 환경과 architecture compatibility 명시 #100 compatibility contract, Refactor account settings into profile lifecycle storage #18 account lifecycle, 핵심 coordinator 책임 분리 완료 #121 coordinator boundary, GitHub Actions·dependency supply-chain 기준 강화 #103 supply-chain 기준.
  5. technical spike는 non-production adapter/contract test만 수행한다. Gemini/Qwen/generic은 dummy local server와 public schema fixture로 auth/model/error/streaming compatibility gap을 측정하고 real key/network production path를 만들지 않는다.
  6. incident overlay spike는 status source 신뢰성, polling/privacy, false alarm, offline behavior, provider별 support cost를 static fixture로 평가한다.
  7. 후보별 security/privacy/maintenance/support/price-catalog/update coupling 비용과 independent Go/No-go를 기록한다. foundation 미충족이면 demand가 높아도 decision은 “No-go now / re-evaluate”다.

Discovery Acceptance criteria

  • 네 후보별 demand evidence/source/sample이 분리되고 20% beta 또는 10 interview gate 충족 여부가 각각 계산된다.
  • Demand gate와 Retention/AppRollback/ProxyRollback/Compatibility/AccountLifecycle-Coordinator/Supply-chain gate가 별도 boolean과 근거 링크/날짜로 기록된다.
  • 어떤 후보도 demand 점수로 foundation 미충족을 상쇄하지 않으며 Go formula test/checklist가 있다.
  • Gemini/generic OpenAI-compatible/Qwen dummy contract spike가 auth/model/streaming/error/usage compatibility gap을 후보별로 산출한다.
  • incident overlay spike가 source trust, stale/offline/false-alarm, privacy/polling cost를 산출한다.
  • 후보별 privacy/security/maintenance/support/price/update 비용이 독립 추정된다.
  • 네 후보 각각 Go/No-go/No-go-now와 measurable re-entry criteria가 있고 production implementation은 하지 않는다.
  • real credential/account/secret/network production path와 새 provider dependency가 추가되지 않았음을 review한다.

조사 위험

  • “generic OpenAI-compatible”는 구현 편차가 커 단일 sample server 통과를 compatibility로 오판할 수 있다. 최소 contract variants를 사전 정의한다.
  • 인기 provider 이름이 실제 CLIProxyManager JTBD보다 강한 novelty bias를 만들 수 있다.
  • incident status source가 provider 공식/비공식인지에 따라 false alarm과 legal/support 비용이 크게 달라진다.
  • foundation evidence가 오래됐거나 환경이 바뀌면 pass를 재사용하지 않고 expiry/last verified를 확인한다.

명시적 비목표

  • production provider adapter, account UI, price catalog entry, real API call, status polling, 새 dependency/issue 관계 변경은 금지한다.
  • 후보 전체를 하나의 “provider expansion” Go로 묶지 않는다.
  • demand gate만 충족하거나 foundation 일부만 충족한 상태에서 구현에 착수하지 않는다.

보안·개인정보·접근성

  • fixture는 dummy token과 user@example.com만 사용하고 real provider credential/response를 저장하지 않는다.
  • generic endpoint spike는 SSRF/localhost/private network, TLS, redirect, credential forwarding threat model을 필수로 포함한다.
  • 새 provider/status concept mock은 keyboard/VoiceOver에서 provider identity, source, stale 상태, recovery를 구분할 수 있는지 평가한다.

Evidence plan

  • Demand: 후보별 survey/request census + 10건 이상 JTBD interview 또는 active beta 20% 기준.
  • Foundation: gate별 issue/result/date/expiry를 evidence table로 수집하고 모두 AND로 평가.
  • Technical: local dummy contract variants, schema/error/stream compatibility report, incident static feed simulation.
  • Cost: provider별 auth, routing, usage, pricing, release/support matrix 영향 추정.
  • Decision: 후보별 independent Go/No-go-now, unmet gate, re-entry trigger.

완료 지표

  • 네 후보 모두 demand와 모든 foundation gate가 분리 기록되고 빈 gate 0개다.
  • foundation 미충족 후보의 Go 판정 0건이다.
  • real credential/network production implementation 0건, 후보별 independent decision 4개가 남는다.

불확실성

  • active beta denominator와 8주 retention 측정 정의가 확정되지 않으면 demand/foundation pass를 계산할 수 없다. denominator, cohort, observation window를 먼저 고정한다.
  • Qwen/generic OpenAI-compatible의 겹침이 크더라도 demand와 compatibility evidence는 후보별로 유지하고 공통 adapter 가능성은 별도 cost 절감 근거로만 사용한다.

연관 이슈

Roadmap

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: accountAccount profile, auth, credential lifecyclearea: routingModel, reasoning, context, account routingimpact: reliability예측 가능성·일관성·release 안정성 개선priority: validation수요 검증 전 production 구현 금지type: discovery사용자 수요와 구현 진입 조건을 검증하는 조사

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions