les voies métaboliques
22 occurrences sur 18 blocs de 9 textes, 1979 → 2024. Les deux nombres diffèrent parce que grep -c compte des lignes, donc des blocs, et non des occurrences — c'est l'erreur que tools/voies-metaboliques.md a corrigée le 2026-09-02 et que ce recompte confirme. Sept des 22 ne sont pas des emplois conceptuels : cinq blocs documentaires, une légende de figure ([LIP-2020-aimeet]§199), et la plus ancienne, [LIP-1979-terrmap]§242, qui est une entrée de bibliographie. Restent douze blocs de prose.
Le renvoi central est vérifié à la source, bloc par bloc : [LIP-2019-metaphor]§45, dans la section d'ancre #sust (ouverte au §36), énonce que les indications sur la manière de passer d'une métaphore à la suivante font défaut. Vérifié par .venv/bin/python bin/read-blocks.py LIP-2019-metaphor --de 45 --a 45 et par --ancres | grep sust. La note notes/LIP-2019-metaphor.md porte déjà ce bloc en citation c2 : le renvoi n'introduit donc aucun verbatim neuf. L'écart de vingt-quatre ans avec [LIP-1995-dialog]§174 est un simple écart de millésimes, et il est exact.
Sur les 3 586 lignes de l'index : 0 titre, 0 keywords, 0 description. La limite déjà publiée tient : les deux développements que Judge consacre à l'objet ne sont pas parmi les 95 pivots, et ils portent leur objet dans un titre de section, jamais dans leur titre.
grep -ci 'metabolic pathway' corpus/text/*.txt | grep -v ':0' # 9 fichiers, somme des blocs = 18
grep -ohi 'metabolic pathway' corpus/text/*.txt | wc -l # 22 occurrences.venv/bin/python -c "
import json
L=[json.loads(l) for l in open('corpus/index/corpus.jsonl')]
def h(c,s):
n=0
for d in L:
v=d.get(c)
if v is None: continue
if isinstance(v,list): v=' '.join(map(str,v))
if s in str(v).lower(): n+=1
return n
print(len(L), h('titre','metabolic pathway'), h('keywords','metabolic pathway'),
h('description','metabolic pathway'))" # 3586 0 0 0