La direction « géométrie → boucles » est attestée en 1979
La question
Dans ce corpus, la géométrie sert-elle à représenter une dynamique déjà décrite, ou à la faire apparaître ? La différence n'est pas d'exposition : si la forme vient d'abord, elle est un instrument de découverte, et elle est transposable. Si elle vient après, c'est une illustration.
La mesure
Balayage bloc à bloc des quatre-vingt-quinze textes de preuve, avec deux lexiques, en écartant les blocs déclarés comme segments de dialogue avec un modèle — les conventions du dépôt interdisent d'attribuer à l'auteur une réponse de modèle reproduite dans son texte. Le script est reproduit entier pour que la mesure soit rejouable depuis un clone nu :
import re, json, pathlib
def db(t): return [b for b in t.strip("\n").split("\n\n") if b.strip()] # CONVENTIONS §7.2
IDX = {d['id']: d for d in map(json.loads, open('corpus/index/corpus.jsonl')) if d.get('id')}
GEO = re.compile(r'polyhedr|polytope|tensegrity|tesseract|icosahed|dodecahed|cuboctahed|hypercube', re.I)
LOOP = re.compile(r'feedback loop|vicious cycle|vicious circle|virtuous cycle|problem loop|'
r'interlocking loop|feedback cycle', re.I)
for nom, motifs in (('geo', [GEO]), ('loop', [LOOP]), ('geo x loop', [GEO, LOOP])):
docs, blocs = set(), []
for p in sorted(pathlib.Path('corpus/text').glob('*.txt')):
segs = IDX[p.stem].get('segments_dialogue_ia') or []
for i, b in enumerate(db(p.read_text(encoding='utf-8')), 1):
if any(a <= i <= z for a, z in segs): continue # CONVENTIONS §7.4
if all(m.search(b) for m in motifs):
docs.add(p.stem); blocs.append((p.stem, i))
print(nom, len(docs), len(blocs), blocs if len(blocs) < 15 else '')
Sortie, recomptée le 2026-09-05 :
geo 49 575
loop 18 32
geo x loop 2 2 [('LIP-1978-systen2', 48), ('LIP-1979-implprin', 96)]
| Mesure, hors blocs de dialogue avec un modèle | Textes | Blocs |
|---|---|---|
| Lexique géométrique | 49 sur 95 | 575 |
| Lexique des boucles | 18 sur 95 | 32 |
| Les deux dans le même bloc | 2 | 2 |
Les deux blocs ont été lus, pas seulement comptés, et ils disent la même chose : la forme est posée d'abord, la boucle est lue dessus ensuite. En 1979, une tenségrité icosaédrique est construite pour trente sous-projets, puis une aire étiquetée de la figure sert à nommer la circularité d'un jeu de priorités.
.venv/bin/python bin/read-blocks.py LIP-1979-implprin --de 96 --a 96
.venv/bin/python bin/read-blocks.py LIP-1978-systen2 --de 48 --a 48
Le statut des deux portées, dit sans arrondir
[LIP-1978-systen2]§48 tombe dans la portée fecond §40-§65 de sa note. [LIP-1979-implprin]§96
tombe hors de toute portée évaluée — §29-§85 est opératoire, §91-§93 est spéculatif, et le §96
n'est dans ni l'un ni l'autre. Il n'est donc pas étiqueté. Un renvoi n'est pas un adoubement.
sed -n '/^evaluation:/,/^evaluation_preremplie:/p' notes/LIP-1979-implprin.md
Ce que ça change
La rareté est le résultat, pas un défaut de la mesure. Quarante-neuf textes portent la géométrie, dix-huit portent les boucles, et deux blocs seulement les tiennent ensemble. Un croisement au même bloc est un test strict : un texte qui poserait la forme sur un bloc et la boucle trois blocs plus loin n'y figure pas. Ce que la mesure établit n'est donc pas combien de fois la direction existe, mais qu'elle existe attestée, à une date, dans un texte lu.
La date déplace l'antériorité. La direction n'est pas une lecture rétrospective de 2026 : elle est là en 1979, dans un document de méthode.
Un correspondant a raison avec une antériorité qu'il ignorait. La mesure a été faite pour répondre à une question posée en correspondance, et elle donne raison à son auteur — avec quarante-sept ans d'avance sur la question.
Ce que ça n'établit pas
Que la direction inverse n'existe pas. Le lexique des boucles touche dix-huit textes ; rien ici ne dit ce qui s'y passe hors des deux blocs croisés.
Que les lexiques soient les bons. Ils sont explicites et courts, donc contestables et remplaçables : un lexique élargi donnerait d'autres nombres, et la commande est publiée pour qu'on puisse le faire plutôt que pour clore la question.
Que le §96 soit endossé. Il tombe hors de toute portée évaluée. C'est un bloc lu et cité, ce n'est pas un bloc dont ce dépôt garantit le régime.