Skip to content

code_index: graphe d'appels v2 — cascade de résolution à confiance#5

Merged
citarf merged 1 commit into
mainfrom
feat/graph-v2
Jun 19, 2026
Merged

code_index: graphe d'appels v2 — cascade de résolution à confiance#5
citarf merged 1 commit into
mainfrom
feat/graph-v2

Conversation

@citarf

@citarf citarf commented Jun 19, 2026

Copy link
Copy Markdown
Collaborator

Enrichissement Phase 4 (état de l'art)

Remplace la résolution par nom brute (v1) par une cascade de résolution à score de confiance — l'état de l'art accessible sans compilateur (scope/stack graphs GitHub, SCIP Sourcegraph, cascade « Codebase-Memory »). Aucun labo IA ne publie de recette call-graph type Contextual Retrieval ; Anthropic prône au contraire la recherche agentique. On adopte donc la cascade OSS/académique + la moitié « analyse » de GraphRAG.

Résolution

  1. $this->m() / self::m() / parent::m() → classe englobante + hiérarchie (extends/implements/use trait) — 0.95 (attaque les ~54 % d'appels dynamiques PHP) ;
  2. Class::m() / new Class() → classe via use/namespace (PHP) ou import (TS/PY) — 0.90 ;
  3. fonction libre → import-exact / même-namespace / même-fichier / nom unique, sinon ambigu — chaque arête porte sa confiance.

Contrainte same-langue (un new Date() JS ne vise plus une classe PHP Date). Garde-fous primitives conservés et appliqués avant la résolution globale par nom (sinon une fonction homonyme d'un builtin absorbe range()/push()). Arêtes fortes (≥0.7) jamais élaguées.

code_impact v2

Buckets Certain / Probable / Incertain (certitude = min des confiances sur le chemin), regroupement par sous-système (repo + dossier de tête), classement par centralité PageRank + fan-in (calculés au build, façon repo-map Aider).

Résultat

Périmètre complet : ~58,6k arêtes dont ~31k fortes (48 %) vs résolution plate v1. Les cas réels valident : vent_deg3 (3 dups) → tout en Incertain + ambiguïté signalée ; get_accumulation_…Certains via hiérarchie $this. 16 tests graph, suite code_index verte (70).

Remplace la résolution par nom brute (v1) par une cascade état-de-l'art sans
compilateur (scope/stack graphs, SCIP, cascade Codebase-Memory) :

- $this->/self::/parent:: résolus dans la classe englobante + sa hiérarchie
  (extends/implements/use trait) — attaque les ~54 % d'appels dynamiques PHP ;
- Class::m / new Class via use/namespace (PHP) ou import (TS/PY) ;
- fonction libre : import-exact / même-namespace / même-fichier / nom unique,
  sinon ambigu — chaque arête porte sa confiance.

Toute résolution contrainte à la MÊME LANGUE (un new Date() JS ne vise plus une
classe PHP Date). Garde-fous primitives conservés (fanout + fréquence d'appel,
appliqués avant la résolution globale par nom pour ne pas absorber range()/push()).
Arêtes fortes (≥0.7) jamais élaguées.

code_impact v2 : buckets Certain/Probable/Incertain (certitude = min des confiances
sur le chemin), regroupement par sous-système (repo + dossier de tête), classement
par centralité PageRank + fan-in (calculés au build). Artefact graph-v2.

Sur le périmètre complet : ~58,6k arêtes dont ~31k fortes (48 %) — la moitié des
liens désormais haute-confiance vs résolution plate v1. 16 tests graph, suite verte.
@citarf citarf merged commit fd262cb into main Jun 19, 2026
3 checks passed
@citarf citarf deleted the feat/graph-v2 branch June 19, 2026 13:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant