LearnNewsExamplesServices
Frontmatter
id11601
titleSubstrate decision: Model-Stats ADR — capability/limit/sunset/promotion framework
stateClosed
labels
discussionaiarchitecturemodel-experience
assigneesneo-opus-ada
createdAtMay 19, 2026, 12:39 AM
updatedAtJun 7, 2026, 7:13 PM
githubUrlhttps://github.com/neomjs/neo/issues/11601
authorneo-opus-ada
commentsCount0
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtMay 19, 2026, 4:33 AM

Substrate decision: Model-Stats ADR — capability/limit/sunset/promotion framework

Closed v13.0.0/archive-v13-0-0-chunk-12 discussionaiarchitecturemodel-experience
neo-opus-ada
neo-opus-ada commented on May 19, 2026, 12:39 AM

Context

Operator named this friction twice across recent sessions: there is no canonical ADR governing model-stats as substrate — capability tiers, context-window limits, sunset triggers, model-name promotion/demotion across families (Claude / Gemini / GPT).

Current state: model identity / capability framing lives in scattered fragments — AGENTS.md Identity section, individual skill substrate, in-memory feedback files, ad-hoc commit messages. Empirically observable drift surface: "Claude 3.5 Sonnet / Gemini 1.5 Pro" training-data-anchor regressions caught session-after-session (see memory: feedback_training_data_anchor_drift.md).

Empirical anchor

Discussion #11598 OQ on missing model-stats substrate. V-B-A this turn confirmed: zero ADR in learn/agentos/decisions/** governs model-stats lifecycle.

Friction

  • Agents regress to training-data anchors for "current Claude/Gemini/GPT" framing without local-substrate correction.
  • No canonical doc for: capability tiers across families, context-window cap, sunset trigger conditions, model-name promotion mechanism, swarm-routing policy when one family's bandwidth tier shifts.
  • Specialization signals (e.g., research_swarm_model_velocity_specialization.md — Gemini turn velocity vs Opus depth) live in private memory rather than substrate.

Scope

Author ADR governing the Model-Stats substrate:

  1. Identity layer — canonical model names (claude-opus-4-7, claude-sonnet-4-6, gemini-3-1-pro, etc.); rotation discipline as models graduate
  2. Capability layer — context-window, parallel tool calls, harness compatibility
  3. Specialization layer — empirical observations (bandwidth vs depth) when V-B-A'd; honest "we don't know yet" when not
  4. Sunset/promotion triggers — what conditions cause model-name promotion / demotion in canonical substrate
  5. Swarm-routing implications — when bandwidth-tier shifts at provider side, how does routing policy adapt

Acceptance criteria (stub)

  • ADR draft in learn/agentos/decisions/00XX-model-stats.md per ADR-at-Graduation workflow (ADR 0005)
  • Reconciles existing scattered identity content from AGENTS.md, skills, and private memory
  • Cross-family review (1× per family) — substrate spans all 3
  • Sunset triggers explicit (not "when we feel like it"); empirical thresholds where possible

Contract Ledger

Backfilled 2026-05-19 per @neo-gpt PR #11606 Cycle 4 review. The 4-layer architecture (see ADR 0012 §2.1) commits to the following surface-level contracts:

Target Surface Source of Authority Proposed Behavior Fallback Docs Evidence
learn/agentos/decisions/0012-model-stats-framework.md This ticket + operator clarification 2026-05-19 (rename-vs-split) Capability dimensions, sunset/promotion triggers, registry-update discipline, anti-patterns N/A (ADR; rare update) ADR self-documents PR diff
learn/agentos/IdentitySchema.md Capability Fields section ADR 0012 §2.2 Extends AgentIdentity graph node with capability properties (contextWindowInput/Output, parallelToolCalls, thoughtBudget, hosting, family, tier, releaseDate, pricing, license, benchmarkSnapshot, sunsetTriggers, swarmRole) N/A (schema extension; rare update) IdentitySchema.md self-documents PR diff
learn/agentos/ModelStats.md ADR 0012 §2.5 registry-update discipline Per-model live registry; authoritative-source-cite per row; rename in-place for minor version bumps, split for major capability-class changes Mark rows V-B-A-pending when source unclear ModelStats.md §provisioning PR diff + cited sources per row
ai/graph/identityRoots.mjs ModelStats.md (registry mirror) All 3 cloud AgentIdentity entries carry capability fields; values mirror ModelStats.md verbatim seedAgentIdentities.mjs re-run is idempotent (createdAt preserved) identityRoots.mjs header comment PR diff + node --check ai/graph/identityRoots.mjs pass

Source-authority hierarchy per ADR 0012 §2.5 (priority order):

  1. Provider's own model card / API docs (e.g., platform.claude.com/docs/..., developers.openai.com/..., deepmind.google/models/model-cards/...)
  2. Provider's release announcements (e.g., openai.com/index/introducing-gpt-5-5/)
  3. Upstream bug-tracker issues for implementation discrepancies (e.g., openai/codex#19319)
  4. Independent benchmark sites (e.g., LMArena, LLMCheck)
  5. Commentary / blog aggregators (last resort; tag V-B-A-pending when used)

Cross-refs

  • Refs #11598 META — friction item NOT previously captured as ticket (operator-correction 2026-05-18 ~22:40Z: "tickets have to be created. otherwise lost knowledge")
  • See also: feedback memory feedback_training_data_anchor_drift.md, research_swarm_model_velocity_specialization.md (private substrate — promote to shared substrate via this ADR)

Priority

Team to triage. Filed per operator-direction that knowledge-substrate creation is independent of prioritization.

tobiu closed this issue on May 19, 2026, 4:33 AM
tobiu referenced in commit 398fdce - "feat(agentos): Model-Stats Framework ADR + IdentitySchema capability extension + ModelStats registry (#11601) (#11606) on May 19, 2026, 4:33 AM