SYS_IQ_3 — Résolution du modèle d'un agent & surveillance d'expiration
Mode opératoire + embryon de catalogue : les règles de résolution et les seuils portent leur
source_ref. C'est le référentiel de routage des modèles. [CORPUS]
Objet (la tâche)
Déterminer, pour un agent donné, quel modèle sera utilisé et avec quelle capacité de sortie structurée ; et alerter avant qu'un modèle utilisé n'expire. [CORPUS]
Prérequis / matériel / sécurité
/config/agents.jsonà jour (sinon régénérer viasync_agents_manifestWebhook). [CORPUS]/config/Agent_Model_Open_Router/peuplé (catalogue + 3 vues) parsync_model_capabilities. [CORPUS]/vault/_CONFIG/profils.jsonprésent (profilsleger/standard/avance→ modèles). [CORPUS]- Aucune donnée sensible (configuration technique). [STANDARD]
Étapes d'exécution
- Lire le
dossierde l'agent dansagents.jsonviaagent_key. [CORPUS] - Charger
config_agent.json(mode/model/temp/max_tokens),prompt_system.md,output_schema.json(continueOnFail). [CORPUS] - Résoudre le modèle selon le
mode(cf. règles ci-dessous). [CORPUS] - Évaluer la capacité :
supports_structured_outputs = (model ∈ view_native_output_schema)(= JOIN sur la vue). [CORPUS] - Activer le schéma ssi
output_schema.propertiesnon vide (sinon pas de plancher ni plafond). [CORPUS] - (Sonde quotidienne) Croiser les
model_resolvedutilisés ×view_expiration.json→ sijours_restants ≤ 7→ alerter. [CORPUS]
Règles, critères et seuils (embryon de catalogue — routage des modèles)
- M1 —
mode=model→model_resolved = config_agent.model(modèle explicite). (source_ref: 07 §B2.3ter / §B2.3bis) [CORPUS] - M2 —
mode=profil→model_resolved = profils.json[profil].model(profilsleger/standard/avance). (source_ref: 07 §B2.3bis ; profils.json) [CORPUS] - M3 —
mode=dynamic→model_resolved = anthropic/claude-sonnet-4.6(défaut v0, hardcodé jusqu'à câblagedynamicréel — Lot 12). (source_ref: 07 §B2.3bis ; Lot 3) [CORPUS] - M4 — Agent coquille (pas de
mode) →model_resolved = null(agent non résolu, non appelable en production). (source_ref: 07 §B2.3bis) [CORPUS] - M5 — Capacité sortie structurée :
model ∈ view_native_output_schema.supported[]→ plafondresponse_formatautorisé ; sinon plancher seul + warning. (source_ref: ADR-028) [CORPUS] - M6 — Seuil d'alerte expiration = 7 jours : un modèle utilisé (présent comme
model_resolved) dontjours_restants ≤ 7déclenchemodel_expiring. (source_ref: 07 §B2.10) [CORPUS] - M7 —
jours_restants = ceil((expiration_date 23:59:59 − now) / 1 jour); états spéciauxEXPIRÉ/AUJOURD'HUI/J-n. (source_ref: 07 §B2.10) [CORPUS] - M8 — Un modèle hors catalogue reste loggable (jamais de FK stricte sur
modelen télémétrie) ; mais unmodel_resolvedhors catalogue devrait lever une alerte typo (fast-follow non câblé). (source_ref: ADR-029 ; 04 Lot 6f fast-follow) [CORPUS] - M9 — Exclusions du manifeste :
00 - TEMPLATE AGENT,SYS-01(Routeur), hors-pattern. (source_ref: 07 §B2.3bis) [CORPUS]
Points de contrôle / cas particuliers
- Coquille appelée : si un agent
model_resolved:nullest appelé, l'appel échouera proprement en aval (modèle null) ; ne pas compter sur SYS pour « deviner » un modèle. [CORPUS] - Typo de modèle (
opus-4-6au lieu deanthropic/claude-opus-4.6) : non détectée à ce jour → fast-follow (suggestion de correspondance). [CORPUS] - Vue d'expiration vide : sonde → NoOp no-throw (testé). [CORPUS]
Sortie / enregistrement produit
- Output
get_agent_config(« ligne » résolue) consommé parprepare_agent_call. [CORPUS] /config/agents.jsonrégénéré (cf.SYS_FQ_3). [CORPUS]- Notif
model_expiring(le cas échéant). [CORPUS]
Agent responsable
get_agent_config (résolution à l'appel) ; sync_agents_manifest (manifeste) ; notify_expiring_models (sonde). [CORPUS]