Grace
Référence

Moteur de résolution

Comment le resolver compose le contexte servi par grace_resolve_context.

Le moteur vit dans le contexte hexagonal platform/backend/src/resolution/. L'orchestration est dans application/resolve-context.use-case.ts, qui compose trois briques de domaine : domain/dependency-graph-resolver.ts (graphe), domain/relevance-selector.ts (filtrage sémantique optionnel) et domain/context-compiler.ts (mise en forme + altitude). Il lit les métadonnées des talents en base (catalog_talents) via le port CatalogReader (adaptateur Drizzle infrastructure/drizzle-catalog-reader.ts) et leur contenu depuis le volume /catalog via le port TalentContentSource (adaptateur infrastructure/filesystem-talent-content.source.ts).

Étapes de grace_resolve_context

  1. Talents actifs du projet (ProjectTalent.enabled).
  2. Graphe résolu (requires / includes / conflicts), prérequis manquants détectés.
  3. Filtrage par rôle (manifest.agents) : un talent sans entrée pour l'agent est écarté.
  4. Tri par pertinence à la tâche (activation.triggers présents dans la tâche) → rôle (required > recommended > optional) → priorité (priority.default) → nom.
  5. Corps selon l'altitude (depth, guidé par token_budget).
  6. Table « Quand approfondir » (pointeurs grace_get, filtrés par rôle / langage).
  7. Section « talents recommandés non activés » (recommends).

Les talents status: draft sont ignorés.

Avec le flag GRACE_RELEVANCE=embeddings, une étape de filtrage sémantique s'ajoute entre la résolution du graphe et la compilation : elle restreint les talents à ceux pertinents pour la tâche. Voir Architecture → Pertinence sémantique.

Clôture sur les requires — après le filtrage sémantique, la sélection est refermée sur les requires / includes des talents retenus (requiresClosure) : un composite n'est jamais servi sans ses briques obligatoires, même si la pertinence les avait écartées. Détail : Pertinence → la coupe est fermée sur les requires.

Champs du manifest consommés

ChampUsage
id, name, version, type, summary, tagsidentité, recherche, cards, graphes
requires, includes, conflictsrésolution du graphe, prérequis manquants
recommendssuggérés (resolve + fiche)
agentsfiltrage / pondération par rôle
priority.defaulttri
activation.triggerspertinence à la tâche
token_budgetaltitudes (compact / standard / full)
statusdraft ignoré
structure.{enforceable,diagram,constraints}validation + pointeur modèle

Les fichiers graph.yml (doublon de requires/includes/conflicts) et prompts/ ont été retirés du catalogue : aucun code ne les lisait. Reste le champ manifest outputs, encore non consommé. Pour conventions.naming / folders, le choix retenu est de les injecter comme conventions dans le contexte plutôt qu'un linter fragile.

→ Le schéma complet du manifest est dans Manifest.

On this page