Aller au contenu principal

Le polyèdre vient-il après la détection des boucles, ou expose-t-il des contraintes déjà implicites dans leur imbrication ?

FO-06 · Mathieu Devuyst

La question

Le polyèdre vient-il après la détection des boucles, ou expose-t-il des contraintes déjà implicites dans leur imbrication ?

Prolonge FO-02

Ce que le corpus en a mesuré

boucles et géométrie

Balayage bloc à bloc des 95 textes de preuve, avec deux lexiques, en écartant les blocs déclarés segments_dialogue_ia — CONVENTIONS.md §7.4 interdit d'attribuer à Judge une réponse de modèle reproduite dans son texte. Le script tient en quinze lignes et il est reproduit entier, pour que la mesure soit rejouable depuis un clone nu plutôt que crue sur parole :

Les deux blocs sont [LIP-1978-systen2]§48 et [LIP-1979-implprin]§96. Ils 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. C'est la direction géométrie → boucles de Mathieu Devuyst, attestée en 1979.

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 opératoire, §91-§93 spéculatif) : il n'est pas étiqueté. Un renvoi n'est pas un adoubement, et il ne faut pas le laisser croire.

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 '')

Ce qui reste ouvert

Ouvert côté auteur. Côté corpus, FO-02 est refermé en laboratoire et le banc d'essai du versant polyédrique n'existe pas — sa v1 a été démolie par la passe adversariale

Renvois

  • CORR-2026-09-05-devuyst-judge

Ces sources ne sont pas publiées, et c'est délibéré.

Elles sont vérifiables dans le dépôt, par qui le clone.

D'où viennent ces mesures

sources/correspondance/brouillons/2026-09-05-contribution-ek.md