spec 026: requirement-driven model selection consolidation

Aperta
#1,285 3 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
35/100
Tipo di issue
Refactoring
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
python
Ambito
ai, backend

Direzione di ricerca

Inizia da specs/026-model-selection-consolidation/spec.md, poi leggi plan.md e lo stato di Slice 7 e Slice 8. Traccia i profili nominati, i consumer di compatibilità, la migrazione di AgentRegistryEntry, l’enforcement statico e le eliminazioni rispetto ai criteri di accettazione elencati. Il lavoro è completato quando tutti i punti di selezione del modello usano il meccanismo, le salvaguardie rimangono intatte e il comportamento di migrazione e i criteri delle chiamate reali hanno esito positivo.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

What

Consolidate every model-selection site in the platform into ONE requirement-driven mechanism with a strict boundary between choosing a model chain and executing it:

snap     = runtime_snapshot(...)              # acquisition — networked, fallible
decision = select(requirement, snap)          # selection — pure, deterministic
response = execute(decision.chain, messages, options=..., backend_factory=...)

Call sites express intent (a named requirement profile), never a model string. Spec:
specs/026-model-selection-consolidation/spec.md ·
plan: plan.md · branch 026-model-selection-consolidation.

Relationship to #1242 (traceability)

This issue exists because spec 026 does NOT implement #1242's acceptance criteria. #1242
("self-improvement through lessons learned") asks for two cron-driven self-improvement lanes.
Spec 026 is the model-selection prerequisite for spec 025's lane, split off as its own spec + PR
by maintainer decision 2026-07-16 (recorded at spec.md:6) so it can land first. Work on this branch
should be judged against the criteria below, not against #1242's.

Acceptance (from spec.md)

  • FR-001/FR-008: select() is a pure function of (requirement, snapshot, policy_version)
    returning a byte-identical ordered chain; execute() never re-ranks.
  • FR-006: eligibility = versioned capability policy ∩ live snapshot; the catalog proves
    presence/price, never competence; unknown cost is never free.
  • FR-010/FR-011/FR-016: existing router safeguards preserved; paid permission checked twice;
    paid calls reserve against the strict-CAS ledger on refs/llmxive/credit-ledger.
  • FR-012/FR-013: all call sites express one of the 6 named profiles; registry agents, the router,
    the execution tier-ladder, the catalog filter and every direct pin resolve through the mechanism.
  • FR-014: a static enforcement test rejects production model-id literals outside the canonical
    layer; DEFAULT_MODEL + MODEL_FALLBACKS are deleted.
  • SC-007: behavior preserved against a fixed migration snapshot (historical migration snapshot; see the October 8 update below).
  • SC-008: real snapshot assembly + real calls across the free tiers, the vision tier, and the
    local fallback.

Status

Slices 1–6 complete (contracts, snapshot+LKG, router primitive, ledger, pure select, execute,
independence, routing chokepoint, execution-tier migration). Slice 7 (compatibility consumers +
AgentRegistryEntry schema migration + US5 AC1/AC4) in design. Slice 8 (static enforcement +
deletions) last.

October 8 reconciliation

Retained as a distinct architecture issue: PR #1472's GLM-5.3 default upgrade does not establish completion of the pure requirement-driven selector, all-call-site migration, static literal enforcement, or ledger acceptance above. The old requirement to retain Qwen3.5 is superseded by the maintainer's explicit GLM-5.3/free-model request; do not restore the old default merely to satisfy the historical migration snapshot. Rebase the acceptance snapshot on the validated current free catalog while preserving capability, independence, budget and paid-permission safeguards. Recurring provider incidents are consolidated in #1475.

Lingua principale
Python
Stelle
4
Fork
2
Merge medio
36m
PR unite (30g)
109

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di ContextLab/llmXive

Tutte le issue di ContextLab/llmXive

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.