ADR-0002: YAML-Based Adapter Registry with Domain Grouping
Status
Section titled “Status”Proposed
2026-03-01
Context
Section titled “Context”Multiple students may build adapters for the same domain (e.g., math) across semesters, using different training data, LoRA configurations, or strategies. The registry needs to:
- Store all adapters as a library (not just the current best)
- Group adapters by domain so the router can find candidates
- Track which adapter is active for routing per domain
- Record benchmark scores for automated leaderboard generation
- Track provenance (which semester/cohort built it)
The current registry is flat — one adapter per name, no domain grouping.
Decision
Section titled “Decision”Extend adapters/registry.yaml with three new fields per adapter:
domain(required): Groups adapters that cover the same task area (e.g.,math,code,summarization). The router operates at the domain level.active(boolean, defaultfalse): At most one adapter per domain is active. The active adapter is what the router selects. Can be set manually or auto-promoted based on benchmark scores.semester(string): Academic semester when the adapter was created (e.g.,2026-fall).benchmark_scores(dict): Named benchmark results enabling automated comparison.
Adapter names become more specific to distinguish within a domain: math-gsm8k, math-competition, code-python, etc.
Consequences
Section titled “Consequences”- Students can freely build competing adapters without displacing previous work
- The “best wins” model is transparent — benchmark scores decide the active adapter
- Registry file grows over time; may need to split into per-domain files in later years
- Router logic becomes simpler — it routes to a domain, then the registry resolves which adapter
- Migration required: rename
math->math-gsm8kand add new fields