Curator (Autonomous Model Curation): foundations

draft

Status

draft — 2026-06-01. Sector bootstrap proposed in the same session that ratified stack-RFC-008 (decision set aaa/a). This RFC is the per-sector foundation; the cross-stack form, the three loops and the control-plane×data-plane boundary live in stack-RFC-008. Slug curator is a working name pending ratification against specs/naming/forms.kmd (alternatives: scout, modelscout).

Summary

curator is the orchestrator daemon for the Koder AI model lifecycle: it discovers candidate models across modalities, drives eval to measure them (tiered), records results in modelreg, ranks the served set by benchmark relevance, and emits a PromotionProposal that a human (internal Koder staff, control-plane) approves before a model is served. It also runs the benchmark-of-benchmarks meta-routine that keeps the ranking grounded on the most relevant benchmarks available. Self-hosted analog of the model-selection layer of managed MLOps platforms — scoped to Koder's own platform operations.

Boundary. curator coordinates; eval measures; modelreg records (system of record, GlobalTenant="koder"); runtime/gateway serve. The curator owns no catalog storage — it writes through modelreg (#003#004#005). It is not the public model hub (that is zoo).

Motivation

Today runtime/models.yaml is hand-curated and runtime/internal/updater only refreshes SHAs of already-listed models; --discover is text-only and log-only. New frontier models are invisible until a human edits the YAML, and the benchmark suite we rank with is never reviewed for relevance. See stack-RFC-008 §1.

Scope

In

  • The three loops (A: relevance curation; B: multimodal discovery; C:

    benchmark-of-benchmarks) — see stack-RFC-008 §5.

  • PromotionProposal object + governed-flip pipeline (proposal → notify →

    approve → write catalog).

  • Orchestration only: scheduler, source polling, eval triggering, ranking,

    proposal/notification adapters.

Out

  • Catalog storage (modelreg owns it).
  • Benchmark execution (eval owns it).
  • Weight hostingserving (runtime + infradata/kdb-blob).
  • The public model/dataset hub (zoo).
  • Tenant model-preference (data-plane, future — stack-RFC-008 §8).
  • Auto-promotion without a human (future, by amendment — stack-RFC-008 D1).

Initial design

Surfaces

  • backend/ — Go daemon koder-curator (the three loops + proposal queue).
  • app/ — deferred; the operator review UI is desk approval-workflows, not a

    curator-native surface.

Key flows

  • curator run --loop=discover — Loop B: multimodal scan → modelreg drafts +

    eval queue.

  • curator run --loop=curate — Loop A: rank → PromotionProposal → notify.
  • curator run --loop=benchmarks — Loop C: allowlist poll + LLM scan →

    ai-benchmarks registry vetting queue → eval re-weight.

  • curator --dry-run — one cycle of all loops, no catalog write, logs

    proposals + evidence (E2E verification per stack-RFC-008).

Dependencies

  • services/ai/eval — benchmark execution (tiered) + ingestion.
  • services/ai/modelreg — metadata system of record (#003#004#005).
  • services/ai/runtime — receives models.yaml writes; keeps SHA updater.
  • services/foundation/desk — approval-workflows (#063); *ootstrap adapter

    via reminders.md/notices until #063 ships*

  • infra/observe/notify (koder-notify) — notification fan-out.
  • services/foundation/id — internal staff roles (control-plane).

Relation to existing sectors

  • Generalizes runtime/internal/updater.DiscoverNew (text-only, log-only) into

    a multimodal, registering discovery engine.

  • Consumes eval/internal/nightly rankings; writes proposals against the

    governance surface, never serving autonomously (stack-RFC-008 D1).

Self-hosted-first analysis (5 gates)

See stack-RFC-008 §6. G1 = supersedes the manual curation workflow; G2 = N/A (orchestration); G3 = bootstrapping; G4 = scheduler + polling + eval trigger + proposal queue; G5 = unblocks benchmark-grounded model decisions for the platform.

Open questions

Tracked in stack-RFC-008 §7 (slug, loop cadence, PromotionProposal ownership, non-HF discovery sources).

Next steps

Bootstrap skeleton (koder.toml, README, backlog) + registries + modelreg type extensions land with this RFC; the loops follow via backlog/pending/ tickets.